PoCL 项目链接
本博文主要介绍了源码编译llvm和PoCL的过程
个人简介
- 作者简介:大家好,我是喜欢记录零碎知识点的菜鸟打工人。
- 个人主页:欢迎访问我的博客主页…
- https://blog.csdn.net/qq_39217004?spm=1010.2135.3001.5343
- 支持我:点赞+收藏⭐️+留言
- 系列专栏:嵌入式Linux开发
- 格言:写文档啊不是写文章,重要的还是直白!
转载文章,禁止声明原创;不允许直接二次转载,转载请根据原文链接联系作者
若无需改版,在文首清楚标注作者及来源/原文链接,并删除【原创声明】,即可直接转载。
但对于未注明转载来源/原文链接的文章,我将保留追述的权利。https://blog.csdn.net/qq_39217004?spm=1010.2135.3001.5343
作者:积跬步、至千里
PoCL(Portable Computing Language)
是一个便携式开源的 OpenCL 实现,旨在为各种硬件平台提供一致的 OpenCL 编程接口。PoCL 的主要目标是提高 OpenCL 程序在不同设备类型之间的性能可移植性,并通过运行时和编译技术来实现这一目标。PoCL 支持多种 CPU 架构(如 x86、ARM、RISC-V)以及 NVIDIA GPU 和 Intel GPU 等设备。
- Clang Clang 是 LLVM 项目的一部分,作为 PoCL 的 OpenCL C 前端,负责将 OpenCL C 代码编译为 LLVM IR。
- LLVM LLVM 是 PoCL 的核心组件,负责将 LLVM IR 编译为目标设备的机器代码。
- ocl-icd ocl-icd 是一个 OpenCL 安装程序,允许系统上同时存在多个 OpenCL 实现。PoCL 可以与 ocl-icd 一起使用,以提供更好的兼容性和灵活性。
export LLVM_VERSION=<major LLVM version>
sudo apt install -y python3-dev libpython3-dev build-essential ocl-icd-libopencl1 \
cmake git pkg-config libclang-$[LLVM_VERSION]-dev clang-$[LLVM_VERSION] \
llvm-$[LLVM_VERSION] make ninja-build ocl-icd-libopencl1 ocl-icd-dev \
ocl-icd-opencl-dev libhwloc-dev zlib1g zlib1g-dev clinfo dialog apt-utils \
libxml2-dev libclang-cpp$[LLVM_VERSION]-dev libclang-cpp$[LLVM_VERSION] \
llvm-$[LLVM_VERSION]-dev
本部分参考资料:LLVM系列第一章:编译LLVM源码
git clone https://github.com/vortexgpgpu/llvm.git
cd /llvm/llvm-prj
mkdir build # 存放编译文件
cd /llvm/llvm-prj && mkdir make_install # 存放安装文件,不要和工程文件同目录
cd /llvm/llvm-prj/build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug \
-DLLVM_TARGETS_TO_BUILD="X86;RISCV" \
-DLLVM_ENABLE_PROJECTS="clang;" \
-DLLVM_BUILD_LLVM_DYLIB=true \
-DCMAKE_INSTALL_PREFIX="/data/llvm_install" \
-DLLVM_BUILD_LLVM_DYLIB=true \
../llvm
ninja && ninja install
# 添加环境变量
sudo vim ~/.bashrc
export PATH=$PATH:/home/llvm/llvm-prjx/build/bin #最后一行添加路径
source ~/.bashrc
DLLVM_ENABLE_PROJECTS
选项指定编译的工程;DCMAKE_BUILD_TYPE
指定编译Release版本或者是Debug版本;DLLVM_DEFAULT_TARGET_TRIPLE
可以修改默认的 target 的 triple 组合,不指定默认是x86_64-unknown-linux-gnu;比如可以指定目标为 -DLLVM_DEFAULT_TARGET_TRIPLE=“riscv64-unknown-linux-gnu” \DLLVM_TARGETS_TO_BUILD
="RISCV"指定构建的target;DCMAKE_INSTALL_PREFIX
指定编译完成后的安装目录。-DLLVM_BUILD_LLVM_DYLIB=true
表示生成 .so 动态链接库文件mkdir build
cd build
cmake ..
make
sudo make install