---
title: 编译选项
description: "常用的编译选项说明如下："
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/compiler/BishengCompiler/atlas_bisheng_10_0010.html
sourcePath: /source/zh/canncommercial/900/compiler/BishengCompiler/atlas_bisheng_10_0010.html
indexId: 7c88929442c329ea06d9a30bdbb5f81e43dcfec7a0eb9805eb09081804abd1fd81
---
# 编译选项

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


**表1 常用编译选项列表**

| 选项 | 是否必需 | 说明 |
| --- | --- | --- |
| \-help | 否 | 查看帮助。 |
| \-\-npu\-arch | 是 | 编译时指定的AI处理器架构，取值为dav\-<arch\-version>，其中<arch\-version>为NPU架构版本号，各产品型号对应的架构版本号请通过表1 AI处理器型号和\_\_NPU\_ARCH\_\_的对应关系进行查询。 当前只支持\-\-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 训练系列产品 针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，在安装AI处理器的服务器执行npu\-smi info \-t board \-i id \-c chip\_id命令进行查询，获取Chip Name和NPU Name信息，实际配置值为Chip Name\_NPU Name。例如Chip Name取值为Ascendxxx，NPU Name取值为1234，实际配置值为Ascendxxx\_1234。其中： id：设备id，通过npu\-smi info \-l命令查出的NPU ID即为设备id。 chip\_id：芯片id，通过npu\-smi info \-m命令查出的Chip ID即为芯片id。 针对Atlas 350 加速卡，在安装AI处理器的服务器执行npu\-smi info \-t board \-i id命令进行查询，获取Chip Name和NPU Name信息，实际配置值为Chip Name\_NPU Name。例如Chip Name取值为Ascendxxx，NPU Name取值为1234，实际配置值为Ascendxxx\_1234。 其中，id为设备id，通过npu\-smi info \-l命令查出的NPU ID即为设备id。 |
| \-o <file> | 否 | 指定输出文件的名称和位置。 |
| \-c | 否 | 编译生成目标文件。 |
| \-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、aicpu后缀。不支持ccache编译缓存加速，若需使用ccache，请使用\-\-cce\-aicore\-lang替代选项。 |
| \-\-cce\-aicore\-lang | 否 | 将该选项后的输入文件按照cce异构语言模式编译。支持ccache编译缓存加速（不可与\-xcce同时使用）。缓存加速效果请参考ccache官网介绍。 |
| \-g | 否 | 编译时增加调试信息。 |
| \-\-sanitizer，\-\-cce\-enable\-sanitizer | 否 | 编译时增加代码正确性校验信息。使用sanitizer选项时，需要同步添加\-g选项，且不能在\-O0场景下使用。 |
| \-\-run\-mode=cpu/sim | 否 | cpu模式：编译时会将device代码也编译成可在host侧运行的可执行文件，可以利用CPU仿真环境进行算子开发和测试。 sim模式：链接时用户添加仿真模式对应的实现库，实现代码在仿真下运行，可以查看仿真相关日志，方便用户性能调试。 |
| \-\-cce\-long\-call=true | 否 | 用于开启长跳转功能，解决call/jump距离太远，甚至lld生成的thunk都无法达到的问题。典型报错为InputSection too large for range extension thunk。 |


**表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侧代码。 |
