---
title: 算子编译迁移指导
description: "进行算子编译时，开发者需要感知不同架构、不同的AI处理器型号。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/Ascendcopdevg/atlas_ascendc_compatibility_10_00007.html
sourcePath: /source/zh/canncommercial/900/programug/Ascendcopdevg/atlas_ascendc_compatibility_10_00007.html
indexId: e1523bf62244485087182e8840bb20c765c8d49b3440b222eb364af180bf827b95
---
# 算子编译迁移指导

进行算子编译时，开发者需要感知不同架构、不同的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 ... namespace ops { class AddCustom : public OpDef { public: AddCustom(const char* name) : OpDef(name) { ... // 将ascendXXX更换为对应芯片版本 this->AICore().AddConfig("ascendxxx"); } }; OP_ADD(AddCustom); } // namespace ops
