编译polygeist-polymer项目

环境:
首先把环境整好,由于我是window11操作系统的笔记本电脑,在这里我们使用WSL,也就是window子系统,来用上Linux~
step1–开启WSL服务,安装ubuntu20.04
1.1 开启电脑支持虚拟机的选项在这里插入图片描述在这里插入图片描述
在这里插入图片描述
Windows虚拟机监控程序平台适用于Linux的Windows子系统虚拟机平台都打钩

1.2 安装ubuntu20.04
可以在cmd命令行中输入这个,设置wsl的版本

wsl --set-default-version 2

随后可以在Microsoft store中下载Ubuntu20.04
在这里插入图片描述
在powershell中输入 wsl 就是打开wsl功能,之后点击已经下载好的U不能图0.04,开启ubuntu20.04的环境,一路设置名字什么的,可以输入

root passwd

来设置root的密码

在这里插入图片描述
在这里插入图片描述

step2–设置一下SSH服务
接下来需要设置一下SSH服务,这个可以在网上看看啦,就是安装一下openSSH(一般下载ubuntu20.04后好像自带了这个,但是还是可以再下载一遍),然后修改一下sshd_config

vim /etc/ssh/sshd_config

输入i进入insert模式
在这里插入图片描述
在这里插入图片描述
Port 22PermitRootLogin yesPasswordAuthentication yes 修改一下,变成上图所示选项,然后 点击Esc 后输入 :wq 保存退出。
之后在命令行输入

service ssh start 

**加粗样式**
之后可以在XShell中尝试ssh连接一下,主机ip填写127.0.0.1或者本机ip地址?反正试试呗

step3–整整基本环境
可以看到论文中的安装过程
在这里插入图片描述
前面安装这些包的部分照做

apt-get update
apt-get install apt-utils
sudo apt install tzdata build-essential \
libtool autoconf pkg-config flex bison \
libgmp-dev clang-9 libclang-9-dev texinfo \
cmake ninja-build git texlive-full numactl

然后漫长等待下载这些包,当然,你也可以换个国内的镜像源
下载好之后呢,要版本管理一下(如下所示~),让pluto顺畅编译成功

update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-9 100
update-alternatives --install /usr/bin/FileCheck FileCheck /usr/bin/FileCheck-9 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 100
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 100

接下来可以看看,修改这些东西成功了没(第二项,论文里面写错了,这里参考了script里面那个dockerfile)
在这里插入图片描述
可以看到 link的版本已经变成llvm-config-9了。把这些东西整好之后就可以开始安装Polygeist和polymer了

step4–拉取script,啊,就是个测试集

git clone script,这个测试集,比较小,直接git也不是很久啦

cd workspace
git clone \
https://github.com/wsmoses/Polygeist-Script

step5–编译pluto(做对比测试的)
完了之后编译pluto,这个workspace/pluto 是用来做测试对比的,polymer依赖的那个workspace/polymer/pluto不用独立编译哈

cd
git clone \
https://github.com/bondhugula/pluto
cd pluto/
git checkout e5a039096547e0a3d34686295c
git submodule init
git submodule update
./autogen.sh
./configure
make -j`nproc`

step6–编译mlir-clang前端
接着编译mlir-clang前端,因为polymer和polygeist所依赖的llvm版本不同,所以要编译好多版的llvm(workspace/mlir-clang、~/polymer/llvm、 ~/polygeist/llvm-project)啊

cd
git clone -b main-042621 --single-branch \
https://github.com/wsmoses/Polygeist \
mlir-clang
cd mlir-clang/
mkdir build
cd build/
cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS="mlir;
polly;clang;openmp" \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON
ninja -j $(nproc) 

这个部分需要很久。因为子系统linux并不共享window的vpn服务(如果window有整vpn的话)。这里可以让子系统连接本机的局域网,具体参考这篇,(啊,用国内git的镜像源并不行,因为在递归clone子模块的时候还是龟速hhh)
https://cloud.tencent.com/developer/article/1913248

step7–编译polymer
前端编译成功之后,接下来我们编译polymer
在这里,我git clone老是出错,貌似找不到版本…
建议直接下载polymer以及子模块的zip包。
在这里插入图片描述
如果觉得git clone太慢,可以直接下载polymer和这个版本的llvm的zip包,然后再递归clone这个pluto的分支

git clone --recursive https://github.com/kumasento/polymer -b pact
cd polymer
git checkout pact
git submodule update --recursive --init
#polymer是pact这个分支,里面的llvm是polymer分支,可以自己找找看
cd polymer
mkdir llvm/build

#这部分是编译polymer依赖的llvm,别的版本不行,就用分支为polymer这个版本的
cmake ../llvm \
      -DLLVM_ENABLE_PROJECTS="llvm;clang;mlir" \
      -DLLVM_TARGETS_TO_BUILD="host" \
      -DLLVM_ENABLE_ASSERTIONS=ON \
      -DCMAKE_BUILD_TYPE=DEBUG \
      -DLLVM_INSTALL_UTILS=ON \
      -DCMAKE_C_COMPILER=clang \
      -DCMAKE_CXX_COMPILER=clang++ \
      -G Ninja 
ninja -j$(nproc)

接下来编译polymer,这里面的这个pluto就不用额外编译了,里面有cmake文件里写了关于这个pluto的编译操作。

cd workspace/polymer
mkdir build
cd build
export BUILD=$PWD/../llvm/build
cmake .. \
	-DCMAKE_BUILD_TYPE=DEBUG \
	-DMLIR_DIR=$BUILD/lib/cmake/mlir \
	-DLLVM_DIR=$BUILD/lib/cmake/llvm \
	-DLLVM_ENABLE_ASSERTIONS=ON \
	-DLLVM_EXTERNAL_LIT=$BUILD/bin/llvm-lit \
-G Ninja
ninja -j`nproc`
export LD_LIBRARY_PATH= \
~/workspace/polymer/build/pluto/lib:$LD_LIBRARY_PATH
#改下路径哦~
ninja check-polymer

然后看看polymer/build/bin目录里面有没有polymer-opt ~~芜湖~

step8–替换一下头文件~让run.sh运行起来惹
接下来需要替换一下这个 omp.h头文件

cp script/omp.h mlir-clang/build/projects/openmp/runtime/src/

再在.bashrc中输入环境变量
啊,自己看看要用那个 script/run.sh 中要用到的前端和优化opt来添加吧
最后可以看到论文中的测试部分
在这里插入图片描述
不过啊,这里面直接运行run.sh会出错惹,貌似是要指定一下内核数…还没搞明白ORZ,直接看我写的 /home/huangl/workspace/script/polybench-c-4.2.1-beta/linear-algebra/blas/gemm_test/run.sh 这个吧,能运行成功

step9–编译polygeist

#build 这个polygeist所依赖的llvm(还是版本的问题,就多编译几次吧...)
mkdir llvm-project/build
cd llvm-project/build
cmake -G Ninja ../llvm \
  -DLLVM_ENABLE_PROJECTS="mlir;clang" \
  -DLLVM_TARGETS_TO_BUILD="host" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_BUILD_TYPE=DEBUG
ninja
ninja check-mlir

#build polygeist
mkdir build
cd build
cmake -G Ninja .. \
  -DMLIR_DIR=$PWD/../llvm-project/build/lib/cmake/mlir \
  -DCLANG_DIR=$PWD/../llvm-project/build/lib/cmake/clang \
  -DLLVM_TARGETS_TO_BUILD="host" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_BUILD_TYPE=DEBUG
ninja
ninja check-polygeist-opt && ninja check-cgeist

添加PATH看看可不可以运行polygeist/build/bin中的 polygeist-opt,cgeist 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值