提交 5a68593c 编写于 作者: qnqinan's avatar qnqinan 提交者: GitHub

Merge branch 'develop' into develop

......@@ -243,13 +243,13 @@
);
inputPaths = (
"${SRCROOT}/../Pods/Target Support Files/Pods-MobileNetDemo/Pods-MobileNetDemo-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/SwiftProtobuf/SwiftProtobuf.framework",
"${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
);
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftProtobuf.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
......@@ -436,7 +436,7 @@
baseConfigurationReference = 4FE67FF667A24FCB0134F627 /* Pods-MobileNetDemo.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = A798K58VVL;
INFOPLIST_FILE = MobileNetDemo/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
......@@ -446,6 +446,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = Ray.MobileNetDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ForAllDev;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
......@@ -456,7 +457,7 @@
baseConfigurationReference = E57059FE3629E3A8DE6C7ECF /* Pods-MobileNetDemo.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = A798K58VVL;
INFOPLIST_FILE = MobileNetDemo/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
......@@ -466,6 +467,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = Ray.MobileNetDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ForAllDev;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
......
......@@ -5,21 +5,25 @@ workspace 'paddle-mobile.xcworkspace'
target 'paddle-mobile-demo' do
project 'paddle-mobile-demo/paddle-mobile-demo.xcodeproj'
pod 'SwiftProtobuf', '~> 1.0'
# pod 'SwiftProtobuf', '~> 1.0'
pod 'Protobuf', '~> 3.0.0'
end
target 'paddle-mobile' do
project 'paddle-mobile/paddle-mobile.xcodeproj'
pod 'SwiftProtobuf', '~> 1.0'
# pod 'SwiftProtobuf', '~> 1.0'
pod 'Protobuf', '~> 3.0.0'
end
target 'paddle-mobile-unit-test' do
project 'paddle-mobile-unit-test/paddle-mobile-unit-test.xcodeproj'
pod 'SwiftProtobuf', '~> 1.0'
# pod 'SwiftProtobuf', '~> 1.0'
pod 'Protobuf', '~> 3.0.0'
end
target 'MobileNetDemo' do
project 'MobileNetDemo/MobileNetDemo.xcodeproj'
pod 'SwiftProtobuf', '~> 1.0'
# pod 'SwiftProtobuf', '~> 1.0'
pod 'Protobuf', '~> 3.0.0'
end
......@@ -411,11 +411,11 @@
);
inputPaths = (
"${SRCROOT}/../Pods/Target Support Files/Pods-paddle-mobile-demo/Pods-paddle-mobile-demo-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/SwiftProtobuf/SwiftProtobuf.framework",
"${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftProtobuf.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
......
......@@ -234,11 +234,11 @@
);
inputPaths = (
"${SRCROOT}/../Pods/Target Support Files/Pods-paddle-mobile-unit-test/Pods-paddle-mobile-unit-test-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/SwiftProtobuf/SwiftProtobuf.framework",
"${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftProtobuf.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
......
......@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
456BB7B421F5B356001474E2 /* Framework.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 456BB7B221F5B356001474E2 /* Framework.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
456BB7B521F5B356001474E2 /* Framework.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 456BB7B321F5B356001474E2 /* Framework.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; };
4AA1EA862146625E00D0F791 /* BilinearInterpOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AA1EA852146625E00D0F791 /* BilinearInterpOp.swift */; };
4AA1EA88214662BD00D0F791 /* BilinearInterpKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AA1EA87214662BD00D0F791 /* BilinearInterpKernel.swift */; };
4AA1EA8A2146631C00D0F791 /* BilinearInterp.metal in Sources */ = {isa = PBXBuildFile; fileRef = 4AA1EA892146631C00D0F791 /* BilinearInterp.metal */; };
......@@ -47,15 +49,14 @@
FC039BAB20E11CBC0081E9F8 /* Operator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BA620E11CBC0081E9F8 /* Operator.swift */; };
FC039BAC20E11CBC0081E9F8 /* BatchNormOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BA720E11CBC0081E9F8 /* BatchNormOp.swift */; };
FC039BAD20E11CBC0081E9F8 /* ReluOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BA820E11CBC0081E9F8 /* ReluOp.swift */; };
FC039BB820E11CC20081E9F8 /* framework.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BAF20E11CC20081E9F8 /* framework.pb.swift */; };
FC039BB920E11CC20081E9F8 /* Scope.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB020E11CC20081E9F8 /* Scope.swift */; };
FC039BBA20E11CC20081E9F8 /* TensorDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB120E11CC20081E9F8 /* TensorDesc.swift */; };
FC039BBB20E11CC20081E9F8 /* ProgramDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB220E11CC20081E9F8 /* ProgramDesc.swift */; };
FC039BBC20E11CC20081E9F8 /* VarDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB320E11CC20081E9F8 /* VarDesc.swift */; };
FC039BBB20E11CC20081E9F8 /* PMProgramDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB220E11CC20081E9F8 /* PMProgramDesc.swift */; };
FC039BBC20E11CC20081E9F8 /* PMVarDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB320E11CC20081E9F8 /* PMVarDesc.swift */; };
FC039BBD20E11CC20081E9F8 /* Program.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB420E11CC20081E9F8 /* Program.swift */; };
FC039BBE20E11CC20081E9F8 /* OpDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB520E11CC20081E9F8 /* OpDesc.swift */; };
FC039BBE20E11CC20081E9F8 /* PMOpDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB520E11CC20081E9F8 /* PMOpDesc.swift */; };
FC039BBF20E11CC20081E9F8 /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB620E11CC20081E9F8 /* Attribute.swift */; };
FC039BC020E11CC20081E9F8 /* BlockDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB720E11CC20081E9F8 /* BlockDesc.swift */; };
FC039BC020E11CC20081E9F8 /* PMBlockDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB720E11CC20081E9F8 /* PMBlockDesc.swift */; };
FC0E2DBA20EE3B8D009C1FAC /* ReluKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0E2DB920EE3B8D009C1FAC /* ReluKernel.swift */; };
FC0E2DBC20EE45FE009C1FAC /* ConvKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0E2DBB20EE45FE009C1FAC /* ConvKernel.swift */; };
FC0E2DBE20EE460D009C1FAC /* BatchNormKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0E2DBD20EE460D009C1FAC /* BatchNormKernel.swift */; };
......@@ -93,6 +94,7 @@
FCA67CD7213827AC00BD58AA /* ConvAddBNReluKernel.metal in Sources */ = {isa = PBXBuildFile; fileRef = FCA67CD6213827AC00BD58AA /* ConvAddBNReluKernel.metal */; };
FCA67CD92138287B00BD58AA /* ConvBNReluKernel.metal in Sources */ = {isa = PBXBuildFile; fileRef = FCA67CD82138287B00BD58AA /* ConvBNReluKernel.metal */; };
FCB40E5921E0DCAB0075EC91 /* FetchKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCB40E5821E0DCAB0075EC91 /* FetchKernel.swift */; };
FCB91DC221FEEE990051C6B2 /* BufferToTexture.metal in Sources */ = {isa = PBXBuildFile; fileRef = FCB91DC121FEEE990051C6B2 /* BufferToTexture.metal */; };
FCBCCC572122F41300D94F7E /* DwConvBNReluOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBCCC562122F41300D94F7E /* DwConvBNReluOp.swift */; };
FCBCCC592122F42700D94F7E /* ConvBNReluOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBCCC582122F42700D94F7E /* ConvBNReluOp.swift */; };
FCBCCC5B2122F66F00D94F7E /* ConvBNReluKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBCCC5A2122F66F00D94F7E /* ConvBNReluKernel.swift */; };
......@@ -137,6 +139,8 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
456BB7B221F5B356001474E2 /* Framework.pbobjc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Framework.pbobjc.m; sourceTree = "<group>"; };
456BB7B321F5B356001474E2 /* Framework.pbobjc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Framework.pbobjc.h; sourceTree = "<group>"; };
4AA1EA852146625E00D0F791 /* BilinearInterpOp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BilinearInterpOp.swift; sourceTree = "<group>"; };
4AA1EA87214662BD00D0F791 /* BilinearInterpKernel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BilinearInterpKernel.swift; sourceTree = "<group>"; };
4AA1EA892146631C00D0F791 /* BilinearInterp.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = BilinearInterp.metal; sourceTree = "<group>"; };
......@@ -182,15 +186,14 @@
FC039BA620E11CBC0081E9F8 /* Operator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Operator.swift; sourceTree = "<group>"; };
FC039BA720E11CBC0081E9F8 /* BatchNormOp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchNormOp.swift; sourceTree = "<group>"; };
FC039BA820E11CBC0081E9F8 /* ReluOp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReluOp.swift; sourceTree = "<group>"; };
FC039BAF20E11CC20081E9F8 /* framework.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = framework.pb.swift; sourceTree = "<group>"; };
FC039BB020E11CC20081E9F8 /* Scope.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scope.swift; sourceTree = "<group>"; };
FC039BB120E11CC20081E9F8 /* TensorDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TensorDesc.swift; sourceTree = "<group>"; };
FC039BB220E11CC20081E9F8 /* ProgramDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgramDesc.swift; sourceTree = "<group>"; };
FC039BB320E11CC20081E9F8 /* VarDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VarDesc.swift; sourceTree = "<group>"; };
FC039BB220E11CC20081E9F8 /* PMProgramDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PMProgramDesc.swift; sourceTree = "<group>"; };
FC039BB320E11CC20081E9F8 /* PMVarDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PMVarDesc.swift; sourceTree = "<group>"; };
FC039BB420E11CC20081E9F8 /* Program.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Program.swift; sourceTree = "<group>"; };
FC039BB520E11CC20081E9F8 /* OpDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpDesc.swift; sourceTree = "<group>"; };
FC039BB520E11CC20081E9F8 /* PMOpDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PMOpDesc.swift; sourceTree = "<group>"; };
FC039BB620E11CC20081E9F8 /* Attribute.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Attribute.swift; sourceTree = "<group>"; };
FC039BB720E11CC20081E9F8 /* BlockDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlockDesc.swift; sourceTree = "<group>"; };
FC039BB720E11CC20081E9F8 /* PMBlockDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PMBlockDesc.swift; sourceTree = "<group>"; };
FC0E2DB920EE3B8D009C1FAC /* ReluKernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReluKernel.swift; sourceTree = "<group>"; };
FC0E2DBB20EE45FE009C1FAC /* ConvKernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConvKernel.swift; sourceTree = "<group>"; };
FC0E2DBD20EE460D009C1FAC /* BatchNormKernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatchNormKernel.swift; sourceTree = "<group>"; };
......@@ -229,6 +232,7 @@
FCA67CD6213827AC00BD58AA /* ConvAddBNReluKernel.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = ConvAddBNReluKernel.metal; sourceTree = "<group>"; };
FCA67CD82138287B00BD58AA /* ConvBNReluKernel.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = ConvBNReluKernel.metal; sourceTree = "<group>"; };
FCB40E5821E0DCAB0075EC91 /* FetchKernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchKernel.swift; sourceTree = "<group>"; };
FCB91DC121FEEE990051C6B2 /* BufferToTexture.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = BufferToTexture.metal; sourceTree = "<group>"; };
FCBCCC562122F41300D94F7E /* DwConvBNReluOp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DwConvBNReluOp.swift; sourceTree = "<group>"; };
FCBCCC582122F42700D94F7E /* ConvBNReluOp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConvBNReluOp.swift; sourceTree = "<group>"; };
FCBCCC5A2122F66F00D94F7E /* ConvBNReluKernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConvBNReluKernel.swift; sourceTree = "<group>"; };
......@@ -403,15 +407,16 @@
FC039BAE20E11CC20081E9F8 /* Program */ = {
isa = PBXGroup;
children = (
FC039BAF20E11CC20081E9F8 /* framework.pb.swift */,
456BB7B321F5B356001474E2 /* Framework.pbobjc.h */,
456BB7B221F5B356001474E2 /* Framework.pbobjc.m */,
FC039BB020E11CC20081E9F8 /* Scope.swift */,
FC039BB120E11CC20081E9F8 /* TensorDesc.swift */,
FC039BB220E11CC20081E9F8 /* ProgramDesc.swift */,
FC039BB320E11CC20081E9F8 /* VarDesc.swift */,
FC039BB220E11CC20081E9F8 /* PMProgramDesc.swift */,
FC039BB320E11CC20081E9F8 /* PMVarDesc.swift */,
FC039BB420E11CC20081E9F8 /* Program.swift */,
FC039BB520E11CC20081E9F8 /* OpDesc.swift */,
FC039BB520E11CC20081E9F8 /* PMOpDesc.swift */,
FC039BB620E11CC20081E9F8 /* Attribute.swift */,
FC039BB720E11CC20081E9F8 /* BlockDesc.swift */,
FC039BB720E11CC20081E9F8 /* PMBlockDesc.swift */,
FC4CB74A20F12C30007C0C6D /* ProgramOptimize.swift */,
);
path = Program;
......@@ -496,6 +501,7 @@
FCEB6837212F00B100D2448E /* metal */ = {
isa = PBXGroup;
children = (
FCB91DC121FEEE990051C6B2 /* BufferToTexture.metal */,
4AF928812135673D005B6C3A /* ConcatKernel.metal */,
4AA1EA9D2148D6F900D0F791 /* ConcatKernel.inc.metal */,
4AF9288321357BE3005B6C3A /* Elementwise.metal */,
......@@ -545,6 +551,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
456BB7B521F5B356001474E2 /* Framework.pbobjc.h in Headers */,
FC039B6F20E11C3C0081E9F8 /* paddle_mobile.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -582,7 +589,7 @@
TargetAttributes = {
FC039B6920E11C3C0081E9F8 = {
CreatedOnToolsVersion = 9.3.1;
LastSwiftMigration = 0940;
LastSwiftMigration = 1000;
};
};
};
......@@ -659,7 +666,7 @@
FCD04E7020F31B720007374F /* ReshapeKernel.swift in Sources */,
FCE3A1B12153E90F00C37CDE /* ElementwiseAddPreluKernel.inc.metal in Sources */,
FCD04E7220F343420007374F /* ConvAddOp.swift in Sources */,
FC039BBB20E11CC20081E9F8 /* ProgramDesc.swift in Sources */,
FC039BBB20E11CC20081E9F8 /* PMProgramDesc.swift in Sources */,
FCE3A1AB2153DE8C00C37CDE /* ConvAddAddPreluKernel.swift in Sources */,
FC9D037920E229E4000F735A /* OpParam.swift in Sources */,
FC3602CC2108819F00FACB58 /* PaddleMobileUnitTest.swift in Sources */,
......@@ -670,6 +677,7 @@
FCA67CD52138272900BD58AA /* ConvAddMetal.metal in Sources */,
FCBCCC5B2122F66F00D94F7E /* ConvBNReluKernel.swift in Sources */,
4AA1EA8C2146640900D0F791 /* SplitOp.swift in Sources */,
FCB91DC221FEEE990051C6B2 /* BufferToTexture.metal in Sources */,
4AA1EAAC214F55C800D0F791 /* Softmax.inc.metal in Sources */,
FC0E2DC020EE461F009C1FAC /* ElementwiseAddKernel.swift in Sources */,
4AF928772133F1DB005B6C3A /* BoxCoder.metal in Sources */,
......@@ -684,7 +692,6 @@
FC1B16B320EC9A4F00678B91 /* Kernels.metal in Sources */,
FC039BBA20E11CC20081E9F8 /* TensorDesc.swift in Sources */,
FC039BA020E11CB20081E9F8 /* Dim.swift in Sources */,
FC039BB820E11CC20081E9F8 /* framework.pb.swift in Sources */,
FC039B9920E11C9A0081E9F8 /* Types.swift in Sources */,
FC4CB74920F0B954007C0C6D /* ConvKernel.metal in Sources */,
FCA3A1632132A4AC00084FE5 /* ReshapeKernel.metal in Sources */,
......@@ -698,6 +705,7 @@
4AA1EAA2214912CD00D0F791 /* FlattenKernel.swift in Sources */,
4AA1EA982146666500D0F791 /* FlattenOp.swift in Sources */,
FC2BFCC221DF2F9100C262B2 /* GlobalConfig.swift in Sources */,
456BB7B421F5B356001474E2 /* Framework.pbobjc.m in Sources */,
FCBCCC652122FCD700D94F7E /* TransposeOp.swift in Sources */,
4AA1EAA6214B5F6800D0F791 /* Shape.metal in Sources */,
FCD04E6E20F31B4B0007374F /* ReshapeOp.swift in Sources */,
......@@ -711,7 +719,7 @@
FCE9D7B9214FAA4800B520C3 /* NMSFetchResultKernel.metal in Sources */,
FC039BAC20E11CBC0081E9F8 /* BatchNormOp.swift in Sources */,
FCBCCC6F2123097100D94F7E /* MulticlassNMSOp.swift in Sources */,
FC039BBC20E11CC20081E9F8 /* VarDesc.swift in Sources */,
FC039BBC20E11CC20081E9F8 /* PMVarDesc.swift in Sources */,
FC803BC5214CB8F00094B8E5 /* ConvAddPrelu.inc.metal in Sources */,
4AF928822135673D005B6C3A /* ConcatKernel.metal in Sources */,
FCBCCC632122FCC000D94F7E /* TransposeKernel.swift in Sources */,
......@@ -749,14 +757,14 @@
FCE3A1A92153DE5100C37CDE /* ConvAddAddPreluOp.swift in Sources */,
FC5163F620EF556E00636C28 /* Texture2DTo2DArrayKernel.swift in Sources */,
FCE3A1AD2153E8BA00C37CDE /* ElementwiseAddPreluOp.swift in Sources */,
FC039BC020E11CC20081E9F8 /* BlockDesc.swift in Sources */,
FC039BC020E11CC20081E9F8 /* PMBlockDesc.swift in Sources */,
FC803BC3214CB79C0094B8E5 /* ConvAddPreluKernel.metal in Sources */,
4AA1EA90214664CD00D0F791 /* Split.metal in Sources */,
FCD04E6820F315020007374F /* PoolKernel.swift in Sources */,
FC0226582138F38D00F395E2 /* PoolKernel.metal in Sources */,
FC039BAD20E11CBC0081E9F8 /* ReluOp.swift in Sources */,
FCBCCC572122F41300D94F7E /* DwConvBNReluOp.swift in Sources */,
FC039BBE20E11CC20081E9F8 /* OpDesc.swift in Sources */,
FC039BBE20E11CC20081E9F8 /* PMOpDesc.swift in Sources */,
FC9797C921D6101D00F2FD90 /* ResizeBilinearOp.swift in Sources */,
4AA1EA88214662BD00D0F791 /* BilinearInterpKernel.swift in Sources */,
FC2BFD4621DF685F00C262B2 /* Scale.swift in Sources */,
......
......@@ -13,7 +13,7 @@
limitations under the License. */
import Foundation
import SwiftProtobuf
//import SwiftProtobuf
public class Loader<P: PrecisionType> {
class ParaLoader {
......@@ -145,13 +145,17 @@ public class Loader<P: PrecisionType> {
public init(){}
func loadModelandParam(_ device:MTLDevice,_ modelData:Data, _ paraLoaderPointer:ParaLoaderWithPointer?, _ paraLoader:ParaLoader?) throws -> Program {
do {
let protoProgram = try PaddleMobile_Framework_Proto_ProgramDesc.init(
serializedData: modelData)
/// swift protobuf serialized Data to instance class
// let protoProgram = try PaddleMobile_Framework_Proto_ProgramDesc.init(
// serializedData: modelData)
/// oc protobuf serialized Data to instance class
let protoProgram = try ProgramDesc.init(data: (modelData as NSData) as Data)
let originProgramDesc = ProgramDesc.init(protoProgram: protoProgram)
let originProgramDesc = PMProgramDesc.init(protoProgram: protoProgram)
let programDesc = ProgramOptimize<P>.init().optimize(originProgramDesc: originProgramDesc)
// let programDesc = ProgramDesc.init(protoProgram: protoProgram)
// let programDesc = PMProgramDesc.init(protoProgram: protoProgram)
print(programDesc)
......
......@@ -27,7 +27,7 @@ class OpCreator<P: PrecisionType> {
}
}
func creat(device: MTLDevice, opDesc: OpDesc, scope: Scope, initContext: InitContext) throws -> Runable & InferShaperable {
func creat(device: MTLDevice, opDesc: PMOpDesc, scope: Scope, initContext: InitContext) throws -> Runable & InferShaperable {
guard let opCreator = opCreators[opDesc.type] else {
throw PaddleMobileError.opError(message: "there is no " + opDesc.type + " yet")
}
......@@ -39,7 +39,7 @@ class OpCreator<P: PrecisionType> {
}
}
let opCreators: [String : (MTLDevice, OpDesc, Scope, InitContext) throws -> Runable & InferShaperable] =
let opCreators: [String : (MTLDevice, PMOpDesc, Scope, InitContext) throws -> Runable & InferShaperable] =
[gConvType : ConvOp<P>.creat,
gBatchNormType : BatchNormOp<P>.creat,
gReluType : ReluOp<P>.creat,
......
......@@ -27,7 +27,7 @@ protocol OpParam {
func outputDesc() -> String
//associatedtype ParamPrecisionType: PrecisionType
init(opDesc: OpDesc, inScope: Scope) throws
init(opDesc: PMOpDesc, inScope: Scope) throws
static func getFirstTensor<VarType: Variant>(key: String, map: [String : [String]], from: Scope) throws -> VarType
static func inputX<VarType: Variant>(inputs: [String : [String]], from: Scope) throws -> VarType
static func inputBiase<VarType: Variant>(inputs: [String : [String]], from: Scope) throws -> VarType
......
......@@ -72,11 +72,11 @@ public class InitContext {
protocol Creator where Self: OperatorProtocol{
associatedtype OpType: OperatorProtocol & Runable & InferShaperable
static func creat(device: MTLDevice, opDesc: OpDesc, inScope: Scope, initContext: InitContext) throws -> OpType
static func creat(device: MTLDevice, opDesc: PMOpDesc, inScope: Scope, initContext: InitContext) throws -> OpType
}
extension Creator where Self: OperatorProtocol {
static func creat(device: MTLDevice, opDesc: OpDesc, inScope: Scope, initContext: InitContext) throws -> OpType {
static func creat(device: MTLDevice, opDesc: PMOpDesc, inScope: Scope, initContext: InitContext) throws -> OpType {
do {
return try OpType.provide(device:device, opDesc: opDesc, inScope: inScope, initContext: initContext)
} catch let error {
......@@ -100,11 +100,11 @@ protocol OperatorProtocol {
var attrs: [String : Attr] { get }
var para: ParamType { get }
var kernel: KerType { get }
init(device: MTLDevice, opDesc: OpDesc, inScope: Scope, initContext: InitContext) throws
init(device: MTLDevice, opDesc: PMOpDesc, inScope: Scope, initContext: InitContext) throws
}
extension OperatorProtocol {
static func provide(device: MTLDevice, opDesc: OpDesc, inScope: Scope, initContext: InitContext) throws -> Self {
static func provide(device: MTLDevice, opDesc: PMOpDesc, inScope: Scope, initContext: InitContext) throws -> Self {
do {
return try Self.init(device: device, opDesc: opDesc, inScope: inScope, initContext: initContext)
} catch let error {
......@@ -114,7 +114,7 @@ extension OperatorProtocol {
}
class Operator <KernelType: Computable , ParameterType>: OperatorProtocol where KernelType.ParamType == ParameterType {
required init(device: MTLDevice, opDesc: OpDesc, inScope: Scope, initContext: InitContext) throws {
required init(device: MTLDevice, opDesc: PMOpDesc, inScope: Scope, initContext: InitContext) throws {
type = opDesc.type
scope = inScope
inputs = opDesc.inputs
......
......@@ -17,7 +17,7 @@ import Metal
class BatchNormParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try BatchNormParam.inputX(inputs: opDesc.inputs, from: inScope)
if input.transpose != [0, 2, 3, 1] {
......
......@@ -17,7 +17,7 @@ import Metal
class BilinearInterpParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try BilinearInterpParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try BilinearInterpParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class BoxcoderParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
priorBox = try BoxcoderParam.getFirstTensor(key: "PriorBox", map: opDesc.inputs, from: inScope)
priorBoxVar = try BoxcoderParam.getFirstTensor(key: "PriorBoxVar", map: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ConcatParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
guard let xlist = opDesc.inputs["X"] else {
fatalError()
......
......@@ -17,7 +17,7 @@ import Metal
class ConvAddAddPreluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
filter = try ConvAddAddPreluParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope)
input = try ConvAddAddPreluParam.input(inputs: opDesc.inputs, from: inScope)
......
......@@ -17,7 +17,7 @@ import Foundation
class ConvAddBatchNormReluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
filter = try ConvAddBatchNormReluParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ConvAddParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
filter = try ConvAddParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope)
input = try ConvAddParam.input(inputs: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ConvAddPreluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
filter = try ConvAddPreluParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope)
input = try ConvAddPreluParam.input(inputs: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ConvBNReluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
filter = try ConvBNReluParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope)
input = try ConvBNReluParam.input(inputs: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ConvParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
filter = try ConvParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope)
input = try ConvParam.input(inputs: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ConvTransposeParam<P: PrecisionType>: ConvParam<P> {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
try super.init(opDesc: opDesc, inScope: inScope)
} catch let error {
......
......@@ -17,7 +17,7 @@ import Metal
class ElementwiseAddParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
inputX = try ElementwiseAddParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try ElementwiseAddParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -17,7 +17,7 @@ import Metal
class ElementwiseAddPreluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
alpha = try ElementwiseAddPreluParam.paramInputAlpha(inputs: opDesc.paraInputs, from: inScope)
mode = try ElementwiseAddPreluParam.getAttr(key: "mode", attrs: opDesc.attrs)
......
......@@ -23,7 +23,7 @@ class FeedParam<P: PrecisionType>: OpParam{
}
let scope: Scope
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
scope = inScope
do {
output = try FeedParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -19,7 +19,7 @@ class FetchParam<P: PrecisionType>: OpParam{
var output: FetchHolder
let input: Texture
let scope: Scope
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
scope = inScope
do {
input = try FetchParam.inputX(inputs: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class FlattenParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try FlattenParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try FlattenParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
//
// RGBToYCrCb_Y.metal
// paddle-mobile-demo
//
// Created by liuRuiLong on 2018/12/28.
// Copyright © 2018 orange. All rights reserved.
//
#include <metal_stdlib>
using namespace metal;
kernel void buffer_to_texture_kernel(
const device float *input [[buffer(0)]],
texture2d<float, access::write> outTexture [[texture(0)]],
uint2 gid [[thread_position_in_grid]]){
if (gid.x >= outTexture.get_width() ||
gid.y >= outTexture.get_height()) {
return;
}
float y = input[outTexture.get_width() * gid.y + gid.x];
outTexture.write(float4(y, 0.0f, 0.0f, 0.0f), gid);
}
kernel void buffer_to_texture_kernel_half(const device float *input [[buffer(0)]],
texture2d<half, access::write> outTexture [[texture(0)]],
uint2 gid [[thread_position_in_grid]]){
if (gid.x >= outTexture.get_width() ||
gid.y >= outTexture.get_height()) {
return;
}
float y = input[outTexture.get_width() * gid.y + gid.x];
outTexture.write(half4(y, 0.0f, 0.0f, 0.0f), gid);
}
......@@ -16,7 +16,7 @@ import Foundation
class MulticlassNMSParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
scores = try MulticlassNMSParam.getFirstTensor(key: "Scores", map: opDesc.inputs, from: inScope)
bboxes = try MulticlassNMSParam.getFirstTensor(key: "BBoxes", map: opDesc.inputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class PoolParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try PoolParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try PoolParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class PreluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try PreluParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try PreluParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class PriorBoxParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
min_max_aspect_ratios_order = try PriorBoxParam.getAttr(key: "min_max_aspect_ratios_order", attrs: opDesc.attrs)
} catch _ {
......
......@@ -17,7 +17,7 @@ import Foundation
class ReluParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try ReluParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try ReluParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -17,7 +17,7 @@ import Metal
class ReshapeParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try ReshapeParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try ReshapeParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class ResizeBilinearParam<P: PrecisionType>: OpParam {
typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try ResizeBilinearParam.inputX(inputs: opDesc.inputs, from: inScope)
// if (input.transpose != [0, 2, 3, 1]) || (input.tensorDim.cout() != 4) {
......
......@@ -16,7 +16,7 @@ import Foundation
class ShapeParam<P: PrecisionType>: OpParam {
// typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try ShapeParam.input(inputs: opDesc.inputs, from: inScope)
output = try ShapeParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -17,7 +17,7 @@ import Metal
class SoftmaxParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try SoftmaxParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try SoftmaxParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -16,7 +16,7 @@ import Foundation
class SplitParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try SplitParam.inputX(inputs: opDesc.inputs, from: inScope)
output = Texture.init(device: input.metalTexture!.device, inDim: input.dim)
......
......@@ -17,7 +17,7 @@ import Metal
class TransposeParam<P: PrecisionType>: OpParam {
//typealias ParamPrecisionType = P
required init(opDesc: OpDesc, inScope: Scope) throws {
required init(opDesc: PMOpDesc, inScope: Scope) throws {
do {
input = try TransposeParam.inputX(inputs: opDesc.inputs, from: inScope)
output = try TransposeParam.outputOut(outputs: opDesc.outputs, from: inScope)
......
......@@ -35,7 +35,11 @@ extension Array: Attr {
extension String: Attr {
}
func attrWithProtoDesc(attrDesc: PaddleMobile_Framework_Proto_OpDesc.Attr) -> Attr {
extension NSMutableArray :Attr {
}
func attrWithProtoDesc(attrDesc: OpDesc_Attr) -> Attr {
switch attrDesc.type {
case .boolean:
return attrDesc.b
......@@ -47,14 +51,33 @@ func attrWithProtoDesc(attrDesc: PaddleMobile_Framework_Proto_OpDesc.Attr) -> At
return attrDesc.l
case .float:
return attrDesc.f
/// convert GPB class to swift class
case .booleans:
return attrDesc.bools
var dimsArray = [Bool]()
let dimsCount = attrDesc.boolsArray.count
for i in 0..<dimsCount {
let dim = Bool(attrDesc.boolsArray.value(at: i))
dimsArray.append(dim)
}
return dimsArray
case .floats:
return attrDesc.floats
var dimsArray = [Float]()
let dimsCount = attrDesc.floatsArray.count
for i in 0..<dimsCount {
let dim = Float(attrDesc.floatsArray.value(at: i))
dimsArray.append(dim)
}
return dimsArray
case .ints:
return attrDesc.ints
var dimsArray = [Int32]()
let dimsCount = attrDesc.intsArray.count
for i in 0..<dimsCount {
let dim = Int32(attrDesc.intsArray.value(at: i))
dimsArray.append(dim)
}
return dimsArray
case .strings:
return attrDesc.strings
return attrDesc.stringsArray
default:
fatalError(" not support this attr type: \(attrDesc.type)")
}
......
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: Framework.proto
// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
#define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif
//#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
// #import <Protobuf/GPBProtocolBuffers.h>
//#else
// #import "GPBProtocolBuffers.h"
//#endif
#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
#import <Protobuf/GPBProtocolBuffers.h>
#else
#import <ProtocolBuffers/ProtocolBuffers.h>
#endif
#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30001
#error This file was generated by a different version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
// @@protoc_insertion_point(imports)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
CF_EXTERN_C_BEGIN
@class BlockDesc;
@class OpDesc;
@class OpDesc_Attr;
@class OpDesc_Var;
@class OpProto_Attr;
@class OpProto_Var;
@class VarDesc;
@class VarType;
@class VarType_ChannelDesc;
@class VarType_LoDTensorArrayDesc;
@class VarType_LoDTensorDesc;
@class VarType_ReaderDesc;
@class VarType_TensorDesc;
@class VarType_Tuple;
@class Version;
NS_ASSUME_NONNULL_BEGIN
#pragma mark - Enum AttrType
typedef GPB_ENUM(AttrType) {
AttrType_Int = 0,
AttrType_Float = 1,
AttrType_String = 2,
AttrType_Ints = 3,
AttrType_Floats = 4,
AttrType_Strings = 5,
AttrType_Boolean = 6,
AttrType_Booleans = 7,
AttrType_Block = 8,
AttrType_Long = 9,
AttrType_Blocks = 10,
};
GPBEnumDescriptor *AttrType_EnumDescriptor(void);
/// Checks to see if the given value is defined by the enum or was not known at
/// the time this source was generated.
BOOL AttrType_IsValidValue(int32_t value);
#pragma mark - Enum VarType_Type
typedef GPB_ENUM(VarType_Type) {
/// Pod Types
VarType_Type_Bool = 0,
VarType_Type_Int16 = 1,
VarType_Type_Int32 = 2,
VarType_Type_Int64 = 3,
VarType_Type_Fp16 = 4,
VarType_Type_Fp32 = 5,
VarType_Type_Fp64 = 6,
/// Tensor<size_t> is used in C++.
VarType_Type_SizeT = 19,
VarType_Type_Uint8 = 20,
VarType_Type_Int8 = 21,
/// Other types that may need additional descriptions
VarType_Type_LodTensor = 7,
VarType_Type_SelectedRows = 8,
VarType_Type_FeedMinibatch = 9,
VarType_Type_FetchList = 10,
VarType_Type_StepScopes = 11,
VarType_Type_LodRankTable = 12,
VarType_Type_LodTensorArray = 13,
VarType_Type_PlaceList = 14,
VarType_Type_Reader = 15,
VarType_Type_Channel = 16,
/// Any runtime decided variable type is raw
/// raw variables should manage their own allocations
/// in operators like nccl_op
VarType_Type_Raw = 17,
VarType_Type_Tuple = 18,
};
GPBEnumDescriptor *VarType_Type_EnumDescriptor(void);
/// Checks to see if the given value is defined by the enum or was not known at
/// the time this source was generated.
BOOL VarType_Type_IsValidValue(int32_t value);
#pragma mark - FrameworkRoot
/// Exposes the extension registry for this file.
///
/// The base class provides:
/// @code
/// + (GPBExtensionRegistry *)extensionRegistry;
/// @endcode
/// which is a @c GPBExtensionRegistry that includes all the extensions defined by
/// this file and all files that it depends on.
@interface FrameworkRoot : GPBRootObject
@end
#pragma mark - Version
typedef GPB_ENUM(Version_FieldNumber) {
Version_FieldNumber_Version = 1,
};
/// Any incompatible changes to ProgramDesc and its dependencies should
/// raise the version defined version.h.
///
/// Serailization and Deserialization codes should be modified in a way
/// that supports old versions following the version and compatibility policy.
@interface Version : GPBMessage
@property(nonatomic, readwrite) int64_t version;
@property(nonatomic, readwrite) BOOL hasVersion;
@end
#pragma mark - OpDesc
typedef GPB_ENUM(OpDesc_FieldNumber) {
OpDesc_FieldNumber_InputsArray = 1,
OpDesc_FieldNumber_OutputsArray = 2,
OpDesc_FieldNumber_Type = 3,
OpDesc_FieldNumber_AttrsArray = 4,
OpDesc_FieldNumber_IsTarget = 5,
};
/// OpDesc describes an instance of a C++ framework::OperatorBase
/// derived class type.
@interface OpDesc : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *type;
/// Test to see if @c type has been set.
@property(nonatomic, readwrite) BOOL hasType;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpDesc_Var*> *inputsArray;
/// The number of items in @c inputsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger inputsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpDesc_Var*> *outputsArray;
/// The number of items in @c outputsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger outputsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpDesc_Attr*> *attrsArray;
/// The number of items in @c attrsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger attrsArray_Count;
@property(nonatomic, readwrite) BOOL isTarget;
@property(nonatomic, readwrite) BOOL hasIsTarget;
@end
#pragma mark - OpDesc_Attr
typedef GPB_ENUM(OpDesc_Attr_FieldNumber) {
OpDesc_Attr_FieldNumber_Name = 1,
OpDesc_Attr_FieldNumber_Type = 2,
OpDesc_Attr_FieldNumber_I = 3,
OpDesc_Attr_FieldNumber_F = 4,
OpDesc_Attr_FieldNumber_S = 5,
OpDesc_Attr_FieldNumber_IntsArray = 6,
OpDesc_Attr_FieldNumber_FloatsArray = 7,
OpDesc_Attr_FieldNumber_StringsArray = 8,
OpDesc_Attr_FieldNumber_B = 10,
OpDesc_Attr_FieldNumber_BoolsArray = 11,
OpDesc_Attr_FieldNumber_BlockIdx = 12,
OpDesc_Attr_FieldNumber_L = 13,
OpDesc_Attr_FieldNumber_BlocksIdxArray = 14,
};
@interface OpDesc_Attr : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
/// Test to see if @c name has been set.
@property(nonatomic, readwrite) BOOL hasName;
@property(nonatomic, readwrite) AttrType type;
@property(nonatomic, readwrite) BOOL hasType;
@property(nonatomic, readwrite) int32_t i;
@property(nonatomic, readwrite) BOOL hasI;
@property(nonatomic, readwrite) float f;
@property(nonatomic, readwrite) BOOL hasF;
@property(nonatomic, readwrite, copy, null_resettable) NSString *s;
/// Test to see if @c s has been set.
@property(nonatomic, readwrite) BOOL hasS;
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *intsArray;
/// The number of items in @c intsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger intsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) GPBFloatArray *floatsArray;
/// The number of items in @c floatsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger floatsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *stringsArray;
/// The number of items in @c stringsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger stringsArray_Count;
@property(nonatomic, readwrite) BOOL b;
@property(nonatomic, readwrite) BOOL hasB;
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolArray *boolsArray;
/// The number of items in @c boolsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger boolsArray_Count;
@property(nonatomic, readwrite) int32_t blockIdx;
@property(nonatomic, readwrite) BOOL hasBlockIdx;
@property(nonatomic, readwrite) int64_t l;
@property(nonatomic, readwrite) BOOL hasL;
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *blocksIdxArray;
/// The number of items in @c blocksIdxArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger blocksIdxArray_Count;
@end
#pragma mark - OpDesc_Var
typedef GPB_ENUM(OpDesc_Var_FieldNumber) {
OpDesc_Var_FieldNumber_Parameter = 1,
OpDesc_Var_FieldNumber_ArgumentsArray = 2,
};
@interface OpDesc_Var : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *parameter;
/// Test to see if @c parameter has been set.
@property(nonatomic, readwrite) BOOL hasParameter;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *argumentsArray;
/// The number of items in @c argumentsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger argumentsArray_Count;
@end
#pragma mark - OpProto
typedef GPB_ENUM(OpProto_FieldNumber) {
OpProto_FieldNumber_Type = 1,
OpProto_FieldNumber_InputsArray = 2,
OpProto_FieldNumber_OutputsArray = 3,
OpProto_FieldNumber_AttrsArray = 4,
OpProto_FieldNumber_Comment = 5,
};
/// OpProto describes a C++ framework::OperatorBase derived class.
@interface OpProto : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *type;
/// Test to see if @c type has been set.
@property(nonatomic, readwrite) BOOL hasType;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpProto_Var*> *inputsArray;
/// The number of items in @c inputsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger inputsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpProto_Var*> *outputsArray;
/// The number of items in @c outputsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger outputsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpProto_Attr*> *attrsArray;
/// The number of items in @c attrsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger attrsArray_Count;
@property(nonatomic, readwrite, copy, null_resettable) NSString *comment;
/// Test to see if @c comment has been set.
@property(nonatomic, readwrite) BOOL hasComment;
@end
#pragma mark - OpProto_Var
typedef GPB_ENUM(OpProto_Var_FieldNumber) {
OpProto_Var_FieldNumber_Name = 1,
OpProto_Var_FieldNumber_Comment = 2,
OpProto_Var_FieldNumber_Duplicable = 3,
OpProto_Var_FieldNumber_Intermediate = 4,
OpProto_Var_FieldNumber_Dispensable = 5,
OpProto_Var_FieldNumber_Reuse = 6,
};
/// VarProto describes the C++ type framework::Variable.
@interface OpProto_Var : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
/// Test to see if @c name has been set.
@property(nonatomic, readwrite) BOOL hasName;
@property(nonatomic, readwrite, copy, null_resettable) NSString *comment;
/// Test to see if @c comment has been set.
@property(nonatomic, readwrite) BOOL hasComment;
@property(nonatomic, readwrite) BOOL duplicable;
@property(nonatomic, readwrite) BOOL hasDuplicable;
@property(nonatomic, readwrite) BOOL intermediate;
@property(nonatomic, readwrite) BOOL hasIntermediate;
@property(nonatomic, readwrite) BOOL dispensable;
@property(nonatomic, readwrite) BOOL hasDispensable;
@property(nonatomic, readwrite, copy, null_resettable) NSString *reuse;
/// Test to see if @c reuse has been set.
@property(nonatomic, readwrite) BOOL hasReuse;
@end
#pragma mark - OpProto_Attr
typedef GPB_ENUM(OpProto_Attr_FieldNumber) {
OpProto_Attr_FieldNumber_Name = 1,
OpProto_Attr_FieldNumber_Type = 2,
OpProto_Attr_FieldNumber_Comment = 3,
OpProto_Attr_FieldNumber_Generated = 4,
};
/// AttrProto describes the C++ type Attribute.
@interface OpProto_Attr : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
/// Test to see if @c name has been set.
@property(nonatomic, readwrite) BOOL hasName;
@property(nonatomic, readwrite) AttrType type;
@property(nonatomic, readwrite) BOOL hasType;
@property(nonatomic, readwrite, copy, null_resettable) NSString *comment;
/// Test to see if @c comment has been set.
@property(nonatomic, readwrite) BOOL hasComment;
/// If that attribute is generated, it means the Paddle third
/// language binding has responsibility to fill that
/// attribute. End-User should not set that attribute.
@property(nonatomic, readwrite) BOOL generated;
@property(nonatomic, readwrite) BOOL hasGenerated;
@end
#pragma mark - VarType
typedef GPB_ENUM(VarType_FieldNumber) {
VarType_FieldNumber_Type = 1,
VarType_FieldNumber_SelectedRows = 2,
VarType_FieldNumber_LodTensor = 3,
VarType_FieldNumber_TensorArray_p = 4,
VarType_FieldNumber_Reader = 5,
VarType_FieldNumber_Channel = 6,
VarType_FieldNumber_Tuple = 7,
};
@interface VarType : GPBMessage
@property(nonatomic, readwrite) VarType_Type type;
@property(nonatomic, readwrite) BOOL hasType;
@property(nonatomic, readwrite, strong, null_resettable) VarType_TensorDesc *selectedRows;
/// Test to see if @c selectedRows has been set.
@property(nonatomic, readwrite) BOOL hasSelectedRows;
@property(nonatomic, readwrite, strong, null_resettable) VarType_LoDTensorDesc *lodTensor;
/// Test to see if @c lodTensor has been set.
@property(nonatomic, readwrite) BOOL hasLodTensor;
@property(nonatomic, readwrite, strong, null_resettable) VarType_LoDTensorArrayDesc *tensorArray_p;
/// Test to see if @c tensorArray_p has been set.
@property(nonatomic, readwrite) BOOL hasTensorArray_p;
@property(nonatomic, readwrite, strong, null_resettable) VarType_ReaderDesc *reader;
/// Test to see if @c reader has been set.
@property(nonatomic, readwrite) BOOL hasReader;
@property(nonatomic, readwrite, strong, null_resettable) VarType_ChannelDesc *channel;
/// Test to see if @c channel has been set.
@property(nonatomic, readwrite) BOOL hasChannel;
@property(nonatomic, readwrite, strong, null_resettable) VarType_Tuple *tuple;
/// Test to see if @c tuple has been set.
@property(nonatomic, readwrite) BOOL hasTuple;
@end
#pragma mark - VarType_TensorDesc
typedef GPB_ENUM(VarType_TensorDesc_FieldNumber) {
VarType_TensorDesc_FieldNumber_DataType = 1,
VarType_TensorDesc_FieldNumber_DimsArray = 2,
};
@interface VarType_TensorDesc : GPBMessage
/// Should only be PODType. Is enforced in C++
@property(nonatomic, readwrite) VarType_Type dataType;
@property(nonatomic, readwrite) BOOL hasDataType;
/// [UNK, 640, 480] is saved as [-1, 640, 480]
@property(nonatomic, readwrite, strong, null_resettable) GPBInt64Array *dimsArray;
/// The number of items in @c dimsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger dimsArray_Count;
@end
#pragma mark - VarType_LoDTensorDesc
typedef GPB_ENUM(VarType_LoDTensorDesc_FieldNumber) {
VarType_LoDTensorDesc_FieldNumber_Tensor = 1,
VarType_LoDTensorDesc_FieldNumber_LodLevel = 2,
};
@interface VarType_LoDTensorDesc : GPBMessage
@property(nonatomic, readwrite, strong, null_resettable) VarType_TensorDesc *tensor;
/// Test to see if @c tensor has been set.
@property(nonatomic, readwrite) BOOL hasTensor;
@property(nonatomic, readwrite) int32_t lodLevel;
@property(nonatomic, readwrite) BOOL hasLodLevel;
@end
#pragma mark - VarType_LoDTensorArrayDesc
typedef GPB_ENUM(VarType_LoDTensorArrayDesc_FieldNumber) {
VarType_LoDTensorArrayDesc_FieldNumber_Tensor = 1,
VarType_LoDTensorArrayDesc_FieldNumber_LodLevel = 2,
};
@interface VarType_LoDTensorArrayDesc : GPBMessage
@property(nonatomic, readwrite, strong, null_resettable) VarType_TensorDesc *tensor;
/// Test to see if @c tensor has been set.
@property(nonatomic, readwrite) BOOL hasTensor;
@property(nonatomic, readwrite) int32_t lodLevel;
@property(nonatomic, readwrite) BOOL hasLodLevel;
@end
#pragma mark - VarType_ReaderDesc
typedef GPB_ENUM(VarType_ReaderDesc_FieldNumber) {
VarType_ReaderDesc_FieldNumber_LodTensorArray = 1,
};
@interface VarType_ReaderDesc : GPBMessage
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<VarType_LoDTensorDesc*> *lodTensorArray;
/// The number of items in @c lodTensorArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger lodTensorArray_Count;
@end
#pragma mark - VarType_ChannelDesc
typedef GPB_ENUM(VarType_ChannelDesc_FieldNumber) {
VarType_ChannelDesc_FieldNumber_DataType = 1,
VarType_ChannelDesc_FieldNumber_Capacity = 2,
};
@interface VarType_ChannelDesc : GPBMessage
@property(nonatomic, readwrite) VarType_Type dataType;
@property(nonatomic, readwrite) BOOL hasDataType;
@property(nonatomic, readwrite) int64_t capacity;
@property(nonatomic, readwrite) BOOL hasCapacity;
@end
#pragma mark - VarType_Tuple
typedef GPB_ENUM(VarType_Tuple_FieldNumber) {
VarType_Tuple_FieldNumber_ElementTypeArray = 1,
};
@interface VarType_Tuple : GPBMessage
// |elementTypeArray| contains |VarType_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *elementTypeArray;
/// The number of items in @c elementTypeArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger elementTypeArray_Count;
@end
#pragma mark - VarDesc
typedef GPB_ENUM(VarDesc_FieldNumber) {
VarDesc_FieldNumber_Name = 1,
VarDesc_FieldNumber_Type = 2,
VarDesc_FieldNumber_Persistable = 3,
};
@interface VarDesc : GPBMessage
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
/// Test to see if @c name has been set.
@property(nonatomic, readwrite) BOOL hasName;
@property(nonatomic, readwrite, strong, null_resettable) VarType *type;
/// Test to see if @c type has been set.
@property(nonatomic, readwrite) BOOL hasType;
@property(nonatomic, readwrite) BOOL persistable;
@property(nonatomic, readwrite) BOOL hasPersistable;
@end
#pragma mark - BlockDesc
typedef GPB_ENUM(BlockDesc_FieldNumber) {
BlockDesc_FieldNumber_Idx = 1,
BlockDesc_FieldNumber_ParentIdx = 2,
BlockDesc_FieldNumber_VarsArray = 3,
BlockDesc_FieldNumber_OpsArray = 4,
BlockDesc_FieldNumber_ForwardBlockIdx = 5,
};
@interface BlockDesc : GPBMessage
@property(nonatomic, readwrite) int32_t idx;
@property(nonatomic, readwrite) BOOL hasIdx;
@property(nonatomic, readwrite) int32_t parentIdx;
@property(nonatomic, readwrite) BOOL hasParentIdx;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<VarDesc*> *varsArray;
/// The number of items in @c varsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger varsArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<OpDesc*> *opsArray;
/// The number of items in @c opsArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger opsArray_Count;
@property(nonatomic, readwrite) int32_t forwardBlockIdx;
@property(nonatomic, readwrite) BOOL hasForwardBlockIdx;
@end
#pragma mark - ProgramDesc
typedef GPB_ENUM(ProgramDesc_FieldNumber) {
ProgramDesc_FieldNumber_BlocksArray = 1,
ProgramDesc_FieldNumber_Version = 2,
};
/// Please refer to
/// https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/program.md
/// for more details.
/// TODO(panyx0718): A model can have multiple programs. Need a
/// way to distinguish them. Maybe ID or name?
@interface ProgramDesc : GPBMessage
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<BlockDesc*> *blocksArray;
/// The number of items in @c blocksArray without causing the array to be created.
@property(nonatomic, readonly) NSUInteger blocksArray_Count;
@property(nonatomic, readwrite, strong, null_resettable) Version *version;
/// Test to see if @c version has been set.
@property(nonatomic, readwrite) BOOL hasVersion;
@end
NS_ASSUME_NONNULL_END
CF_EXTERN_C_END
#pragma clang diagnostic pop
// @@protoc_insertion_point(global_scope)
......@@ -14,28 +14,28 @@
import Foundation
public class BlockDesc {
public class PMBlockDesc {
let index: Int
let parentIndex: Int
public let vars: [VarDesc]
let ops: [OpDesc]
init(block: PaddleMobile_Framework_Proto_BlockDesc) {
public let vars: [PMVarDesc]
let ops: [PMOpDesc]
init(block: BlockDesc) {
index = Int(block.idx)
parentIndex = Int(block.parentIdx)
var vars: [VarDesc] = []
for varOfBlock in block.vars {
vars.append(VarDesc.init(protoVarDesc: varOfBlock))
var vars: [PMVarDesc] = []
for varOfBlock in block.varsArray {
vars.append(PMVarDesc.init(protoVarDesc: varOfBlock as! VarDesc))
}
vars.sort { $0.name < $1.name }
self.vars = vars
var ops: [OpDesc] = []
for op in block.ops {
ops.append(OpDesc.init(protoOpDesc: op))
var ops: [PMOpDesc] = []
for op in block.opsArray {
ops.append(PMOpDesc.init(protoOpDesc: op as! OpDesc))
}
self.ops = ops
}
init(inVars: [VarDesc], inOps: [OpDesc]) {
init(inVars: [PMVarDesc], inOps: [PMOpDesc]) {
vars = inVars
ops = inOps
index = 0
......@@ -44,7 +44,7 @@ public class BlockDesc {
}
extension BlockDesc: CustomStringConvertible, CustomDebugStringConvertible {
extension PMBlockDesc: CustomStringConvertible, CustomDebugStringConvertible {
public var description: String {
var str = ""
......
......@@ -14,50 +14,50 @@
import Foundation
class OpDesc {
class PMOpDesc {
let inputs: [String : [String]]
var paraInputs: [String : [String]]
var outputs: [String : [String]]
let unusedOutputs: [String : [String]]
var attrs: [String : Attr] = [:]
var type: String
init(protoOpDesc: PaddleMobile_Framework_Proto_OpDesc) {
type = protoOpDesc.type
let creator = { (vars: [PaddleMobile_Framework_Proto_OpDesc.Var], canAdd: (String) -> Bool) -> [String : [String]] in
var map: [String : [String]] = [:]
for opDescVar in vars {
if (canAdd(opDescVar.parameter)) {
map[opDescVar.parameter] = opDescVar.arguments
init(protoOpDesc: OpDesc) {
type = protoOpDesc.type
let creator = { (vars: [OpDesc_Var], canAdd: (String) -> Bool) -> [String : [String]] in
var map: [String : [String]] = [:]
for opDescVar in vars {
if (canAdd(opDescVar.parameter)) {
map[opDescVar.parameter] = opDescVar.argumentsArray as? [String]
}
}
return map
}
inputs = creator(protoOpDesc.inputsArray as! [OpDesc_Var]) {
opInfos[protoOpDesc.type]?.inputs.contains($0) ?? false
}
paraInputs = creator(protoOpDesc.inputsArray as! [OpDesc_Var]) {
!(opInfos[protoOpDesc.type]?.inputs.contains($0) ?? false)
}
outputs = creator(protoOpDesc.outputsArray as! [OpDesc_Var]) {
opInfos[protoOpDesc.type]?.outputs.contains($0) ?? false
}
unusedOutputs = creator(protoOpDesc.outputsArray as! [OpDesc_Var]) {
!(opInfos[protoOpDesc.type]?.outputs.contains($0) ?? false)
}
for attr in protoOpDesc.attrsArray {
if ((attr as! OpDesc_Attr).type != .block) {
attrs[(attr as! OpDesc_Attr).name] = attrWithProtoDesc(attrDesc: attr as! OpDesc_Attr)
}
}
}
return map
}
inputs = creator(protoOpDesc.inputs) {
opInfos[protoOpDesc.type]?.inputs.contains($0) ?? false
}
paraInputs = creator(protoOpDesc.inputs) {
!(opInfos[protoOpDesc.type]?.inputs.contains($0) ?? false)
}
outputs = creator(protoOpDesc.outputs) {
opInfos[protoOpDesc.type]?.outputs.contains($0) ?? false
}
unusedOutputs = creator(protoOpDesc.outputs) {
!(opInfos[protoOpDesc.type]?.outputs.contains($0) ?? false)
}
for attr in protoOpDesc.attrs {
if (attr.type != .block) {
attrs[attr.name] = attrWithProtoDesc(attrDesc: attr)
}
}
}
}
extension OpDesc: CustomStringConvertible, CustomDebugStringConvertible {
extension PMOpDesc: CustomStringConvertible, CustomDebugStringConvertible {
var description: String {
var str = ""
str += "op type: \(type): \n"
......
......@@ -14,11 +14,11 @@
import Foundation
public class ProgramDesc {
public var blocks: [BlockDesc] = []
init(protoProgram: PaddleMobile_Framework_Proto_ProgramDesc) {
for block in protoProgram.blocks {
self.blocks.append(BlockDesc.init(block: block))
public class PMProgramDesc {
public var blocks: [PMBlockDesc] = []
init(protoProgram: ProgramDesc) {
for block in protoProgram.blocksArray {
self.blocks.append(PMBlockDesc.init(block: block as! BlockDesc))
}
}
......@@ -26,7 +26,7 @@ public class ProgramDesc {
}
}
extension ProgramDesc: CustomStringConvertible, CustomDebugStringConvertible {
extension PMProgramDesc: CustomStringConvertible, CustomDebugStringConvertible {
public var description: String {
var str: String = ""
for i in 0..<blocks.count {
......
......@@ -56,13 +56,13 @@ public enum VarTypeType: Int {
}
}
public class VarDesc {
public class PMVarDesc {
public let name: String
public let persistable: Bool
public let type: VarTypeType
let tensorDesc: TensorDesc?
init(protoVarDesc: PaddleMobile_Framework_Proto_VarDesc) {
type = VarTypeType.init(rawValue: protoVarDesc.type.type.rawValue) ?? .ErrorType
init(protoVarDesc: VarDesc) {
type = VarTypeType.init(rawValue: Int(protoVarDesc.type.type.rawValue)) ?? .ErrorType
name = protoVarDesc.name
persistable = protoVarDesc.persistable
switch type {
......@@ -71,14 +71,14 @@ public class VarDesc {
case .LodTensor:
tensorDesc = TensorDesc.init(protoTensorDesc: protoVarDesc.type.lodTensor.tensor)
case .StepLodTensorArray:
tensorDesc = TensorDesc.init(protoTensorDesc: protoVarDesc.type.tensorArray.tensor);
tensorDesc = TensorDesc.init(protoTensorDesc: protoVarDesc.type.tensorArray_p.tensor);
default:
tensorDesc = .none
}
}
}
extension VarDesc: CustomStringConvertible, CustomDebugStringConvertible {
extension PMVarDesc: CustomStringConvertible, CustomDebugStringConvertible {
public var description: String {
var str = ""
str += "var name \(name): \n"
......
......@@ -16,14 +16,14 @@ import Foundation
@objc public class Program: NSObject {
public let paramPath: String
public let programDesc: ProgramDesc
public let programDesc: PMProgramDesc
public let scope: Scope
init(inProgramDesc: ProgramDesc, inParamPath: String, inScope: Scope) {
init(inProgramDesc: PMProgramDesc, inParamPath: String, inScope: Scope) {
programDesc = inProgramDesc
paramPath = inParamPath
scope = inScope
}
init(inProgramDesc: ProgramDesc, inScope: Scope) {
init(inProgramDesc: PMProgramDesc, inScope: Scope) {
programDesc = inProgramDesc
scope = inScope
paramPath = ""
......
......@@ -25,8 +25,8 @@ class Node {
var inputs: [Node] = []
var outputs: [Node] = []
var type: String
var opDesc: OpDesc?
init(inOpDesc: OpDesc) {
var opDesc: PMOpDesc?
init(inOpDesc: PMOpDesc) {
type = inOpDesc.type
opDesc = inOpDesc
}
......@@ -192,7 +192,7 @@ class ProgramOptimize<P: PrecisionType> {
ElementwiseAddPreluOp<P>.self
]
func optimize(originProgramDesc: ProgramDesc) -> ProgramDesc {
func optimize(originProgramDesc: PMProgramDesc) -> PMProgramDesc {
guard originProgramDesc.blocks.count == 1 else {
fatalError(" not support yet")
......@@ -287,13 +287,13 @@ class ProgramOptimize<P: PrecisionType> {
}
}
var ops: [OpDesc] = []
var ops: [PMOpDesc] = []
for node in nodes {
ops.append(node.opDesc!)
}
var newProgramDesc = ProgramDesc.init()
let newBlock = BlockDesc.init(inVars: block.vars, inOps: ops)
let newProgramDesc = PMProgramDesc.init()
let newBlock = PMBlockDesc.init(inVars: block.vars, inOps: ops)
newProgramDesc.blocks.append(newBlock)
return newProgramDesc
}
......
......@@ -52,9 +52,19 @@ class TensorDesc {
}
}
init(protoTensorDesc: PaddleMobile_Framework_Proto_VarType.TensorDesc) {
dims = protoTensorDesc.dims.map{ Int($0) > 0 ? Int($0) : abs(Int($0)) }
dataType = VarTypeType.init(rawValue: protoTensorDesc.dataType.rawValue) ?? .ErrorType
init(protoTensorDesc: VarType_TensorDesc) {
// dims = protoTensorDesc.dimsArray.map{ Int64($0)! > 0 ? Int64($0) : abs(Int64($0)) }
var dimsArray = [Int]()
let dimsCount = protoTensorDesc.dimsArray.count
for i in 0..<dimsCount {
let dim = Int(protoTensorDesc.dimsArray.value(at: i)) > 0 ?Int(protoTensorDesc.dimsArray.value(at: i)) :abs(Int(protoTensorDesc.dimsArray.value(at: i)))
dimsArray.append(dim)
}
dims = dimsArray
dataType = VarTypeType.init(rawValue: Int(protoTensorDesc.dataType.rawValue)) ?? .ErrorType
}
}
......@@ -21,7 +21,6 @@
//limitations under the License.
import Foundation
import SwiftProtobuf
// If the compiler emits an error on this type, it is because this file
// was generated by a version of the `protoc` Swift plug-in that is
......
......@@ -15,6 +15,7 @@
#pragma once
#import <UIKit/UIKit.h>
#import <paddle_mobile/Framework.pbobjc.h>
//! Project version number for paddle_mobile.
//FOUNDATION_EXPORT double paddle_mobileVersionNumber;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册