开发者
资源

AUTOFUSE_DFX_FLAGS环境变量控制点

--codegen_compile_debug

控制是否保留融合算子生成时的中间过程文件。

取值:

  • true:保留文件。
  • false:(默认为false)不保留文件。

配置示例:

--codegen_compile_debug=true

设置为true,保留文件后,在脚本执行目录下将生成kernel_meta_*文件夹,其中包含生成的kernel源码、Tiling源码、cmake工程以及编译结果,同时会在{debug_dir}/autofuse_compile_debug/路径下生成融合算子Schedule各个过程中的AscGraph Dump图。

使用约束:

--debug_dir

指定融合中AscGraph dump图保存路径,未指定则在脚本执行目录生成。

配置示例:

--codegen_compile_debug=true;--debug_dir=/path/to/dump

使用约束:需要先配置--codegen_compile_debug=true;打开自动融合debug开关。

--autofuse_att_algorithm

控制Auto Tiling求解算法选择。

取值:

  • HighPerf:高性能算法。
  • AxesReorder:(默认值)轴排序算法。

配置示例:

--autofuse_att_algorithm=HighPerf

使用约束:

  • 轴排序算法是默认算法,高性能算法属于试验性算法,不一定能获取到更好的算子执行性能,只是算法理论上限较高。
  • 配置非法值时会恢复为默认值。

--att_accuracy_level

控制Auto Tiling算法求解精度,理论上精度越高kernel性能越好。

取值:

  • 1:(默认值)高精度求解。
  • 0:低精度求解。

默认为低精度求解,保证Tiling耗时不至于过长。

配置示例:

--att_accuracy_level=1

使用约束:

  1. 高精度求解可能会得出更优的tiling解,但需要更长的Tiling执行时间,低精度求解则反之。
  2. 配置非法值时会恢复为默认值。

--att_enable_multicore_ub_tradeoff

用于控制att_corenum_threshold和att_ub_threshold功能是否开启。

取值:

  • true:开启。
  • false:(默认值)不开启。

配置示例:

--att_enable_multicore_ub_tradeoff=true

使用约束:配置非法值时会恢复为默认值。

--att_ub_threshold

控制Auto Tiling的Tiling策略,保证Tiling求解结果与算子实现结合,UB占用率不低于该控制点设置的取值(若UB占用率不满足指定阈值,则按可求解的最大UB占用率设置),该控制点可用于性能问题的定位。

取值:0-100间的任意整数,默认值为20。

配置示例:

--att_ub_threshold=20

使用约束:

  1. 该参数需要和--att_enable_multicore_ub_tradeoff配合使用,只有--att_enable_multicore_ub_tradeoff开启时,设置了--att_ub_threshold控制点才能生效。
  2. 配置非法值时会恢复为默认值。

--att_corenum_threshold

控制Auto Tiling的Tiling策略,保证Tiling求解结果与算子实现结合,多核利用率不低于该控制点设置的取值(若多核利用率不满足指定阈值,则按可求解的最大多核占用率设置),该控制点可用于性能问题的定位。

取值:0-100间的任意整数,默认值为40。

--att_enable_multicore_ub_tradeoff开启时,默认值为40,否则不会设置该策略。

配置示例:

--att_corenum_threshold=40

使用约束:

  1. 该参数需要和--att_enable_multicore_ub_tradeoff配合使用,只有--att_enable_multicore_ub_tradeoff开启时,设置的--att_corenum_threshold控制点才能生效。
  2. 配置非法值时会恢复为默认值。

--att_profiling

用于控制Auto Tiling的Profiling是否使能。

取值:

  • true:使能Profiling特性。
  • false:(默认值)不使能Profiling特性。

配置示例:

--att_profiling=true

使用约束:

  1. 该控制点仅用于定位Auto Tiling模块本身的执行时间问题。
  2. 配置非法值时会恢复为默认值。

--disable_lifting

用于控制lifting功能是否关闭。

自动融合会将算子融合成名为AscBackend的新算子,lifting则将未能满足条件的AscBackend回滚到原算子。

取值:

  • true:关闭lifting功能。
  • false:(默认值)开启lifting功能。

配置示例:

--disable_lifting=true

使用约束:

该控制点仅用于定位Ascbackend回滚结构的分析问题,开启该控制点可能会导致ApplyAdamD算子精度异常。

--autofuse_pgo_algo

控制PGO调优算法,不同算法求Tiling方式不同。

取值:

  • core_select:(默认值)使用控核算法。
  • pruning:使用剪枝算法。

默认为控核算法,保证Tiling耗时不至于过长,剪枝算法理论上可能求出更优的Tiling解,但需要远长于控核算法的Tiling时间。

配置示例:

--autofuse_enable_pgo=true --autofuse_pgo_algo=core_select

使用约束:

  1. 该参数需要与--autofuse_enable_pgo配合使用,只有--autofuse_enable_pgo开启时,设置的--autofuse_pgo_algo控制点才能生效。
  2. 配置非法值时会恢复为默认值。

--autofuse_pgo_step_max

控制PGO剪枝算法步长。

取值:2-1024间任意2的幂次,默认为16。

配置示例:

--autofuse_enable_pgo=true --autofuse_pgo_algo=pruning --autofuse_pgo_step_max=16

使用约束:

  1. 该参数需要和--autofuse_pgo_algo配合使用,只有--autofuse_pgo_algo=pruning且生效时,设置的--autofuse_pgo_step_max控制点才能生效。

    当step值较小时,可能会得出更优的tiling解,但需要更长的Tiling执行时间,step值较大时则反之。

  1. 配置非法值时会恢复为默认值。

--autofuse_pgo_topn

设置参与PGO静态调优的解的数量。

取值:

  • 0:选择所有解参与静态调优。
  • 任意正整数:表示可选解的数量,默认值为5。

配置示例:

--autofuse_enable_pgo=true --autofuse_pgo_topn=5

使用约束:

  1. 该参数需要与--autofuse_enable_pgo配合使用,只有--autofuse_enable_pgo开启时,设置的--autofuse_pgo_topn控制点才能生效。
  2. 配置非法值时会恢复为默认值。