环境:
首先把环境整好,由于我是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 。

编译polygeist-polymer项目相关推荐

  1. java获取项目的部署目录结构_JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别...

    本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...

  2. 依赖编译_开源项目的编译优化实践

    Zilliz 公司以 "重新定义数据科学" (Reinvent Data Science)为愿景,专注于研发利用新一代异构计算的开源数据科学软件.随着各项目的蓬勃发展,我们对于持续 ...

  3. 使用CMake编译Caffe的项目

    使用CMake编译Caffe的项目 最近我在编译一个Caffe的项目,在编译时候总会找不到这个依赖,那个依赖,这里总结出几条经验. 1. Caffe必须要使用CMake去编译 我一开始用作者提供的Ma ...

  4. 【编译原理】东北大学2022春季大作业之作业一【40%】编译一个TEX项目【已更新】【命令行编译】【texworks编译】【回答了一些问题】

    目录 前言 作业一[编译一个TEX项目] 1.开源网站 2.任务 3.作业完成流程 [修改一--miktex更新时选择管理员身份] [这里针对于评论区小伙伴的提问进行解答] [有关于622页的解答] ...

  5. VS code 如何编译运行web项目教程

    一.使用vs code开发运行web 项目 由于 Visual Studio 体积大,对于性能不好的电脑的来说,简直是种不友好的开发体验.所以vs code 轻量级开发工具的出现,简直是不要太好了. ...

  6. CMake编译工具与项目构建

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章导读 本文从C/C++代码的编译过程入手,弄清楚Make与Ma ...

  7. 一文详解CMake编译工具与项目构建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文从C/C++代码的编译过程入手,弄清楚Make与Makefile,CMake与CMake ...

  8. maven编译java1.8项目_maven正在用java 1.7编译代码,但我想用1.8编译它

    我正在使用maven,并希望使用JDK 1.8编译我的代码 . 所以我安装了JDK 1.8 然后(这是在Windows上)设置'path'变量和'JAVA_HOME' PATH = C:\ const ...

  9. [转]SVN + CruiseControl.NET + NANT 自动编译提交的项目最小DEMO

    本文转自:http://blog.csdn.net/markgoo/article/details/5739103 第一步,当然是安装这些软件了, SVN - 我用的是TortoiseSVN , 方便 ...

  10. python转go_如何看待将Python代码转换成Go代码并进一步编译的 Grumpy 项目?

    明确声明了的,以及可以预见到的与 CPython 的区别有: 1,不会完全兼容现在 Python 的全部特性,比如 eval 语句.这点没有办法,因为是 AOT 编译器,运行时生成代码只能放弃了.其实 ...

最新文章

  1. 跨域调用报表展现页面的flash打印方法
  2. Pycharm Matplotlib 图像不显示问题
  3. [BeiJing2011][bzoj2460] 元素
  4. android 号码查联系人,Android联系人查询
  5. 从大数据到深度学习,这些年度开源“新秀”你可用过?
  6. 华为大数据战略_任正非:华为应抓住“大数据”机遇 抢占战略制高点
  7. 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
  8. AI手机会怎么样?那不得看高通骁龙的AI能怎样
  9. Android软键盘问题
  10. 【通信基础知识】白噪声、相关解调和相干解调
  11. 手动发布web项目到tomcat服务器上
  12. matlab中fittype函数,fittype拟合函数
  13. 2015年3月计算机二级vb题库,2015年计算机二级vb机试试题
  14. 「干货」那些必知的物联网行业术语
  15. 谷歌邮箱无法登录问题
  16. 个人微信号API接口
  17. HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
  18. 用 Python 给程序加个进度条,让你的程序看起来更炫酷
  19. mc服务器优化mod,【教程】minecraft服务器优化教程 让你用低配置带更多人!
  20. 版权变更有哪些流程?

热门文章

  1. 机器人扫地机哪个牌子好?
  2. SSRF的详解、复现与CTF下的SSRF
  3. 有些人,一转身可能就是一辈子
  4. 【每日新闻】亚马逊宣布推出新款送货无人机
  5. PURGE 的用法说明
  6. FLIP 动画实现多维网格的过渡
  7. 工作日记 day02
  8. 关于分布式锁的续命问题——基于Redis实现的分布式锁
  9. html移除disabled属性,JQuery设置和去除disabled属性
  10. kali系统更新源。