CompileNpuOptions

ascendebug提供了CompileNpuOptions类,用于存储NPU编译相关的可选配置项。

具体定义如下:

@dataclass
class CompileNpuOptions():
    dump_mode: str = ""
    simulator: bool = False
    pipe_all: bool = False
    syncall: bool = False
    task_ration: List[int] = field(default_factory=list)
    npu_compile_type: str = "opc"
    customize_tiling_so: str = ""
    compile_option: dict = field(default_factory=lambda: const_def.COMPILE_OPTION_MAP)
    memory_check: str = ""customize_tiling_socustomize_tiling_socustomize_tiling_so
   

关于类成员的详细说明请参见表1

表1 CompileNpuOptions成员说明

属性名

属性类型

默认值

属性说明

dump_mode

str

""

printf/PRINTF/DumpTensor/DumpAccChkPoint/assert/时间戳打印功能的模式配置,与NpuCompileInfo.dump_mode配套使用。

  • normal: 使能通用的打印功能。
  • acc_chk:使能偏移位置打印Tensor(DumpAccChkPoint功能)。
  • time_stamp:时间戳打点功能。( Atlas A2 训练系列产品/Atlas 800I A2 推理产品
  • "":表示关闭打印功能。

simulator

bool

False

是否开启仿真功能。默认关闭。

说明:

仅性能仿真调测场景的编译阶段才需开启本属性,否则影响后续执行过程。

pipe_all

bool

False

是否开启PIPE_ALL功能。默认关闭。

syncall

bool

False

硬同步功能的使能开关。一般适用于 Atlas A2 训练系列产品/Atlas 800I A2 推理产品

说明:

该参数仅在ops_adv算子工程场景设置后生效,且npu_compile_type必须为ccec编译方式。

task_ration

List[int]

[]

设置核函数运行时的block数分配方式,例如task_ration=[1, 0], 表示“1:0”的分配方式。

说明:

该参数仅在ops_adv算子工程场景设置后生效,且npu_compile_type必须为ccec编译方式。

npu_compile_type

str

opc

设置NPU调试场景下Kernel.o文件的编译方式。

  • opc:Ascend C框架自带的编译方式。
  • ccec:本工具基于毕昇编译器自动拼接编译选项得到的编译方式,毕昇编译器介绍参见毕昇编译器使用指南
说明:

该参数仅在ops_adv算子工程场景支持ccec和opc两种编译方式。核函数直调工程场景默认使用ccec,标准自定义算子工程场景默认使用opc。

customize_tiling_so

str

""

是否使用指定tiling.so(绝对路径)来编译Kernel文件。

  • ""或None:默认不开启。
  • so文件的绝对路径名:采用该so文件解析出注册算子的Tiling结构,并用于OPC编译
说明:
  • 该参数在核函数直调工程场景不生效。
  • 该参数在标准自定义算子工程场景、ops_adv算子工程场景(且npu_compile_type为opc编译模式)生效。

compile_option

dict

{"op_debug_config":[]}

设置opc编译场景下的自定义选项。

说明:

该参数仅当npu_compile_type为opc编译时生效。

通过op_debug_config配置,支持配置多个选项(字符串),英文逗号分隔,配置示例如下:

compile_npu_options = ascendebug.CompileNpuOptions(dump_mode='normal', 
npu_compile_type='opc', compile_option={"op_debug_config":["dump_cce","dump_bin"]})
  • dump_bin:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留*.o(算子二进制文件)和*.json文件(算子描述文件)。
  • dump_cce:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留算子*.cpp、*.o(算子二进制文件)和*.json文件(算子描述文件)。
  • ccec_O0:算子编译时,开启ccec编译器选项-O0,配置该选项不会对调试信息执行优化操作,用于后续分析AI Core Error问题。
  • ccec_g:算子编译时,开启ccec编译器选项-g,配置该选项对调试信息执行优化操作,用于后续分析AI Core Error问题。
  • sanitizer:开启后,算子编译生成的*.o(算子二进制文件)可用于后续msSanitizer工具进行内存异常检测,详细介绍参见算子开发工具使用指南中“异常检测(msSanitizer)”。

memory_check

str

""

是否开启内存检测功能,与RunNpuOptions.memory_check配套使用。

  • ""或None:默认不开启
  • oom:开启内存异常检测,主要检测内存泄漏、非法释放、非法读写、越界访问。(该功能仅支持 Atlas A2 训练系列产品/Atlas 800I A2 推理产品
  • oob:开启内存异常检测,主要检测越界访问。(该功能仅支持 Atlas A2 训练系列产品/Atlas 800I A2 推理产品 Atlas 推理系列产品
说明:
  • dump_mode参数冲突,不支持同时开启。
  • 仅在标准自定义算子工程、ops_adv算子工程场景下,且npu_compile_type为opc编译模式,该参数生效。