中文
注册

llvm-autotune使用步骤

用户可根据自身需求,编写调优脚本。我们将以coremark为示例展示如何运行自动调优,毕昇编译器的发布包里没有自带coremark, 请从社区获取coremark。以下为以20次迭代调优coremark的脚本示例:

export AUTOTUNE_DATADIR=/tmp/autotuner_data/
CompileCommand="clang -Ilinux64 -I. -g -DFLAGS_STR=\"\"  -DITERATIONS=300000  core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -O2 -o coremark"

$CompileCommand -fautotune-generate;
llvm-autotune minimize;
for i in $(seq 20)
do
  $CompileCommand -fautotune ;
  time=`/usr/bin/time -p ./coremark  0x0 0x0 0x66 300000  2>&1 1>/dev/null | grep real | awk '{print $2}'`;
  echo "iteration: " $i "cost time:" $time;
  llvm-autotune feedback $time;
done
llvm-autotune finalize;

以下为分步说明:

  1. 配置环境变量

    使用环境变量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

    建议仅将此选项应用于需要重点调优的热点代码文件。若应用的代码文件过多(超过500个文件),则会生成数量庞大的可调优代码结构的文件,进而可能导致步骤3的初始化时间长(可长达数分钟);以及巨大的搜索空间导致的调优效果不显著,收敛时间长等问题。

  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. 调优迭代

    根据用户设定的迭代次数,重复45进行调优迭代。

  7. 束调优

    进行多次迭代后,用户可选择终止调优,并保存最优的配置文件。配置文件会被保存在环境变量AUTOTUNE_DATADIR指定的目录下。

    llvm-autotune finalize
  8. 最终编译

    使用步骤7得到最优配置文件,进行最后编译。在环境变量未改变的情况下,可直接使用-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
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词