编译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 22、PermitRootLogin yes、PasswordAuthentication 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 。
编译polygeist-polymer项目相关推荐
- java获取项目的部署目录结构_JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别...
本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...
- 依赖编译_开源项目的编译优化实践
Zilliz 公司以 "重新定义数据科学" (Reinvent Data Science)为愿景,专注于研发利用新一代异构计算的开源数据科学软件.随着各项目的蓬勃发展,我们对于持续 ...
- 使用CMake编译Caffe的项目
使用CMake编译Caffe的项目 最近我在编译一个Caffe的项目,在编译时候总会找不到这个依赖,那个依赖,这里总结出几条经验. 1. Caffe必须要使用CMake去编译 我一开始用作者提供的Ma ...
- 【编译原理】东北大学2022春季大作业之作业一【40%】编译一个TEX项目【已更新】【命令行编译】【texworks编译】【回答了一些问题】
目录 前言 作业一[编译一个TEX项目] 1.开源网站 2.任务 3.作业完成流程 [修改一--miktex更新时选择管理员身份] [这里针对于评论区小伙伴的提问进行解答] [有关于622页的解答] ...
- VS code 如何编译运行web项目教程
一.使用vs code开发运行web 项目 由于 Visual Studio 体积大,对于性能不好的电脑的来说,简直是种不友好的开发体验.所以vs code 轻量级开发工具的出现,简直是不要太好了. ...
- CMake编译工具与项目构建
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章导读 本文从C/C++代码的编译过程入手,弄清楚Make与Ma ...
- 一文详解CMake编译工具与项目构建
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文从C/C++代码的编译过程入手,弄清楚Make与Makefile,CMake与CMake ...
- maven编译java1.8项目_maven正在用java 1.7编译代码,但我想用1.8编译它
我正在使用maven,并希望使用JDK 1.8编译我的代码 . 所以我安装了JDK 1.8 然后(这是在Windows上)设置'path'变量和'JAVA_HOME' PATH = C:\ const ...
- [转]SVN + CruiseControl.NET + NANT 自动编译提交的项目最小DEMO
本文转自:http://blog.csdn.net/markgoo/article/details/5739103 第一步,当然是安装这些软件了, SVN - 我用的是TortoiseSVN , 方便 ...
- python转go_如何看待将Python代码转换成Go代码并进一步编译的 Grumpy 项目?
明确声明了的,以及可以预见到的与 CPython 的区别有: 1,不会完全兼容现在 Python 的全部特性,比如 eval 语句.这点没有办法,因为是 AOT 编译器,运行时生成代码只能放弃了.其实 ...
最新文章
- 跨域调用报表展现页面的flash打印方法
- Pycharm Matplotlib 图像不显示问题
- [BeiJing2011][bzoj2460] 元素
- android 号码查联系人,Android联系人查询
- 从大数据到深度学习,这些年度开源“新秀”你可用过?
- 华为大数据战略_任正非:华为应抓住“大数据”机遇 抢占战略制高点
- 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
- AI手机会怎么样?那不得看高通骁龙的AI能怎样
- Android软键盘问题
- 【通信基础知识】白噪声、相关解调和相干解调
- 手动发布web项目到tomcat服务器上
- matlab中fittype函数,fittype拟合函数
- 2015年3月计算机二级vb题库,2015年计算机二级vb机试试题
- 「干货」那些必知的物联网行业术语
- 谷歌邮箱无法登录问题
- 个人微信号API接口
- HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
- 用 Python 给程序加个进度条,让你的程序看起来更炫酷
- mc服务器优化mod,【教程】minecraft服务器优化教程 让你用低配置带更多人!
- 版权变更有哪些流程?