---
title: --op_precision_mode
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/atctool/atlasatcparam_16_0070.html
sourcePath: /source/zh/canncommercial/900/devaids/atctool/atlasatcparam_16_0070.html
indexId: a3f5156ae7953ae39f04da22aa95dfe10783986597bda39af8f3d388b3ce44be72
---
# --op_precision_mode

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

设置指定算子内部处理时的精度模式，支持指定一个算子或多个算子。


#### 关联参数

- 该参数不能与  --op_select_implmode
、  --optypelist_for_implmode
参数同时使用，若三个参数同时配置，则只有  --op_precision_mode
参数指定的模式生效。
- 针对同一个算子，如果通过  --op_precision_mode
参数配置了enable_hi_float_32_execution或enable_float_32_execution，该场景下不建议再与  --allow_hf32
参数同时使用，若同时使用，则优先级如下：
  op_precision_mode(ByNodeName，按节点名称设置精度模式) > allow_hf32 > op_precision_mode(ByOpType，按算子类型设置精度模式)


关联参数示意图如图1所示。

图1 关联参数示意图

设置具体算子精度模式场景下：

1. 首先读取  --op_precision_mode
参数，校验该参数的ini配置文件是否存在，若存在则解析文件并读取算子的精度模式，否则上报异常。
2. --op_precision_mode不存在则读取--op_select_implmode参数：

  a. 首先检查是否配置为high_xxx_for_all参数，若是则解析high_xxx_for_all.ini文件并读取算子的精度模式。
  b. 若配置为high_xxx参数，则检查是否配置    --optypelist_for_implmode
参数，若是，则读取该参数配置的算子精度模式；否则解析high_xxx.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文件查看。

参数值格式：路径和文件名：支持大小写字母（a-z，A-Z）、数字（0-9）、下划线（_）、短横线（-）、句点（.）、中文汉字。

参数值约束：

- 当前仅支持通过.ini配置文件方式设置算子精度，配置文件中的内容以key-value（算子类型=精度模式）形式呈现，每一行设置一个算子的精度模式。
- 算子类型必须为基于Ascend IR定义的算子的OpType，算子类型查看方法请参见  如何确定原始框架网络模型中的算子与AI处理器支持的算子的对应关系
。


#### 推荐配置及收益

- 该参数不建议配置，若使用高性能或者高精度模式，网络性能或者精度不是最优，则可以使用该参数，通过配置ini文件调整具体某个算子的精度模式。
- 通过该参数加载的ini配置文件，建议使用  --op_select_implmode
参数用户另存后的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
```

将配置好的op_precision.ini文件上传到ATC工具所在服务器任意目录，例如上传到$HOME/conf，使用示例如下：

```
--op_precision_mode=
$HOME/conf/
op_precision.ini
```


#### 依赖约束

无。
