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
使用约束:
- 高精度求解可能会得出更优的tiling解,但需要更长的Tiling执行时间,低精度求解则反之。
- 配置非法值时会恢复为默认值。
--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
使用约束:
- 该参数需要和--att_enable_multicore_ub_tradeoff配合使用,只有--att_enable_multicore_ub_tradeoff开启时,设置了--att_ub_threshold控制点才能生效。
- 配置非法值时会恢复为默认值。
--att_corenum_threshold
控制Auto Tiling的Tiling策略,保证Tiling求解结果与算子实现结合,多核利用率不低于该控制点设置的取值(若多核利用率不满足指定阈值,则按可求解的最大多核占用率设置),该控制点可用于性能问题的定位。
取值:0-100间的任意整数,默认值为40。
当--att_enable_multicore_ub_tradeoff开启时,默认值为40,否则不会设置该策略。
配置示例:
--att_corenum_threshold=40
使用约束:
- 该参数需要和--att_enable_multicore_ub_tradeoff配合使用,只有--att_enable_multicore_ub_tradeoff开启时,设置的--att_corenum_threshold控制点才能生效。
- 配置非法值时会恢复为默认值。
--att_profiling
用于控制Auto Tiling的Profiling是否使能。
取值:
- true:使能Profiling特性。
- false:(默认值)不使能Profiling特性。
配置示例:
--att_profiling=true
使用约束:
- 该控制点仅用于定位Auto Tiling模块本身的执行时间问题。
- 配置非法值时会恢复为默认值。
--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
使用约束:
- 该参数需要与--autofuse_enable_pgo配合使用,只有--autofuse_enable_pgo开启时,设置的--autofuse_pgo_algo控制点才能生效。
- 配置非法值时会恢复为默认值。
--autofuse_pgo_step_max
控制PGO剪枝算法步长。
取值:2-1024间任意2的幂次,默认为16。
配置示例:
--autofuse_enable_pgo=true --autofuse_pgo_algo=pruning --autofuse_pgo_step_max=16
使用约束:
- 该参数需要和--autofuse_pgo_algo配合使用,只有--autofuse_pgo_algo=pruning且生效时,设置的--autofuse_pgo_step_max控制点才能生效。
- 配置非法值时会恢复为默认值。
--autofuse_pgo_topn
设置参与PGO静态调优的解的数量。
取值:
- 0:选择所有解参与静态调优。
- 任意正整数:表示可选解的数量,默认值为5。
配置示例:
--autofuse_enable_pgo=true --autofuse_pgo_topn=5
使用约束:
- 该参数需要与--autofuse_enable_pgo配合使用,只有--autofuse_enable_pgo开启时,设置的--autofuse_pgo_topn控制点才能生效。
- 配置非法值时会恢复为默认值。