Skip to content

Source code for the paper "mLOOP: Optimize Loop Unrolling in Compilation with a ML-based Approach"

Notifications You must be signed in to change notification settings

zhengzhch/mLoop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mLOOP: Optimize Loop Unrolling in Compilation with a ML-based Approach

这个仓库包含了论文"mLOOP: Optimize Loop Unrolling in Compilation with a ML-based Approach"的源代码。 一部分代码参考了仓库

构建镜像

docker环境中包括LLVM-16.0.6和llvm-test-suite仓库,以及编译LLVM所需要库,具体内容在Dockerfile.llvm中。

可使用脚本来构建和运行docker

$ ./utils/create_image.sh

$ ./utils/run_image.sh

部署pass

Dockerfile.llvm中的这部分内容,完成对Pass的部署,其中patch -p1 < /home/synprof/patches/llvm.patch对LLVM框架中的一部分代码做了修改,修改内容为,完成对Pass的注册,以及在LoopUnrollPass中添加其对循环展开因子的输出。后面则是将Pass的核心代码放入相应文件夹中。

RUN cd llvm-project \
    && patch -p1 < /home/synprof/patches/llvm.patch \
    && cp /home/synprof/patches/*.cpp llvm/lib/Transforms/Scalar/ \
    && cp /home/synprof/patches/*.h    llvm/include/llvm/Transforms/Scalar/

应用Pass

包括两部分Pass,一个Pass可以用来搜集循环特征,另一个Pass则是用于预测循环展开因子。

应用两个Pass需要在编译时添加参数,前者对应收集特征的Pass,后者对应预测循环展开因子并应用的Pass

-mllvm -stat-prof-reporter
-mllvm -stat-prof-instrument

以下是一个应用实例

$ /opt/llvm/bin/clang -O3 -mllvm -stat-prof-instrument 1.c -emit-llvm -S -o -

About

Source code for the paper "mLOOP: Optimize Loop Unrolling in Compilation with a ML-based Approach"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages