开发者
资源

算子编译迁移指导

进行算子编译时,开发者需要感知不同架构、不同的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