昇腾社区首页
中文
注册
开发者
下载

编译选项

常用的编译选项说明如下:

表1 常用编译选项列表

选项

是否必需

说明

-help

查看帮助。

--npu-arch

编译时指定的昇腾AI处理器架构,取值为dav-<arch-version>,其中<arch-version>为NPU架构版本号,各产品型号对应的架构版本号请通过表3进行查询。

当前只支持--npu-arch=dav-2201。

--npu-soc

编译时指定的昇腾AI处理器型号,npu-soc和npu-arch同时配置时,优先使能npu-arch。

昇腾AI处理器的型号请通过如下方式获取:

  • 针对如下产品型号:在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy

    Atlas A2 训练系列产品/Atlas A2 推理系列产品

    Atlas 200I/500 A2 推理产品

    Atlas 推理系列产品

    Atlas 训练系列产品

  • 针对如下产品型号,在安装昇腾AI处理器的服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip NameNPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为AscendxxxNPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:
    • id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。
    • chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。

    Atlas A3 训练系列产品/Atlas A3 推理系列产品

-o <file>

指定输出文件的名称和位置。

-O

用于指定编译器的优化级别,当前支持-O3,-O2,-O0。

-fPIC

告知编译器产生位置无关代码。

-shared,--shared

编译生成动态链接库。详见编译、链接、库使用方法

-lib,--cce-build-static-lib

用于编译生成静态链接库。编译器会将Device侧的代码进行编译链接,生成Device侧二进制文件,随后将该文件作为Host侧编译的输入进行编译,最后链接生成静态链接库。详见编译、链接、库使用方法

--cce-auto-sync

开启自动同步。AI Core内部的执行单元是异步并行的,LocalTensor的读写可能存在数据依赖,可以通过该选项进行自动同步,无需用户通过接口手动插入同步。详细内容请参考支持自动同步

--cce-auto-sync-log

“--cce-auto-sync-log=<file>”编译选项可以输出同步插入信息到<file>文件中。

--std=c++17

用于配置使用的C++标准。当编译Ascend C算子时,需要使用C++17标准,该选项为必选项,使用asc作为文件后缀时,std默认为c++17。

-x

将该选项后的输入文件按照特定语法接口进行解析编译,支持cce、asc后缀。不支持ccache编译缓存加速,若需使用ccache,请使用--cce-aicore-lang替代选项。

--cce-aicore-lang

将该选项后的输入文件按照cce异构语言模式编译。支持ccache编译缓存加速(不可与-xcce同时使用)。缓存加速效果请参考ccache官网介绍。

-g

编译时增加调试信息。

--sanitizer,--cce-enable-sanitizer

编译时增加代码正确性校验信息。使用sanitizer选项时,需要同步添加-g选项。

表2 待废弃编译选项列表

选项

是否必需

说明

--cce-soc-version

该选项将在后续的版本中废弃,请不要使用该编译选项,使用--npu-arch或者--npu-soc替换。

昇腾AI处理器的型号,配置后生成对应AI处理器型号的二进制。

如果无法确定具体的AI处理器型号,则在安装AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,应配置为 --cce-soc-version=Ascendxxxyy

--cce-soc-core-type

该选项将在后续的版本中废弃,请不要使用该编译选项,使用--npu-arch或者--npu-soc替换。

生成对应核的二进制,参数取值为VecCore、CubeCore、AICore。

  • VecCore:编写的代码,仅包含Vector侧代码;
  • CubeCore:编写的代码,仅包含Cube侧代码;
  • AICore:编写的代码,同时包含Vector和Cube侧代码。
表3 产品型号和__NPU_ARCH__的对应关系

产品型号

__NPU_ARCH__

Atlas A3 训练系列产品/Atlas A3 推理系列产品

2201

Atlas A2 训练系列产品/Atlas A2 推理系列产品

2201

Atlas 200I/500 A2 推理产品

3002

Atlas 推理系列产品

2002

Atlas 训练系列产品

1001