文档
注册

设置算子编译选项

用于配置算子编译过程中的属性,可用于提升性能,通过ACL接口实现。

import torch
import torch_npu
option = {key: val}
torch_npu.npu.set_option(option) # 以dict方式进行设置

使用样例如下,以配置ACL_PRECISION_MODE为例。

import torch
import torch_npu
option = {"ACL_PRECISION_MODE":"must_keep_origin_dtype"}
torch_npu.npu.set_option(option)
表1 key值和其对应val值的含义与说明

可选值

含义

可设置的val值

说明

ACL_PRECISION_MODE

选择算子精度模式。

  • allow_fp32_to_fp16:对于矩阵类算子,使用float16;对于矢量类算子,优先保持原图精度,如果网络模型中算子支持float32,则保留原始精度float32,如果网络模型中算子不支持float32,则直接降低精度到float16。
  • must_keep_origin_dtype:保持原图精度。如果原图中某算子精度为float16,但NPU中该算子实现不支持float16、仅支持float32,则系统内部自动采用高精度float32;如果原图中某算子精度为float32,但NPU中该算子实现不支持float32、仅支持float16,此场景下不能使用此参数值,系统不支持使用低精度。

如果不配置该编译选项,则

  • Atlas 训练系列产品默认采用allow_fp32_to_fp16。
  • Atlas A2 训练系列产品默认采用must_keep_origin_dtype。

ACL_AICORE_NUM

设置模型编译时使用的AI Core数量。

当前版本设置无效。

ACL_OP_SELECT_IMPL_MODE

选择算子是高精度实现还是高性能实现。

  • high_precision:表示网络模型中算子采用高精度实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/latest/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_precision.ini。

    为保持兼容,该参数仅对high_precision.ini文件中算子列表生效,通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。如果新的软件包中有算子新增了精度模式,若仍旧使用high_precision设置,则会导致之前版本使用该配置方式的网络模型性能下降。

  • high_performance:表示网络模型中算子采用高性能实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/latest/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_performance.ini。

    为保持兼容,该参数仅对high_performance.ini文件中算子列表生效,通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。如果新的软件包中有算子新增了精度模式,若仍旧使用high_performance设置,则会导致之前版本使用该配置方式的网络模型精度下降。

  • high_precision_for_all:表示网络模型中算子采用高精度实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/latest/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_precision_for_all.ini,该文件中列表后续可能会跟随版本更新。

    该实现模式不保证兼容,如果后续新的软件包中有算子新增了精度模式,之前版本使用high_precision_for_all的网络模型,在新版本上性能可能会下降。

  • high_performance_for_all:表示网络模型中算子采用高性能实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/latest/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_performance_for_all.ini,该文件中列表后续可能会跟随版本更新。

    该实现模式不保证兼容,如果后续新的软件包中有算子新增了精度模式,之前版本使用high_performance_for_all的网络模型,在新版本上精度可能会下降。

如果不配置该编译选项,默认采用high_precision。

ACL_OPTYPELIST_FOR_IMPLMODE

列举算子类型列表,该列表中算子的实现方式使用ACL_OP_SELECT_IMPL_MODE指定的模式。

该参数当前仅支持设置某个具体算子的实现方式,不支持设置多个算子。当前仅支持配置的算子为Pooling、SoftmaxV2、LRN、ROIAlign。

ACL_OP_DEBUG_LEVEL

配置TBE算子编译debug功能开关。

  • 0:不开启算子debug功能。在执行命令当前路径算子编译生成的kernel_meta文件夹中不保留.o(算子二进制文件)和.json文件(算子描述文件)。
  • 1:开启算子debug功能,在执行命令当前路径算子编译生成的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续工具进行AICore Error问题定位。
  • 2:开启算子debug功能,在执行命令当前路径算子编译生成的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),并关闭编译优化开关并且开启ccec调试功能(ccec编译器选项设置为-O0-g),用于后续工具进行AICore Error问题定位。
  • 3:不开启算子debug功能,在执行命令当前路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件)。
  • 4:不开启算子debug功能,在执行命令当前路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件),并生成TBE指令映射文件(算子cce文件*.cce)和UB融合计算描述文件({$kernel_name}_compute.json)。

无。

ACL_DEBUG_DIR

配置保存模型转换、网络迁移过程中算子编译生成的调试相关过程文件的路径。

相关过程文件包括算子.o/.json/.cce等文件。具体生成哪些文件以ACL_OP_DEBUG_LEVEL选项设置的取值为准。

路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

ACL_OP_COMPILER_CACHE_MODE

配置算子编译磁盘缓存模式。

  • enable:启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
  • disable:禁用算子编译缓存。
  • force:强制刷新缓存。当用户的Python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。

该编译选项需要与ACL_OP_COMPILER_CACHE_DIR配合使用。

ACL_OP_COMPILER_CACHE_DIR

配置算子编译磁盘缓存的目录。

默认目录为$HOME/atc_data。该编译选项需要与ACL_OP_COMPILER_CACHE_MODE配合使用。

如果设置了ACL_OP_DEBUG_LEVEL编译选项,则只有编译选项值为0或3才会启用编译缓存功能,其它取值禁用编译缓存功能。

路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

MM_BMM_ND_ENABLE

开启MatMul、BatchMatMul算子支持ND模式

  • enable:MatMul、BatchMatMul算子输入输出Shape每个维度都是16的整数倍时,会支持ND格式输入,不满足则使用算子内部私有格式并视情况结合插入转换算子。
  • disable:MatMul、BatchMatMul算子使用私有格式。

默认采用enable模式。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词