算子编译迁移指导
进行算子编译时,开发者需要感知不同架构、不同的AI处理器型号。
- 异构编译场景,开发者使用命令行或者编写Cmake文件进行编译的情况,需要手动修改NPU架构版本号或者AI 处理器型号。以修改NPU架构版本号为例,更改编译命令行或编译工程CMakeLists.txt文件中的--npu-arch配置,示例如下:
... target_compile_options(demo PRIVATE // 将dav-xxxx更换为对应NPU架构版本号 $<$<COMPILE_LANGUAGE:ASC>:--npu-arch=dav-xxxx> ) - 对于使用msOpGen工具生成的标准自定义算子工程的情况,会自动在算子工程目录下生成编译配置项文件CMakePresets.json中,并自动填充ASCEND_COMPUTE_UNIT字段。开发者需要在进行算子原型定义时,通过AddConfig接口注册算子支持的AI处理器型号以及相关的配置信息。AddConfig接口原型如下:soc参数表示AI处理器型号,aicore_config表示其他配置信息。
1 2
void AddConfig(const char *soc); void AddConfig(const char *soc, OpAICoreConfig &aicore_config);
通过该接口注册AI处理器型号的样例如下,ascendxxx填写规则请参考算子工程目录下编译配置项文件CMakePresets.json中的ASCEND_COMPUTE_UNIT字段,该字段取值在使用msOpGen创建工程时自动生成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
... namespace ops { class AddCustom : public OpDef { public: AddCustom(const char* name) : OpDef(name) { ... // 将ascendXXX更换为对应芯片版本 this->AICore().AddConfig("ascendxxx"); } }; OP_ADD(AddCustom); } // namespace ops
父主题: 220x迁移351x指导