---
title: aclgrphBuildInitialize支持的配置参数
description: "| 参数 | 说明 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/atlasgeapi_07_0142.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/atlasgeapi_07_0142.html
indexId: 74c6955c1200d5d707089847ac632be600511cf7d678dd726cf64b1c77b59dde72
---
# aclgrphBuildInitialize支持的配置参数

#### 基础功能

| 参数 | 说明 |
| --- | --- |
| SOC\_VERSION | 图编译时使用的AI处理器型号。 若当前环境存在AI处理器，该参数可选。 若当前环境不存在AI处理器，即开发环境，该参数必填。 <soc\_version>查询方法为： 针对如下产品：在安装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。 配置示例： {ge::ir\_option::SOC\_VERSION, "<soc\_version>"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| ENABLE\_SINGLE\_STREAM | 静态shape场景下，是否使能模型推理顺序单流串行执行。 其中，流（Stream）用于维护一些异步操作的执行顺序，确保按照应用程序中的代码调用顺序在Device上执行。 参数取值： true：表示使能，模型推理顺序单流串行执行。 false：（默认值）表示关闭，模型推理时多流并行执行。 参数值约束： 模型中存在Cmo算子和如下控制类算子时，不能使用单Stream特性，只能使用默认值false。 Merge Switch Enter RefEnter 配置示例： {ge::ir\_option::ENABLE\_SINGLE\_STREAM, "true"} 产品支持情况： Atlas 训练系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 推理系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 |
| DETERMINISTIC | 是否开启确定性计算。 默认情况下，不开启确定性计算，算子在相同的硬件和输入下，多次执行的结果可能不同。这个差异的来源，一般是因为在算子实现中，存在异步的多线程执行，会导致浮点数累加的顺序变化。当开启确定性计算功能时，算子在相同的硬件和输入下，多次执行将产生相同的输出。 通常建议不开启确定性计算，因为确定性计算往往会导致算子执行变慢，进而影响性能。当发现模型多次执行结果不同，或者是进行精度调优时，可开启确定性计算，辅助模型调试、调优。 参数取值： 0：（默认值）不开启确定性计算。 1：开启确定性计算。 配置示例： {ge::ir\_option::DETERMINISTIC, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 200I/500 A2 推理产品 ：不支持 |
| OPTION\_HOST\_ENV\_OS | 若模型编译环境的操作系统及其架构与模型运行环境不一致时，则需使用本参数设置模型运行环境的操作系统类型。如果不设置，则默认取模型编译环境的操作系统类型。 模型编译环境的操作系统及其架构与模型运行环境不一致时，需要与OPTION\_HOST\_ENV\_CPU参数配合使用，通过OPTION\_HOST\_ENV\_OS参数设置操作系统类型、通过OPTION\_HOST\_ENV\_CPU参数设置操作系统架构。 参数取值：查看${INSTALL\_DIR}/opp/built\-in/op\_graph/lib/下打包的算子so的OS类型。 参数默认值：查看${INSTALL\_DIR}/opp/scene.info文件中的取值。 ${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 配置示例： {ge::OPTION\_HOST\_ENV\_OS, "linux"}, {ge::OPTION\_HOST\_ENV\_CPU, "x86\_64"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OPTION\_HOST\_ENV\_CPU | 若模型编译环境的操作系统及其架构与模型运行环境不一致时，则需使用本参数设置模型运行环境的操作系统架构。如果不设置，则默认取模型编译环境的操作系统架构。 如果模型编译环境的操作系统及其架构与模型运行环境不一致，需要与OPTION\_HOST\_ENV\_OS参数配合使用，通过OPTION\_HOST\_ENV\_OS参数设置操作系统类型、通过OPTION\_HOST\_ENV\_CPU参数设置操作系统架构。 参数取值：查看${INSTALL\_DIR}/opp/built\-in/op\_graph/lib/下打包的算子so的OS/CPU类型。 参数默认值：查看${INSTALL\_DIR}/opp/scene.info文件中的取值。 ${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 配置示例： {ge::OPTION\_HOST\_ENV\_OS, "linux"}, {ge::OPTION\_HOST\_ENV\_CPU, "x86\_64"} 若转换后的离线模型包含操作系统类型、架构，例如：xxx\_linux\_x86\_64.om，则说明该模型运行的环境只能是x86\_64架构的linux操作系统。 若转换后的离线模型不包含操作系统类型、架构，例如：xxx.om，则说明CANN软件包所支持的操作系统，都支持该模型运行。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| VIRTUAL\_TYPE | 是否支持离线模型在昇腾虚拟化实例特性生成的虚拟设备上运行。 当前芯片算力比较大，云端用户或者小企业完全不需要使用这么大算力，昇腾虚拟化实例特性支持对芯片的算力进行切分，可满足用户根据自己的业务按需申请算力的诉求。 虚拟设备是指按照指定算力在芯片上申请的虚拟加速资源。 参数取值： 0：（默认值）离线模型不在昇腾虚拟化实例特性生成的虚拟设备上运行。 1：离线模型在不同算力的虚拟设备上运行。 配置示例： {ge::ir\_option::VIRTUAL\_TYPE, "1"} 使用约束： 参数取值为1时，进行模型转换，则转换后离线模型参与计算的逻辑AI Core核数可能比实际aicore\_num核数大，为aicore\_num支持配置范围的最小公倍数： 例如aicore\_num支持配置范围为{1,2,4,8}，参数取值为1转换后的离线模型，NPU运行核数可能为8。 参数取值为1时，转换后的模型，如果包括如下算子，会默认使用单核，该场景下，将会导致转换后的模型推理性能下降。 DynamicRNN PadV2D SquareSumV2 DynamicRNNV2 DynamicRNNV3 DynamicGRUV 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 内存管理

| 参数 | 说明 |
| --- | --- |
| EXEC\_DISABLE\_REUSED\_MEMORY | 内存复用开关。 内存复用是指按照生命周期和内存大小，把不冲突的内存重复使用，来降低网络内存占用。 参数取值： 0：（默认值）开启内存复用。 1：关闭内存复用。如果网络模型较大，关闭内存复用开关，会造成后续推理时Device侧内存不复用，从而导致内存不足。 配置示例： {ge::ir\_option::EXEC\_DISABLE\_REUSED\_MEMORY, "0"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| EXTERNAL\_WEIGHT | 生成om模型文件时，是否将原始网络中的Const/Constant节点的权重外置，同时将节点类型转换为FileConstant类型。 离线场景，如果模型权重较大且环境对om离线模型大小有限制，建议开启外置权重将权重单独保存，来减小om大小。 参数取值： 0：（默认值）权重不外置，直接保存在om离线模型文件中。 1：权重外置但不归一，将网络中所有Const/Constant节点的权重文件落盘，并将节点类型转换为FileConstant类型；权重文件保存在与om文件同层级的weight目录下，不同节点权重保存到不同的文件中，以weight\_<hash值>命名。 2：权重外置且归一，将网络中所有Const/Constant节点的权重文件落盘，并将节点类型转换为FileConstant类型；权重文件保存在与om文件同层级的weight目录下，所有权重保存到同一个文件中，以“原始图根图名称\_weight\_combined”命名。 配置示例： {ge::ir\_option::EXTERNAL\_WEIGHT, "1"} 使用约束： 权重外置场景，在开发推理应用、加载模型时： 使用aclgrphSaveModel接口保存om模型： 若使用aclmdlLoadFromFile接口加载模型，需将权重文件保存在与om文件同层级的weight目录下。 若使用aclmdlSetConfigOpt和aclmdlLoadWithConfig接口加载模型，对权重外置目录没有要求，后续加载模型时，通过aclmdlLoadWithConfig接口指定权重外置目录。 权重更新场景，使用aclgrphBundleSaveModel接口保存om模型： 只能使用aclmdlBundleLoadFromFile接口加载模型，并且需将权重文件保存在与om文件同层级的weight目录下。 接口详细说明请参见“模型加载和卸载”。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 动态shape

| 参数 | 说明 |
| --- | --- |
| AC\_PARALLEL\_ENABLE | 动态shape图中，是否允许AI CPU算子和AI Core算子并行运行。 动态shape图中，开关开启时，系统自动识别图中可以和AI Core并发的AI CPU算子，不同引擎的算子下发到不同流上，实现多引擎间的并行，从而提升资源利用效率和动态shape执行性能。 参数取值： 1：允许AI CPU和AI Core算子间的并行运行。 0（默认）：AI CPU算子不会单独分流。 配置示例： {ge::ir\_option::AC\_PARALLEL\_ENABLE, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 200I/500 A2 推理产品 ：不支持 |


#### 算子编译与图编译

| 参数 | 说明 |
| --- | --- |
| CORE\_TYPE | 设置图编译时使用的Core类型，若图中包括Cube算子，则只能使用AiCore。 参数取值： VectorCore AiCore，默认为AiCore。 配置示例 {ge::ir\_option::CORE\_TYPE, "AiCore"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：不支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：不支持 Atlas 350 加速卡：不支持 |
| AICORE\_NUM | 用于配置算子编译时使用的AI Core核数。 参数取值："整数1\|整数2"，中间使用“\|”分隔： 场景1：针对如下产品，整数1表示算子编译时使用的AI Core中的Cube Core核数，整数2表示算子编译时使用的AI Core中的VectorCore核数，整数1与整数2都需要大于0，小于等于昇腾AI处理器包含的最大Cube Core和Vector Core数量： Atlas 350 加速卡 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 场景2：针对如下产品，仅需配置整数1，配置格式为："整数1\|"，配置整数2不会生效，表示算子编译时使用的AI Core核数： Atlas 200I/500 A2 推理产品 Atlas 推理系列产品 Atlas 训练系列产品 使用约束： 针对参数值中的场景1： 不同AI处理器包含的最大Cube Core与Vector Core的数量可从"${INSTALL\_DIR}/<arch>\-linux/data/platform\_config/xxx.ini"文件查看，如下所示，说明AI处理器上存在24个Cube Core，存在48个Vector Core。 [SoCInfo] \# 参数配置为默认值，默认值即为最大值 ai\_core\_cnt=24 cube\_core\_cnt=24 vector\_core\_cnt=48 针对参数值中的场景2： 不同AI处理器包含的最大AI Core数量可从"${INSTALL\_DIR}/<arch>\-linux/data/platform\_config/xxx.ini"文件查看，如下所示，说明AI处理器上存在10个AI Core。 [SoCInfo] \# AI Core默认值，默认值即为最大值 ai\_core\_cnt=10 vector\_core\_cnt=8 如果配置该参数的同时启用了算子编译缓存功能（OP\_COMPILER\_CACHE\_MODE参数配置为“enable”或者“force”，默认为“enable”），此参数仅在首次编译时生效。若您想在非首次编译时生效该参数，需要清理编译磁盘的缓存。 其中，${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。<arch>表示具体操作系统架构，xxx请根据实际产品进行选择。 配置示例： 场景1配置示例： {ge::ir\_option::AICORE\_NUM, "24\|48"} 场景2配置示例 {ge::ir\_option::AICORE\_NUM, "10\|"} 或 {ge::ir\_option::AICORE\_NUM, "10"} 了解AI Core、Cube Core、Vector Core的关系： 为便于理解AI Core、Cube Core、Vector Core的关系，此处先明确Core的定义，Core是指拥有独立Scalar计算单元的一个计算核，通常Scalar计算单元承担了一个计算核的SIMD（单指令多数据，Single Instruction Multiple Data）指令发射等功能，所以我们也通常也把这个Scalar计算单元称为核内的调度单元。不同产品上的AI数据处理核心单元不同，当前分为以下几类： 当AI数据处理核心单元是AI Core： 在AI Core内，Cube和Vector共用一个Scalar调度单元，例如 Atlas 训练系列产品 。 在AI Core内，Cube和Vector都有各自的Scalar调度单元，因此又被称为Cube Core、Vector Core。这时，一个Cube Core和一组Vector Core被定义为一个AI Core，AI Core数量通常是以多少个Cube Core为基准计算的，例如 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 。 当AI数据处理核心单元是AI Core以及单独的Vector Core：AI Core和Vector Core都拥有独立的Scalar调度单元，例如 Atlas 推理系列产品 。 |
| OP\_COMPILER\_CACHE\_MODE | 用于配置算子编译磁盘缓存模式。 参数取值： enable：（默认值）表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译，从而提升编译速度。 force：启用算子编译缓存功能，区别于enable模式，force模式下会强制刷新缓存，即先删除已有缓存，再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等，需要先指定为force用于先清理已有的缓存，后续再修改为enable模式，以避免每次编译时都强制刷新缓存。 disable：表示禁用算子编译缓存，算子重新编译。 配置示例： {ge::ir\_option::OP\_COMPILER\_CACHE\_MODE, "enable"} 使用说明： 如果要自行指定算子编译磁盘缓存的路径，则需要与OP\_COMPILER\_CACHE\_DIR配合使用。 启用算子编译缓存功能时，可以通过配置文件（算子编译完成后，会在OP\_COMPILER\_CACHE\_DIR参数指定路径下自动生成op\_cache.ini文件）、环境变量两种方式来设置缓存文件夹的磁盘空间大小： 通过配置文件op\_cache.ini设置 若op\_cache.ini文件不存在，则需要手动创建。打开该文件，增加如下信息： \#配置文件格式，必须包含，自动生成的文件中默认包括如下信息，手动创建时，需要输入 [op\_compiler\_cache] \#限制某个芯片下缓存文件夹的磁盘空间的大小，默认值为500，取值需为整数，单位为MB max\_op\_cache\_size=500 \#设置需要保留缓存的空间大小比例，取值范围：[1,100]，默认值为50，单位为百分比；例如取值为80表示缓存空间不足时，删除缓存文件，保留80%缓存空间 remain\_cache\_size\_ratio=50 上述文件中的max\_op\_cache\_size和remain\_cache\_size\_ratio参数取值都有效时，op\_cache.ini文件才会生效。 当编译缓存文件大小超过“max\_op\_cache\_size”的设置值，且超过半小时缓存文件未被访问时，缓存文件就会老化（算子编译时，不会因为编译缓存文件大小超过设置值而中断，所以当“max\_op\_cache\_size”设置过小时，会出现实际编译缓存文件大小超过此设置值的情况）。 若需要关闭编译缓存老化功能，可将“max\_op\_cache\_size”设置为“\-1”，此时访问算子缓存时不会更新访问时间，算子编译缓存不会老化，磁盘空间使用默认大小500MB。 若多个使用者使用相同的缓存路径，建议使用配置文件的方式进行设置，该场景下op\_cache.ini文件会影响所有使用者。 通过环境变量设置 该场景下，开发者可以通过环境变量ASCEND\_MAX\_OP\_CACHE\_SIZE来限制某个芯片下缓存文件夹的磁盘空间的大小，当编译缓存空间大小达到ASCEND\_MAX\_OP\_CACHE\_SIZE设置的取值，且超过半个小时缓存文件未被访问时，缓存文件就会老化。可通过环境变量ASCEND\_REMAIN\_CACHE\_SIZE\_RATIO设置需要保留缓存的空间大小比例。 配置示例如下： \# ASCEND\_MAX\_OP\_CACHE\_SIZE环境变量默认值为500，取值需为整数，单位为MB export ASCEND\_MAX\_OP\_CACHE\_SIZE=500 \# ASCEND\_REMAIN\_CACHE\_SIZE\_RATIO环境变量取值范围：[1,100]，默认值为50，单位为百分比；例如取值为80表示缓存空间不足时，删除缓存文件，保留80%缓存空间 export ASCEND\_REMAIN\_CACHE\_SIZE\_RATIO=50 通过环境变量配置，只对当前用户生效。 若需要关闭编译缓存老化功能，可将环境变量“ASCEND\_MAX\_OP\_CACHE\_SIZE”设置为“\-1”，此时访问算子缓存时不会更新访问时间，算子编译缓存不会老化，磁盘空间使用默认大小500MB。 若同时配置了op\_cache.ini文件和环境变量，则优先读取op\_cache.ini文件中的配置项，若op\_cache.ini文件和环境变量都未设置，则读取系统默认值：默认磁盘空间大小500MB，默认保留缓存空间的50%。 由于force选项会先删除已有缓存，所以不建议在程序并行编译时设置，否则可能会导致其他模型因使用的缓存内容被清除而编译失败。 建议模型最终发布时设置编译缓存选项为disable或者force。 如果算子调优后知识库变更，则需要通过设置为force来刷新缓存，否则无法应用新的调优知识库，从而导致调优应用执行失败。 调试开关打开的场景： OP\_DEBUG\_LEVEL配置非0值：会忽略OP\_COMPILER\_CACHE\_MODE参数的配置，不启用算子编译缓存功能，算子全部重新编译。 OP\_DEBUG\_CONFIG配置非空，且未配置OP\_DEBUG\_LIST字段，会忽略OP\_COMPILER\_CACHE\_MODE参数的配置，不启用算子编译缓存功能，算子全部重新编译。 OP\_DEBUG\_CONFIG配置非空，且配置文件中配置了OP\_DEBUG\_LIST字段： 列表中的算子，忽略OP\_COMPILER\_CACHE\_MODE参数的配置继续重新编译。 列表外的算子，如果OP\_COMPILER\_CACHE\_MODE参数配置为enable或force，则启用缓存功能；若配置为disable，则不启用缓存功能，仍旧重新编译。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_COMPILER\_CACHE\_DIR | 用于配置算子编译磁盘缓存的目录。 参数值格式：路径支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）、中文字符。 默认值：$HOME/atc\_data 配置示例： {ge::ir\_option::OP\_COMPILER\_CACHE\_MODE, "enable"}, {ge::ir\_option::OP\_COMPILER\_CACHE\_DIR, "/home/test/data/atc\_data"} 使用约束： 如果要自行指定算子编译磁盘缓存的路径，则需要与OP\_COMPILER\_CACHE\_MODE配合使用。 如果参数指定的路径存在且有效，则在指定的路径下自动创建子目录kernel\_cache；如果指定的路径不存在但路径有效，则先自动创建目录，然后在该路径下自动创建子目录kernel\_cache。 用户请不要在默认缓存目录下存放其他自有内容，自有内容在软件包安装或升级时会同默认缓存目录一并被删除。 通过该参数指定的非默认缓存目录无法删除（软件包安装或升级时不会被删除）。 算子编译磁盘缓存路径，除OP\_COMPILER\_CACHE\_DIR参数设置的方式外，还可以配置环境变量ASCEND\_CACHE\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0006.html)，几种方式优先级为：配置参数“OP\_COMPILER\_CACHE\_DIR”>环境变量ASCEND\_CACHE\_PATH>默认存储路径。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OPTIMIZATION\_SWITCH | 算子编译时，融合规则（Pass）的控制开关。 该参数与精度比对中FUSION\_SWITCH\_FILE参数的区别是：FUSION\_SWITCH\_FILE仅能关闭图融合和UB融合的规则，并且需要单独配置JSON文件，而该参数适用于所有规则，通过参数就能指定融合规则，不需要再单独设置JSON文件。如果两个参数都配置，且配置了同一个融合规则，则以OPTIMIZATION\_SWITCH参数配置的为准。 参数取值："Passname1:on;Passname2:off"，可以拼接多个key\-value键值对，key为Pass名称，value为on（表示开）或off（表示关），不支持大小写模式匹配，多组配置使用英文分号分隔。可配置的融合规则请参见融合规则列表(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0078.html)。 配置示例： {ge::ir\_option::OPTIMIZATION\_SWITCH, "Passname1:on;Passname2:off"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 功能调试

| 参数 | 说明 |
| --- | --- |
| DEBUG\_DIR | 用于配置保存算子编译生成的调试相关的过程文件的路径，过程文件包括但不限于算子.o（算子二进制文件）、.json（算子描述文件）、.cce等文件。 默认生成在当前路径下。 使用约束： 如果要自行指定算子编译的过程文件存放路径，需DEBUG\_DIR参数与OP\_DEBUG\_LEVEL参数配合使用，且当OP\_DEBUG\_LEVEL取值为0时，不能使用DEBUG\_DIR参数。 算子编译生成的调试文件存储路径，除DEBUG\_DIR参数设置的方式外，还可以配置环境变量ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)，几种方式优先级为：配置参数“DEBUG\_DIR”>环境变量ASCEND\_WORK\_PATH >默认存储路径。 配置示例： {ge::ir\_option::OP\_DEBUG\_LEVEL, "1"}, {ge::ir\_option::DEBUG\_DIR, "/home/test/module/out\_debug\_info"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_DEBUG\_LEVEL | 算子编译debug功能开关。 如果要自行指定算子编译的过程文件存放路径，则需要通过DEBUG\_DIR参数指定，OP\_DEBUG\_LEVEL取值为0时，使用DEBUG\_DIR参数不生效。 参数取值： 0：（默认值）不开启算子debug功能，在当前执行路径不生成算子编译目录kernel\_meta。 1：开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹下生成\*.o（算子二进制文件）、\*.json文件（算子描述文件）和TBE指令映射文件（算子cce文件\*.cce和python\-cce映射文件\*\_loc.json），用于后续分析AICore Error问题。 Atlas 350 加速卡不会生成TBE指令映射文件。 2：开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹下生成\*.o（算子二进制文件）、\*.json文件（算子描述文件）和TBE指令映射文件（算子cce文件\*.cce和python\-cce映射文件\*\_loc.json），用于后续分析AICore Error问题，同时设置为2，还会关闭编译优化开关、开启ccec调试功能（ccec编译器选项设置为\-O0\-g）。 Atlas 350 加速卡不会生成TBE指令映射文件。 3：不开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹中生成\*.o（算子二进制文件）和\*.json文件（算子描述文件），分析算子问题时可参考。 4：不开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹下生成\*.o（算子二进制文件）、\*.json文件（算子描述文件）、TBE指令映射文件（算子cce文件\*.cce）和UB融合计算描述文件（{$kernel\_name}\_compute.json），可在分析算子问题时进行问题复现、精度比对时使用。 Atlas 350 加速卡不会生成TBE指令映射文件和UB融合计算描述文件。 须知： 若OP\_DEBUG\_LEVEL配置为0，同时配置了OP\_DEBUG\_CONFIG参数，该场景下在当前执行路径会保留算子编译目录kernel\_meta。 若OP\_DEBUG\_LEVEL配置为0，同时设置了NPU\_COLLECT\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0130.html)环境变量，则会始终保留编译目录kernel\_meta；若设置了ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，则保留在该环境变量指定路径下，若无ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，则保留在当前执行路径。 训练执行时，建议配置为0或3。如果需要进行问题定位，再选择调试开关选项1和2，是因为加入了调试功能会导致网络性能下降。 配置为2（即开启ccec编译选项）时，会导致算子Kernel（\*.o文件）大小增大。动态Shape场景下，由于算子编译时会遍历可能的Shape场景，因此可能会导致算子Kernel文件过大而无法进行编译，此种场景下，建议不要配置ccec编译选项。 由于算子Kernel文件过大而无法编译的报错日志示例如下： message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel\_meta\_xxxxx.o debug功能开关打开场景下，若模型中含有如下通算融合算子，算子编译目录kernel\_meta中，不会生成下述算子的\*.o、\*.json、\*.cce文件。 MatMulAllReduce MatMulAllReduceAddRmsNorm AllGatherMatMul MatMulReduceScatter AlltoAllAllGatherBatchMatMul BatchMatMulReduceScatterAlltoAll 配置示例： {ge::ir\_option::OP\_DEBUG\_LEVEL, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_DEBUG\_CONFIG | Global Memory内存检测功能开关。 参数取值： 取值为.cfg配置文件路径，配置文件内多个选项用英文逗号分隔： oom：算子执行过程中，检测Global Memory是否内存越界。 配置该选项，算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留.o（算子二进制文件）和.json文件（算子描述文件）。 使用该选项后，在算子编译过程中会加入如下的检测逻辑，用户可以通过再使用dump\_cce参数，在生成的.cce文件中查看如下的代码。 inline \_\_aicore\_\_ void CheckInvalidAccessOfDDR(xxx) { if (access\_offset < 0 \|\| access\_offset + access\_extent > ddr\_size) { if (read\_or\_write == 1) { trap(0X5A5A0001); } else { trap(0X5A5A0002); } } } dump\_cce：算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留算子cce文件\*.cce，以及.o（算子二进制文件）和.json文件（算子描述文件）。 dump\_loc：算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留python\-cce映射文件\*\_loc.json，以及.o（算子二进制文件）和.json文件（算子描述文件）。 ccec\_O0：算子编译时，开启ccec编译器选项\-O0，配置该选项不会对调试信息执行优化操作，用于后续分析AI Core Error问题。 ccec\_g：算子编译时，开启ccec编译器选项\-g，配置该选项会对调试信息执行优化操作，用于后续分析AI Core Error问题。 check\_flag：算子执行时，检测算子内部流水线同步信号是否匹配。 配置该选项，算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留.o（算子二进制文件）和.json文件（算子描述文件）。 使用该选项后，在算子编译过程中会加入如下的检测逻辑，用户可以通过再使用dump\_cce参数，在生成的.cce文件中查看如下的代码。 set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID0); set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID1); set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID2); set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID3); .... pipe\_barrier(PIPE\_MTE3); pipe\_barrier(PIPE\_MTE2); pipe\_barrier(PIPE\_M); pipe\_barrier(PIPE\_V); pipe\_barrier(PIPE\_MTE1); pipe\_barrier(PIPE\_ALL); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID0); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID1); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID2); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID3); ... 实际执行推理过程中，如果确实存在算子内部流水线同步信号不匹配，则最终会在有问题的算子处超时报错，并终止程序，报错信息示例为： Aicore kernel execute failed, ..., fault kernel\_name=算子名,... rtStreamSynchronizeWithTimeout execute failed.... 配置示例： {ge::ir\_option::OP\_DEBUG\_CONFIG, "/root/test0.cfg"} 其中，test0.cfg文件信息为： op\_debug\_config=ccec\_g,oom 使用约束： 算子编译时，如果用户不想编译所有AI Core算子，而是指定某些AI Core算子进行编译，则需要在上述test0.cfg配置文件中新增OP\_DEBUG\_LIST字段，算子编译时，只编译该列表指定的算子，并按照OP\_DEBUG\_CONFIG配置的选项进行编译。OP\_DEBUG\_LIST字段要求如下： 支持指定算子名称或者算子类型。 算子之间使用英文逗号分隔，若为算子类型，则以OpType::typeName格式进行配置，支持算子类型和算子名称混合配置。 要编译的算子，必须放在OP\_DEBUG\_CONFIG参数指定的配置文件中。 配置示例如下，test0.cfg文件中增加如下信息： op\_debug\_config=ccec\_g,oom op\_debug\_list=GatherV2,opType::ReduceSum 模型编译时，GatherV2,ReduceSum算子按照ccec\_g,oom选项进行编译。 说明： 开启ccec编译选项的场景下（即ccec\_O0、ccec\_g选项），会增大算子Kernel（\*.o文件）的大小。动态shape场景下，由于算子编译时会遍历可能存在的所有场景，最终可能会导致由于算子Kernel文件过大而无法进行编译的情况，此种场景下，建议不要开启ccec编译选项。 由于算子kernel文件过大而无法编译的日志显示如下： message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel\_meta\_xxxxx.o:(xxxx) ccec编译器选项ccec\_O0和oom不能同时开启，可能会导致AICore Error报错，报错信息示例如下： ...there is an aivec error exception, core id is 49, error code = 0x4 ... 若配置NPU\_COLLECT\_PATH环境变量，不支持打开“检测Global Memory是否内存越界”的开关（OP\_DEBUG\_CONFIG指定的配置文件中配置oom），否则编译出来的模型文件或算子kernel包在使用时会报错。 配置编译选项oom、dump\_cce、dump\_loc时，若模型中含有如下通算融合算子，算子编译目录kernel\_meta中，不会生成下述算子的\*.o、\*.json、\*.cce文件。 MatMulAllReduce MatMulAllReduceAddRmsNorm AllGatherMatMul MatMulReduceScatter AlltoAllAllGatherBatchMatMul BatchMatMulReduceScatterAlltoAll 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OPTION\_SCREEN\_PRINT\_MODE | 控制图编译过程是否打屏。 参数取值： enable：打屏，默认为enable。 disable：不打屏。 配置示例： {ge::ir\_option::OPTION\_SCREEN\_PRINT\_MODE, "disable"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OPTION\_EXPORT\_COMPILE\_STAT | 配置图编译过程中是否生成算子融合信息（包括图融合和UB融合）的结果文件fusion\_result.json。 该文件用于记录图编译过程中使用的融合规则，而精度比对中的FUSION\_SWITCH\_FILE参数可以关闭指定的融合规则，关闭的融合规则，不会在fusion\_result.json文件中呈现，文件中： session\_and\_graph\_id\_xx\_xx：表示融合结果所属线程和图编号。 graph\_fusion：表示图融合。 ub\_fusion：表示UB融合，Atlas 350 加速卡不支持UB融合，不会生成该信息。 match\_times：表示图编译过程中匹配到的融合规则次数。 effect\_times：表示实际生效的次数。 repository\_hit\_times：优化UB融合知识库命中的次数，Atlas 350 加速卡不支持UB融合，不会生成该信息。 参数取值： 0：不生成算子融合信息结果文件。 1：（默认值）程序运行正常退出时，生成算子融合信息结果文件。 2：图编译完成时，生成算子融合信息结果文件。即如果图编译已完成，后续程序提前中断，也会生成算子融合信息结果文件。 说明： 若未设置ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，结果文件默认生成在执行脚本的当前路径；若设置了ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，则保存路径为：$ASCEND\_WORK\_PATH/FE/${进程号}/fusion\_result.json。 通过FUSION\_SWITCH\_FILE参数关闭的融合规则，不会在fusion\_result.json文件中呈现。 配置示例： {ge::ir\_option::OPTION\_EXPORT\_COMPILE\_STAT, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 |


#### 精度调优

| 参数 | 说明 |
| --- | --- |
| PRECISION\_MODE | 设置算子的精度模式。同一张图中不能与PRECISION\_MODE\_V2同时使用，建议使用PRECISION\_MODE\_V2参数。 参数取值： force\_fp32/cube\_fp16in\_fp32out： 配置为force\_fp32或cube\_fp16in\_fp32out，效果等同，该选项用来表示AI Core中该算子既支持float32又支持float16数据类型时，系统内部都会根据算子类型不同，选择不同的处理方式。cube\_fp16in\_fp32out为新版本中新增的，对于矩阵计算类算子，该选项语义更清晰。 对于矩阵计算类算子，系统内部会按算子实现的支持情况处理： 优先选择输入数据类型为float16且输出数据类型为float32； 如果1中的场景不支持，则选择输入数据类型为float32且输出数据类型为float32； 如果2中的场景不支持，则选择输入数据类型为float16且输出数据类型为float16； 如果3中的场景不支持，则报错。 对于矢量计算类算子，表示原图中算子精度为float16或bfloat16，强制选择float32。 如果原图中存在部分算子，在AI Core中该算子的实现不支持float32，比如某算子仅支持float16类型，则该参数不生效，仍然使用支持的float16；如果在AI Core中该算子的实现不支持float32，且又配置了黑名单（precision\_reduce = false），则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 force\_fp16（默认值）： 表示原图中算子精度为float16、bfloat16和float32时，强制选择float16。 allow\_fp32\_to\_fp16： 对于矩阵类算子： 如果原图中算子精度为float32，优先降低精度到float16，如果AI Core中算子不支持float16，则继续选择float32，如果AI Core中算子不支持float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 如果原图中算子精度为bfloat16，则优先使用原图精度bfloat16，如果AI Core中算子不支持bfloat16，则选择float32，如果AI Core中算子不支持float32，则直接降低精度到float16；如果AI Core中算子不支持float16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 对于矢量类算子，优先保持原图精度： 如果原图中算子精度为float32，则优先使用原图精度float32，如果AI Core中算子不支持float32，则直接降低精度到float16；如果AI Core中算子不支持float16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 如果原图中算子精度为bfloat16，则优先使用原图精度bfloat16，如果AI Core中算子不支持bfloat16，则选择float32，如果AI Core中算子不支持float32，则直接降低精度到float16；如果AI Core中算子不支持float16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 must\_keep\_origin\_dtype： 保持原图精度。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持float32和bfloat16，则系统内部会自动采用高精度float32。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持bfloat16，则会使用float16的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 如果原图中某算子精度为float32，AI Core中该算子的实现不支持float32类型、仅支持float16类型，则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 allow\_mix\_precision/allow\_mix\_precision\_fp16： 配置为allow\_mix\_precision或allow\_mix\_precision\_fp16，效果等同，均表示使用混合精度float16、bfloat16和float32数据类型来处理神经网络的过程。allow\_mix\_precision\_fp16为新版本中新增的，语义更清晰，便于理解。 针对原始模型中float32和bfloat16数据类型的算子，按照内置的优化策略，自动将部分float32和bfloat16的算子降低精度到float16，从而在精度损失很小的情况下提升系统性能并减少内存使用。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32和bfloat16类型的算子，降低精度到float16。 若取值为false（黑名单），则不允许将当前float32和bfloat16类型的算子降低精度到float16，相应算子仍旧使用float32或bfloat16精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 allow\_mix\_precision\_bf16： 表示使用混合精度bfloat16和float32数据类型来处理神经网络的过程。针对原始模型中float32数据类型的算子，按照内置的优化策略，自动将部分float32的算子降低精度到bfloat16，从而在精度损失很小的情况下提升系统性能并减少内存使用；如果AI Core中算子不支持bfloat16和float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32类型的算子，降低精度到bfloat16。 若取值为false（黑名单），则不允许将当前float32类型的算子降低精度到bfloat16，相应算子仍旧使用float32精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 allow\_fp32\_to\_bf16： 如果原图中算子精度为float32，则优先使用原图精度float32，如果AI Core中算子不支持float32，则降低精度到bfloat16；如果AI Core中算子不支持bfloat16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 如果原图中算子精度为bfloat16，则优先使用原图精度bfloat16，如果AI Core中算子不支持bfloat16，则选择float32，如果AI Core中算子不支持float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 上述路径中的${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 参数值约束： bfloat16数据类型仅支持以下产品类型： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 350 加速卡 该参数默认为性能优先，后续推理时可能会导致精度溢出问题。如果推理时出现精度问题，可以参见“模型推理精度提升建议(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg\_000097.html)”进行定位。 如果用户聚焦精度问题，可以修改为其他取值，比如must\_keep\_origin\_dtype。 配置示例： {ge::ir\_option::PRECISION\_MODE, "force\_fp16"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| PRECISION\_MODE\_V2 | 设置算子的精度模式。同一张图中不能与PRECISION\_MODE同时使用，建议使用PRECISION\_MODE\_V2参数。 参数取值： fp16（默认值）： 表示原图中算子精度为float16、bfloat16或float32时，强制选择float16。 origin： 保持原图精度。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持float32和bfloat16，则系统内部会自动采用高精度float32。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持bfloat16，则会使用float16的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 如果原图中某算子精度为float32，AI Core中该算子的实现不支持float32类型、仅支持float16类型，则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 cube\_fp16in\_fp32out： AI Core中该算子既支持float32又支持float16数据类型时，系统内部根据算子类型不同，选择不同的处理方式。 对于矩阵计算类算子，系统内部会按算子实现的支持情况处理： 优先选择输入数据类型为float16且输出数据类型为float32； 如果1中的场景不支持，则选择输入数据类型为float32且输出数据类型为float32； 如果2中的场景不支持，则选择输入数据类型为float16且输出数据类型为float16； 如果3中的场景不支持，则报错。 对于矢量计算类算子，表示原图中算子精度为float16或bfloat16，强制选择float32。 如果原图中存在部分算子，在AI Core中该算子的实现不支持float32，比如某算子仅支持float16类型，则该参数不生效，仍然使用支持的float16；如果在AI Core中该算子的实现不支持float32，且又配置了黑名单（precision\_reduce = false），则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 mixed\_float16： 表示使用混合精度float16、bfloat16和float32数据类型来处理神经网络。针对原图中float32和bfloat16数据类型的算子，按照内置的优化策略，自动将部分float32和bfloat16的算子降低精度到float16，从而在精度损失很小的情况下提升系统性能并减少内存使用。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32和bfloat16类型的算子，降低精度到float16。 若取值为false（黑名单），则不允许将当前float32和bfloat16类型的算子降低精度到float16，相应算子仍旧使用float32或bfloat16精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 mixed\_bfloat16： 表示使用混合精度bfloat16和float32数据类型来处理神经网络。针对原图中float32数据类型的算子，按照内置的优化策略，自动将部分float32的算子降低精度到bfloat16，从而在精度损失很小的情况下提升系统性能并减少内存使用；如果算子不支持bfloat16和float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32类型的算子，降低精度到bfloat16。 若取值为false（黑名单），则不允许将当前float32类型的算子降低精度到bfloat16，相应算子仍旧使用float32精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 mixed\_hif8： 开启自动混合精度功能，表示混合使用hifloat8（此数据类型介绍可参见Link(https://arxiv.org/abs/2409.16626?context=cs.AR)）、float16、bfloat16和float32数据类型来处理神经网络。针对原图中float16、bfloat16和float32数据类型的算子，按照内置的优化策略，自动将部分float16、bfloat16和float32的算子降低精度到hifloat8，从而在精度损失很小的情况下提升系统性能并减少内存使用。当前版本不支持该选项。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float16、bfloat16和float32类型的算子，降低精度到hifloat8。 若取值为false（黑名单），则不允许将当前float16、bfloat16和float32类型的算子降低精度到hifloat8，相应算子仍旧使用float16、bfloat16或float32精度。 若原图中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 该选项仅支持以下产品类型： Atlas 350 加速卡 cube\_hif8： 表示若原图中的cube算子既支持hifloat8，又支持float16、bfloat16或float32数据类型时，强制选择hifloat8数据类型。当前版本不支持该选项。 该选项仅支持以下产品类型： Atlas 350 加速卡 上述路径中的${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 参数值约束： bfloat16数据类型仅支持以下产品类型： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 350 加速卡 该参数默认为性能优先，后续推理时可能会导致精度溢出问题。如果推理时出现精度问题，可以参见“模型推理精度提升建议(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg\_000097.html)”进行定位。 如果用户聚焦精度问题，可以修改为其他取值，比如origin。 配置示例： {ge::ir\_option::PRECISION\_MODE\_V2, "fp16"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| MODIFY\_MIXLIST | 混合精度场景下，通过此参数指定混合精度黑白灰名单的路径以及文件名，自行指定哪些算子允许降精度，哪些算子不允许降精度。配置为路径以及文件名，文件为JSON格式。黑白灰名单，可从“${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json”内置优化策略文件中查看“precision\_reduce”参数下的flag参数值（其中，${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。xxx请根据实际产品进行选择。）： 若取值为true（白名单），表示混合精度模式下，允许降低精度。 若取值为false（黑名单），表示混合精度模式下，不允许降低精度。 不配置该参数（灰名单），表示混合精度模式下，当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 开启混合精度方式： PRECISION\_MODE参数设置为allow\_mix\_precision、allow\_mix\_precision\_fp16、allow\_mix\_precision\_bf16。 PRECISION\_MODE\_V2参数设置为mixed\_float16、mixed\_bfloat16、mixed\_hif8，与PRECISION\_MODE参数不能同时配置，建议使用PRECISION\_MODE\_V2。 配置示例： {ge::ir\_option::MODIFY\_MIXLIST, "/home/test/ops\_info.json"} ops\_info.json中可以指定算子类型，多个算子使用英文逗号分隔，样例如下： { "black\-list": { // 黑名单 "to\-remove": [ // 黑名单算子转换为灰名单算子，配置该参数时，请确保被转换的算子已经存在于黑名单中 "Xlog1py" ], "to\-add": [ // 白名单或灰名单算子转换为黑名单算子 "Matmul", "Cast" ] }, "white\-list": { // 白名单 "to\-remove": [ // 白名单算子转换为灰名单算子，配置该参数时，请确保被转换的算子已经存在于白名单中 "Conv2D" ], "to\-add": [ // 黑名单或灰名单算子转换为白名单算子 "Bias" ] } } 上述配置文件样例中展示的算子仅作为参考，请基于实际硬件环境和具体的算子内置优化策略进行配置，黑白灰名单查询样例如下： "Conv2D":{ "precision\_reduce":{ "flag":"true" } }, true：白名单。false：黑名单。不配置：灰名单。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 精度比对

| 参数 | 说明 |
| --- | --- |
| BUFFER\_OPTIMIZE | 数据缓存优化开关。参数取值： l1\_optimize：表示开启l1优化。当前版本该参数无效，等同于off\_optimize。 l2\_optimize：（默认值）表示开启l2优化。 off\_optimize：表示关闭数据缓存优化。 使用建议： 建议打开数据缓存优化功能：开启数据缓存优化可提高计算效率、提升性能，但由于部分算子在实现上可能存在未考虑的场景，导致影响精度，因此在出现精度问题时可以尝试关闭数据缓存优化。如果关闭数据缓存优化功能后，精度达标，则需要识别出问题算子，反馈给技术支持进一步分析、解决算子问题；解决算子问题后，建议仍旧保持开启数据缓存优化功能。 配置示例： {ge::ir\_option::BUFFER\_OPTIMIZE, "l2\_optimize"} 注意：当参数值设置为l1\_optimize，则不能与VIRTUAL\_TYPE参数同时使用，同时使用会出现报错，表示虚拟化场景不做l1融合，防止算子过大导致调度异常。 产品支持情况： Atlas 训练系列产品 ：支持 Atlas 推理系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| FUSION\_SWITCH\_FILE | 融合开关配置文件路径以及文件名，路径和文件名：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）、中文字符。 系统内置了一些图融合和UB融合规则，均为默认开启，可以根据需要关闭指定的融合规则，当前可以关闭的融合规则请参见《图融合和UB融合规则参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/graphubfusionref/atlasrr\_30\_0003.html)》，但是由于系统机制，其他融合规则无法关闭。Atlas 350 加速卡不支持UB融合。 配置示例： 配置文件样例fusion\_switch.cfg，on表示开启，off表示关闭。 Atlas 350 加速卡配置样例： { "Switch":{ "GraphFusion":{ "RequantFusionPass":"on", "ConvToFullyConnectionFusionPass":"off", "SoftmaxFusionPass":"on", "NotRequantFusionPass":"on", "SplitConvConcatFusionPass":"on", "ConvConcatFusionPass":"on", "MatMulBiasAddFusionPass":"on", "PoolingFusionPass":"on", "ZConcatv2dFusionPass":"on", "ZConcatExt2FusionPass":"on", "TfMergeSubFusionPass":"on" } } } 非Atlas 350 加速卡配置文件样例： { "Switch":{ "GraphFusion":{ "RequantFusionPass":"on", "ConvToFullyConnectionFusionPass":"off", "SoftmaxFusionPass":"on", "NotRequantFusionPass":"on", "SplitConvConcatFusionPass":"on", "ConvConcatFusionPass":"on", "MatMulBiasAddFusionPass":"on", "PoolingFusionPass":"on", "ZConcatv2dFusionPass":"on", "ZConcatExt2FusionPass":"on", "TfMergeSubFusionPass":"on" }, "UBFusion":{ "TbePool2dQuantFusionPass":"on" } } } 同时支持用户一键关闭融合规则： Atlas 350 加速卡配置样例： { "Switch":{ "GraphFusion":{ "ALL":"off" } } } 非Atlas 350 加速卡配置文件样例： { "Switch":{ "GraphFusion":{ "ALL":"off" }, "UBFusion":{ "ALL":"off" } } } 需要注意的是： 关闭某些融合规则可能会导致功能问题，因此此处的一键式关闭仅关闭系统部分融合规则，而不是全部融合规则。 一键式关闭融合规则时，可以同时开启部分融合规则： Atlas 350 加速卡配置样例： { "Switch":{ "GraphFusion":{ "ALL":"off", "SoftmaxFusionPass":"on" } } } 非Atlas 350 加速卡配置文件样例： { "Switch":{ "GraphFusion":{ "ALL":"off", "SoftmaxFusionPass":"on" }, "UBFusion":{ "ALL":"off", "TbePool2dQuantFusionPass":"on" } } } 产品支持情况： Atlas 350 加速卡：支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 |


#### 性能调优

| 参数 | 说明 |
| --- | --- |
| ENABLE\_SMALL\_CHANNEL | 是否使能Small Channel的优化，使能后在Channel<=4的卷积层会有性能收益。建议用户在推理场景下打开此开关。 参数取值： 0：（默认值）关闭。 1：使能。 配置示例： {ge::ir\_option::ENABLE\_SMALL\_CHANNEL, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| TILING\_SCHEDULE\_OPTIMIZE | Tiling下沉调度优化开关。 由于NPU中AI Core内部存储无法完全容纳算子输入输出的所有数据，需要每次搬运一部分输入数据进行计算然后搬出，再搬运下一部分输入数据进行计算，该过程称之为Tiling；根据算子的shape等信息来确定数据切分算法相关参数（比如每次搬运的块大小，以及总共循环多少次）的计算程序，称之为Tiling实现。由于Tiling实现中完成的均为标量计算，AI Core并不擅长，故一般在Host侧CPU上执行，但是满足下述条件Tiling实现会下沉到Device侧执行： 模型为静态shape。 模型中的算子支持Tiling下沉，比如FusedInferAttentionScore、IncreFlashAttention等融合算子。 支持Tiling下沉的算子值有依赖，需要满足前一个算子的值有device的执行结果；如果依赖的值是Const，则不需要下沉执行Tiling，编译时会完成Tiling。 参数取值： 0：关闭Tiling下沉，默认为0。 1：使能Tiling下沉。 配置示例： {ge::ir\_option::TILING\_SCHEDULE\_OPTIMIZE, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：不支持 Atlas 训练系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 |


#### 量化压缩

| 参数 | 说明 |
| --- | --- |
| ENABLE\_COMPRESS\_WEIGHT | 使能全局weight压缩。 AICore支持weight压缩功能，通过使能该参数，可以对weight进行数据压缩，在进行算子计算时，对weight进行解压缩，从而达到减少带宽、提高性能的目的。 该参数使能全局weight压缩，不能与COMPRESS\_WEIGHT\_CONF同时使用。 参数取值： true：表示使能。 false：（默认值）表示关闭。 配置示例： {ge::ir\_option::ENABLE\_COMPRESS\_WEIGHT, "true"} 产品支持情况： Atlas 训练系列产品 ：不支持 Atlas 推理系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：不支持 Atlas 350 加速卡：不支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：不支持 |
| COMPRESS\_WEIGHT\_CONF | 要压缩的node节点列表配置文件路径及文件名，node节点主要为conv算子、fc算子。该参数不能与ENABLE\_COMPRESS\_WEIGHT参数同时使用。 参数值格式：路径和文件名支持大小写字母、数字，下划线；文件名支持大小写字母、数字，下划线和点(.)。 参数值约束：weight压缩配置文件由AMCT输出，文件内容即为node名称列表，node名称之间以“;”间隔开。例如，compress\_weight\_nodes.cfg文件内容为：conv1; fc1; conv2\_2/x1; fc2; conv5\_32/x2;fc6。 配置示例： {ge::ir\_option::COMPRESS\_WEIGHT\_CONF, "$HOME/module/compress\_weight\_nodes.cfg"} 产品支持情况： Atlas 训练系列产品 ：不支持 Atlas 推理系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：不支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：不支持 Atlas 350 加速卡：不支持 |
| SPARSITY | 使能全局稀疏特性。 AMCT（昇腾模型压缩工具）4选2结构化稀疏后输出的模型，可能存在weight连续4个Cin维度元素中至少有2个为0的场景，模型转换时通过使能全局稀疏开关，将该场景下的元素筛选成2个，从而节省后续推理的计算量，提高推理性能。 由于硬件约束，该参数不能与ENABLE\_COMPRESS\_WEIGHT、COMPRESS\_WEIGHT\_CONF同时使用。 参数取值： 1：表示开启4选2结构化稀疏。 0：（默认值）不开启稀疏特性。 配置示例： {ge::ir\_option::SPARSITY, "1"} 使用约束：使用该参数时，请确保模型是稀疏的模型，建议用户使用AMCT（TensorFlow）或AMCT（PyTorch）的组合压缩功能获取，且组合压缩只能是4选2结构化稀疏+量化感知训练模式。 产品支持情况： Atlas 200I/500 A2 推理产品 ，支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：不支持 Atlas 推理系列产品 ，不支持 Atlas 训练系列产品 ，不支持 |
| COMPRESSION\_OPTIMIZE\_CONF | 压缩优化功能配置文件路径以及文件名，通过该参数使能配置文件中指定的压缩优化特性，从而提升网络性能。例如：/home/test/compression\_optimize.cfg。 配置示例： {ge::ir\_option::COMPRESSION\_OPTIMIZE\_CONF, "/home/test/compression\_optimize.cfg"} 文件内容配置示例如下： enable\_first\_layer\_quantization:true 当前配置文件仅支持配置enable\_first\_layer\_quantization特性，用于控制AIPP首层卷积是否进行优化（AIPP会与量化后模型首层卷积CONV2D前的Quant算子进行融合）。 使能enable\_first\_layer\_quantization特性时，只有网络结构中存在AIPP+CONV2D结构，并且模型编译时ENABLE\_SMALL\_CHANNEL参数设置为1时，才有可能获得性能收益。由于量化后的模型存在一定程度上的精度损失，用户根据实际情况决定是否使能该特性。 配置文件中冒号前面表示压缩优化特性名称，冒号后面表示是否使能该特性，true表示使能，false表示不使能，默认不使能。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas 训练系列产品 ：不支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：不支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：不支持 Atlas 350 加速卡：不支持 |


#### 试验参数

| 参数 | 说明 |
| --- | --- |
| ALLOW\_HF32 | 该参数预留，当前版本暂不支持。 是否启用HF32自动代替float32数据类型的功能，当前版本该参数仅针对Conv类算子与Matmul类算子生效。 HF32是昇腾推出的专门用于算子内部计算的单精度浮点类型，与其他常用数据类型的比较如下图所示。可见，HF32与float32支持相同的数值范围，但尾数位精度（11位）却接近FP16（10位）。通过降低精度让HF32单精度数据类型代替原有的float32单精度数据类型，可大大降低数据所占空间大小，实现性能的提升。 参数取值： true：针对Conv类算子与Matmul类算子，使能FP32数据类型自动转换为HF32数据类型的功能。 具体哪些算子使能了该功能，请参见CANN软件安装后文件存储路径的opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/allow\_hf32\_matmul\_t\_conv\_t.ini，该文件不支持用户修改。 false：针对Conv类算子与Matmul类算子，不使能FP32数据类型自动转换为HF32数据类型的功能。 具体哪些算子未使能该功能，请参见CANN软件安装后文件存储路径的opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/allow\_hf32\_matmul\_f\_conv\_f.ini，该文件不支持用户修改。 参数默认值：针对Conv类算子，使能FP32转换为HF32；针对Matmul类算子，不使能FP32转换为HF32。 使用约束： 针对同一个算子，如果通过OP\_PRECISION\_MODE参数配置了enable\_hi\_float\_32\_execution或enable\_float\_32\_execution，该场景下不建议再与ALLOW\_HF32参数同时使用，若同时使用，则优先级如下： OP\_PRECISION\_MODE(ByNodeName，按节点名称设置精度模式) > ALLOW\_HF32 > OP\_PRECISION\_MODE(ByOpType，按算子类型设置精度模式)。 由于ALLOW\_HF32是使用HF32自动代替float32，要想该参数生效，必须保证被使能的算子输入或者输出类型为float32。由于PRECISION\_MODE\_V2参数默认值为fp16，原始网络模型中算子类型为float32时会被强制转为float16类型，该场景下使用ALLOW\_HF32参数不生效，建议修改PRECISION\_MODE\_V2参数值为origin（PRECISION\_MODE参数默认值为force\_fp16，建议修改为must\_keep\_origin\_dtype或者force\_fp32）。 配置示例： {ge::ir\_option::ALLOW\_HF32, "true"} 产品支持情况： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 推理系列产品 ：不支持 Atlas 训练系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 |
| OO\_LEVEL | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 图编译多级优化选项，包括子图优化、整图优化、静态Shape模型下沉等。 静态Shape模型下沉：静态Shape模型在编译时即可确定所有算子的输入输出Shape，完成模型级内存编排、算子的Tiling计算等Host侧计算，在模型加载时整体下发到Device流上，但不立即执行，通过下发模型执行Task触发模型中所有Task的执行。 参数取值： O1：会关闭所有图融合和UB融合Pass，只做促成静态下沉的相关优化，如InferShape（进行输出Tensor的shape推导）、常量折叠、死边消除等。 Atlas 350 加速卡不支持UB融合，只关闭图融合Pass。 O3：（默认值）开启所有优化。 使用约束： 取值为O1时，会关闭所有图融合和UB融合PASS，只开启静态下沉的相关PASS，但是如下路径文件中的图融合PASS，由于关闭后会有功能问题，会默认开启： “${INSTALL\_DIR}/<arch>\-linux/lib64/plugin/opskernel/fusion\_pass/config/fusion\_config.json”文件中"ExceptionalPassOfO1Level"字段下的所有图融合PASS。 其中${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。<arch>表示具体操作系统架构。 配置示例： {ge::ir\_option::OO\_LEVEL, "O3"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OO\_CONSTANT\_FOLDING | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 是否开启常量折叠优化。 常量折叠是将计算图中可以预先确定输出值的节点替换成常量，并对计算图进行一些结构简化的操作。 参数取值： true：（默认值）开启。 false：关闭。 配置示例： {ge::ir\_option::OO\_CONSTANT\_FOLDING, "true"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OO\_DEAD\_CODE\_ELIMINATION | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 是否开启死边消除优化。 死边消除：switch死边消除，switch的pred输入（1号输入）为const节点时，根据const的值消除其中一条分支：const为true时，消除false分支；const为false时，消除true分支。 参数取值： true：（默认值）开启。 false：关闭。 配置示例： {ge::ir\_option::OO\_DEAD\_CODE\_ELIMINATION, "true"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| TUNE\_DEVICE\_IDS | 当前版本暂不支持。 |


#### 后续版本废弃配置

| 参数 | 说明 |
| --- | --- |
| OP\_SELECT\_IMPL\_MODE | AI处理器部分内置算子有高精度和高性能实现方式，用户可以通过该参数配置模型编译时算子选择哪种实现方式。 高精度是指在float16输入场景，通过泰勒展开/牛顿迭代等手段进一步提升算子的精度；高性能是指在float16输入的情况下，不影响网络精度前提下的最优性能实现。 参数取值： high\_precision：表示算子采用高精度实现模式。 该选项采用系统内置的配置文件设置算子实现模式，内置配置文件路径为${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/high\_precision.ini。 为保持兼容，该参数仅对high\_precision.ini文件中算子列表生效，通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。 high\_performance：（默认值）表示算子采用高性能实现模式。 该选项采用系统内置的配置文件设置算子实现模式，内置配置文件路径为${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/high\_performance.ini。 为保持兼容，该参数仅对high\_performance.ini文件中算子列表生效，通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。 high\_precision\_for\_all：表示算子采用高精度实现模式。 该选项采用系统内置的配置文件设置算子实现模式，内置配置文件路径为${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/high\_precision\_for\_all.ini，该文件中列表后续可能会跟随版本更新。 该实现模式不保证兼容，如果后续新的软件包中有算子新增了实现模式（即配置文件中新增了某个算子的实现模式），之前版本使用high\_precision\_for\_all的网络模型，在新版本上性能可能会下降。 high\_performance\_for\_all：表示算子采用高性能实现模式。 该选项采用系统内置的配置文件设置算子实现模式，内置配置文件路径为${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/high\_performance\_for\_all.ini，该文件中列表后续可能会跟随版本更新。 该实现模式不保证兼容，如果后续新的软件包中有算子新增了实现模式（即配置文件中新增了某个算子的实现模式），之前版本使用high\_performance\_for\_all的网络模型，在新版本上精度可能会下降。 上述实现模式，根据算子的dtype进行区分。${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 参数默认值：high\_performance 配置示例： {ge::ir\_option::OP\_SELECT\_IMPL\_MODE, "high\_performance"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas 350 加速卡：不支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 |
| OPTYPELIST\_FOR\_IMPLMODE | 设置optype列表中算子的实现模式。 参数值约束： 列表中的算子使用OP\_SELECT\_IMPL\_MODE参数指定的模式，当前仅支持指定为high\_precision、high\_performance两种模式，多个算子使用英文逗号进行分隔。 该参数需要与OP\_SELECT\_IMPL\_MODE参数配合使用，且仅对指定的算子生效，不指定的算子按照默认实现方式选择。例如：OP\_SELECT\_IMPL\_MODE配置为high\_precision；OPTYPELIST\_FOR\_IMPLMODE配置为Pooling、SoftmaxV2。表示对Pooling、SoftmaxV2算子使用统一的高精度模式，未指定算子使用算子的默认实现方式。 配置示例： {ge::ir\_option::OPTYPELIST\_FOR\_IMPLMODE, "Pooling,SoftmaxV2"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
