---
title: options参数说明
description: "Atlas 200I/500 A2 推理产品 不支持该特性。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/atlasgeapi_07_0150.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/atlasgeapi_07_0150.html
indexId: 5845c729faa559181d57cc9e06759fb31047cb7f0cb9d8a2bdfa14fd9551777072
---
# options参数说明

Atlas 200I/500 A2 推理产品 不支持该特性。

本章节列出GEInitialize、Session构造函数、AddGraph接口传入的配置参数，分别在全局、session、graph生效。

如下表格中仅列出当前版本支持的配置参数，如果表中未列出，表示该参数预留或适用于其他版本的AI处理器，用户无需关注。


#### 基础功能

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.graphRunMode | 图执行模式，取值： 0：（默认值）在线推理场景下，请配置为0。 1：训练场景下，请配置为1。 配置示例： {"ge.graphRunMode", "0"}; | 可选 | 全局/session |
| ge.exec.deviceId | GE实例运行时操作设备的逻辑ID。 在线推理场景，限制有限范围为\-1~N\-1，默认值为\-1。 训练场景，限制有限范围为0~N\-1，默认值为0。 N表示该台Server上的可用AI处理器个数。 配置示例： {"ge.exec.deviceId", "\-1"}; | 可选 | 全局 |
| ge.session\_device\_id | 当用户需要将不同的模型通过同一个脚本在不同的Device上执行，可以通过该参数指定Device的逻辑ID。 通常可以创建多个线程，每个线程是不同的Session，每个Session传不同的ge.session\_device\_id。 配置示例： {"ge.session\_device\_id", "0"}; | 可选 | session |
| ge.socVersion | 指定编译优化模型的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。 | 可选 | all |
| ge.outputDatatype | 指定图的输出数据类型。 参数取值： FP32 FP16 UINT8 INT8 UINT16 INT16 UINT32 INT32 UINT64 INT64 DOUBLE HIF8：仅Atlas 350 加速卡支持该类型。不支持该类型。 FP8E5M2：仅Atlas 350 加速卡支持该类型。不支持该类型。 FP8E4M3FN：仅Atlas 350 加速卡支持该类型。不支持该类型。 图编译后，在对应的子图文件中，上述数据类型分别呈现方式如下： DT\_FLOAT DT\_FLOAT16 DT\_UINT8 DT\_INT8 DT\_UINT16 DT\_INT16 DT\_UINT32 DT\_INT32 DT\_UINT64 DT\_INT64 DT\_DOUBLE DT\_HIFLOAT8 DT\_FLOAT8\_E5M2 DT\_FLOAT8\_E4M3FN 配置示例： {"ge.outputDatatype", "FP32"}; 参数值约束： 若不指定具体数据类型，则以图最后一层输出的节点（算子）数据类型为准；若指定了类型，则以该参数指定的类型为准。 | 可选 | session/graph |
| ge.enableSingleStream | 静态shape场景下，是否使能图运行顺序单流串行执行。 其中，流（Stream）用于维护一些异步操作的执行顺序，确保按照应用程序中的代码调用顺序在Device上执行。 参数取值： true：表示使能，图运行顺序单流串行执行。 false：（默认值）表示关闭，图运行时多流并行执行。 使用约束： 模型中存在Cmo算子和如下控制类算子时，不能使用单Stream特性，只能使用默认值false。 Merge Switch Enter RefEnter 配置示例： {"ge.enableSingleStream", "false"}; | 可选 | graph |
| ge.exec.rankTableFile | 用于描述参与集合通信的集群信息，包括Server，Device，容器等的组织信息，填写ranktable文件路径，包含文件路径和文件名； | 可选 | all |
| ge.exec.rankId | rank id，指进程在group中对应的rank标识序号。范围：0~（rank size\-1）。对于用户自定义group，rank在本group内从0开始进行重排；对于hccl world group，rank id和world rank id相同。 world rank id，指进程在hccl world group中对应的rank标识序号，范围：0~（rank size\-1）。 local rank id，指group内进程在其所在Server内的rank编号，范围：0~（local rank size\-1）。 | 可选 | all |
| ge.constLifecycle | 用于训练和在线推理场景下配置常量节点的生命周期。 session：按照session级别存储常量节点。配置为session级别时，session内多张图间的常量节点支持内存复用，但需要用户保证多张图上同名的常量节点完全相同。 graph：按照graph级别存储常量节点，后续用户可调用SetGraphConstMemoryBase接口按图级别对const内存自行管理。 训练场景默认值为session；在线推理场景默认值为graph。 | 可选 | all |
| ge.deterministic | 是否开启确定性计算。 默认情况下，不开启确定性计算，算子在相同的硬件和输入下，多次执行的结果可能不同。这个差异的来源，一般是因为在算子实现中，存在异步的多线程执行，会导致浮点数累加的顺序变化。当开启确定性计算功能时，算子在相同的硬件和输入下，多次执行将产生相同的输出。但启用确定性计算往往导致算子执行变慢。当发现模型多次执行结果不同，或者是进行精度调优时，可开启确定性计算，辅助模型调试、调优。 参数取值： 0：（默认值）不开启确定性计算。 1：开启确定性计算。 配置示例： {"ge.deterministic", "0"}; | 可选 | 全局 |
| ge.exec.frozenInputIndexes | 设置地址不刷新的输入Tensor的索引。该参数仅限于LoadGraph调用。针对不同模型，输入Tensor索引内容不同： 动态shape模型：需要传递输入Tensor的索引、数据在Device上的地址、数据长度，其中地址要求十进制表示。 静态shape模型：只需要传递输入Tensor的索引即可；传其他参数比如数据长度参数，不生效。 配置示例： \# 只传输入Tensor索引 {"ge.exec.frozenInputIndexes", "0;1;2"}; \# 传递输入Tensor索引、数据在Device上的地址、数据长度 {"ge.exec.frozenInputIndexes", "0,88832131,4;1,888213294,4;2,193492421,2"}; 详细使用示例以及使用注意事项请参见单进程单卡异步运行(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0035.html)。 使用约束： 地址不刷新的输入Tensor，必须是静态shape，针对动态shape模型，该输入节点Tensor也必须是静态shape。 | 可选 | graph |
| ge.exec.hostInputIndexes | 随路拷贝场景，设置placement为Host的输入Tensor索引，多个输入的Tensor索引使用英文分号分隔。 随路拷贝是指随着模型内算子地址刷新动作，将Host侧输入的Tensor内存一起拷贝到Device侧。 配置示例： {"ge.exec.hostInputIndexes", "0;1;2"}; 使用约束： 该参数仅适用于静态shape模型。 随路拷贝特性不适合大数据量的输入，性能可能会有劣化。 若模型只有一个输入，不支持和ge.exec.frozenInputIndexes同时使用；若模型有多个输入，不支持和ge.exec.frozenInputIndexes指定同一个输入。 通过options配置项加载该参数后，后续的执行接口不支持使用RunGraphAsync。 | 可选 | graph |


#### 内存管理

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.exec.disableReuseMemory | 内存复用开关。 1：关闭内存复用。 0：（默认值）开启内存复用。 配置示例： {"ge.exec.disableReuseMemory", "0"}; | 可选 | all |
| ge.exec.atomicCleanPolicy | 是否集中清理网络中所有memset算子（含有memset属性的算子都是memset算子）占用的内存。 参数取值： 0：（默认值）集中清理。 1：单独清理，对网络中每一个memset算子进行单独清理。当网络中memset算子内存过大时建议使用此种清理方式，对降低使用内存有明显效果，但可能会导致一定的性能损耗。 配置示例： {"ge.exec.atomicCleanPolicy", "0"}; | 可选 | session |
| ge.externalWeight | 同一个Session内同时加载多个模型时，如果多个模型间的权重能够复用，建议通过此配置项将网络中Const/Constant节点的权重外置，实现多个模型间的权重复用，以减少权重的内存占用。 参数取值： 0：（默认值）权重不外置，直接保存在图中。 1：权重外置但不归一，将网络中所有Const/Constant节点的权重文件落盘，并将节点类型转换为FileConstant类型；不同节点权重保存到不同的文件中，以weight\_<hash值>命名。 2：权重外置且归一，将网络中所有Const/Constant节点的权重文件落盘，并将节点类型转换为FileConstant类型，所有权重保存到同一个文件中，以“原始根图名称\_weight\_combined”命名。 落盘路径说明： 若配置了ge.externalWeightDir，则权重文件会落盘到指定目录。 若环境中未配置环境变量ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)，则权重文件落盘至当前执行目录“tmp\_weight\_<pid>\_<sessionid>”下。 若环境中配置环境变量ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)，则权重文件会落盘至${ASCEND\_WORK\_PATH}/tmp\_weight\_<pid>\_<sessionid>目录下， 落盘路径优先级：ge.externalWeightDir > ${ASCEND\_WORK\_PATH}/tmp\_weight\_<pid>\_<sessionid> >当前执行目录tmp\_weight\_<pid>\_<sessionid>。 模型卸载时，会将tmp\_weight\_<pid>\_<sessionid>目录删除。 配置示例： {"ge.externalWeight", "1"}; | 可选 | 全局/session |
| ge.externalWeightDir | 用于配置保存外置权重文件落盘的路径。 使用约束： 如果要自行指定外置权重文件存放路径，需与ge.externalWeight参数配合使用。 优先级：ge.externalWeightDir > ${ASCEND\_WORK\_PATH}/tmp\_weight\_<pid>\_<sessionid> >当前执行目录tmp\_weight\_<pid>\_<sessionid>。 配置示例： {"ge.externalWeight", "1"}; {"ge.externalWeightDir", "$HOME/your\_tmp\_path"}; | 可选 | 全局/session |
| ge.exec.staticMemoryPolicy | 网络运行时使用的内存分配方式。 参数取值： 0：（默认值）动态分配内存，即按照实际大小动态分配，不支持内存扩展。 2：静态shape内存动态扩展，训练与在线推理场景下，可以通过此取值实现同一Session中多张图之间的内存复用，即以最大图所需内存进行分配。例如，假设当前执行图所需内存超过前一张图的内存时，直接释放前一张图的内存，按照当前图所需内存重新分配。 3：仅动态shape支持内存动态扩展，解决内存动态分配时的碎片问题，降低动态shape网络内存占用。 4：静态shape和动态shape同时支持内存动态扩展。 说明： 多张图并发执行时，不支持配置为“2”和“4”。 为兼容历史版本配置，配置为“1”的场景下，系统会按照“2”动态扩展内存的方式进行处理。 配置为“3”和“4”的场景下，会有内存收益，但可能会造成一定的性能损失。 配置示例： {"ge.exec.staticMemoryPolicy", "0"}; | 可选 | 全局/session |
| ge.featureBaseRefreshable | 配置feature内存地址是否可刷新。若用户需要自行管理feature内存并需要多次刷新该地址，则可将该参数配置为可刷新。 该参数仅限于静态shape图。 参数取值： 0：（默认值）feature内存地址不可刷新。 1：支持刷新模型的feature内存地址。 配置示例： {"ge.featureBaseRefreshable", "0"}; | 可选 | all |
| ge.exec.inputReuseMemIndexes | 用于配置是否开启图的输入节点的内存复用功能，开启后，输入节点的内存可作为模型执行过程中所需要的中间内存再次使用，从而达到降低内存峰值的目的。 参数取值为输入节点的index；如果对多个输入节点都开启内存复用，多个index间使用英文逗号分隔。输入节点需要设置属性index，说明是第几个输入，index从0开始。 注意： 若开启了输入节点的内存复用功能，需要用户确保输入的内存大小已经32字节对齐。 若所配置的输入index大于等于“输入个数”的值，属于非法index，该index配置不生效。 若开启了输入节点的内存复用功能，输入节点内存中的数据会被改写，图执行后，不可以继续使用输入节点内存中的内容。 配置示例： {"ge.exec.inputReuseMemIndexes", "0,1,2"}; | 可选 | graph |
| ge.exec.outputReuseMemIndexes | 用于配置是否开启整图输出的内存复用功能，开启后，整图输出的内存可作为模型执行过程中所需要的中间内存再次使用，从而达到降低内存峰值的目的。 如果开启，配置为整图输出的index；如果对多个输出都开启内存复用，多个index间使用英文逗号分隔。 注意： 若开启了整图输出的内存复用功能，需要用户确保输出的内存大小已经32字节对齐。 输出的index，按照整图输出的顺序标识，index从0开始。 若所配置的输出index大于等于“输出个数”的值，属于非法index，该index配置不生效。 配置示例： {"ge.exec.outputReuseMemIndexes", "0,1,2"}; | 可选 | graph |
| ge.exec.input\_fusion\_size | Host侧输入数据搬运到Device侧时，将用户离散多个输入数据合并拷贝的阈值，最小值为0，最大值为32MB（33554432字节），默认值为128KB（131072字节）。若： 输入数据大小<=阈值，则合并输入，然后从host搬运到device。 输入数据大小>阈值，或者阈值=0（功能关闭），则不合并，直接从host搬运到device。 例如用户有10个输入，有2个输入数据大小为100KB，2个输入数据大小为50KB，其余输入大于100KB，若设置： ge.exec.input\_fusion\_size=100KB，则上述4个输入合并为300KB，执行搬运；其他6个输入，直接从host搬运到device。 ge.exec.input\_fusion\_size=0，则该功能关闭，无输入合并，即10个输入直接从host搬运到device。 该参数只在异步静态shape图执行时生效，即使用RunGraphAsync接口运行Graph。 | 可选 | all |
| ge.inputBatchCpy | Host侧输入数据搬运到Device侧时，是否开启批量内存拷贝功能。 该参数可以提升Host到Device的数据搬运性能，适用于需要频繁搬运数据且PCIE带宽使用率低的场景；开启该参数批量拷贝功能后，可以提升带宽利用率。 参数取值： 1：开启批量内存拷贝功能。该取值仅在用户输入个数大于1时，功能才会生效。 0：（默认值）关闭批量内存拷贝功能。 使用约束： 该参数仅支持如下产品： Atlas 350 加速卡 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 该特性通常在多Session场景下使用，考虑到不同Session中的输入个数可能不同，因此推荐配置为session级，根据输入情况选择是否使能，不推荐配置为全局级别或者graph级别。 Session初始化时传入该参数，后续运行Graph时，目前只能通过RunGraphAsync接口使能该特性。 若网络初始输入个数为1，即使配置了批量拷贝功能也不会生效。 若同时配置ge.exec.input\_fusion\_size合并拷贝和开启ge.inputBatchCpy批量拷贝功能，合并拷贝的阈值可能会影响批量拷贝功能。 例如，用户有5个输入，有4个输入满足合并拷贝阈值，此4个输入执行合并拷贝功能，剩余的1个输入不会执行批量拷贝功能。 配置示例： {"ge.inputBatchCpy", "0"}; | 可选 | all |
| ge.exec.outputReuseInputMemIndexes | 模型推理时，显式声明指定的输出张量与输入张量共享同一内存地址。 当用户在图编译前能明确内存复用关系时，可以通过该参数告知GE图编译器，GE将在编译阶段进行相应优化。典型场景如下： Data>TensorMove>InplaceOp（原地算子）>NetOutput，其中Data和NetOutput分别为模型输入和输出。若Data与NetOutput的生命周期满足复用条件，编译器将自动移除中间的TensorMove（内存拷贝算子），从而避免不必要的内存拷贝操作，提升模型运行时的性能。 参数取值： "input\_index\_0,output\_index\_0\|input\_index\_1,output\_index\_1\|..." 每对input\_index\_X,output\_index\_Y表示输入索引为X的输入张量与输出索引为Y的输出张量内存地址相同。 多对索引之间用竖线"\|"分隔。 配置示例： 假如模型有10个输入、10 个输出，若配置为： ge.exec.outputReuseInputMemIndexes = "0,1\|6,8" 则表示输出索引1与输入索引0的内存地址相同，输出索引8与输入索引6的内存地址相同。 说明： 索引有效性：声明的输入/输出索引必须属于模型定义的合法范围。 地址一致性：模型执行时，必须确保对应的输入输出传入相同的内存地址，否则将导致运行错误。 | 可选 | graph |


#### 动态shape

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.inputShape | 指定模型输入数据的shape。在线推理或训练场景下，该参数仅在动态分档场景（动态维度）下为必选配置；在非动态分档场景下，单独配置此选项不生效。 动态分档场景，原始模型中输入数据的某个或某些维度值不固定，当前支持通过设置shape分档方式转换模型。 参数取值： 模型为非固定shape 设置ge.inputShape参数时，将对应维度值设置为\-1，需要同时配合ge.dynamicDims（设置动态维度档位）参数、ge.dynamicNodeType（指定动态输入的节点类型）参数一起使用。 模型shape为标量+动态分档 如果模型输入中既有标量shape，又有支持动态分档的shape，则标量输入不能忽略，必须配置。例如模型有三个输入，分别为A:[\-1,c1,h1,w1]、B:[]、C:[n2,c2,h2,w2]，则shape信息为"A:\-1,c1,h1,w1;B:;C:n2,c2,h2,w2"，标量输入B必须配置。 配置示例： 非固定shape： 设置指定维度档位的示例，请参见ge.dynamicDims。 shape为标量+动态分档 shape为标量的输入，必须配置。例如模型有三个输入，shape信息分别为A:[\-1,32,208,208]、B:[]、C:[16,64,208,208]，则配置示例为（A为动态分档输入，此处以设置动态维度档位为例）： {"ge.inputShape", "A:\-1,32,208,208;B:;C:16,64,208,208"}, {"ge.dynamicDims", "1;2;4"} | 可选 | session/graph |
| ge.dynamicDims | 设置ND格式下动态维度的档位，适用于执行推理时，每次处理任意维度的场景。该参数需要与ge.inputShape配合使用。详细使用示例请参见编译并运行Graph场景(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0053.html)。 参数取值：通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置。 参数值格式：所有档位必须放在双引号中，档位之间使用英文分号分隔，每档内参数使用英文逗号分隔；每档中的dim值与ge.inputShape参数中的\-1标识的参数依次对应，inputShape参数中有几个\-1，则每档必须设置几个维度。并且要求档位信息必须大于1组。 参数值约束： 针对如下产品，档位数约束为：档位数取值范围为(1,100]，即必须设置至少2个档位，最多支持100档配置，建议配置为3~4档。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas 训练系列产品 Atlas 推理系列产品 针对Atlas 350 加速卡，档位数约束为：档位数取值范围为(1, 256]，即必须设置至少2个档位，最多支持256档配置，建议配置为3~4档。 使用示例： 若模型只有一个输入： {"ge.inputShape", "data:1,\-1,\-1"}, {"ge.dynamicDims", "1,2;3,4;5,6;7,8"} // graph运行时，支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8 若网络模型有多个输入： 每档中的dim值与模型输入参数中的\-1标识的参数依次对应，模型输入参数中有几个\-1，则每档必须设置几个维度。例如网络模型有三个输入，分别为data(1,1,40,T)，label(1,T)，mask(T,T) ，其中T为动态可变。则配置示例为： {"ge.inputShape", "data:1,1,40,\-1;label:1,\-1;mask:\-1,\-1" }, {"ge.dynamicDims", "20,20,1,1;40,40,2,2;80,60,4,4"} // graph运行时，支持的输入dims组合档数分别为： //第0档：data(1,1,40,20)+label(1,20)+mask(1,1) //第1档：data(1,1,40,40)+label(1,40)+mask(2,2) //第2档：data(1,1,40,80)+label(1,60)+mask(4,4) | 可选 | session/graph |
| ge.dynamicNodeType | 用于指定动态输入的节点类型。 0：dataset输入为动态输入。 1：placeholder输入为动态输入。 当前不支持dataset和placeholder输入同时为动态输入。 配置示例： {"ge.dynamicNodeType", "0"}; | 可选 | session/graph |
| ac\_parallel\_enable | 动态shape图中，是否允许AI CPU算子和AI Core算子并行运行。 动态shape图中，开关开启时，系统自动识别图中可以和AI Core并发的AI CPU算子，不同引擎的算子下发到不同流上，实现多引擎间的并行，从而提升资源利用效率和动态shape执行性能。 参数取值： 1：允许AI CPU和AI Core算子间的并行运行。 0：（默认值）AI CPU算子不会单独分流。 配置示例： {"ac\_parallel\_enable", "1"}; | 可选 | 全局 |
| ge.exec.hostSchedulingMaxThreshold | 控制静态小图（根图）执行时是否走动态shape调度的最大阈值。默认阈值为0。建议大模型场景使用。 如果静态根图节点的个数<最大阈值，则走动态shape调度。大模型场景，该方式可以节约Stream资源。 如果静态根图节点的个数>最大阈值，则保持原有流程不变。 说明：如果静态根图节点包括子图，则该参数不生效。 | 可选 | all |
| ge.exec.static\_model\_ops\_lower\_limit | 控制静态子图最小算子个数门限，取值范围为\-1到正无穷，取其他值报错；默认值为4。 取值>=0： 算子数<门限，静态子图不单独拆图，合并到动态图走动态执行。 算子数>=门限，保持原有流程不变（静态子图仍旧会拆图）。 取值=\-1：表示所有算子走动态图执行。 例如，假设静态子图中算子数为4，通过该参数配置的门限为10，则静态子图不会单独拆图，走动态图执行。 | 可选 | graph |


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


**表1**

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.op\_compiler\_cache\_mode | 用于配置算子编译磁盘缓存模式。 参数取值： enable：（默认值）表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译，从而提升编译速度。 force：启用算子编译缓存功能，区别于enable模式，force模式下会强制刷新缓存，即先删除已有缓存，再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等，需要先指定为force用于先清理已有的缓存，后续再修改为enable模式，以避免每次编译时都强制刷新缓存。 disable：表示禁用算子编译缓存，算子重新编译。 使用约束： 如果要自行指定算子编译磁盘缓存的路径，则需要与ge.op\_compiler\_cache\_dir配合使用。 由于force选项会先删除已有缓存，所以不建议在程序并行编译时设置，否则可能会导致其他模型使用的缓存内容被清除而导致失败。 建议模型最终发布时设置编译缓存选项为disable或者force。 如果算子调优后知识库变更，则需要先通过设置为force来清空缓存，然后再设置为enable重新进行编译，否则无法应用新的调优知识库，从而导致调优应用执行失败。 调试开关打开的场景下： ge.opDebugLevel非0值：会忽略ge.op\_compiler\_cache\_mode参数的配置，不启用算子编译缓存功能，算子全部重新编译。 op\_debug\_config配置非空时，且未配置op\_debug\_list字段，会忽略ge.op\_compiler\_cache\_mode参数的配置，不启用算子编译缓存功能，算子全部重新编译。 op\_debug\_config配置非空时，且配置文件中配置了op\_debug\_list字段： 列表中的算子，忽略ge.op\_compiler\_cache\_mode参数的配置继续重新编译。 列表外的算子，如果ge.op\_compiler\_cache\_mode参数配置为enable或force，则启用缓存功能；若配置为disable，则不启用缓存功能，仍旧重新编译。 启用算子编译缓存功能时，可以通过配置文件（算子编译完成后，会在ge.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%。 配置示例： {"ge.op\_compiler\_cache\_mode", "enable"}; | 可选 | all |
| ge.op\_compiler\_cache\_dir | 用于配置算子编译磁盘缓存的目录。 参数值格式：路径支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）、中文字符。 默认值：$HOME/atc\_data 如果参数指定的路径存在且有效，则在指定的路径下自动创建子目录kernel\_cache；如果指定的路径不存在但路径有效，则先自动创建目录，然后在该路径下自动创建子目录kernel\_cache。 用户请不要在默认缓存目录下存放其他自有内容，自有内容在软件包安装或升级时会同默认缓存目录一并被删除。 通过该参数指定的非默认缓存目录无法删除（软件包安装或升级时不会被删除）。 算子编译磁盘缓存路径，除ge.op\_compiler\_cache\_dir参数设置的方式外，还可以配置环境变量ASCEND\_CACHE\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0006.html)，几种方式优先级为：配置参数“ge.op\_compiler\_cache\_dir”>环境变量ASCEND\_CACHE\_PATH>默认存储路径。 | 可选 | all |
| ge.graph\_compiler\_cache\_dir | 图编译磁盘缓存目录，和ge.graph\_key配合使用，ge.graph\_compiler\_cache\_dir和ge.graph\_key同时配置非空时图编译磁盘缓存功能生效。 配置的缓存目录必须存在，否则会导致编译失败。 图发生变化后，原来的缓存文件不可用，用户需要手动删除缓存目录中的缓存文件或者修改ge.graph\_key，重新编译生成缓存文件。 其他使用约束和具体的使用方法请参见图编译缓存(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0063.html)。 | 可选 | session |
| ge.graph\_key | 图唯一标识，取值只包含大小写字母（A\-Z，a\-z）、数字（0\-9）、下划线（\_）、中划线（\-）并且长度不超过128。 | 可选 | graph |
| ge.optimizationSwitch | 算子编译时，融合规则（Pass）的控制开关。 该参数与ge.fusionSwitchFile的区别是：ge.fusionSwitchFile仅能关闭图融合和UB融合的规则，并且需要单独配置JSON文件，而该参数适用于所有规则，通过参数就能指定融合规则，不需要再单独设置JSON文件。如果两个参数都配置，且配置了同一个融合规则，则以ge.optimizationSwitch参数配置的为准。 参数取值："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.optimizationSwitch", "Passname1:on;Passname2:off"}; | 可选 | all |
| ge.topoSortingMode | 对算子进行图模式编译时，可选择的不同的图遍历模式。主要面向在线推理场景。 参数取值： 0：BFS，Breadth First Search，广度优先遍历策略。 1：（默认值）DFS，Depth First Search，深度优先遍历策略。 2：RDFS，Reverse DFS，反向深度优先遍历策略。 3：StableRDFS，稳定拓扑序策略，针对图里已有的算子，不会改变其计算顺序；针对图里新增的算子，使用RDFS遍历策略。 配置示例： {"ge.topoSortingMode", "1"}; | 可选 | all |
| ge.aicoreNum | 用于配置算子编译时使用的AI Core核数。 参数取值："整数1\|整数2"，中间使用“\|”分隔： 场景1：针对如下产品，整数1表示算子编译时使用的AI Core中的Cube Core核数，整数2表示算子编译时使用的AI Core中的Vector Core核数，整数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 推理系列产品 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 如果配置该参数的同时启用了算子编译缓存功能（ge.op\_compiler\_cache\_mode参数配置为“enable”或者“force”，默认为“enable”），此参数仅在首次编译时生效。若您想在非首次编译时生效该参数，需要清理编译磁盘的缓存。 其中，${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。<arch>表示具体操作系统架构，xxx请根据实际产品进行选择。 配置示例： 场景1配置示例： {"ge.aicoreNum", "24\|48"}; 场景2配置示例 {"ge.aicoreNum", "10\|"}; 或 {"ge.aicoreNum", "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 推理系列产品 。 | 可选 | 全局/session |
| ge.AllowMultiGraphParallelCompile | 用于使能同一个Session内多线程编译多张图。如果配置为"1"，会禁止变量转换格式（参考ge.exec.variable\_acc说明）。 参数取值： "0"，默认值，同一个Session内一个线程编译多张图。 "1"，表示允许用户在一个Session内使用多个线程并发编译多张图。 使用约束： 如果配置为"1"，不能同时配置ge.exec.variable\_acc为"True"，否则会校验报错。 如果配置为"1"，资源类算子如果导致其他图重编译，立即报错。 配置示例： {"ge.AllowMultiGraphParallelCompile", "1"}; | 可选 | 全局/session |


#### 功能调试

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.exec.enable\_exception\_dump | 是否dump异常算子数据。 0：（默认值）关闭异常算子数据dump功能。 1：开启普通exception dump（L1 exception dump），dump异常算子的输入输出数据、tensor描述信息（shape、dtype、format等）以及workspace信息。 dump数据存储路径优先级为：NPU\_COLLECT\_PATH>ASCEND\_WORK\_PATH>默认路径（指当前脚本执行路径的extra\-info目录） 2：开启Lite exception dump（L0 exception dump），dump异常算子的输入输出数据、workspace信息、Tiling信息。 dump数据存储路径优先级为：ASCEND\_WORK\_PATH>默认路径（指当前脚本执行路径的/extra\-info/data\-dump/<device\_id>目录） 说明： 若配置了环境变量NPU\_COLLECT\_PATH，不论配置项“ge.exec.enable\_exception\_dump”的取值如何，仅收集普通exception dump信息，包括异常算子的输入数据和输出数据，且dump数据存储在环境变量NPU\_COLLECT\_PATH的指定目录下。 L1 exception dump即普通exception dump，L0 exception dump即Lite exception dump（轻量化的exception dump），两者都会导出算子输入输出、workspace数据等信息，但相比L0 exception dump，L1 exception dump的信息更多，开启L1 exception dump时，会在Host应用类日志文件（即plog日志）中打印出来各tensor的dtype等信息，还会把算子相关的算子名、kernel都打印出来。 关于环境变量的详细说明可参见《环境变量参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0001.html)》。 配置示例： std::map<ge::AscendString, ge::AscendString> ge\_options = {"ge.exec.enable\_exception\_dump", "0"}, | 可选 | 全局 |
| ge.opDebugLevel | 算子debug功能开关，取值： 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融合计算描述文件。 须知： 若ge.opDebugLevel配置为0，同时又配置了op\_debug\_config参数，该场景下在当前执行路径仍旧会生成算子编译目录kernel\_meta。 训练执行时，建议配置为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 | 可选 | all |
| 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.... 配置示例： {"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参数指定的配置文件中。 配置示例如下：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 | 可选 | 全局 |
| ge.debugDir | 用于配置保存算子编译生成的调试相关过程文件的路径，过程文件包括但不限于算子.o（算子二进制文件）、.json（算子描述文件）、.cce等文件。 默认生成在当前训练脚本执行路径下。 使用约束： 如果要自行指定算子编译的过程文件存放路径，需ge.debugDir参数与ge.opDebugLevel参数配合使用，且当ge.opDebugLevel取值为0时，不能使用ge.debugDir参数。 算子编译生成的调试文件存储路径，除ge.debugDir参数设置的方式外，还可以配置环境变量ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)，几种方式优先级为：配置参数“ge.debugDir”> 环境变量ASCEND\_WORK\_PATH > 默认存储路径。 | 可选 | all |
| ge.exportCompileStat | 配置图编译过程中是否生成算子融合信息（包括图融合和UB融合）的结果文件fusion\_result.json。 该文件用于记录图编译过程中使用的融合规则，而精度比对中的ge.fusionSwitchFile参数可以关闭指定的融合规则，关闭的融合规则，不会在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。 配置示例： {"ge.exportCompileStat", "1"}; | 可选 | 全局 |


#### 精度调优

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.exec.precision\_mode | 算子精度模式，配置要求为string类型。不能与ge.exec.precision\_mode\_v2同时使用，建议使用ge.exec.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。xxx请根据实际产品进行选择。 参数默认值： 训练场景下，针对 Atlas 训练系列产品 ，参数默认值为“allow\_fp32\_to\_fp16”。 训练场景下，针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，参数默认值为“must\_keep\_origin\_dtype”。 训练场景下，针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，参数默认值为“must\_keep\_origin\_dtype”。 训练场景下，针对Atlas 350 加速卡，参数默认值为“must\_keep\_origin\_dtype”。 在线推理场景下，参数默认值为“force\_fp16”。 参数值约束： bfloat16数据类型仅支持以下产品： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 350 加速卡 | 可选 | all |
| ge.exec.precision\_mode\_v2 | 算子精度模式，配置要求为string类型。不能与ge.exec.precision\_mode同时使用，建议使用ge.exec.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。xxx请根据实际产品进行选择。 参数默认值： 训练场景下，针对 Atlas 训练系列产品 ，该配置项无默认取值，以“precision\_mode”参数的默认值为准，即“allow\_fp32\_to\_fp16”。 训练场景下，针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，参数默认值为“origin”。 训练场景下，针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，参数默认值为“origin”。 训练场景下，针对Atlas 350 加速卡，参数默认值为“origin”。 在线推理场景下，参数默认值为“fp16”。 参数值约束： bfloat16数据类型仅支持以下产品： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 350 加速卡 | 可选 | all |
| ge.exec.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（黑名单），表示混合精度模式下，不允许降低精度。 不配置该参数（灰名单），表示混合精度模式下，当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 配置示例： {"ge.exec.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：黑名单。不配置：灰名单。 | 可选 | all |
| ge.customizeDtypes | 通过该参数自定义模型编译时算子的计算精度，模型中其他算子以ge.exec.precision\_mode或ge.exec.precision\_mode\_v2指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名，例如：/home/test/customize\_dtypes.cfg。 参数值约束： 配置文件中列举需要自定义计算精度的算子名称或算子类型，每个算子单独一行，且算子类型必须为基于IR定义的算子的类型。 对于同一个算子，如果同时配置了算子名称和算子类型，编译时以算子名称为准。 指定某个算子的计算精度时，如果算子编译过程中该算子被融合掉，则该算子指定的计算精度不生效。 配置文件格式要求： \# 按照算子名称配置 Opname1::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… Opname2::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… \# 按照算子类型配置 OpType::TypeName1:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… OpType::TypeName2:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… 配置文件配置示例： \# 按照算子名称配置 resnet\_v1\_50/block1/unit\_3/bottleneck\_v1/Relu::InputDtype:float16,int8,OutputDtype:float16,int8 \# 按照算子类型配置 OpType::Relu:InputDtype:float16,int8,OutputDtype:float16,int8 说明： 算子具体支持的计算精度可以从算子信息库中查看，默认存储路径为：${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json ${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。xxx请根据实际产品进行选择。 通过该参数指定的优先级高，因此可能会导致精度/性能的下降，如果指定的dtype不支持，会导致编译失败。 | 可选 | session |


#### 精度比对

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.exec.enableDump | 是否开启dump功能。 1：开启dump功能，从dump\_path读取dump文件保存路径，dump\_path为None时会产生异常。 0：（默认值）关闭dump功能。 配置示例： {"ge.exec.enableDump", "0"}; 说明： 该参数与ge.exec.enableDumpDebug参数，全局场景以及同一个Session内场景，不能同时设置。 若“ge.exec.enableDump/ge.exec.enableDumpDebug（二选一）”参数配置为“1”，同时“ge.exec.enable\_exception\_dump”配置为“1”（即开启普通ExceptionDump），此时： 针对动态shape网络，仅“ge.exec.enable\_exception\_dump”生效。 针对静态shape网络，“ge.exec.enable\_exception\_dump”与“ge.exec.enableDump/ge.exec.enableDumpDebug（二选一）”都生效。 | 可选 | 全局/session |
| ge.exec.dumpPath | Dump文件保存路径。开启dump和溢出检测功能时，该参数必须配置。 该参数指定的目录需要在启动训练的环境上（容器或Host侧）提前创建且确保安装时配置的运行用户具有读写权限，支持配置绝对路径或相对路径（相对执行命令行时的当前路径）。 绝对路径配置以“/”开头，例如：/home/HwHiAiUser/output。 相对路径配置直接以目录名开始，例如：output。 dump文件生成在该参数指定的目录下，即{dump\_path}/{time}/{deviceid}/{model\_name}/{model\_id}/{data\_index}目录下，以{dump\_path}配置/home/HwHiAiUser/output为例，例如存放在“/home/HwHiAiUser/output/20200808163566/0/ge\_default\_20200808163719\_121/11/0”目录下。 | 可选 | 全局/session |
| ge.exec.dumpStep | 指定采集哪些迭代的dump数据。默认值：None，表示所有迭代都会产生dump数据。 多个迭代用“\|”分隔，例如：0\|5\|10；也可以用"\-"指定迭代范围，例如：0\|3\-5\|10。 配置示例： {"ge.exec.dumpStep", "None"}; | 可选 | 全局/session |
| ge.exec.dumpMode | dump模式，用于指定dump算子输入数据还是输出数据。取值如下： input：仅dump算子输入数据。 output：（默认值）仅dump算子输出数据。 all：dump算子输入和输出数据。 配置示例： {"ge.exec.dumpMode", "input"}; 使用约束： 配置为all时，由于部分算子在执行过程中会修改输入数据，例如集合通信类算子HcomAllGather、HcomAllReduce等，因此系统在进行dump时，会在算子执行前dump算子输入，在算子执行后dump算子输出，这样，针对同一个算子，算子输入、输出的dump数据是分开落盘，会出现多个dump文件，在解析dump文件后，用户可通过文件内容判断是输入还是输出。 | 可选 | 全局/session |
| ge.exec.dumpData | 指定算子dump内容类型，取值： tensor：（默认值）dump算子数据。 stats：dump算子统计数据，保存结果为csv格式。一般情况下dump算子数据量大，用户可以尝试dump算子统计数据。 配置示例： {"ge.exec.dumpData", "tensor"}; | 可选 | 全局/session |
| ge.exec.dumpLayer | 指定需要dump的算子，取值为算子名，多个算子名之间使用空格分隔。 若指定的算子其输入涉及data算子，会同时将data算子信息dump出来。 配置示例： {"ge.exec.dumpLayer", "layer1 layer2 layer3"}; | 可选 | 全局/session |
| ge.exec.enableDumpDebug | 是否开启溢出检测功能。 1：开启溢出检测功能，从ge.exec.dumpPath读取Dump文件保存路径，路径配置为None时会产生异常。 0：（默认值）关闭溢出检测功能。 配置示例： {"ge.exec.enableDumpDebug", "0"}; 说明： 该参数与ge.exec.enableDump参数，全局场景以及同一个Session内场景，不能同时设置。 若“ge.exec.enableDump/ge.exec.enableDumpDebug（二选一）”参数配置为“1”，同时“ge.exec.enable\_exception\_dump”配置为“1”（即开启普通ExceptionDump），此时： 针对动态shape网络，仅“ge.exec.enable\_exception\_dump”生效。 针对静态shape网络，“ge.exec.enable\_exception\_dump”与“ge.exec.enableDump/ge.exec.enableDumpDebug（二选一）”都生效。 | 可选 | 全局/session |
| ge.exec.dumpDebugMode | 溢出检测模式，取值如下： aicore\_overflow：AI Core算子溢出检测，检测在算子输入数据正常的情况下，输出是否不正常的极大值（如float16下65500,38400,51200这些值）。一旦检测出这类问题，需要根据网络实际需求和算子逻辑来分析溢出原因并修改算子实现。 atomic\_overflow：Atomic Add溢出检测，即除了AICore之外，还有其他涉及浮点计算的模块，比如SDMA，检测这些部分出现的溢出问题。 all：同时进行AI Core算子溢出检测和Atomic Add溢出检测。 针对如下产品，仅支持配置为“all”： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | 可选 | 全局/session |
| ge.bufferOptimize | 数据缓存优化开关。 参数值： l1\_optimize：表示开启l1优化。当前版本该参数无效，等同于off\_optimize。 l2\_optimize：（默认值）表示开启l2优化。 off\_optimize：表示关闭数据缓存优化。 使用建议： 建议打开数据缓存优化功能：开启数据缓存优化可提高计算效率、提升性能，但由于部分算子在实现上可能存在未考虑的场景，导致影响精度，因此在出现精度问题时可以尝试关闭数据缓存优化。如果关闭数据缓存优化功能后，精度达标，则需要识别出问题算子，反馈给技术支持进一步分析、解决算子问题；解决算子问题后，建议仍旧保持开启数据缓存优化功能。 配置示例： {"ge.bufferOptimize", "l2\_optimize"}; | 可选 | session/graph |
| ge.fusionSwitchFile | 融合规则（包括图融合和UB融合）开关配置文件路径以及文件名，路径和文件名：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）、中文字符。 系统内置了一些图融合和UB融合规则，均为默认开启，可以根据需要关闭指定的融合规则，当前可以关闭的融合规则请参见《图融合和UB融合规则参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/graphubfusionref/atlasrr\_30\_0003.html)》，但是由于系统机制，其他融合规则无法关闭。 配置文件样例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" } } } 配置示例： {"ge.fusionSwitchFile", "/home/test/fusion\_switch.cfg"}; | 可选 | all |


#### 性能调优

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.exec.variable\_acc | 是否开启变量格式优化。 参数取值： True：（默认值）开启。 False：关闭。 为了提高训练效率，在网络执行的变量初始化过程中，将变量转换成更适合在AI处理器上运行的数据格式。但在用户特殊要求场景下，可以选择关闭该功能开关。 使用约束： 开启时，不能同时将ge.AllowMultiGraphParallelCompile配置为"1"，否则会校验报错。 配置示例： {"ge.exec.variable\_acc", "True"}; | 可选 | all |
| ge.exec.op\_precision\_mode | 设置指定算子内部处理时的精度模式，支持指定一个算子或多个算子。通过该参数传入自定义的精度模式配置文件op\_precision.ini，可以为不同的算子设置不同的精度模式。 ini文件中按照算子类型、节点名称设置精度模式，每一行设置一个算子类型或节点名称的精度模式，按节点名称设置精度模式的优先级高于按算子类型。 配置文件中支持设置如下精度模式： high\_precision：表示高精度。 high\_performance：表示高性能。 enable\_float\_32\_execution：算子内部处理时使用FP32数据类型功能，该场景下FP32数据类型不会自动转换为HF32数据类型；若使用HF32计算，精度损失超过预期时，可启用该配置，指定部分算子内部计算时使用FP32，保持精度。 该选项仅支持以下产品类型： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 enable\_hi\_float\_32\_execution：算子内部处理时使用HF32数据类型功能，使能后，FP32数据类型自动转换为HF32数据类型；该配置可以降低数据所占空间大小，实现性能提升。当前版本暂不支持。 support\_out\_of\_bound\_index：表示对gather、scatter和segment类算子的indices输入进行越界校验，校验会降低算子的执行性能。 keep\_fp16：算子内部处理时使用FP16数据类型功能，该场景下FP16数据类型不会自动转换为FP32数据类型；若使用FP32计算时性能不满足预期，同时精度要求不高情况下，可以选择keep\_fp16模式，牺牲精度提升性能，不建议使用该低精度模式。 super\_performance：表示超高性能，和高性能相比，在算法计算公式上进行了优化。 具体某个算子支持配置的精度/性能模式取值，可以通过CANN软件安装后文件存储路径的opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/all\_ops\_impl\_mode.ini文件查看。 op\_precision.ini配置样例如下： [ByOpType] optype1=high\_precision optype2=high\_performance optype3=enable\_hi\_float\_32\_execution optype4=support\_out\_of\_bound\_index [ByNodeName] nodename1=high\_precision nodename2=high\_performance nodename3=enable\_hi\_float\_32\_execution nodename4=support\_out\_of\_bound\_index 配置示例： {"ge.exec.op\_precision\_mode", "$HOME/conf/op\_precision.ini"}; | 可选 | 全局 |
| ge.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下沉。 1：使能Tiling下沉。 配置示例： {"ge.tiling\_schedule\_optimize", "0"}; 该参数仅支持以下产品： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 推理系列产品 | 可选 | 全局/session |
| ge.graphMaxParallelModelNum | 图执行模式下，同一个图可以在同一个device上被多个模型并行加载执行；该参数用于控制允许并行加载的最大模型数目。 参数取值： 1~INT32\_MAX，默认为8。 配置示例： {"ge.graphMaxParallelModelNum", "8"}; | 可选 | all |


#### Profiling

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.exec.profilingMode | 是否开启Profiling功能。 1：开启Profiling功能，从ge.exec.profilingOptions读取Profiling的采集选项。 0：（默认值）关闭Profiling功能。 配置示例： {"ge.exec.profilingMode", "0"}; | 可选 | 全局 |
| ge.exec.profilingOptions | Profiling配置选项。 output：Profiling采集结果文件保存路径。支持配置绝对路径或相对路径（相对执行命令行时的当前路径）。路径中不能包含特殊字符："\n"、"\f"、"\r"、"\b"、"\t"、"\v"、"\u007F"。 绝对路径配置以“/”开头，例如：/home/output。 相对路径配置直接以目录名开始，例如：output。 该参数优先级高于ASCEND\_WORK\_PATH。 该路径无需用户提前创建，采集过程中会自动创建。 storage\_limit：指定落盘目录允许存放的最大文件容量。当Profiling数据文件在磁盘中即将占满本参数设置的最大存储空间或剩余磁盘总空间即将被占满时（总空间剩余<=20MB），则将磁盘内最早的文件进行老化删除处理。 范围[200, 4294967295]，单位为MB，设置该参数时必须带单位，例如200MB。 未配置本参数时，采集前，如果磁盘可用空间小于20MB时，则不落盘数据。 training\_trace：采集迭代轨迹数据开关，即训练任务及AI软件栈的软件信息，实现对训练任务的性能分析，重点关注前后向计算和梯度聚合更新等相关数据。当采集正向和反向算子数据时该参数必须配置为on。 task\_trace、task\_time：控制采集算子下发耗时和算子执行耗时的开关。涉及在task\_time、op\_summary、op\_statistic等文件中输出相关耗时数据。配置值： on：开启，默认值，和配置为l1的效果一样。 off：关闭。 l0：采集算子下发耗时、算子执行耗时数据。与l1相比，由于不采集算子基本信息数据，采集时性能开销较小，可更精准统计相关耗时数据。 l1：采集算子下发耗时、算子执行耗时数据以及算子基本信息数据，提供更全面的性能分析数据。 当训练profiling mode开启即采集训练Profiling数据时，配置task\_trace为on的同时training\_trace也必须配置为on。 ge\_api：采集动态shape算子在Host调度阶段的耗时数据。取值： off：关闭，默认为off。 l0：采集动态shape算子在Host调度主要阶段的耗时数据，可更精准统计相关耗时数据。 l1：采集动态shape算子在Host调度阶段更细粒度的耗时数据，提供更全面的性能分析数据。 hccl：控制通信数据采集开关，可选on或off，默认为off。 说明： 此开关后续版本会废弃，请使用task\_time开关控制相关数据采集。 aicpu：采集AICPU算子的详细信息，如：算子执行时间、数据拷贝时间等。取值on/off，默认为off。 fp\_point：指定训练网络迭代轨迹正向算子的开始位置，用于记录前向计算开始时间戳。配置值为指定的正向第一个算子名字。用户可以在训练脚本中，通过tf.io.write\_graph将graph保存成.pbtxt文件，并获取文件中的name名称填入；也可直接配置为空，由系统自动识别正向算子的开始位置，例如"fp\_point":""。 bp\_point：指定训练网络迭代轨迹反向算子的结束位置，记录后向计算结束时间戳，bp\_point和fp\_point可以计算出正反向时间。配置值为指定的反向最后一个算子名字。用户可以在训练脚本中，通过tf.io.write\_graph将graph保存成.pbtxt文件，并获取文件中的name名称填入；也可直接配置为空，由系统自动识别反向算子的结束位置，例如"bp\_point":""。 aic\_metrics：AI Core性能指标采集项，取值如下： ArithmeticUtilization：各种计算类指标占比统计。 PipeUtilization：计算单元和搬运单元耗时占比，该项为默认值。 Memory：外部内存读写类指令占比。 MemoryL0：内部L0内存读写类指令占比。 MemoryUB：内部UB内存读写类指令占比。 ResourceConflictRatio：流水线队列类指令占比。 L2Cache：读写L2 Cache命中次数和缺失后重新分配次数。 Atlas 推理系列产品 不支持该参数。 Atlas 训练系列产品 不支持该参数。 MemoryAccess：算子在核上访存的带宽数据量。 Atlas 推理系列产品 不支持该参数。 Atlas 训练系列产品 不支持该参数。 Atlas 350 加速卡：不支持该参数。 说明： 支持自定义需要采集的寄存器，例如："aic\_metrics":"Custom:0x49,0x8,0x15,0x1b,0x64,0x10"。 Custom字段表示自定义类型，配置为具体的寄存器值，范围[0x1, 0x6E]。 配置的寄存器数最多不能超过8个，寄存器通过“,”区分开。 寄存器的值支持十六进制或十进制。 l2：控制L2 Cache和TLB页表缓存命中率的开关，可选on或off，默认为off。 Atlas 推理系列产品 ：支持采集L2 Cache的命中率 Atlas 训练系列产品 ：支持采集L2 Cache的命中率 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持采集L2 Cache和TLB页表缓存的命中率；分析AI Core命中L2次数推荐使用aic\-metrics=L2Cache。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持采集L2 Cache和TLB页表缓存的命中率；分析AI Core命中L2次数推荐使用aic\-metrics=L2Cache。 Atlas 350 加速卡：支持采集L2 Cache和TLB页表缓存的命中率；分析AI Core命中L2次数推荐使用aic\-metrics=L2Cache。 msproftx：控制msproftx用户和上层框架程序输出性能数据的开关，可选on或off，默认值为off。 需要先在应用程序脚本中添加如下mstx API或msproftx API，推荐使用mstx API。 runtime\_api：控制runtime API性能数据采集开关，可选on或off，默认为off。可采集runtime API性能数据，包括Host与Device之间、Device间的同步异步内存复制时延等。 sys\_hardware\_mem\_freq：片上内存、QoS传输带宽、LLC三级缓存带宽、加速器带宽、SoC传输带宽、组件内存占用等的采集开关。不同产品的采集内容略有差异，请以实际结果为准。范围[1,100]，单位Hz。 Atlas 350 加速卡，Qos和SoC支持的采集频率最大支持配置10000，其他采集项支持的最大采集频率仍为100，若配置超出范围，其他采集项则按照最大采集频率100进行采集。 已知在安装有glibc<2.34的环境上采集memory数据，可能触发glibc的一个已知Bug 19329(https://sourceware.org/bugzilla/show\_bug.cgi?id=19329)，通过升级环境的glibc版本可解决此问题。 对于以下型号，采集任务结束后，不建议用户增大采集频率，否则可能导致SoC传输带宽数据丢失。 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 llc\_profiling：LLC Profiling采集事件，可以设置为： read：读事件，三级缓存读速率，默认为read。 write：写事件，三级缓存写速率。 sys\_io\_sampling\_freq：NIC、ROCE、UB带宽数据采集频率。范围[1,100]，单位Hz。 Atlas 推理系列产品 ：不支持该参数。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持采集NIC、ROCE Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持采集NIC、ROCE Atlas 350 加速卡：支持采集UB带宽数据 sys\_interconnection\_freq：集合通信带宽数据（HCCS）、集合通信硬件加速单元（CCU）带宽数据、SIO数据、PCIe数据、UB带宽数据采集频率以及片间传输带宽信息采集频率。范围[1,50]，单位Hz。 Atlas 训练系列产品 ：支持采集HCCS、PCIe数据。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持采集HCCS、PCIe数据、片间传输带宽信息。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持采集HCCS、PCIe数据、片间传输带宽信息、SIO数据。 Atlas 350 加速卡：支持采集PCIe数据、片间传输带宽信息、CCU带宽数据、SIO数据、UB带宽数据。 dvpp\_freq：DVPP采集频率。范围[1,100]，单位Hz。 instr\_profiling：AI Core和AI Vector的带宽和延时采集开关。取值on/off，默认为off。 Atlas 训练系列产品 ：不支持该功能。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：不支持该开关，通过instr\_profiling\_freq控制该功能。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：不支持该开关，通过instr\_profiling\_freq控制该功能。 Atlas 350 加速卡：支持，但可能会因最后一段指令的统计时间超长导致统计不准确，建议使用msprof op方式采集。 instr\_profiling\_freq：AI Core和AI Vector的带宽和延时采集开关，配置了采集频率即开启相关采集能力。范围[300,30000]，单位Hz。 Atlas 训练系列产品 ：不支持该功能。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持，但instr\_profiling\_freq与training\_trace、task\_trace、hccl、aicpu、fp\_point、bp\_point、aic\_metrics、l2、task\_time、runtime\_api互斥，无法同时执行。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持，但instr\_profiling\_freq与training\_trace、task\_trace、hccl、aicpu、fp\_point、bp\_point、aic\_metrics、l2、task\_time、runtime\_api互斥，无法同时执行。 Atlas 350 加速卡：不支持该开关，通过instr\_profiling控制该功能。 host\_sys：Host侧性能数据采集开关。取值如下，可选其中的一项或多项，选多项时用英文逗号隔开，例如"host\_sys": "cpu,mem"。 cpu：进程级别的CPU利用率。 mem：进程级别的内存利用率。 disk：进程级别的磁盘I/O利用率。采集Host侧disk性能数据需要安装第三方开源工具iotop，采集osrt性能数据需要安装第三方开源工具perf和ltrace。 network：系统级别的网络I/O利用率。 osrt：进程级别的syscall和pthreadcall。 host\_sys\_usage：采集Host侧系统及所有进程的CPU和内存数据。取值包括cpu和mem，可选其中的一项或多项，选多项时用英文逗号隔开。 host\_sys\_usage\_freq：配置Host侧系统和所有进程CPU、内存数据的采集频率。范围[1,50]，默认值50，单位Hz。 配置示例： std::map<ge::AscendString, ge::AscendString> ge\_options = {{"ge.exec.deviceId", "0"}, {"ge.graphRunMode", "1"}, {"ge.exec.profilingMode", "1"}, {"ge.exec.profilingOptions", R"({"output":"/tmp/profiling","training\_trace":"on","fp\_point":"resnet\_model/conv2d/Conv2Dresnet\_model/batch\_normalization/FusedBatchNormV3\_Reduce","bp\_point":"gradients/AddN\_70"})"}}; | 可选 | 全局 |


#### AOE

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.mdl\_bank\_path | 加载子图调优后自定义知识库的路径。 该参数需要与ge.bufferOptimize参数配合使用，仅在数据缓存优化开关打开的情况下生效，通过利用高速缓存暂存数据的方式，达到提升性能的目的。 参数值：模型调优后自定义知识库路径。 参数值格式：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）。 参数默认值：$HOME/Ascend/latest/data/aoe/custom/graph/<soc\_version> 使用约束： 加载子图调优后自定义知识库路径优先级：ge.mdl\_bank\_path参数加载路径>TUNE\_BANK\_PATH环境变量设置路径>默认子图调优后自定义知识库路径。 如果模型编译前，通过TUNE\_BANK\_PATH环境变量指定了子图调优自定义知识库路径，模型编译时又通过ge.mdl\_bank\_path参数加载了自定义知识库路径，该场景下以ge.mdl\_bank\_path参数加载的路径为准，TUNE\_BANK\_PATH环境变量设置的路径不生效。 ge.mdl\_bank\_path参数和环境变量指定路径都不生效或无可用自定义知识库，则使用默认自定义知识库路径。 如果上述路径下都无可用的自定义知识库，则会查找子图调优内置知识库，该路径为：${INSTALL\_DIR}/<arch>\-linux/data/fusion\_strategy/built\-in，<arch>请替换为具体操作系统架构。 | 可选 | all |
| ge.op\_bank\_path | 算子调优后自定义知识库路径。 参数值格式：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）。 参数默认值：${HOME}/Ascend/latest/data/aoe/custom/op 使用约束： 加载算子调优后自定义知识库路径优先级：TUNE\_BANK\_PATH环境变量设置路径>ge.op\_bank\_path参数加载路径>默认算子调优后自定义知识库路径。 如果模型转换前，通过TUNE\_BANK\_PATH环境变量指定了算子调优自定义知识库路径，模型编译时又通过ge.op\_bank\_path参数加载了自定义知识库路径，该场景下以TUNE\_BANK\_PATH环境变量设置的路径为准，ge.op\_bank\_path参数加载的路径不生效。 ge.op\_bank\_path参数和环境变量指定路径都不生效前提下，使用默认自定义知识库路径。 如果上述路径下都无可用的自定义知识库，则会查找算子调优内置知识库。 | 可选 | all |


#### 异常补救

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| stream\_sync\_timeout | 图执行时，Stream同步等待超时时间，超过配置时间时报同步失败。单位：ms 默认值\-1，表示无等待时间，出现同步失败不报错。 配置示例： {"stream\_sync\_timeout", "\-1"}; | 可选 | 全局/session |
| event\_sync\_timeout | 图执行时，event同步等待超时时间，超过配置时间时报同步失败。单位：ms 默认值\-1，表示无等待时间，出现同步失败不报错。 配置示例： {"event\_sync\_timeout", "\-1"}; | 可选 | 全局/session |


#### 试验参数

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.jit\_compile | 当前版本暂不支持。 | 可选 | 全局/session |
| ge.build\_inner\_model | 当前版本暂不支持。 | 可选 | NA |
| ge.disableOptimizations | 该参数为调试参数，当前不支持应用于商用产品中，后续版本会作为正式特性更新发布。 该参数仅适用于如下产品： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 用于指定关闭的某一个或者多个编译优化pass。 当前仅支持关闭如下pass： "RemoveSameConstPass","ConstantFoldingPass","TransOpWithoutReshapeFusionPass" 注意： 多个pass之间使用英文逗号分隔。 若用户指定关闭了其他pass，graph编译时不会处理，只会打印warning级别的日志。 若指定关闭了ConstantFoldingPass，graph编译或运行时可能会失败。 如果同时配置了其他编译优化选项，比如ge.oo.constantFolding，则ge.disableOptimizations优先级更高。 配置示例： 关闭单个pass std::map <AscendString, AscendString> session\_options = { {"ge.disableOptimizations", "RemoveSameConstPass"} }; 关闭多个pass std::map <AscendString, AscendString> session\_options = { {"ge.disableOptimizations", "RemoveSameConstPass, ConstantFoldingPass"} }; | 可选 | all |
| ge.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}/x86\_64\-linux/lib64/plugin/opskernel/fusion\_pass/config/fusion\_config.json”文件中"ExceptionalPassOfO1Level"字段下的所有图融合PASS。 其中${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 配置示例： {"ge.oo.level", "O3"}; | 可选 | all |
| ge.oo.constantFolding | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 是否开启常量折叠优化。 常量折叠是将计算图中可以预先确定输出值的节点替换成常量，并对计算图进行一些结构简化的操作。 参数取值： true：（默认值）开启。 false：关闭。 配置示例： {"ge.oo.constantFolding", "true"}; 使用约束： 如果同时配置了其他编译优化选项，比如ge.disableOptimizations，则ge.disableOptimizations优先级更高。 | 可选 | all |
| ge.oo.deadCodeElimination | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 是否开启死边消除优化。 死边消除：switch死边消除，switch的pred输入（1号输入）为const节点时，根据const的值消除其中一条分支：const为true时，消除false分支；const为false时，消除true分支。 参数取值： true：（默认值）开启。 false：关闭。 配置示例： {"ge.oo.deadCodeElimination", "true"}; | 可选 | all |
| ge.autoMultistreamParallelMode | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 该参数仅适用于静态shape图场景，开发者可通过配置此参数开启Cube算子与Vector算子的并行执行，以提升图执行性能。 参数取值： cv：代表开启Cube算子与Vector算子的并行执行功能。 None（默认值），即不开启Cube算子与Vector算子的并行执行功能。 须知： 该参数仅限于推荐类型网络的训练场景使用。 Cube算子与Vector算子的并行执行功能不能与多流并发执行功能（通过ENABLE\_DYNAMIC\_SHAPE\_MULTI\_STREAM）同时使用。 关于环境变量详细说明请参见《环境变量参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0001.html)》。 配置示例： {"ge.autoMultistreamParallelMode", "cv"}; | 可选 | session/graph |
| ge.deterministicLevel | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 确定性计算级别。 默认情况下，确定性级别为0，即不开启确定性计算，是否开启确定性计算的选项ge.deterministic也需要是0。当需要使能确定性计算时，确定性级别需要设置为1，同时确定性计算选项ge.deterministic也需设置为1。当开启强一致性计算时，级别需要设置为2，同时确定性计算选项ge.deterministic也需设置为1。 当开启强一致性计算功能时（ge.deterministicLevel=2），计算结果是确定的，多次执行将产生相同的输出。此外，计算结果与数据的位置无关。例如，在进行矩阵乘时，不同行的累加顺序可能不同，这可能会导致相同数据在不同行的计算结果出现细微差异。但在启用强一致性计算的情况下，只要输入相同，即使在不同的行中，计算结果都将保持一致。 默认情况下，强一致性计算功能不会启用。在这种默认模式下，相同数据出现在不同行时，可能会产生计算结果上的不一致。 出于性能考虑，通常建议不开启强一致性计算，因为它会降低算子的计算速度，影响整体效率。只有在以下情形下，才建议启用该功能：需要严格保证相同数据在不同位置上的结果一致性，或者正在对模型进行精度调整和调试，以优化整体表现。 参数取值： 0：（默认值）不开启确定性计算。 1：开启确定性计算。 2：开启强一致性计算。 配置示例： {"ge.deterministic", "0"}; {"ge.deterministicLevel", "0"}; 使用约束： 该配置项需要和ge.deterministic配合使用。 | 可选 | 全局 |


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

| Options key | Options value | 必选/可选 | 全局/session/graph级别生效 |
| --- | --- | --- | --- |
| ge.graphMemoryMaxSize | 该参数后续版本废弃，请勿使用。 网络静态内存和最大动态内存，可根据网络大小指定。单位：Byte，取值范围：[0, 256\*1024\*1024\*1024]或[0, 274877906944]。当前受芯片硬件限制，ge.graphMemoryMaxSize和ge.variableMemoryMaxSize总和最大支持31G。如果不设置，默认为26GB。 | 可选 | all |
| ge.variableMemoryMaxSize | 该参数后续版本废弃，请勿使用。 变量内存，可根据网络大小指定。单位：Byte，取值范围：[0, 256\*1024\*1024\*1024]或[0, 274877906944]。当前受芯片硬件限制，ge.graphMemoryMaxSize和ge.variableMemoryMaxSize总和最大支持31G。如果不设置，默认为5GB。 | 可选 | all |
| ge.exec.dynamicGraphExecuteMode | 该参数已废弃，请勿使用。 对于动态输入场景，需要通过该参数设置执行模式，取值为：dynamic\_execute。 | 可选 | graph |
| ge.exec.dataInputsShapeRange | 该参数已废弃，请勿使用。 动态输入的shape范围。例如全图有2个data输入，配置示例为： std::map<ge::AscendString, ge::AscendString> ge\_options = {{"ge.exec.deviceId", "0"}, {"ge.graphRunMode", "1"}, {"ge.exec.dynamicGraphExecuteMode", "dynamic\_execute"}, {"ge.exec.dataInputsShapeRange", "[128 ,3~5, 2~128, \-1],[ 128 ,3~5, 2~128, \-1]"}}; 设置格式为："[n1,c1,h1,w1],[n2,c2,h2,w2]"，例如："[8~20,3,5,\-1],[5,3~9,10,\-1]"。可以不指定节点名，默认第一个中括号为第一个输入节点，节点中间使用英文逗号分隔。按照index设置INPUT\_SHAPE\_RANGE时，data节点需要设置属性index，说明是第几个输入，index从0开始。 动态维度有shape范围的用波浪号“~”表示，固定维度用固定数字表示，无限定范围的用\-1表示。 对于标量输入，也需要填入shape范围，表示方法为：[]。 对于多输入场景，例如有三个输入时，如果只有第二个第三个输入具有shape范围，第一个输入为固定输入时，仍需要将固定输入shape填入options字段内，例如： {"ge.exec.dataInputsShapeRange", "[3,3,4,10], [\-1,3,2~1000,\-1],[\-1,\-1,\-1,\-1]"}}; 说明： 若没有指定节点名，则节点默认按照index顺序存储，存储示例如下： xxx\_0，xxx\_1，xxx\_2，…… 其中下划线后为节点在网络脚本中的定义顺序索引，节点会按照此索引的字母顺序进行排布，所以当节点的个数大于10时，则排序为“xxx\_0 \-> xxx\_10 \-> xxx\_2 \-> xxx\_3”，网络脚本中定义索引为10的节点排在了索引为2的节点前面，导致定义的shape range与实际输入的节点不匹配。 为避免此问题，当节点的输入个数大于10时，建议在网络脚本中指定节点的名称，则节点会以指定的名称进行命名，实现shape range与节点名称的关联。 如果该参数与ge.dynamicDims同时配置，示例如下： std::map<ge::AscendString, ge::AscendString> ge\_options = {{"ge.inputShape", "data:1,1,40,\-1;label:1,\-1;mask:\-1,\-1" }, {"ge.dynamicDims", "20,20,1,1;40,40,2,2;80,60,4,4"}, xxx {"ge.exec.dataInputsShapeRange", "[128, 3~5, 2~128, \-1],[ 128 ,3~5, 2~128, \-1]"}}; ge.dynamicDims参数功能（动态分档）优先级高于ge.exec.dataInputsShapeRange参数功能（动态shape范围）。 | 可选 | graph |
| ge.opSelectImplmode | 该参数功能已经不演进，后续版本会废弃，推荐使用ge.exec.op\_precision\_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。 配置示例： {"ge.opSelectImplmode", "high\_performance"}; | 可选 | 全局 |
| ge.optypelistForImplmode | 列举算子optype的列表，该列表中的算子使用ge.opSelectImplmode参数指定的模式。 参数值约束： 列表中的算子使用ge.opSelectImplmode参数指定的模式，当前仅支持指定为high\_precision、high\_performance两种模式，多个算子使用英文逗号进行分隔。 该参数需要与ge.opSelectImplmode参数配合使用，且仅对指定的算子生效，不指定的算子按照默认实现方式选择。例如：ge.opSelectImplmode配置为high\_precision；ge.optypelistForImplmode配置为Pooling、SoftmaxV2。表示对Pooling、SoftmaxV2算子使用统一的高精度模式，未指定算子使用算子的默认实现方式。 | 可选 | 全局 |
| ge.shape\_generalized\_build\_mode | 该参数在后续版本废弃、请勿使用。 | 可选 | graph |
