算子交付件开发完成后,需要对算子工程进行编译,生成自定义算子安装包*.run,详细的编译操作包括:
基于MindStudio进行算子开发的算子工程编译操作请参见《MindStudio 用户指南》中的“算子开发 > 算子工程编译”章节。
若开发其他框架的算子,此步骤无需操作,custom.proto文件如下所示:
syntax = "proto2";
package domi.caffe;
message NetParameter {
optional string name = 1;
// LayerParameter定义,保持默认,用户无需修改
repeated LayerParameter layer = 100; // ID 100 so layers are printed last.
}
message LayerParameter {
optional string name = 1; // 模型解析所需要定义,保持默认,用户无需修改。
optional string type = 2; // 模型解析所需要定义,保持默认,用户无需修改。
// 在LayerParameter中添加自定义算子层的定义,ID需要保持唯一,取值原则为:不与内置caffe.proto中编号重复,且小于5000。
// 内置的caffe.proto存储路径为CANN软件安装后文件存储路径的“include/proto/caffe.proto”。
optional CustomTest1Parameter custom_test1_param = 1000;
optional CustomTest2Parameter custom_test2_param = 1001;
}
// 增加自定义算子层的定义
message CustomTest1Parameter {
optional bool adj_x1 = 1 [default = false];
optional bool adj_x2 = 2 [default = false];
}
//若自定义算子中无属性进行解析映射,则message xxParameter定义保持空,如下所示:
message CustomTest2Parameter {
}
Parameter的类型(粗斜体部分)建议保持唯一,不与内置caffe.proto(CANN软件安装后文件存储路径下的“include/proto/caffe.proto”)定义重复。
export ASCEND_TENSOR_COMPILER_INCLUDE=${INSTALL_DIR}/include
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。例如,若安装的Ascend-cann-toolkit软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。
export TOOLCHAIN_DIR=${INSTALL_DIR}/toolkit/toolchain/hcc
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。例如,若安装的Ascend-cann-toolkit软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。
export AICPU_KERNEL_TARGET=cust_aicpu_kernels_3.3.0
在算子工程目录下执行如下命令:
chmod +x build.sh
./build.sh
编译成功后,会在当前目录下创建build_out目录,并在build_out目录下生成自定义算子安装包custom_opp_<target os>_<target architecture>.run。
若重新进行工程编译,请先执行./build.sh clean命令进行编译文件的清理。