From f4c7726d80b549d71373ec16deff92d08dae2c78 Mon Sep 17 00:00:00 2001 From: liuruilong Date: Sat, 30 Jun 2018 18:41:18 +0800 Subject: [PATCH] create ios folder, add design doc add, ios development doc --- doc/design_doc.md | 181 ++++ doc/development_doc.md | 85 ++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 42209 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../PaddleMobile.xcodeproj/project.pbxproj | 965 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 9678 bytes .../xcschemes/xcschememanagement.plist | 14 + ios/PaddleMobile/PaddleMobile/MacroDefine.h | 13 + ios/PaddleMobile/PaddleMobile/PaddleMobile.h | 26 + ios/PaddleMobile/PaddleMobile/PaddleMobile.m | 43 + .../project.pbxproj | 340 ++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 5181 bytes .../xcschemes/xcschememanagement.plist | 14 + .../PaddleMobileDemo/AppDelegate.h | 23 + .../PaddleMobileDemo/AppDelegate.m | 57 ++ .../AppIcon.appiconset/Contents.json | 98 ++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 + .../Base.lproj/Main.storyboard | 24 + .../PaddleMobileDemo/Info.plist | 45 + .../PaddleMobileDemo/ViewController.h | 21 + .../PaddleMobileDemo/ViewController.m | 33 + ios/PaddleMobileDemo/PaddleMobileDemo/main.m | 22 + src/common/log.h | 7 +- src/common/variant.h | 1 + src/framework/attribute.h | 1 + src/framework/data_layout.h | 3 + src/framework/ddim.h | 3 +- src/framework/dim.h | 2 + 35 files changed, 2102 insertions(+), 3 deletions(-) create mode 100644 doc/design_doc.md create mode 100644 doc/development_doc.md create mode 100644 ios/PaddleMobile.xcworkspace/contents.xcworkspacedata create mode 100644 ios/PaddleMobile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/PaddleMobile.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/PaddleMobile.xcworkspace/xcuserdata/liuruilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 ios/PaddleMobile/PaddleMobile.xcodeproj/project.pbxproj create mode 100644 ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/PaddleMobile/PaddleMobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 ios/PaddleMobile/PaddleMobile/MacroDefine.h create mode 100644 ios/PaddleMobile/PaddleMobile/PaddleMobile.h create mode 100644 ios/PaddleMobile/PaddleMobile/PaddleMobile.m create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.pbxproj create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.h create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.m create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/Contents.json create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/Main.storyboard create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/Info.plist create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.h create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.m create mode 100644 ios/PaddleMobileDemo/PaddleMobileDemo/main.m diff --git a/doc/design_doc.md b/doc/design_doc.md new file mode 100644 index 0000000000..3ab649236d --- /dev/null +++ b/doc/design_doc.md @@ -0,0 +1,181 @@ +# paddle-mobile 设计文档 + + +#### 以下是 paddle-mobile 代码的执行流程图: + +![执行流程图](./images/flow_chart.png "执行流程图") + + + +#### 主要分为: Loader 模块、 Program 模块、 Executor 模块、 op 模块、 kernel 模块、scope variable Tensor 模块 + +#### 下面展开说一下各个模块的作用以及设计思路 + +### 一. Loader +先来看一下模型, 模型分为两种结构: + 一种为参数文件是散开的, 如下图, 红框为模型结构的 protobuf 文件, 其余为参数文件 + +![模型描述](./images/model_desc.png "模型描述") + +另一种为参数文件结合在一起的, 如下图, 红框内为模型结构描述的 protobuf 文件, 另一个文件为结合在一起的参数文件 + +![模型描述combined](./images/model_desc_combined.png "模型描述combined") + +loader 模块的作用是将模型结构信息 load 进内存, 将红框内的 protobuf 文件 load 进内存, 并对模型结构进行优化(如将几个细粒度的 op 融合成 粗粒度的 op, 如将 conv、 add、 batchnorm、 relu 融合为 conv\_add\_batchnorm\_relu). +方便进行算法优化. + +__那么为什么融合在一起能够做算法优化 ?__ + +如果未融合的 conv add batchnorm relu 运算是这样的 + +``` +[n] +[conv_res] = conv([n]) + +for &res in conv_res { + res = add_biase(res) +} + +for &res in conv_res { + res = batchnorm(res) +} + +for &res in conv_res { + res = relu(res) +} + +``` +融合后的 conv\_add\_batchnorm\_relu 运算是这样的: + +``` +[n] +[conv_res] = conv([n]) + +for &res in conv_res { + res = relu(batchnorm(add_biase(res))) +} + +``` +由于 conv 可以转换为两个大矩阵相乘, 更进一步可以分为若干个一行一列的小矩阵相乘, 那最终的运算是这样的: + +``` +[n] +for &res in [res] { + res = relu(batchnorm(add_biase(A * B))) +} + +其中 A 和 B 为 1 * k 和 k * 1 矩阵 + +``` + + + +### 二. Program + +program 为 loader 模块的结果, 包含了优化前的模型结构对象, 以及优化后的模型结构对象, 此模块基本对应着 paddle 模型的结构, 关于paddle 模型的一些概念的定义, 详细设计可以参考 [program.md](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/fluid/design/concepts/program.md), 以下是一个简单的概况: + +* programDesc 中包含着若干个(googlenet mobilenet yolo squeezenet resnet 常见的模型只有一个)可以嵌套的 block, blocks中的第一个block中的某个 op 可能会执行 blocks 中后边 block 中的一系列 op 运算(只有多个block才会有此概念) +* block 包含着 ops 和 vars +* ops 为一系列 op 的描述, 描述着每个 op 的类型, 输入输出, 所需参数 +* vars 里包含的为所有 op 运算所需的参数描述 + +### 三. Executor + +executor 主要是用于 op 运算的上层调度操作, 主要有两个操作, executor 实例化 和 暴露给上层的 predict 方法 + +* executor 实例化过程中, 主要进行了这几个操作 + 1. 根据 loader 产出的 program 初始化 operator 对象 + 2. 分配所有需要用到的内存, 包括每个op 的输入输出, 权重参数, 目前模型的权重参数文件的内存格式为 NCHW, op 的输入输出中间矩阵参数也是 NCHW 格式 + 3. 调用每个 op 的 init 方法, init 方法是每个 op 实现者进行参数预处理的地方, 有助于减少 predict 的耗时 + +* predict, 主要用于拿到外部的输入, 顺序调用 op 的 run 方法进行运算, 并返回最终的结果. + + +### 四. op +关于 op 模块代码的详细设计可以参考 [operator部分代码设计](https://github.com/PaddlePaddle/paddle-mobile/issues/300), operator主要包含一个kernel用于运算、一个 param 用于存储属性, operator 主要有三个操作, Init、RunImp、InferShape + +* Init: Init 函数主要用于参数预处理, 如对 batchNorm 参数进行预处理, 可以将 batchNorm 运算转化为 a * x + b 形式的运算, 这个函数也会调用, kernel 的 Init 函数对 kernel 进行初始化 +* RunImp: RunImp 函数会调用自己的kernel 的 compute 方法进行运算 +* InferShape: InferShape 函数会根据输入和参数得出输出的形状, 这个函数会在 executor 实例化时, 内存初始化前调用 + +每个 operator 都需要进行注册才可以被使用, 以 conv 为例, 需在 conv_op.cpp 底部这样写: + +```c++ +// 三个平台都注册了 conv op +namespace ops = paddle_mobile::operators; +#ifdef PADDLE_MOBILE_CPU +USE_OP_CPU(conv2d); +REGISTER_OPERATOR_CPU(conv2d, ops::ConvOp); +#endif + +#ifdef PADDLE_MOBILE_MALI_GPU +USE_OP_MALI_GPU(conv2d); +REGISTER_OPERATOR_MALI_GPU(conv2d, ops::ConvOp); +#endif + +#ifdef PADDLE_MOBILE_FPGA +USE_OP_FPGA(conv2d); +REGISTER_OPERATOR_FPGA(conv2d, ops::ConvOp); +#endif + +``` + +__一个关于包大小的优化__: + +每个 operator 都由一个宏控制编译, 如 conv_op.h(除了 conv_op.h , conv_op.cpp、conv_kernle.h、conv_kernle.cpp 也都需要加此宏控制) + +```c++ + +#ifdef CONV_OP //这个宏控制着 conv_op 是否被编译, 除了 conv_op.h , conv_op.cpp、conv_kernle.h conv_kernle.cpp 也都需要加此宏控制 + +#pragma once + +#include +#include "framework/operator.h" +#include "operators/kernel/conv_kernel.h" + +namespace paddle_mobile { +namespace operators { +using std::string; +template +class ConvOp + //impl +}; + +} // namespace operators +} // namespace paddle_mobile + +#endif + +``` +这样做的目的是为了根据不同类型的网络编译特定的op, 在 cmake 中已经配置好不同网络编译的宏, 如果你要进行编译支持 yolo 的模型, 仅需执行: + +```sh +cd toools +sh build.sh android yolo + +``` +这样只会编译 yolo 所包含的四种 op, 极大的减小了包体积和编译时间 + +### 五. kernel +kernel 为 op 的底层运算实现, 主要有两个函数, Init 和 Compute, 分别用来初始化、预处理 和 运算操作, 值得提出的是, kernel 会根据泛型特化到不同的平台, 如图所示: + +![设备特化](./images/devices.png "设备特化") + +不同平台的 kernel 实现, 为同一个 kernel 类不同泛型的特化实现, 目前有三个平台, arm、mali、fpga, 图中的 central-arm-func\ 目录为 op kernel 的 arm 实现, 它承担了 arm\ 目录下 kernel 的底层实现, 同时 arm 处理器作为中央处理器, central-arm-func\ 也可以作为其他协处理器的底层实现, 如: fpga 的某一个 op kernel 还没有 fpga 协处理器的实现, 就可以直接调用使用这里的 arm 实现. + +__如果你有兴趣新增一个协处理器实现, 就可以在次添加一个 kernel 目录, 提供协处理器实现, 如果某个 kernel 你没有实现完, 你也可以直接使用 arm 实现__ + +### 六. scope variable Tensor +* scope 用来存储管理所需用到的所有 variable(用来存储不同类型的对象, 主要是矩阵Tensor, 也就是说 scpoe 管理着 op 运算过程中所有参数矩阵, 输入输出矩阵), 可以将 scope 理解为一个 map, 这里在 map 上封了一层 scope 的概念是为了方便内存管理 +* variable 可以用来存储不同类型的对象, paddle-mobile 里主要用它来存储矩阵 Tensor +* tensor 代表着矩阵, 通过泛型可以用来存储不同类型的矩阵, 但需要注意的是, 存入和取出时的类型必须保持一致, 如果类型不一致, 使用 inline const T \*data() const 获取指针会不能通过类型检查, 通过 inline T \*mutable_data() 获取指针会重新分配内存, 以下是关于 Tensor 的一些小概念: + 1. DDim: 用来存储矩阵的维度信息. + 2. Slice(): 这个函数用来获取 N 维 (NCHW中的 N) 上切片 + 3. 当实例化未分配内存时, 调用 inline T *mutable_data() 会分配内存 + + + + + + diff --git a/doc/development_doc.md b/doc/development_doc.md new file mode 100644 index 0000000000..5673e043bd --- /dev/null +++ b/doc/development_doc.md @@ -0,0 +1,85 @@ +# iOS开发文档 + +## 编译 + +### 一. 使用 build.sh 编译 + +```sh +sh build.sh ios + +# 如果只想编译某个特定模型的 op, 则需执行以下命令 +sh build.sh ios googlenet + +# 在这个文件夹下, 你可以拿到生成的 .a 库 +cd ../build/release/ios/build + +``` + +### 二. 使用 xcode 编译 + +我们提供了 ios 开发更为熟悉的 xcode 编译环境: +在 ios/ 目录下打开 PaddleMobile.xcworkspace 即可编译 PaddleMobile 或者 运行 Demo + +### 三. 集成 + +#### 如使用 c++ 接口 +将 + +``` +libpaddle-mobile.a +io.h +program.h +types.h +lod_tensor.h +tensor.h +``` +拖入工程, io.h 为接口文件, 可在 [github](https://github.com/PaddlePaddle/paddle-mobile/blob/develop/src/io/io.h)上查看接口注释 + +#### 如使用 oc 接口 +将在xcode 编译生成的 +``` +libPaddleMobile.a +PaddleMobile.h +``` +拖入工程, 接口如下: + +``` +/* + 创建单例对象 +*/ ++ (instancetype)sharedInstance; + +/* + load 模型, 开辟内存 +*/ +- (BOOL)load:(NSString *)modelPath andWeightsPath:(NSString *)weighsPath; + +/* + 进行预测, means 和 scale 为训练模型时的预处理参数, 如训练时没有做这些预处理则直接使用 predict +*/ +- (NSArray *)predict:(CGImageRef)image means:(NSArray *)means scale:(float)scale; + +/* + 进行预测 +*/ +- (NSArray *)predict:(CGImageRef)image; + +/* + 清理内存 +*/ +- (void)clear; + +``` + + + + + + + + + + + + + diff --git a/ios/PaddleMobile.xcworkspace/contents.xcworkspacedata b/ios/PaddleMobile.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..7c3243eefa --- /dev/null +++ b/ios/PaddleMobile.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/PaddleMobile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/PaddleMobile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/ios/PaddleMobile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/PaddleMobile.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate b/ios/PaddleMobile.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a74810d22b023830a6e44d19984ff92302eb84a3 GIT binary patch literal 42209 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 + + diff --git a/ios/PaddleMobile/PaddleMobile.xcodeproj/project.pbxproj b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..7907ac8955 --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.pbxproj @@ -0,0 +1,965 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + FC086BB420E7839B00D85EF7 /* PaddleMobile.m in Sources */ = {isa = PBXBuildFile; fileRef = FC086BB320E7839B00D85EF7 /* PaddleMobile.m */; }; + FC086BB520E7839B00D85EF7 /* PaddleMobile.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = FC086BB220E7839B00D85EF7 /* PaddleMobile.h */; }; + FC086DC620E7841E00D85EF7 /* t_malloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086CFE20E7841E00D85EF7 /* t_malloc.cpp */; }; + FC086DC720E7841E00D85EF7 /* lrn_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0320E7841E00D85EF7 /* lrn_op.cpp */; }; + FC086DC820E7841E00D85EF7 /* sigmoid_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0520E7841E00D85EF7 /* sigmoid_op.cpp */; }; + FC086DC920E7841E00D85EF7 /* box_coder_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0620E7841E00D85EF7 /* box_coder_op.cpp */; }; + FC086DCA20E7841E00D85EF7 /* feed_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0720E7841E00D85EF7 /* feed_op.cpp */; }; + FC086DCB20E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0A20E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.cpp */; }; + FC086DCC20E7841E00D85EF7 /* reshape_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0B20E7841E00D85EF7 /* reshape_op.cpp */; }; + FC086DCD20E7841E00D85EF7 /* concat_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0C20E7841E00D85EF7 /* concat_op.cpp */; }; + FC086DCE20E7841E00D85EF7 /* transpose_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0D20E7841E00D85EF7 /* transpose_op.cpp */; }; + FC086DCF20E7841E00D85EF7 /* prior_box_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0E20E7841E00D85EF7 /* prior_box_op.cpp */; }; + FC086DD020E7841E00D85EF7 /* fusion_conv_add_relu_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D0F20E7841E00D85EF7 /* fusion_conv_add_relu_op.cpp */; }; + FC086DD120E7841E00D85EF7 /* softmax_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D1520E7841E00D85EF7 /* softmax_op.cpp */; }; + FC086DD220E7841E00D85EF7 /* depthwise_conv_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D1720E7841E00D85EF7 /* depthwise_conv_op.cpp */; }; + FC086DD320E7841E00D85EF7 /* elementwise_add_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D1A20E7841E00D85EF7 /* elementwise_add_op.cpp */; }; + FC086DD420E7841E00D85EF7 /* gemm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D1F20E7841E00D85EF7 /* gemm.cpp */; }; + FC086DD520E7841E00D85EF7 /* pool_2x2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2220E7841E00D85EF7 /* pool_2x2.cpp */; }; + FC086DD620E7841E00D85EF7 /* im2col.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2320E7841E00D85EF7 /* im2col.cpp */; }; + FC086DD720E7841E00D85EF7 /* vol2col.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2620E7841E00D85EF7 /* vol2col.cpp */; }; + FC086DD820E7841E00D85EF7 /* math_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2720E7841E00D85EF7 /* math_function.cpp */; }; + FC086DD920E7841E00D85EF7 /* pool_3x3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2820E7841E00D85EF7 /* pool_3x3.cpp */; }; + FC086DDA20E7841E00D85EF7 /* pooling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2B20E7841E00D85EF7 /* pooling.cpp */; }; + FC086DDB20E7841E00D85EF7 /* depthwise_conv_3x3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2D20E7841E00D85EF7 /* depthwise_conv_3x3.cpp */; }; + FC086DDC20E7841E00D85EF7 /* softmax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D2F20E7841E00D85EF7 /* softmax.cpp */; }; + FC086DDD20E7841E00D85EF7 /* fetch_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3420E7841E00D85EF7 /* fetch_op.cpp */; }; + FC086DDE20E7841E00D85EF7 /* fusion_conv_add.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3520E7841E00D85EF7 /* fusion_conv_add.cpp */; }; + FC086DDF20E7841E00D85EF7 /* op_param.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3620E7841E00D85EF7 /* op_param.cpp */; }; + FC086DE020E7841E00D85EF7 /* mul_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3A20E7841E00D85EF7 /* mul_op.cpp */; }; + FC086DE120E7841E00D85EF7 /* relu_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3B20E7841E00D85EF7 /* relu_op.cpp */; }; + FC086DE220E7841E00D85EF7 /* conv_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3C20E7841E00D85EF7 /* conv_op.cpp */; }; + FC086DE320E7841E00D85EF7 /* fusion_fc_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D3D20E7841E00D85EF7 /* fusion_fc_op.cpp */; }; + FC086DE420E7841E00D85EF7 /* batchnorm_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D4020E7841E00D85EF7 /* batchnorm_op.cpp */; }; + FC086DE520E7841E00D85EF7 /* pool_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D4220E7841E00D85EF7 /* pool_op.cpp */; }; + FC086DE620E7841E00D85EF7 /* multiclass_nms_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D4420E7841E00D85EF7 /* multiclass_nms_op.cpp */; }; + FC086DE720E7841E00D85EF7 /* acl_tensor.cc in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5220E7841E00D85EF7 /* acl_tensor.cc */; }; + FC086DE820E7841E00D85EF7 /* acl_operator.cc in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5320E7841E00D85EF7 /* acl_operator.cc */; }; + FC086DE920E7841E00D85EF7 /* conv_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5420E7841E00D85EF7 /* conv_kernel.cpp */; }; + FC086DEA20E7841E00D85EF7 /* conv_add_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5620E7841E00D85EF7 /* conv_add_kernel.cpp */; }; + FC086DEB20E7841E00D85EF7 /* relu_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5820E7841E00D85EF7 /* relu_kernel.cpp */; }; + FC086DEC20E7841E00D85EF7 /* mul_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5920E7841E00D85EF7 /* mul_kernel.cpp */; }; + FC086DED20E7841E00D85EF7 /* elementwise_add_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5A20E7841E00D85EF7 /* elementwise_add_kernel.cpp */; }; + FC086DEE20E7841E00D85EF7 /* softmax_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5C20E7841E00D85EF7 /* softmax_kernel.cpp */; }; + FC086DEF20E7841E00D85EF7 /* concat_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5D20E7841E00D85EF7 /* concat_kernel.cpp */; }; + FC086DF020E7841E00D85EF7 /* pool_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5E20E7841E00D85EF7 /* pool_kernel.cpp */; }; + FC086DF120E7841E00D85EF7 /* reshape_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D5F20E7841E00D85EF7 /* reshape_kernel.cpp */; }; + FC086DF220E7841E00D85EF7 /* lrn_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D6020E7841E00D85EF7 /* lrn_kernel.cpp */; }; + FC086DF320E7841E00D85EF7 /* fushion_fc_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D6120E7841E00D85EF7 /* fushion_fc_kernel.cpp */; }; + FC086DF420E7841E00D85EF7 /* batchnorm_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D6220E7841E00D85EF7 /* batchnorm_kernel.cpp */; }; + FC086DF520E7841E00D85EF7 /* conv_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D6F20E7841E00D85EF7 /* conv_kernel.cpp */; }; + FC086DF620E7841E00D85EF7 /* prior_box_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7420E7841E00D85EF7 /* prior_box_kernel.cpp */; }; + FC086DF720E7841E00D85EF7 /* conv_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7520E7841E00D85EF7 /* conv_kernel.cpp */; }; + FC086DF820E7841E00D85EF7 /* conv_add_bn_relu_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7620E7841E00D85EF7 /* conv_add_bn_relu_kernel.cpp */; }; + FC086DF920E7841E00D85EF7 /* box_coder_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7720E7841E00D85EF7 /* box_coder_kernel.cpp */; }; + FC086DFA20E7841E00D85EF7 /* conv_add_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7820E7841E00D85EF7 /* conv_add_kernel.cpp */; }; + FC086DFB20E7841E00D85EF7 /* sigmoid_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7920E7841E00D85EF7 /* sigmoid_kernel.cpp */; }; + FC086DFC20E7841E00D85EF7 /* relu_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7A20E7841E00D85EF7 /* relu_kernel.cpp */; }; + FC086DFD20E7841E00D85EF7 /* mul_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7B20E7841E00D85EF7 /* mul_kernel.cpp */; }; + FC086DFE20E7841E00D85EF7 /* elementwise_add_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7C20E7841E00D85EF7 /* elementwise_add_kernel.cpp */; }; + FC086DFF20E7841E00D85EF7 /* conv_add_relu_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7D20E7841E00D85EF7 /* conv_add_relu_kernel.cpp */; }; + FC086E0020E7841E00D85EF7 /* transpose_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7E20E7841E00D85EF7 /* transpose_kernel.cpp */; }; + FC086E0120E7841E00D85EF7 /* depthwise_conv_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D7F20E7841E00D85EF7 /* depthwise_conv_kernel.cpp */; }; + FC086E0220E7841E00D85EF7 /* softmax_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8020E7841E00D85EF7 /* softmax_kernel.cpp */; }; + FC086E0320E7841E00D85EF7 /* concat_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8120E7841E00D85EF7 /* concat_kernel.cpp */; }; + FC086E0420E7841E00D85EF7 /* fusion_fc_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8220E7841E00D85EF7 /* fusion_fc_kernel.cpp */; }; + FC086E0520E7841E00D85EF7 /* pool_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8320E7841E00D85EF7 /* pool_kernel.cpp */; }; + FC086E0620E7841E00D85EF7 /* reshape_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8420E7841E00D85EF7 /* reshape_kernel.cpp */; }; + FC086E0720E7841E00D85EF7 /* lrn_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8520E7841E00D85EF7 /* lrn_kernel.cpp */; }; + FC086E0820E7841E00D85EF7 /* batchnorm_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8620E7841E00D85EF7 /* batchnorm_kernel.cpp */; }; + FC086E0920E7841E00D85EF7 /* multiclass_nms_kernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8720E7841E00D85EF7 /* multiclass_nms_kernel.cpp */; }; + FC086E0A20E7841E00D85EF7 /* framework.pb-c.c in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8B20E7841E00D85EF7 /* framework.pb-c.c */; }; + FC086E0B20E7841E00D85EF7 /* tensor_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8C20E7841E00D85EF7 /* tensor_util.cpp */; }; + FC086E0C20E7841E00D85EF7 /* operator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D8F20E7841E00D85EF7 /* operator.cpp */; }; + FC086E0D20E7841E00D85EF7 /* ddim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D9020E7841E00D85EF7 /* ddim.cpp */; }; + FC086E0E20E7841E00D85EF7 /* scope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D9320E7841E00D85EF7 /* scope.cpp */; }; + FC086E0F20E7841E00D85EF7 /* attribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D9920E7841E00D85EF7 /* attribute.cpp */; }; + FC086E1020E7841E00D85EF7 /* op_desc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D9C20E7841E00D85EF7 /* op_desc.cpp */; }; + FC086E1120E7841E00D85EF7 /* program_desc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086D9D20E7841E00D85EF7 /* program_desc.cpp */; }; + FC086E1220E7841E00D85EF7 /* node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DA320E7841E00D85EF7 /* node.cpp */; }; + FC086E1320E7841E00D85EF7 /* program_optimize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DA620E7841E00D85EF7 /* program_optimize.cpp */; }; + FC086E1420E7841E00D85EF7 /* block_desc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DA720E7841E00D85EF7 /* block_desc.cpp */; }; + FC086E1520E7841E00D85EF7 /* lod_tensor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DAB20E7841E00D85EF7 /* lod_tensor.cpp */; }; + FC086E1620E7841E00D85EF7 /* io.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DB320E7841E00D85EF7 /* io.cpp */; }; + FC086E1720E7841E00D85EF7 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DB620E7841E00D85EF7 /* types.cpp */; }; + FC086E1820E7841E00D85EF7 /* openmp-fix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DBA20E7841E00D85EF7 /* openmp-fix.cpp */; }; + FC086E1920E7841E00D85EF7 /* protobuf-c.c in Sources */ = {isa = PBXBuildFile; fileRef = FC086DC120E7841E00D85EF7 /* protobuf-c.c */; }; + FC086E1A20E7841E00D85EF7 /* paddle_mobile_jni.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC086DC420E7841E00D85EF7 /* paddle_mobile_jni.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + FC086BAD20E7839B00D85EF7 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + FC086BB520E7839B00D85EF7 /* PaddleMobile.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + FC086BAF20E7839B00D85EF7 /* libPaddleMobile.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPaddleMobile.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FC086BB220E7839B00D85EF7 /* PaddleMobile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaddleMobile.h; sourceTree = ""; }; + FC086BB320E7839B00D85EF7 /* PaddleMobile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PaddleMobile.m; sourceTree = ""; }; + FC086CFE20E7841E00D85EF7 /* t_malloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = t_malloc.cpp; sourceTree = ""; }; + FC086CFF20E7841E00D85EF7 /* t_malloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = t_malloc.h; sourceTree = ""; }; + FC086D0120E7841E00D85EF7 /* feed_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = feed_op.h; sourceTree = ""; }; + FC086D0220E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fusion_conv_add_bn_relu_op.h; sourceTree = ""; }; + FC086D0320E7841E00D85EF7 /* lrn_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lrn_op.cpp; sourceTree = ""; }; + FC086D0420E7841E00D85EF7 /* op_param.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_param.h; sourceTree = ""; }; + FC086D0520E7841E00D85EF7 /* sigmoid_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sigmoid_op.cpp; sourceTree = ""; }; + FC086D0620E7841E00D85EF7 /* box_coder_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = box_coder_op.cpp; sourceTree = ""; }; + FC086D0720E7841E00D85EF7 /* feed_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = feed_op.cpp; sourceTree = ""; }; + FC086D0820E7841E00D85EF7 /* mul_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mul_op.h; sourceTree = ""; }; + FC086D0920E7841E00D85EF7 /* prior_box_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prior_box_op.h; sourceTree = ""; }; + FC086D0A20E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fusion_conv_add_bn_relu_op.cpp; sourceTree = ""; }; + FC086D0B20E7841E00D85EF7 /* reshape_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reshape_op.cpp; sourceTree = ""; }; + FC086D0C20E7841E00D85EF7 /* concat_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = concat_op.cpp; sourceTree = ""; }; + FC086D0D20E7841E00D85EF7 /* transpose_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = transpose_op.cpp; sourceTree = ""; }; + FC086D0E20E7841E00D85EF7 /* prior_box_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prior_box_op.cpp; sourceTree = ""; }; + FC086D0F20E7841E00D85EF7 /* fusion_conv_add_relu_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fusion_conv_add_relu_op.cpp; sourceTree = ""; }; + FC086D1020E7841E00D85EF7 /* lrn_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lrn_op.h; sourceTree = ""; }; + FC086D1120E7841E00D85EF7 /* multiclass_nms_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = multiclass_nms_op.h; sourceTree = ""; }; + FC086D1220E7841E00D85EF7 /* relu_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relu_op.h; sourceTree = ""; }; + FC086D1320E7841E00D85EF7 /* fusion_conv_add.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fusion_conv_add.h; sourceTree = ""; }; + FC086D1420E7841E00D85EF7 /* conv_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_op.h; sourceTree = ""; }; + FC086D1520E7841E00D85EF7 /* softmax_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = softmax_op.cpp; sourceTree = ""; }; + FC086D1620E7841E00D85EF7 /* pool_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pool_op.h; sourceTree = ""; }; + FC086D1720E7841E00D85EF7 /* depthwise_conv_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = depthwise_conv_op.cpp; sourceTree = ""; }; + FC086D1820E7841E00D85EF7 /* softmax_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = softmax_op.h; sourceTree = ""; }; + FC086D1920E7841E00D85EF7 /* elementwise_add_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = elementwise_add_op.h; sourceTree = ""; }; + FC086D1A20E7841E00D85EF7 /* elementwise_add_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = elementwise_add_op.cpp; sourceTree = ""; }; + FC086D1B20E7841E00D85EF7 /* fetch_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fetch_op.h; sourceTree = ""; }; + FC086D1D20E7841E00D85EF7 /* elementwise_op_function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = elementwise_op_function.h; sourceTree = ""; }; + FC086D1E20E7841E00D85EF7 /* softmax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = softmax.h; sourceTree = ""; }; + FC086D1F20E7841E00D85EF7 /* gemm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gemm.cpp; sourceTree = ""; }; + FC086D2020E7841E00D85EF7 /* math_function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_function.h; sourceTree = ""; }; + FC086D2120E7841E00D85EF7 /* conv_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_func.h; sourceTree = ""; }; + FC086D2220E7841E00D85EF7 /* pool_2x2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pool_2x2.cpp; sourceTree = ""; }; + FC086D2320E7841E00D85EF7 /* im2col.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = im2col.cpp; sourceTree = ""; }; + FC086D2420E7841E00D85EF7 /* gemm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gemm.h; sourceTree = ""; }; + FC086D2520E7841E00D85EF7 /* im2col.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = im2col.h; sourceTree = ""; }; + FC086D2620E7841E00D85EF7 /* vol2col.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vol2col.cpp; sourceTree = ""; }; + FC086D2720E7841E00D85EF7 /* math_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = math_function.cpp; sourceTree = ""; }; + FC086D2820E7841E00D85EF7 /* pool_3x3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pool_3x3.cpp; sourceTree = ""; }; + FC086D2920E7841E00D85EF7 /* pool_2x2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pool_2x2.h; sourceTree = ""; }; + FC086D2A20E7841E00D85EF7 /* depthwise_conv_3x3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = depthwise_conv_3x3.h; sourceTree = ""; }; + FC086D2B20E7841E00D85EF7 /* pooling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pooling.cpp; sourceTree = ""; }; + FC086D2C20E7841E00D85EF7 /* pool_3x3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pool_3x3.h; sourceTree = ""; }; + FC086D2D20E7841E00D85EF7 /* depthwise_conv_3x3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = depthwise_conv_3x3.cpp; sourceTree = ""; }; + FC086D2E20E7841E00D85EF7 /* vol2col.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vol2col.h; sourceTree = ""; }; + FC086D2F20E7841E00D85EF7 /* softmax.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = softmax.cpp; sourceTree = ""; }; + FC086D3020E7841E00D85EF7 /* transform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = transform.h; sourceTree = ""; }; + FC086D3120E7841E00D85EF7 /* pooling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pooling.h; sourceTree = ""; }; + FC086D3220E7841E00D85EF7 /* math_func_neon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_func_neon.h; sourceTree = ""; }; + FC086D3320E7841E00D85EF7 /* fusion_conv_add_relu_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fusion_conv_add_relu_op.h; sourceTree = ""; }; + FC086D3420E7841E00D85EF7 /* fetch_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fetch_op.cpp; sourceTree = ""; }; + FC086D3520E7841E00D85EF7 /* fusion_conv_add.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fusion_conv_add.cpp; sourceTree = ""; }; + FC086D3620E7841E00D85EF7 /* op_param.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = op_param.cpp; sourceTree = ""; }; + FC086D3720E7841E00D85EF7 /* transpose_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = transpose_op.h; sourceTree = ""; }; + FC086D3820E7841E00D85EF7 /* fusion_fc_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fusion_fc_op.h; sourceTree = ""; }; + FC086D3920E7841E00D85EF7 /* batchnorm_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = batchnorm_op.h; sourceTree = ""; }; + FC086D3A20E7841E00D85EF7 /* mul_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mul_op.cpp; sourceTree = ""; }; + FC086D3B20E7841E00D85EF7 /* relu_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relu_op.cpp; sourceTree = ""; }; + FC086D3C20E7841E00D85EF7 /* conv_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_op.cpp; sourceTree = ""; }; + FC086D3D20E7841E00D85EF7 /* fusion_fc_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fusion_fc_op.cpp; sourceTree = ""; }; + FC086D3E20E7841E00D85EF7 /* box_coder_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = box_coder_op.h; sourceTree = ""; }; + FC086D3F20E7841E00D85EF7 /* concat_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = concat_op.h; sourceTree = ""; }; + FC086D4020E7841E00D85EF7 /* batchnorm_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = batchnorm_op.cpp; sourceTree = ""; }; + FC086D4120E7841E00D85EF7 /* reshape_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reshape_op.h; sourceTree = ""; }; + FC086D4220E7841E00D85EF7 /* pool_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pool_op.cpp; sourceTree = ""; }; + FC086D4320E7841E00D85EF7 /* sigmoid_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sigmoid_op.h; sourceTree = ""; }; + FC086D4420E7841E00D85EF7 /* multiclass_nms_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = multiclass_nms_op.cpp; sourceTree = ""; }; + FC086D4620E7841E00D85EF7 /* relu_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relu_kernel.h; sourceTree = ""; }; + FC086D4720E7841E00D85EF7 /* multiclass_nms_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = multiclass_nms_kernel.h; sourceTree = ""; }; + FC086D4820E7841E00D85EF7 /* depthwise_conv_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = depthwise_conv_kernel.h; sourceTree = ""; }; + FC086D4920E7841E00D85EF7 /* lrn_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lrn_kernel.h; sourceTree = ""; }; + FC086D4A20E7841E00D85EF7 /* pool_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pool_kernel.h; sourceTree = ""; }; + FC086D4B20E7841E00D85EF7 /* fusion_fc_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fusion_fc_kernel.h; sourceTree = ""; }; + FC086D4C20E7841E00D85EF7 /* box_coder_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = box_coder_kernel.h; sourceTree = ""; }; + FC086D4D20E7841E00D85EF7 /* concat_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = concat_kernel.h; sourceTree = ""; }; + FC086D4E20E7841E00D85EF7 /* mul_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mul_kernel.h; sourceTree = ""; }; + FC086D4F20E7841E00D85EF7 /* softmax_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = softmax_kernel.h; sourceTree = ""; }; + FC086D5020E7841E00D85EF7 /* batchnorm_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = batchnorm_kernel.h; sourceTree = ""; }; + FC086D5220E7841E00D85EF7 /* acl_tensor.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = acl_tensor.cc; sourceTree = ""; }; + FC086D5320E7841E00D85EF7 /* acl_operator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = acl_operator.cc; sourceTree = ""; }; + FC086D5420E7841E00D85EF7 /* conv_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_kernel.cpp; sourceTree = ""; }; + FC086D5520E7841E00D85EF7 /* acl_operator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acl_operator.h; sourceTree = ""; }; + FC086D5620E7841E00D85EF7 /* conv_add_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_add_kernel.cpp; sourceTree = ""; }; + FC086D5720E7841E00D85EF7 /* acl_tensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acl_tensor.h; sourceTree = ""; }; + FC086D5820E7841E00D85EF7 /* relu_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relu_kernel.cpp; sourceTree = ""; }; + FC086D5920E7841E00D85EF7 /* mul_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mul_kernel.cpp; sourceTree = ""; }; + FC086D5A20E7841E00D85EF7 /* elementwise_add_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = elementwise_add_kernel.cpp; sourceTree = ""; }; + FC086D5C20E7841E00D85EF7 /* softmax_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = softmax_kernel.cpp; sourceTree = ""; }; + FC086D5D20E7841E00D85EF7 /* concat_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = concat_kernel.cpp; sourceTree = ""; }; + FC086D5E20E7841E00D85EF7 /* pool_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pool_kernel.cpp; sourceTree = ""; }; + FC086D5F20E7841E00D85EF7 /* reshape_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reshape_kernel.cpp; sourceTree = ""; }; + FC086D6020E7841E00D85EF7 /* lrn_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lrn_kernel.cpp; sourceTree = ""; }; + FC086D6120E7841E00D85EF7 /* fushion_fc_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fushion_fc_kernel.cpp; sourceTree = ""; }; + FC086D6220E7841E00D85EF7 /* batchnorm_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = batchnorm_kernel.cpp; sourceTree = ""; }; + FC086D6320E7841E00D85EF7 /* elementwise_add_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = elementwise_add_kernel.h; sourceTree = ""; }; + FC086D6520E7841E00D85EF7 /* conv_arm_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_arm_func.h; sourceTree = ""; }; + FC086D6620E7841E00D85EF7 /* conv_add_bn_relu_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_add_bn_relu_func.h; sourceTree = ""; }; + FC086D6720E7841E00D85EF7 /* conv_add_relu_arm_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_add_relu_arm_func.h; sourceTree = ""; }; + FC086D6820E7841E00D85EF7 /* depthwise_conv_arm_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = depthwise_conv_arm_func.h; sourceTree = ""; }; + FC086D6920E7841E00D85EF7 /* batchnorm_arm_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = batchnorm_arm_func.h; sourceTree = ""; }; + FC086D6A20E7841E00D85EF7 /* conv_add_relu_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_add_relu_kernel.h; sourceTree = ""; }; + FC086D6B20E7841E00D85EF7 /* reshape_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reshape_kernel.h; sourceTree = ""; }; + FC086D6C20E7841E00D85EF7 /* transpose_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = transpose_kernel.h; sourceTree = ""; }; + FC086D6D20E7841E00D85EF7 /* conv_add_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_add_kernel.h; sourceTree = ""; }; + FC086D6F20E7841E00D85EF7 /* conv_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_kernel.cpp; sourceTree = ""; }; + FC086D7020E7841E00D85EF7 /* conv_add_bn_relu_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_add_bn_relu_kernel.h; sourceTree = ""; }; + FC086D7120E7841E00D85EF7 /* prior_box_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prior_box_kernel.h; sourceTree = ""; }; + FC086D7220E7841E00D85EF7 /* conv_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conv_kernel.h; sourceTree = ""; }; + FC086D7420E7841E00D85EF7 /* prior_box_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prior_box_kernel.cpp; sourceTree = ""; }; + FC086D7520E7841E00D85EF7 /* conv_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_kernel.cpp; sourceTree = ""; }; + FC086D7620E7841E00D85EF7 /* conv_add_bn_relu_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_add_bn_relu_kernel.cpp; sourceTree = ""; }; + FC086D7720E7841E00D85EF7 /* box_coder_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = box_coder_kernel.cpp; sourceTree = ""; }; + FC086D7820E7841E00D85EF7 /* conv_add_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_add_kernel.cpp; sourceTree = ""; }; + FC086D7920E7841E00D85EF7 /* sigmoid_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sigmoid_kernel.cpp; sourceTree = ""; }; + FC086D7A20E7841E00D85EF7 /* relu_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relu_kernel.cpp; sourceTree = ""; }; + FC086D7B20E7841E00D85EF7 /* mul_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mul_kernel.cpp; sourceTree = ""; }; + FC086D7C20E7841E00D85EF7 /* elementwise_add_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = elementwise_add_kernel.cpp; sourceTree = ""; }; + FC086D7D20E7841E00D85EF7 /* conv_add_relu_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conv_add_relu_kernel.cpp; sourceTree = ""; }; + FC086D7E20E7841E00D85EF7 /* transpose_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = transpose_kernel.cpp; sourceTree = ""; }; + FC086D7F20E7841E00D85EF7 /* depthwise_conv_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = depthwise_conv_kernel.cpp; sourceTree = ""; }; + FC086D8020E7841E00D85EF7 /* softmax_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = softmax_kernel.cpp; sourceTree = ""; }; + FC086D8120E7841E00D85EF7 /* concat_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = concat_kernel.cpp; sourceTree = ""; }; + FC086D8220E7841E00D85EF7 /* fusion_fc_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fusion_fc_kernel.cpp; sourceTree = ""; }; + FC086D8320E7841E00D85EF7 /* pool_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pool_kernel.cpp; sourceTree = ""; }; + FC086D8420E7841E00D85EF7 /* reshape_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reshape_kernel.cpp; sourceTree = ""; }; + FC086D8520E7841E00D85EF7 /* lrn_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lrn_kernel.cpp; sourceTree = ""; }; + FC086D8620E7841E00D85EF7 /* batchnorm_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = batchnorm_kernel.cpp; sourceTree = ""; }; + FC086D8720E7841E00D85EF7 /* multiclass_nms_kernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = multiclass_nms_kernel.cpp; sourceTree = ""; }; + FC086D8820E7841E00D85EF7 /* sigmoid_kernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sigmoid_kernel.h; sourceTree = ""; }; + FC086D8920E7841E00D85EF7 /* depthwise_conv_op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = depthwise_conv_op.h; sourceTree = ""; }; + FC086D8B20E7841E00D85EF7 /* framework.pb-c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "framework.pb-c.c"; sourceTree = ""; }; + FC086D8C20E7841E00D85EF7 /* tensor_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tensor_util.cpp; sourceTree = ""; }; + FC086D8D20E7841E00D85EF7 /* operator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operator.h; sourceTree = ""; }; + FC086D8E20E7841E00D85EF7 /* op_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_info.h; sourceTree = ""; }; + FC086D8F20E7841E00D85EF7 /* operator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operator.cpp; sourceTree = ""; }; + FC086D9020E7841E00D85EF7 /* ddim.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ddim.cpp; sourceTree = ""; }; + FC086D9120E7841E00D85EF7 /* tensor_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tensor_util.h; sourceTree = ""; }; + FC086D9220E7841E00D85EF7 /* variable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = variable.h; sourceTree = ""; }; + FC086D9320E7841E00D85EF7 /* scope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scope.cpp; sourceTree = ""; }; + FC086D9420E7841E00D85EF7 /* data_layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = data_layout.h; sourceTree = ""; }; + FC086D9520E7841E00D85EF7 /* lod_tensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lod_tensor.h; sourceTree = ""; }; + FC086D9620E7841E00D85EF7 /* dim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dim.h; sourceTree = ""; }; + FC086D9720E7841E00D85EF7 /* framework.pb-c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "framework.pb-c.h"; sourceTree = ""; }; + FC086D9820E7841E00D85EF7 /* op_kernel_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_kernel_type.h; sourceTree = ""; }; + FC086D9920E7841E00D85EF7 /* attribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attribute.cpp; sourceTree = ""; }; + FC086D9A20E7841E00D85EF7 /* op_proto_maker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_proto_maker.h; sourceTree = ""; }; + FC086D9C20E7841E00D85EF7 /* op_desc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = op_desc.cpp; sourceTree = ""; }; + FC086D9D20E7841E00D85EF7 /* program_desc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = program_desc.cpp; sourceTree = ""; }; + FC086D9E20E7841E00D85EF7 /* var_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = var_desc.h; sourceTree = ""; }; + FC086D9F20E7841E00D85EF7 /* program_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program_desc.h; sourceTree = ""; }; + FC086DA020E7841E00D85EF7 /* op_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_desc.h; sourceTree = ""; }; + FC086DA220E7841E00D85EF7 /* fusion_op_register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fusion_op_register.h; sourceTree = ""; }; + FC086DA320E7841E00D85EF7 /* node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = node.cpp; sourceTree = ""; }; + FC086DA420E7841E00D85EF7 /* node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node.h; sourceTree = ""; }; + FC086DA520E7841E00D85EF7 /* program_optimize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program_optimize.h; sourceTree = ""; }; + FC086DA620E7841E00D85EF7 /* program_optimize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = program_optimize.cpp; sourceTree = ""; }; + FC086DA720E7841E00D85EF7 /* block_desc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_desc.cpp; sourceTree = ""; }; + FC086DA820E7841E00D85EF7 /* program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program.h; sourceTree = ""; }; + FC086DA920E7841E00D85EF7 /* tensor_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tensor_desc.h; sourceTree = ""; }; + FC086DAA20E7841E00D85EF7 /* block_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_desc.h; sourceTree = ""; }; + FC086DAB20E7841E00D85EF7 /* lod_tensor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lod_tensor.cpp; sourceTree = ""; }; + FC086DAC20E7841E00D85EF7 /* framework.proto */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = framework.proto; sourceTree = ""; }; + FC086DAD20E7841E00D85EF7 /* ddim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ddim.h; sourceTree = ""; }; + FC086DAE20E7841E00D85EF7 /* attribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attribute.h; sourceTree = ""; }; + FC086DAF20E7841E00D85EF7 /* scope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scope.h; sourceTree = ""; }; + FC086DB020E7841E00D85EF7 /* tensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tensor.h; sourceTree = ""; }; + FC086DB120E7841E00D85EF7 /* op_registry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_registry.h; sourceTree = ""; }; + FC086DB320E7841E00D85EF7 /* io.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = io.cpp; sourceTree = ""; }; + FC086DB420E7841E00D85EF7 /* io.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = ""; }; + FC086DB620E7841E00D85EF7 /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = ""; }; + FC086DB720E7841E00D85EF7 /* threadpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threadpool.h; sourceTree = ""; }; + FC086DB820E7841E00D85EF7 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + FC086DB920E7841E00D85EF7 /* protobuf-c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "protobuf-c.h"; sourceTree = ""; }; + FC086DBA20E7841E00D85EF7 /* openmp-fix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "openmp-fix.cpp"; sourceTree = ""; }; + FC086DBB20E7841E00D85EF7 /* dep_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dep_core.h; sourceTree = ""; }; + FC086DBC20E7841E00D85EF7 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + FC086DBD20E7841E00D85EF7 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + FC086DBE20E7841E00D85EF7 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + FC086DBF20E7841E00D85EF7 /* type_define.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_define.h; sourceTree = ""; }; + FC086DC020E7841E00D85EF7 /* enforce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enforce.h; sourceTree = ""; }; + FC086DC120E7841E00D85EF7 /* protobuf-c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "protobuf-c.c"; sourceTree = ""; }; + FC086DC220E7841E00D85EF7 /* variant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = variant.h; sourceTree = ""; }; + FC086DC420E7841E00D85EF7 /* paddle_mobile_jni.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = paddle_mobile_jni.cpp; sourceTree = ""; }; + FC086DC520E7841E00D85EF7 /* paddle_mobile_jni.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = paddle_mobile_jni.h; sourceTree = ""; }; + FC2428A520E78DF20095932F /* MacroDefine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MacroDefine.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + FC086BAC20E7839B00D85EF7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + FC086BA620E7839B00D85EF7 = { + isa = PBXGroup; + children = ( + FC086BB120E7839B00D85EF7 /* PaddleMobile */, + FC086BB020E7839B00D85EF7 /* Products */, + ); + sourceTree = ""; + }; + FC086BB020E7839B00D85EF7 /* Products */ = { + isa = PBXGroup; + children = ( + FC086BAF20E7839B00D85EF7 /* libPaddleMobile.a */, + ); + name = Products; + sourceTree = ""; + }; + FC086BB120E7839B00D85EF7 /* PaddleMobile */ = { + isa = PBXGroup; + children = ( + FC086CFC20E7841E00D85EF7 /* src */, + FC086BB220E7839B00D85EF7 /* PaddleMobile.h */, + FC086BB320E7839B00D85EF7 /* PaddleMobile.m */, + FC2428A520E78DF20095932F /* MacroDefine.h */, + ); + path = PaddleMobile; + sourceTree = ""; + }; + FC086CFC20E7841E00D85EF7 /* src */ = { + isa = PBXGroup; + children = ( + FC086CFD20E7841E00D85EF7 /* memory */, + FC086D0020E7841E00D85EF7 /* operators */, + FC086D8A20E7841E00D85EF7 /* framework */, + FC086DB220E7841E00D85EF7 /* io */, + FC086DB520E7841E00D85EF7 /* common */, + FC086DC320E7841E00D85EF7 /* jni */, + ); + name = src; + path = ../../../src; + sourceTree = ""; + }; + FC086CFD20E7841E00D85EF7 /* memory */ = { + isa = PBXGroup; + children = ( + FC086CFE20E7841E00D85EF7 /* t_malloc.cpp */, + FC086CFF20E7841E00D85EF7 /* t_malloc.h */, + ); + path = memory; + sourceTree = ""; + }; + FC086D0020E7841E00D85EF7 /* operators */ = { + isa = PBXGroup; + children = ( + FC086D0120E7841E00D85EF7 /* feed_op.h */, + FC086D0220E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.h */, + FC086D0320E7841E00D85EF7 /* lrn_op.cpp */, + FC086D0420E7841E00D85EF7 /* op_param.h */, + FC086D0520E7841E00D85EF7 /* sigmoid_op.cpp */, + FC086D0620E7841E00D85EF7 /* box_coder_op.cpp */, + FC086D0720E7841E00D85EF7 /* feed_op.cpp */, + FC086D0820E7841E00D85EF7 /* mul_op.h */, + FC086D0920E7841E00D85EF7 /* prior_box_op.h */, + FC086D0A20E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.cpp */, + FC086D0B20E7841E00D85EF7 /* reshape_op.cpp */, + FC086D0C20E7841E00D85EF7 /* concat_op.cpp */, + FC086D0D20E7841E00D85EF7 /* transpose_op.cpp */, + FC086D0E20E7841E00D85EF7 /* prior_box_op.cpp */, + FC086D0F20E7841E00D85EF7 /* fusion_conv_add_relu_op.cpp */, + FC086D1020E7841E00D85EF7 /* lrn_op.h */, + FC086D1120E7841E00D85EF7 /* multiclass_nms_op.h */, + FC086D1220E7841E00D85EF7 /* relu_op.h */, + FC086D1320E7841E00D85EF7 /* fusion_conv_add.h */, + FC086D1420E7841E00D85EF7 /* conv_op.h */, + FC086D1520E7841E00D85EF7 /* softmax_op.cpp */, + FC086D1620E7841E00D85EF7 /* pool_op.h */, + FC086D1720E7841E00D85EF7 /* depthwise_conv_op.cpp */, + FC086D1820E7841E00D85EF7 /* softmax_op.h */, + FC086D1920E7841E00D85EF7 /* elementwise_add_op.h */, + FC086D1A20E7841E00D85EF7 /* elementwise_add_op.cpp */, + FC086D1B20E7841E00D85EF7 /* fetch_op.h */, + FC086D1C20E7841E00D85EF7 /* math */, + FC086D3320E7841E00D85EF7 /* fusion_conv_add_relu_op.h */, + FC086D3420E7841E00D85EF7 /* fetch_op.cpp */, + FC086D3520E7841E00D85EF7 /* fusion_conv_add.cpp */, + FC086D3620E7841E00D85EF7 /* op_param.cpp */, + FC086D3720E7841E00D85EF7 /* transpose_op.h */, + FC086D3820E7841E00D85EF7 /* fusion_fc_op.h */, + FC086D3920E7841E00D85EF7 /* batchnorm_op.h */, + FC086D3A20E7841E00D85EF7 /* mul_op.cpp */, + FC086D3B20E7841E00D85EF7 /* relu_op.cpp */, + FC086D3C20E7841E00D85EF7 /* conv_op.cpp */, + FC086D3D20E7841E00D85EF7 /* fusion_fc_op.cpp */, + FC086D3E20E7841E00D85EF7 /* box_coder_op.h */, + FC086D3F20E7841E00D85EF7 /* concat_op.h */, + FC086D4020E7841E00D85EF7 /* batchnorm_op.cpp */, + FC086D4120E7841E00D85EF7 /* reshape_op.h */, + FC086D4220E7841E00D85EF7 /* pool_op.cpp */, + FC086D4320E7841E00D85EF7 /* sigmoid_op.h */, + FC086D4420E7841E00D85EF7 /* multiclass_nms_op.cpp */, + FC086D4520E7841E00D85EF7 /* kernel */, + FC086D8920E7841E00D85EF7 /* depthwise_conv_op.h */, + ); + path = operators; + sourceTree = ""; + }; + FC086D1C20E7841E00D85EF7 /* math */ = { + isa = PBXGroup; + children = ( + FC086D1D20E7841E00D85EF7 /* elementwise_op_function.h */, + FC086D1E20E7841E00D85EF7 /* softmax.h */, + FC086D1F20E7841E00D85EF7 /* gemm.cpp */, + FC086D2020E7841E00D85EF7 /* math_function.h */, + FC086D2120E7841E00D85EF7 /* conv_func.h */, + FC086D2220E7841E00D85EF7 /* pool_2x2.cpp */, + FC086D2320E7841E00D85EF7 /* im2col.cpp */, + FC086D2420E7841E00D85EF7 /* gemm.h */, + FC086D2520E7841E00D85EF7 /* im2col.h */, + FC086D2620E7841E00D85EF7 /* vol2col.cpp */, + FC086D2720E7841E00D85EF7 /* math_function.cpp */, + FC086D2820E7841E00D85EF7 /* pool_3x3.cpp */, + FC086D2920E7841E00D85EF7 /* pool_2x2.h */, + FC086D2A20E7841E00D85EF7 /* depthwise_conv_3x3.h */, + FC086D2B20E7841E00D85EF7 /* pooling.cpp */, + FC086D2C20E7841E00D85EF7 /* pool_3x3.h */, + FC086D2D20E7841E00D85EF7 /* depthwise_conv_3x3.cpp */, + FC086D2E20E7841E00D85EF7 /* vol2col.h */, + FC086D2F20E7841E00D85EF7 /* softmax.cpp */, + FC086D3020E7841E00D85EF7 /* transform.h */, + FC086D3120E7841E00D85EF7 /* pooling.h */, + FC086D3220E7841E00D85EF7 /* math_func_neon.h */, + ); + path = math; + sourceTree = ""; + }; + FC086D4520E7841E00D85EF7 /* kernel */ = { + isa = PBXGroup; + children = ( + FC086D4620E7841E00D85EF7 /* relu_kernel.h */, + FC086D4720E7841E00D85EF7 /* multiclass_nms_kernel.h */, + FC086D4820E7841E00D85EF7 /* depthwise_conv_kernel.h */, + FC086D4920E7841E00D85EF7 /* lrn_kernel.h */, + FC086D4A20E7841E00D85EF7 /* pool_kernel.h */, + FC086D4B20E7841E00D85EF7 /* fusion_fc_kernel.h */, + FC086D4C20E7841E00D85EF7 /* box_coder_kernel.h */, + FC086D4D20E7841E00D85EF7 /* concat_kernel.h */, + FC086D4E20E7841E00D85EF7 /* mul_kernel.h */, + FC086D4F20E7841E00D85EF7 /* softmax_kernel.h */, + FC086D5020E7841E00D85EF7 /* batchnorm_kernel.h */, + FC086D5120E7841E00D85EF7 /* mali */, + FC086D6320E7841E00D85EF7 /* elementwise_add_kernel.h */, + FC086D6420E7841E00D85EF7 /* central-arm-func */, + FC086D6A20E7841E00D85EF7 /* conv_add_relu_kernel.h */, + FC086D6B20E7841E00D85EF7 /* reshape_kernel.h */, + FC086D6C20E7841E00D85EF7 /* transpose_kernel.h */, + FC086D6D20E7841E00D85EF7 /* conv_add_kernel.h */, + FC086D6E20E7841E00D85EF7 /* fpga */, + FC086D7020E7841E00D85EF7 /* conv_add_bn_relu_kernel.h */, + FC086D7120E7841E00D85EF7 /* prior_box_kernel.h */, + FC086D7220E7841E00D85EF7 /* conv_kernel.h */, + FC086D7320E7841E00D85EF7 /* arm */, + FC086D8820E7841E00D85EF7 /* sigmoid_kernel.h */, + ); + path = kernel; + sourceTree = ""; + }; + FC086D5120E7841E00D85EF7 /* mali */ = { + isa = PBXGroup; + children = ( + FC086D5220E7841E00D85EF7 /* acl_tensor.cc */, + FC086D5320E7841E00D85EF7 /* acl_operator.cc */, + FC086D5420E7841E00D85EF7 /* conv_kernel.cpp */, + FC086D5520E7841E00D85EF7 /* acl_operator.h */, + FC086D5620E7841E00D85EF7 /* conv_add_kernel.cpp */, + FC086D5720E7841E00D85EF7 /* acl_tensor.h */, + FC086D5820E7841E00D85EF7 /* relu_kernel.cpp */, + FC086D5920E7841E00D85EF7 /* mul_kernel.cpp */, + FC086D5A20E7841E00D85EF7 /* elementwise_add_kernel.cpp */, + FC086D5B20E7841E00D85EF7 /* ACL_Android */, + FC086D5C20E7841E00D85EF7 /* softmax_kernel.cpp */, + FC086D5D20E7841E00D85EF7 /* concat_kernel.cpp */, + FC086D5E20E7841E00D85EF7 /* pool_kernel.cpp */, + FC086D5F20E7841E00D85EF7 /* reshape_kernel.cpp */, + FC086D6020E7841E00D85EF7 /* lrn_kernel.cpp */, + FC086D6120E7841E00D85EF7 /* fushion_fc_kernel.cpp */, + FC086D6220E7841E00D85EF7 /* batchnorm_kernel.cpp */, + ); + path = mali; + sourceTree = ""; + }; + FC086D5B20E7841E00D85EF7 /* ACL_Android */ = { + isa = PBXGroup; + children = ( + ); + path = ACL_Android; + sourceTree = ""; + }; + FC086D6420E7841E00D85EF7 /* central-arm-func */ = { + isa = PBXGroup; + children = ( + FC086D6520E7841E00D85EF7 /* conv_arm_func.h */, + FC086D6620E7841E00D85EF7 /* conv_add_bn_relu_func.h */, + FC086D6720E7841E00D85EF7 /* conv_add_relu_arm_func.h */, + FC086D6820E7841E00D85EF7 /* depthwise_conv_arm_func.h */, + FC086D6920E7841E00D85EF7 /* batchnorm_arm_func.h */, + ); + path = "central-arm-func"; + sourceTree = ""; + }; + FC086D6E20E7841E00D85EF7 /* fpga */ = { + isa = PBXGroup; + children = ( + FC086D6F20E7841E00D85EF7 /* conv_kernel.cpp */, + ); + path = fpga; + sourceTree = ""; + }; + FC086D7320E7841E00D85EF7 /* arm */ = { + isa = PBXGroup; + children = ( + FC086D7420E7841E00D85EF7 /* prior_box_kernel.cpp */, + FC086D7520E7841E00D85EF7 /* conv_kernel.cpp */, + FC086D7620E7841E00D85EF7 /* conv_add_bn_relu_kernel.cpp */, + FC086D7720E7841E00D85EF7 /* box_coder_kernel.cpp */, + FC086D7820E7841E00D85EF7 /* conv_add_kernel.cpp */, + FC086D7920E7841E00D85EF7 /* sigmoid_kernel.cpp */, + FC086D7A20E7841E00D85EF7 /* relu_kernel.cpp */, + FC086D7B20E7841E00D85EF7 /* mul_kernel.cpp */, + FC086D7C20E7841E00D85EF7 /* elementwise_add_kernel.cpp */, + FC086D7D20E7841E00D85EF7 /* conv_add_relu_kernel.cpp */, + FC086D7E20E7841E00D85EF7 /* transpose_kernel.cpp */, + FC086D7F20E7841E00D85EF7 /* depthwise_conv_kernel.cpp */, + FC086D8020E7841E00D85EF7 /* softmax_kernel.cpp */, + FC086D8120E7841E00D85EF7 /* concat_kernel.cpp */, + FC086D8220E7841E00D85EF7 /* fusion_fc_kernel.cpp */, + FC086D8320E7841E00D85EF7 /* pool_kernel.cpp */, + FC086D8420E7841E00D85EF7 /* reshape_kernel.cpp */, + FC086D8520E7841E00D85EF7 /* lrn_kernel.cpp */, + FC086D8620E7841E00D85EF7 /* batchnorm_kernel.cpp */, + FC086D8720E7841E00D85EF7 /* multiclass_nms_kernel.cpp */, + ); + path = arm; + sourceTree = ""; + }; + FC086D8A20E7841E00D85EF7 /* framework */ = { + isa = PBXGroup; + children = ( + FC086D8B20E7841E00D85EF7 /* framework.pb-c.c */, + FC086D8C20E7841E00D85EF7 /* tensor_util.cpp */, + FC086D8D20E7841E00D85EF7 /* operator.h */, + FC086D8E20E7841E00D85EF7 /* op_info.h */, + FC086D8F20E7841E00D85EF7 /* operator.cpp */, + FC086D9020E7841E00D85EF7 /* ddim.cpp */, + FC086D9120E7841E00D85EF7 /* tensor_util.h */, + FC086D9220E7841E00D85EF7 /* variable.h */, + FC086D9320E7841E00D85EF7 /* scope.cpp */, + FC086D9420E7841E00D85EF7 /* data_layout.h */, + FC086D9520E7841E00D85EF7 /* lod_tensor.h */, + FC086D9620E7841E00D85EF7 /* dim.h */, + FC086D9720E7841E00D85EF7 /* framework.pb-c.h */, + FC086D9820E7841E00D85EF7 /* op_kernel_type.h */, + FC086D9920E7841E00D85EF7 /* attribute.cpp */, + FC086D9A20E7841E00D85EF7 /* op_proto_maker.h */, + FC086D9B20E7841E00D85EF7 /* program */, + FC086DAB20E7841E00D85EF7 /* lod_tensor.cpp */, + FC086DAC20E7841E00D85EF7 /* framework.proto */, + FC086DAD20E7841E00D85EF7 /* ddim.h */, + FC086DAE20E7841E00D85EF7 /* attribute.h */, + FC086DAF20E7841E00D85EF7 /* scope.h */, + FC086DB020E7841E00D85EF7 /* tensor.h */, + FC086DB120E7841E00D85EF7 /* op_registry.h */, + ); + path = framework; + sourceTree = ""; + }; + FC086D9B20E7841E00D85EF7 /* program */ = { + isa = PBXGroup; + children = ( + FC086D9C20E7841E00D85EF7 /* op_desc.cpp */, + FC086D9D20E7841E00D85EF7 /* program_desc.cpp */, + FC086D9E20E7841E00D85EF7 /* var_desc.h */, + FC086D9F20E7841E00D85EF7 /* program_desc.h */, + FC086DA020E7841E00D85EF7 /* op_desc.h */, + FC086DA120E7841E00D85EF7 /* program-optimize */, + FC086DA720E7841E00D85EF7 /* block_desc.cpp */, + FC086DA820E7841E00D85EF7 /* program.h */, + FC086DA920E7841E00D85EF7 /* tensor_desc.h */, + FC086DAA20E7841E00D85EF7 /* block_desc.h */, + ); + path = program; + sourceTree = ""; + }; + FC086DA120E7841E00D85EF7 /* program-optimize */ = { + isa = PBXGroup; + children = ( + FC086DA220E7841E00D85EF7 /* fusion_op_register.h */, + FC086DA320E7841E00D85EF7 /* node.cpp */, + FC086DA420E7841E00D85EF7 /* node.h */, + FC086DA520E7841E00D85EF7 /* program_optimize.h */, + FC086DA620E7841E00D85EF7 /* program_optimize.cpp */, + ); + path = "program-optimize"; + sourceTree = ""; + }; + FC086DB220E7841E00D85EF7 /* io */ = { + isa = PBXGroup; + children = ( + FC086DB320E7841E00D85EF7 /* io.cpp */, + FC086DB420E7841E00D85EF7 /* io.h */, + ); + path = io; + sourceTree = ""; + }; + FC086DB520E7841E00D85EF7 /* common */ = { + isa = PBXGroup; + children = ( + FC086DB620E7841E00D85EF7 /* types.cpp */, + FC086DB720E7841E00D85EF7 /* threadpool.h */, + FC086DB820E7841E00D85EF7 /* types.h */, + FC086DB920E7841E00D85EF7 /* protobuf-c.h */, + FC086DBA20E7841E00D85EF7 /* openmp-fix.cpp */, + FC086DBB20E7841E00D85EF7 /* dep_core.h */, + FC086DBC20E7841E00D85EF7 /* common.h */, + FC086DBD20E7841E00D85EF7 /* log.h */, + FC086DBE20E7841E00D85EF7 /* macros.h */, + FC086DBF20E7841E00D85EF7 /* type_define.h */, + FC086DC020E7841E00D85EF7 /* enforce.h */, + FC086DC120E7841E00D85EF7 /* protobuf-c.c */, + FC086DC220E7841E00D85EF7 /* variant.h */, + ); + path = common; + sourceTree = ""; + }; + FC086DC320E7841E00D85EF7 /* jni */ = { + isa = PBXGroup; + children = ( + FC086DC420E7841E00D85EF7 /* paddle_mobile_jni.cpp */, + FC086DC520E7841E00D85EF7 /* paddle_mobile_jni.h */, + ); + path = jni; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + FC086BAE20E7839B00D85EF7 /* PaddleMobile */ = { + isa = PBXNativeTarget; + buildConfigurationList = FC086BB820E7839B00D85EF7 /* Build configuration list for PBXNativeTarget "PaddleMobile" */; + buildPhases = ( + FC086BAB20E7839B00D85EF7 /* Sources */, + FC086BAC20E7839B00D85EF7 /* Frameworks */, + FC086BAD20E7839B00D85EF7 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PaddleMobile; + productName = PaddleMobile; + productReference = FC086BAF20E7839B00D85EF7 /* libPaddleMobile.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + FC086BA720E7839B00D85EF7 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0930; + ORGANIZATIONNAME = orange; + TargetAttributes = { + FC086BAE20E7839B00D85EF7 = { + CreatedOnToolsVersion = 9.3.1; + }; + }; + }; + buildConfigurationList = FC086BAA20E7839B00D85EF7 /* Build configuration list for PBXProject "PaddleMobile" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = FC086BA620E7839B00D85EF7; + productRefGroup = FC086BB020E7839B00D85EF7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + FC086BAE20E7839B00D85EF7 /* PaddleMobile */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + FC086BAB20E7839B00D85EF7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FC086DCE20E7841E00D85EF7 /* transpose_op.cpp in Sources */, + FC086DD820E7841E00D85EF7 /* math_function.cpp in Sources */, + FC086DE120E7841E00D85EF7 /* relu_op.cpp in Sources */, + FC086E0920E7841E00D85EF7 /* multiclass_nms_kernel.cpp in Sources */, + FC086E0220E7841E00D85EF7 /* softmax_kernel.cpp in Sources */, + FC086DCD20E7841E00D85EF7 /* concat_op.cpp in Sources */, + FC086DCA20E7841E00D85EF7 /* feed_op.cpp in Sources */, + FC086DD920E7841E00D85EF7 /* pool_3x3.cpp in Sources */, + FC086DF020E7841E00D85EF7 /* pool_kernel.cpp in Sources */, + FC086E1A20E7841E00D85EF7 /* paddle_mobile_jni.cpp in Sources */, + FC086DF620E7841E00D85EF7 /* prior_box_kernel.cpp in Sources */, + FC086DC620E7841E00D85EF7 /* t_malloc.cpp in Sources */, + FC086DD320E7841E00D85EF7 /* elementwise_add_op.cpp in Sources */, + FC086E0E20E7841E00D85EF7 /* scope.cpp in Sources */, + FC086DDE20E7841E00D85EF7 /* fusion_conv_add.cpp in Sources */, + FC086DFF20E7841E00D85EF7 /* conv_add_relu_kernel.cpp in Sources */, + FC086DD720E7841E00D85EF7 /* vol2col.cpp in Sources */, + FC086E0B20E7841E00D85EF7 /* tensor_util.cpp in Sources */, + FC086E1320E7841E00D85EF7 /* program_optimize.cpp in Sources */, + FC086DF820E7841E00D85EF7 /* conv_add_bn_relu_kernel.cpp in Sources */, + FC086DC820E7841E00D85EF7 /* sigmoid_op.cpp in Sources */, + FC086E0D20E7841E00D85EF7 /* ddim.cpp in Sources */, + FC086E0120E7841E00D85EF7 /* depthwise_conv_kernel.cpp in Sources */, + FC086DDB20E7841E00D85EF7 /* depthwise_conv_3x3.cpp in Sources */, + FC086BB420E7839B00D85EF7 /* PaddleMobile.m in Sources */, + FC086E1420E7841E00D85EF7 /* block_desc.cpp in Sources */, + FC086DC920E7841E00D85EF7 /* box_coder_op.cpp in Sources */, + FC086DDF20E7841E00D85EF7 /* op_param.cpp in Sources */, + FC086DD520E7841E00D85EF7 /* pool_2x2.cpp in Sources */, + FC086DFD20E7841E00D85EF7 /* mul_kernel.cpp in Sources */, + FC086E0C20E7841E00D85EF7 /* operator.cpp in Sources */, + FC086DE020E7841E00D85EF7 /* mul_op.cpp in Sources */, + FC086E1520E7841E00D85EF7 /* lod_tensor.cpp in Sources */, + FC086DE720E7841E00D85EF7 /* acl_tensor.cc in Sources */, + FC086DDD20E7841E00D85EF7 /* fetch_op.cpp in Sources */, + FC086DE220E7841E00D85EF7 /* conv_op.cpp in Sources */, + FC086DDA20E7841E00D85EF7 /* pooling.cpp in Sources */, + FC086DEF20E7841E00D85EF7 /* concat_kernel.cpp in Sources */, + FC086DE520E7841E00D85EF7 /* pool_op.cpp in Sources */, + FC086DE820E7841E00D85EF7 /* acl_operator.cc in Sources */, + FC086DF220E7841E00D85EF7 /* lrn_kernel.cpp in Sources */, + FC086E0F20E7841E00D85EF7 /* attribute.cpp in Sources */, + FC086E0520E7841E00D85EF7 /* pool_kernel.cpp in Sources */, + FC086DDC20E7841E00D85EF7 /* softmax.cpp in Sources */, + FC086E0420E7841E00D85EF7 /* fusion_fc_kernel.cpp in Sources */, + FC086E1220E7841E00D85EF7 /* node.cpp in Sources */, + FC086E0820E7841E00D85EF7 /* batchnorm_kernel.cpp in Sources */, + FC086DCC20E7841E00D85EF7 /* reshape_op.cpp in Sources */, + FC086DE920E7841E00D85EF7 /* conv_kernel.cpp in Sources */, + FC086E1920E7841E00D85EF7 /* protobuf-c.c in Sources */, + FC086DF920E7841E00D85EF7 /* box_coder_kernel.cpp in Sources */, + FC086DF120E7841E00D85EF7 /* reshape_kernel.cpp in Sources */, + FC086DF720E7841E00D85EF7 /* conv_kernel.cpp in Sources */, + FC086DCF20E7841E00D85EF7 /* prior_box_op.cpp in Sources */, + FC086E1720E7841E00D85EF7 /* types.cpp in Sources */, + FC086DF320E7841E00D85EF7 /* fushion_fc_kernel.cpp in Sources */, + FC086DEB20E7841E00D85EF7 /* relu_kernel.cpp in Sources */, + FC086E0620E7841E00D85EF7 /* reshape_kernel.cpp in Sources */, + FC086E0720E7841E00D85EF7 /* lrn_kernel.cpp in Sources */, + FC086DE620E7841E00D85EF7 /* multiclass_nms_op.cpp in Sources */, + FC086E1120E7841E00D85EF7 /* program_desc.cpp in Sources */, + FC086E0320E7841E00D85EF7 /* concat_kernel.cpp in Sources */, + FC086DEC20E7841E00D85EF7 /* mul_kernel.cpp in Sources */, + FC086DFB20E7841E00D85EF7 /* sigmoid_kernel.cpp in Sources */, + FC086E1820E7841E00D85EF7 /* openmp-fix.cpp in Sources */, + FC086DF420E7841E00D85EF7 /* batchnorm_kernel.cpp in Sources */, + FC086DEA20E7841E00D85EF7 /* conv_add_kernel.cpp in Sources */, + FC086E1620E7841E00D85EF7 /* io.cpp in Sources */, + FC086DD620E7841E00D85EF7 /* im2col.cpp in Sources */, + FC086DC720E7841E00D85EF7 /* lrn_op.cpp in Sources */, + FC086DD220E7841E00D85EF7 /* depthwise_conv_op.cpp in Sources */, + FC086DFA20E7841E00D85EF7 /* conv_add_kernel.cpp in Sources */, + FC086E0A20E7841E00D85EF7 /* framework.pb-c.c in Sources */, + FC086DD020E7841E00D85EF7 /* fusion_conv_add_relu_op.cpp in Sources */, + FC086DCB20E7841E00D85EF7 /* fusion_conv_add_bn_relu_op.cpp in Sources */, + FC086DFC20E7841E00D85EF7 /* relu_kernel.cpp in Sources */, + FC086DE320E7841E00D85EF7 /* fusion_fc_op.cpp in Sources */, + FC086E0020E7841E00D85EF7 /* transpose_kernel.cpp in Sources */, + FC086DEE20E7841E00D85EF7 /* softmax_kernel.cpp in Sources */, + FC086DE420E7841E00D85EF7 /* batchnorm_op.cpp in Sources */, + FC086DED20E7841E00D85EF7 /* elementwise_add_kernel.cpp in Sources */, + FC086DF520E7841E00D85EF7 /* conv_kernel.cpp in Sources */, + FC086DD120E7841E00D85EF7 /* softmax_op.cpp in Sources */, + FC086E1020E7841E00D85EF7 /* op_desc.cpp in Sources */, + FC086DD420E7841E00D85EF7 /* gemm.cpp in Sources */, + FC086DFE20E7841E00D85EF7 /* elementwise_add_kernel.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + FC086BB620E7839B00D85EF7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + FC086BB720E7839B00D85EF7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + FC086BB920E7839B00D85EF7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Z5M2UUN5YV; + HEADER_SEARCH_PATHS = ../../src; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + FC086BBA20E7839B00D85EF7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Z5M2UUN5YV; + HEADER_SEARCH_PATHS = ../../src; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + FC086BAA20E7839B00D85EF7 /* Build configuration list for PBXProject "PaddleMobile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FC086BB620E7839B00D85EF7 /* Debug */, + FC086BB720E7839B00D85EF7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FC086BB820E7839B00D85EF7 /* Build configuration list for PBXNativeTarget "PaddleMobile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FC086BB920E7839B00D85EF7 /* Debug */, + FC086BBA20E7839B00D85EF7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = FC086BA720E7839B00D85EF7 /* Project object */; +} diff --git a/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..18f14d0d53 --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate b/ios/PaddleMobile/PaddleMobile.xcodeproj/project.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d1170b2289cb3302e40f5101b720bc835d08e7e1 GIT binary patch literal 9678 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 TkMI;ki1f(}lRl&WlP~*!$gb6* literal 0 HcmV?d00001 diff --git a/ios/PaddleMobile/PaddleMobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/PaddleMobile/PaddleMobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000000..a877b7cd22 --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + PaddleMobile.xcscheme + + orderHint + 1 + + + + diff --git a/ios/PaddleMobile/PaddleMobile/MacroDefine.h b/ios/PaddleMobile/PaddleMobile/MacroDefine.h new file mode 100644 index 0000000000..a09c420e87 --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile/MacroDefine.h @@ -0,0 +1,13 @@ +// +// MacroDefine.h +// PaddleMobile +// +// Created by liuRuiLong on 2018/6/30. +// Copyright © 2018年 orange. All rights reserved. +// + +#ifndef MacroDefine_h +#define MacroDefine_h + + +#endif /* MacroDefine_h */ diff --git a/ios/PaddleMobile/PaddleMobile/PaddleMobile.h b/ios/PaddleMobile/PaddleMobile/PaddleMobile.h new file mode 100644 index 0000000000..3878c54c8a --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile/PaddleMobile.h @@ -0,0 +1,26 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import +#import + +@interface PaddleMobile : NSObject + ++ (instancetype)sharedInstance; +- (BOOL)load:(NSString *)modelPath andWeightsPath:(NSString *)weighsPath; +- (NSArray *)predict:(CGImageRef)image means:(NSArray *)means scale:(float)scale; +- (NSArray *)predict:(CGImageRef)image; +- (void)clear; + +@end diff --git a/ios/PaddleMobile/PaddleMobile/PaddleMobile.m b/ios/PaddleMobile/PaddleMobile/PaddleMobile.m new file mode 100644 index 0000000000..a350330b1d --- /dev/null +++ b/ios/PaddleMobile/PaddleMobile/PaddleMobile.m @@ -0,0 +1,43 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import "PaddleMobile.h" + +@implementation PaddleMobile + ++ (instancetype)sharedInstance{ + //TODO: imp + exit(0); +} + +- (BOOL)load:(NSString *)modelPath andWeightsPath:(NSString *)weighsPath{ + //TODO: imp + exit(0); +} + +- (NSArray *)predict:(CGImageRef)image means:(NSArray *)means scale:(float)scale{ + //TODO: imp + exit(0); +} + +- (NSArray *)predict:(CGImageRef)image{ + //TODO: imp + exit(0); +} + +- (void)clear{ + //TODO: imp + exit(0); +} +@end diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.pbxproj b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..e7e77ada15 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.pbxproj @@ -0,0 +1,340 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + FC086BC920E783AF00D85EF7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FC086BC820E783AF00D85EF7 /* AppDelegate.m */; }; + FC086BCC20E783AF00D85EF7 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FC086BCB20E783AF00D85EF7 /* ViewController.m */; }; + FC086BCF20E783AF00D85EF7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FC086BCD20E783AF00D85EF7 /* Main.storyboard */; }; + FC086BD120E783B100D85EF7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FC086BD020E783B100D85EF7 /* Assets.xcassets */; }; + FC086BD420E783B100D85EF7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FC086BD220E783B100D85EF7 /* LaunchScreen.storyboard */; }; + FC086BD720E783B100D85EF7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FC086BD620E783B100D85EF7 /* main.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + FC086BC420E783AF00D85EF7 /* PaddleMobileDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PaddleMobileDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + FC086BC720E783AF00D85EF7 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + FC086BC820E783AF00D85EF7 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + FC086BCA20E783AF00D85EF7 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + FC086BCB20E783AF00D85EF7 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + FC086BCE20E783AF00D85EF7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + FC086BD020E783B100D85EF7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + FC086BD320E783B100D85EF7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + FC086BD520E783B100D85EF7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + FC086BD620E783B100D85EF7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + FC086BC120E783AF00D85EF7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + FC086BBB20E783AF00D85EF7 = { + isa = PBXGroup; + children = ( + FC086BC620E783AF00D85EF7 /* PaddleMobileDemo */, + FC086BC520E783AF00D85EF7 /* Products */, + ); + sourceTree = ""; + }; + FC086BC520E783AF00D85EF7 /* Products */ = { + isa = PBXGroup; + children = ( + FC086BC420E783AF00D85EF7 /* PaddleMobileDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + FC086BC620E783AF00D85EF7 /* PaddleMobileDemo */ = { + isa = PBXGroup; + children = ( + FC086BC720E783AF00D85EF7 /* AppDelegate.h */, + FC086BC820E783AF00D85EF7 /* AppDelegate.m */, + FC086BCA20E783AF00D85EF7 /* ViewController.h */, + FC086BCB20E783AF00D85EF7 /* ViewController.m */, + FC086BCD20E783AF00D85EF7 /* Main.storyboard */, + FC086BD020E783B100D85EF7 /* Assets.xcassets */, + FC086BD220E783B100D85EF7 /* LaunchScreen.storyboard */, + FC086BD520E783B100D85EF7 /* Info.plist */, + FC086BD620E783B100D85EF7 /* main.m */, + ); + path = PaddleMobileDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + FC086BC320E783AF00D85EF7 /* PaddleMobileDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = FC086BDA20E783B100D85EF7 /* Build configuration list for PBXNativeTarget "PaddleMobileDemo" */; + buildPhases = ( + FC086BC020E783AF00D85EF7 /* Sources */, + FC086BC120E783AF00D85EF7 /* Frameworks */, + FC086BC220E783AF00D85EF7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PaddleMobileDemo; + productName = PaddleMobileDemo; + productReference = FC086BC420E783AF00D85EF7 /* PaddleMobileDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + FC086BBC20E783AF00D85EF7 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0930; + ORGANIZATIONNAME = orange; + TargetAttributes = { + FC086BC320E783AF00D85EF7 = { + CreatedOnToolsVersion = 9.3.1; + }; + }; + }; + buildConfigurationList = FC086BBF20E783AF00D85EF7 /* Build configuration list for PBXProject "PaddleMobileDemo" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = FC086BBB20E783AF00D85EF7; + productRefGroup = FC086BC520E783AF00D85EF7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + FC086BC320E783AF00D85EF7 /* PaddleMobileDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + FC086BC220E783AF00D85EF7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FC086BD420E783B100D85EF7 /* LaunchScreen.storyboard in Resources */, + FC086BD120E783B100D85EF7 /* Assets.xcassets in Resources */, + FC086BCF20E783AF00D85EF7 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + FC086BC020E783AF00D85EF7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FC086BCC20E783AF00D85EF7 /* ViewController.m in Sources */, + FC086BD720E783B100D85EF7 /* main.m in Sources */, + FC086BC920E783AF00D85EF7 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + FC086BCD20E783AF00D85EF7 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + FC086BCE20E783AF00D85EF7 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + FC086BD220E783B100D85EF7 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + FC086BD320E783B100D85EF7 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + FC086BD820E783B100D85EF7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + FC086BD920E783B100D85EF7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + FC086BDB20E783B100D85EF7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Z5M2UUN5YV; + INFOPLIST_FILE = PaddleMobileDemo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = orange.PaddleMobileDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + FC086BDC20E783B100D85EF7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Z5M2UUN5YV; + INFOPLIST_FILE = PaddleMobileDemo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = orange.PaddleMobileDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + FC086BBF20E783AF00D85EF7 /* Build configuration list for PBXProject "PaddleMobileDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FC086BD820E783B100D85EF7 /* Debug */, + FC086BD920E783B100D85EF7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FC086BDA20E783B100D85EF7 /* Build configuration list for PBXNativeTarget "PaddleMobileDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FC086BDB20E783B100D85EF7 /* Debug */, + FC086BDC20E783B100D85EF7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = FC086BBC20E783AF00D85EF7 /* Project object */; +} diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..e4db9529ba --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/project.xcworkspace/xcuserdata/liuruilong.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..69b699dbf553971a96471ef864e4e848c9b17e12 GIT binary patch literal 5181 zcma)A33wFc`G4P;0CVijP9Q)CAd#$qLc-=gxU$J65=j=!CLxDmyGe#Hu-T2X6CeTV zr&aN+QY?y~PZB8F{@Yq>)q0`+ZK-{%7g&`lwYJuyt+lrPwY8}KcXqN%QtI=#`#d}I z9q;k|-t*h8{)iE`yxx}pfdd}WU=mEm+i-uYXRB_;jaanR6YJWncU$o`PuT3K!9nG0n_0;SO5!Q5u6Vfz+%XUVptB9;D^<)1_H1SE`~64K{xb( z4jZ8twm=N};R^T$TnSgf)vz0`fotJ9xEc1qJ{X1(7==S{7`_8{!M*Tf_$fRD55p61 z3|@d2;Wc<2-iCMJT{sP&!RPP=0wQwAV;WAvbexLQFaxLKxi}wl(1YjUVqAi`Scqj< zh1J-A0c^xp?8IK&ga*dZ!U5ccyYU9R8EFGPuAEQ`ZNAd0X_scso7E zKxy%GN5b*=C@7#Zj`5?QK{`ug(^-B<%c%3$tdE&n;{D-n-5={7=+mQCNb~qh3TpGc z1qHb!g{3vQMP;>xxxQ+jKeyIj>#HiQDlRH1C`t;R0dv7~1ZF}e%z`YK4RhEeHknOf z0uz~Z1kQnZkPYX;e8^!kb2E*lv#BhDsUaFiE2b2evG znR<9jf6RzlabLG(Y$aAb$pbBcJn)PVTKotsWiF;3PXJs1MTtqK9ETDpg)%5_cd(6y z`}9`lRgZ571RDmda92dPk2QFR_Eo?#GE8FF8VIgUIIF{B1*{Bd(^3?EgLH{S!zPif zfK{;Ul0fjxoTG*>rAAWU8mI-&@NiPkIw%^pb+nzL9vX((G)GnitR1yg5tDR{&}JJh z2u;uoEwCP1*$g(5WwKc;i_Ja)?a%=^&`C=nHiw-= z$_t8XtGuVq_4x0!s12)?s)I*xDP3MnxC36pQeA=YRg+*UA=cG>&L`ilj>dd+4%sX%Kl3cG7 ztRZbqp*Op*EIYr*>&-4JEYJ4RH@~Qe2BoFhEd*jkVg9<1Hg!A{4uCW}oo17cdT2tSdSLY{C>f#MyBO21QK(N*@;}-4gk41ZQvm+3!wljMm5m#D@m4jBCmV?${ zL~jVkwj0|R|sy2+67Y_iBWkpb0*DVm#2O3yz{wKJX4dJg150cE{4 zR3rOg8*GOg;hS&-egOAVz550H5}tu);d!chufji2KnY!_Vln!#7B9wjs$LPQT|238 zKa7v!QG5bV;)nP#H;EHCh0EgRa!a|@Tno2>Gr1w|a_&0r4(_|$qukTnZ@Krm54aDx ze{dghA9J5@|Kk45ea3ykBP2fD*b^F@aq^c>V{@Iv7lA%9z*thYlhPrGKoph{#`fq- zog|qjFNHzy+yy4Y!GZzUYM-8Evvb*emcu;kJhtF27$Sgn!Y=qaJsDd_xpEOJVx{z~ zwDaW*Up!7-OgLGM;*OEXsua<|O|fl(@K&QYOxZJ}<&F>i3F)iZG9rdG=%d;dq|9Ws z82UDcMT*>B3u#Nfl!af98@VZ|fx04qtHFxgn7Kn`iyt=+L6J&#~oV_12q zg*?ik1KrkusVDh80*|E-JIczEHTp>?It2d$4{u@)W#z7RB$0;w`q4C|22xq3xF`cd(s+ zkgA-(a_+6Zg5^CddJUfr~X+5TtGIX*~jYKzn9k2QV+U44XpyEAH_SITch zG1eU>7};FNOk-2)Z1T88Zq=ywn|hpH!gixYZDV>;Zpw+H5?jOSSpy3krW~hGmUFYUtckU-^-OK8*Ec5OvaQkR-IRE1cVgYq)2`qtNhwW} zVrJlMTg*(%#95fd*0GCOBMTlT42Kf!a~n9o|rf&hysMNow(VQs7<6#!U{EB@0taSG&M zC83_d+HH53nevdvo&nT z4)!(HeMZ9#*mah?Zjz_7Fv;s;`E6um$2oHK$XZpCf59b_EDA>4sGsaG>&G0X8U+g}5TSeV(XM~#8Fqk-Kf>f0@6 zC9~f&`sj9X))L!9HNTf_c^SWsmyrO5m*W*AWDu{S8|e^S+e-K9NRO#UTl&NFYjt$n ze501_735JpV^>F~6SCcMVxV=zOd}a|Bxw`d%wVFdYe?EvaIGzi8MK8qBnk=M2n{2+ zgOqcwF}Mf6719ksatFD) zxF2zkbH}*nxL3H}QB(C9FY(j(8GI(6#V_O+@#pi4`69lUFXbzFA79Pa^B41te29H}QM;z5G%BS^mAW3)1S-dei#TwhI-)a-l{D3hhEz z7!r01`-Izs+l7O|ox-p%DjXK>6Ydut6dn>D5grpB7oHTJ5?&WR5a)>nVpz1qE5s|s zJ>o6mK5@TzK)ge|SA1A}Tzpb|O8mKaTs$ehCY}=C5Z@Nx75^muMf|IHS`wu>(p+hQ zv{WjRe9~&^BB@>qNX^oEsZHvTI;D+LT-qvamv%_Iq|2ne(gV^{(lP02=^5!+>3Qi@ z=?&>k=?~H$rFW!{q<>4FNngk)3o>2fWL4JWS@HroS6(XT%Y|}SISlL8o5;t z$zi!$*5!yCmHTB=w&dON&GH@c59J@pKbC(YKOp~9epr4~J}N&izbK!Oe=WZvpOjyd zPswk{Z^|FJIM*zf$5r9#bY1G&>DuMG&b8O|ZP%@?{jLM9!>%K)yItRNec$y%*MqJn zUB7a@<@(U|sq3`sa|IMmkrhR8E9uHKWx7(RtW)C34a$DypmL`&q8w7bqdcTMqCBlU zqdcp;pd43TQcfwqSKdQ>X$EOnupr+U=_wMbp2u25I0 zKDAn{SKHKfwL|SxH>-VWOf^+Y-Kt)uUa4NKUZY;8-m2cI4y&W;VfBC1AE@`J_p0}) zkEzGh6Y6i&*VW&uzf<2)-&6mrzOR1ZMz`di?e@Aaa_jD1x8dI6?sH%5zRA7MJ?j3s z`$hK&_pjZrxKFzO?*7RAvHPFyPc>eftO=T=P19CrRa!(F&<<$B+A-}_?UeS1L|z1r ObDnt6c_x3gKmI?<2K&(f literal 0 HcmV?d00001 diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000000..7caa9222e7 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + PaddleMobileDemo.xcscheme + + orderHint + 0 + + + + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.h b/ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.h new file mode 100644 index 0000000000..eb789ffbb2 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.m b/ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.m new file mode 100644 index 0000000000..12cc19636b --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/AppDelegate.m @@ -0,0 +1,57 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. +} + + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. +} + + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + + +@end diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..d8db8d65fd --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/Contents.json b/ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/LaunchScreen.storyboard b/ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000000..f83f6fd581 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/Main.storyboard b/ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..d7c78a1255 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/Info.plist b/ios/PaddleMobileDemo/PaddleMobileDemo/Info.plist new file mode 100644 index 0000000000..16be3b6811 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.h b/ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.h new file mode 100644 index 0000000000..092a369366 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import + +@interface ViewController : UIViewController + + +@end + diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.m b/ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.m new file mode 100644 index 0000000000..369e90039d --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/ViewController.m @@ -0,0 +1,33 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; +} + + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + + +@end diff --git a/ios/PaddleMobileDemo/PaddleMobileDemo/main.m b/ios/PaddleMobileDemo/PaddleMobileDemo/main.m new file mode 100644 index 0000000000..8429e87bd1 --- /dev/null +++ b/ios/PaddleMobileDemo/PaddleMobileDemo/main.m @@ -0,0 +1,22 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/src/common/log.h b/src/common/log.h index faab6b31a3..d3090ad75b 100644 --- a/src/common/log.h +++ b/src/common/log.h @@ -174,8 +174,11 @@ struct ToLog; struct Print { friend struct ToLog; template - Print &operator<<(T const &value) {} - + Print &operator<<(T const &value) { + Print p = Print(); + return p; + } + private: }; diff --git a/src/common/variant.h b/src/common/variant.h index 7fbf0ec077..b87a5e67a7 100644 --- a/src/common/variant.h +++ b/src/common/variant.h @@ -83,6 +83,7 @@ struct Variant { return *const_cast(reinterpret_cast(&data)); } else { PADDLE_MOBILE_THROW_EXCEPTION(" bad cast in variant "); + exit(0); } } diff --git a/src/framework/attribute.h b/src/framework/attribute.h index 478fc1b3f5..f0519a35b3 100644 --- a/src/framework/attribute.h +++ b/src/framework/attribute.h @@ -129,6 +129,7 @@ class Attribute { return vistor(attr.variant_.Get()); } else { PADDLE_MOBILE_THROW_EXCEPTION("type not support"); + exit(0); } } diff --git a/src/framework/data_layout.h b/src/framework/data_layout.h index 3b31445707..f1249008f0 100644 --- a/src/framework/data_layout.h +++ b/src/framework/data_layout.h @@ -40,6 +40,7 @@ inline DataLayout StringToDataLayout(const std::string &str) { return DataLayout::kAnyLayout; } else { PADDLE_MOBILE_THROW_EXCEPTION("Unknown storage order string: %s", s.c_str()) + exit(0); } } @@ -52,6 +53,8 @@ inline std::string DataLayoutToString(const DataLayout &data_layout) { case DataLayout::kAnyLayout: return "ANY_LAYOUT"; default: + PADDLE_MOBILE_THROW_EXCEPTION("Unknown storage order string ") + exit(0); break; } } diff --git a/src/framework/ddim.h b/src/framework/ddim.h index ff94c24ada..833bc2783f 100644 --- a/src/framework/ddim.h +++ b/src/framework/ddim.h @@ -58,7 +58,8 @@ struct DDim { } else if (d.var.TypeId() == typeid(Dim<9>).hash_code()) { return vistor(d.var.Get>()); } else { - DLOG << " dim not support"; + PADDLE_MOBILE_ENFORCE(false, " dim not support"); + exit(0); } } diff --git a/src/framework/dim.h b/src/framework/dim.h index 38e62df995..dd7610de65 100644 --- a/src/framework/dim.h +++ b/src/framework/dim.h @@ -129,6 +129,7 @@ int64_t &indexer(Dim &dim, int idx) { template <> int64_t &indexer<0>(Dim<0> &dim, int idx) { PADDLE_MOBILE_THROW_EXCEPTION("Invalid index") + exit(0); } template @@ -145,6 +146,7 @@ int64_t indexer(const Dim &dim, int idx) { template <> int64_t indexer<0>(const Dim<0> &dim, int idx) { PADDLE_MOBILE_THROW_EXCEPTION("Invalid index") + exit(0); } } // namespace -- GitLab