脚本如何实现迭代调优?
脚本如何实现迭代调优?
(1)配置AutoTuner环境变量:使用环境变量AUTOTUNE_DATADIR指定调优相关的数据的存放位置。
export AUTOTUNE_DATADIR=/tmp/autotuner_data/
(2)初始编译步骤:添加毕昇编译器选项-fautotune-generate,编译生成可调优代码区间。
cd examples/coremark/
clang -Ilinux64 -I. -DFLAGS_STR=\¥¥ -lrt¥\¥ -DITERATIONS=300000 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -O2 -g -o coremark -fautotune-generate
(3)初始化调优:运行llvm-autotune命令,初始化调优任务。生成最初的编译配置供下一次编译使用。
llvm-autotune minimize
minimize表示调优目标,旨在最小化指标(例如程序运行时间)。也可使用maximize,旨在最大化指标(例如程序吞吐量)。
(4)调优编译步骤:添加毕昇编译器选项-fautotune,读取当前AUTOTUNE_DATADIR中的配置并编译。
clang -Ilinux64 -I. -DFLAGS_STR=\¥¥ -lrt¥\¥ -DITERATIONS=300000 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -O2 -g -o coremark -fautotune
(5)性能反馈:运行程序,并根据自身需求获取性能数字,使用llvm-autotune feedback反馈。例如,如果我们想以coremark运行速度为指标进行调优,可以采用如下方式:
time -p ./coremark 0x0 0x0 0x66 300000 2>&1 1>/dev/null
llvm-autotune feedback 31.09
注意:建议在使用 llvm-autotune feedback 之前, 先验证步骤4编译是否正常,及编译好的程序是否运行正确。若出现编译或者运行异常的情况,请输入相应调优目标的最差值(例如, 调优目标为minimize, 可输入llvm-autotune feedback 9999;maximize 可输入 0 或者 -9999)。若输入的性能反馈不正确,可能会影响最终调优的结果。
(6)调优迭代:根据用户设定的迭代次数,重复步骤4和5进行调优迭代。
(7)结束调优:进行多次迭代后,用户可选择终止调优,并保存最优的配置文件。配置文件会被保存在环境变量AUTOTUNE_DATADIR指定的目录下。
llvm-autotune finalize
(8)最终编译:使用步骤7得到的最优配置文件进行最后编译。在AUTOTUNE_DATADIR环境变量未改变的情况下,可直接使用-fautotune选项:
clang -Ilinux64 -I. -DFLAGS_STR=\¥¥ -lrt¥\¥ -DITERATIONS=300000 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -O2 -g -o coremark -fautotune
或者使用-mllvm -auto-tuning-input=直接指向配置文件。
clang -Ilinux64 -I. -DFLAGS_STR=\¥¥ -lrt¥\¥ -DITERATIONS=300000 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -O2 -g -o coremark -mllvm -auto-tuning-input=/tmp/autotuner_data/config.yaml
文章来源: blog.csdn.net,作者:irrationality,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_54227557/article/details/122736769
- 点赞
- 收藏
- 关注作者
评论(0)