环境:
首先把环境整好,由于我是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. 线上报名 | 高性能深度学习推理引擎 TensorRT 实战编程讲解
  2. linux脚本编程(shell)浅介 (转载)
  3. 转:链表相交问题 详解
  4. 生成器 python0 1 8 27 64_python 生成式和生成器
  5. ubantu Wine QQ
  6. 【东软实训】SQL函数
  7. 网上Silverlight项目收集
  8. 如何在Mac上的“终端”中创建自定义功能键?
  9. MyEclipse 2014 之 安装JDK 7 与JRE 7 (二)
  10. Postman测试Soap协议接口
  11. vue 中基于drag drop拖放实现左菜单和右画布的功能
  12. [堆入门off-by-null]asis2016_b00ks
  13. Hive获取周月时间
  14. 确定性随机数发生器测试向量——DRBG-HMAC-SHA1
  15. python随机生成彩色图像
  16. Windows下的pixhawk环境搭建
  17. 一、计算机基础: 特点、数制、编码、组成
  18. 中国研究的超级系统计算机,打造超级系统U盘
  19. 计算机领域的所有SCI一区期刊,这是最顶级期刊了
  20. Mysql数据库建立视图的方法

热门文章

  1. 云​大数据和计算技术周报(第47期) - 云+社区 - 腾讯云
  2. js中SetInterval与setTimeout用法
  3. 修改Chrome/Edge浏览器编码方式
  4. linux 服务器 syslog,linux服务器上syslog的配置
  5. android 选择文件flyme不让选,最封锁的Android体系 魅族Flyme
  6. 程序员 Homebrew 使用指北
  7. memmove详解及其模拟实现
  8. 后端代码一键打包上传服务器并重启服务
  9. npm 全局安装目录
  10. linux 驱动命令 mknod,linux中的mknod命令的详细解释