算子编译

参数名

描述

op_debug_config

Global Memory内存检测功能开关。

取值为.cfg配置文件路径,配置文件内多个选项用英文逗号分隔:

  • oom:在算子执行过程中,检测Global Memory是否内存越界
  • dump_bin:算子编译时,在当前执行路径下的kernel_meta文件夹中保留.o和.json文件
  • dump_cce:算子编译时,在当前执行路径下的kernel_meta文件夹中保留算子cce文件*.cce
  • dump_loc:算子编译时,在当前执行路径下的kernel_meta文件夹中保留python-cce映射文件*_loc.json
  • ccec_O0:算子编译时,开启ccec编译器选项-O0
  • ccec_g :算子编译时,开启ccec编译器选项-g

配置示例:

config = NPURunConfig(op_debug_config="/root/test0.cfg") 

其中,test0.cfg文件信息为:

op_debug_config = ccec_O0,ccec_g,oom

op_compiler_cache_mode

用于配置算子编译磁盘缓存模式。默认值为enbale。

  • enable:启用算子编译缓存功能。启用后,算子编译信息缓存至磁盘,相同编译参数的算子无需重复编译,直接使用缓存内容,从而提升编译速度。
  • disable:禁用算子编译缓存功能。
  • force:启用算子编译缓存功能,区别于enable模式,force模式下会强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。比如当用户的python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。
    说明:

    配置为force模式完成编译后,建议后续编译修改为enable模式,以避免每次编译时都强制刷新缓存。

使用说明:

  • 该参数和op_compiler_cache_dir配合使用。
  • 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型因使用的缓存内容被清除而编译失败。
  • 建议模型最终发布时设置编译缓存选项为disable或者force。
  • 如果算子调优后知识库变更,则需要通过设置为force来刷新缓存,以便应用新的调优知识库。
  • 注意,调试开关打开的场景下,即op_debug_level非0值或者op_debug_config配置非空时,会忽略算子编译磁盘缓存模式的配置,不启用算子编译缓存。主要基于以下两点考虑:
    • 启用算子编译缓存功能(enable或force模式)后,相同编译参数的算子无需重复编译,编译过程日志无法完整记录。
    • 受限于缓存空间大小,对调试场景的编译结果不做缓存。
  • 启用算子编译缓存功能时,可以通过环境变量ASCEND_MAX_OP_CACHE_SIZE来限制某个芯片下缓存文件夹的磁盘空间的大小,当编译缓存空间大小达到ASCEND_MAX_OP_CACHE_SIZE设置的取值,且需要删除旧的kernel文件时,可以通过环境变量ASCEND_REMAIN_CACHE_SIZE_RATIO设置需要保留缓存的空间大小比例。
配置示例:
config = NPURunConfig(op_compiler_cache_mode="enable")

op_compiler_cache_dir

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

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

如果参数指定的路径存在且有效,则在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。

默认值:$HOME/atc_data

配置示例:
config = NPURunConfig(op_compiler_cache_dir="/home/test/kernel_cache")

debug_dir

用于配置保存算子编译生成的调试相关的过程文件的路径,包括算子.o/.json/.cce等文件。

默认生成在当前脚本执行路径下。

配置示例:
config = NPURunConfig(debug_dir="/home/test")