【PoCL】项目源码编译

PoCL 项目链接

本博文主要介绍了源码编译llvm和PoCL的过程

目录

  • 0. 个人简介 && 授权须知
  • 1. 项目介绍
  • 2. 项目依赖
  • 3. 源码编译
    • 3.1 编译 LLVM 工程
    • 3.2 编译PoCL 工程

0. 个人简介 && 授权须知

image-20230911133730620

个人简介

  • 作者简介:大家好,我是喜欢记录零碎知识点的菜鸟打工人。
  • 个人主页:欢迎访问我的博客主页…
    • https://blog.csdn.net/qq_39217004?spm=1010.2135.3001.5343
  • 支持我:点赞+收藏⭐️+留言
  • 系列专栏:嵌入式Linux开发
  • 格言:写文档啊不是写文章,重要的还是直白!

转载文章,禁止声明原创;不允许直接二次转载,转载请根据原文链接联系作者

若无需改版,在文首清楚标注作者及来源/原文链接,并删除【原创声明】,即可直接转载。
但对于未注明转载来源/原文链接的文章,我将保留追述的权利。

https://blog.csdn.net/qq_39217004?spm=1010.2135.3001.5343

作者:积跬步、至千里

image-20230911133724204

1. 项目介绍

PoCL(Portable Computing Language)是一个便携式开源的 OpenCL 实现,旨在为各种硬件平台提供一致的 OpenCL 编程接口。PoCL 的主要目标是提高 OpenCL 程序在不同设备类型之间的性能可移植性,并通过运行时和编译技术来实现这一目标。PoCL 支持多种 CPU 架构(如 x86、ARM、RISC-V)以及 NVIDIA GPU 和 Intel GPU 等设备。

2. 项目依赖

  • LLVM 和 Clang 开发库
  • CMake 3.9 或更高版本
  • GNU Make 或 Ninja
  • pkg-config
  • pthread
  • hwloc(可选)
  1. Clang Clang 是 LLVM 项目的一部分,作为 PoCL 的 OpenCL C 前端,负责将 OpenCL C 代码编译为 LLVM IR。
  2. LLVM LLVM 是 PoCL 的核心组件,负责将 LLVM IR 编译为目标设备的机器代码。
  3. 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

3. 源码编译

3.1 编译 LLVM 工程

本部分参考资料: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 动态链接库文件

3.2 编译PoCL 工程

  1. 创建构建目录并进入:
mkdir build
cd build
  1. 使用 CMake 配置项目:
cmake ..
  1. 编译并安装:
make
sudo make install

【PoCL】项目源码编译_第1张图片

你可能感兴趣的:(编译器,pocl)