如何在Ubuntu上编译OpenCL?

时间:2011-09-25 00:21:04

标签: ubuntu compilation opencl

问题:需要什么样的头文件和驱动程序?我在哪里可以使用gcc / g ++在ubuntu上编译open CL?


信息:有一段时间我现在一直在试图找出如何在我的桌面上安装开放式CL以及可能的我的上网本。有几个教程我已经尝试但似乎没有工作。此外,他们都只是一步一步地解释为什么对于特定的IDE特定的,甚至更糟的是,所以你必须学习IDE才能做任何事情。

所以我的桌面上有一台NVIDA GX465,上网本中有集成显卡。我的首要任务当然是我的桌面,上网本只是为了便于开发(两者都运行ubuntu 11.04,并且一出现就会运行11.10)。有人可以告诉我究竟需要什么来获得它所以我可以实际编译代码并让它运行。如果你也可以解释每件作品的作用,以便我能理解它的重要性。

4 个答案:

答案 0 :(得分:9)

要在Linux下编译和运行OpenCL代码,您需要做四件事:

1)支持OpenCL的NVIDIA驱动程序。与Ubuntu打包的驱动程序有点 旧的,但他们应该仍然工作得很好。除非你明确需要当前 驱动程序,你应该坚持使用Ubuntu打包的驱动程序。要清楚,这些是 通过受限制的驱动程序管理器安装相同的驱动OpenCL库包含驱动程序,因此只需运行OpenCL程序驱动程序即可。

2)CUDA工具包。这包括编译OpenCL代码所需的头文件。将其安装到默认位置。

3)GPU计算SDK(可选)。这包括各种NVIDIA特定支持工具以及OpenCL代码示例。

所有这三项都可以在http://developer.nvidia.com/cuda-toolkit-40找到。

4)OpenCL C ++绑定(可选)。奇怪的是,它们不包含在CUDA Toolkit中,但如果您使用C ++,它们可以使您的代码更加可更新。您可以从http://www.khronos.org/registry/cl/api/1.1/cl.hpp下载它们,然后将它放在桌面上的/ usr / local / cuda / include / CL中。

安装完成后,您需要执行一些步骤才能在NVIDIA SDK之外编译和运行OpenCL。

1)CUDA工具包将包含OpenCL标题(在http://www.khronos.org/registry/cl/列出),可能它们位于/ usr / local / cuda / include / CL目录中。要使这些头在系统范围内可用,您应该将此目录链接到/ usr / include /,以便可以将它们作为/ usr / include / CL / [headerfilename]进行访问。您可以将/ usr / local / cuda / include添加到C_INCLUDE_PATH and CPLUS_INCLUDE_PATH环境变量中,而不是创建符号链接,但这只会持续当前会话。

2)确保/ usr / lib中存在OpenCL库(libOpenCL.so)。这应该由司机设置,所以你不应该做任何事情。

您已准备好编写代码。确保在任何进行OpenCL API调用的C(++)程序中包含CL/cl.h(或CL/cl.hpp,如果您要使用C ++版本的API)。编译时,请确保链接到OpenCL库(将gcc传递给-lOpenCL标志)。

就您的上网本而言,集成显卡通常不支持OpenCL。从理论上讲,AMD's APP Acceleration支持在CPU上运行OpenCL,但目前尚不清楚它是否真的有效。

答案 1 :(得分:4)

Ubuntu 15.10与NVIDIA NVS 5400M,联想T430

sudo apt-get install nvidia-352 nvidia-352-dev nvidia-prime nvidia-modprobe
sudo ln -s /usr/include/nvidia-352/GL /usr/local/include
sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/local/lib/libOpenCL.so

然后使用标题:

#include <CL/cl.h>

编译:

gcc -o main main.c -lOpenCL

注意:

我真的建议升级到15.10以使其工作:我以前从未管理过。

答案 2 :(得分:2)

我最近在Linux上使用类似的过程进行干净的构建,使用NVIDIA卡设置OpenCL。

我采取的步骤:

1 - 安装NVIDIA驱动程序。

2 - 安装CUDA工具包 - (参考指南中的步骤,有很多方法可以做到,但我使用.deb安装程序,指南可以在这里找到:http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/

3 - 使用apt-get安装OpenCL标头。命令:sudo apt-get install opencl-headers

使用:CL/opencl.h标头我能够使用gcc / g ++和标志编译C / C ++代码:-lOpenCL

解释步骤

1 - 自我解释

2 - CUDA工具包还安装OpenCL库(libOpencl.so)但不安装标题(至少不在我的系统上)

3 - 因此可以使用apt-get安装标头。头文件存储在/ usr / include / CL目录

答案 3 :(得分:2)

在Ubuntu 16.04中对我有用的东西

我已经安装了openCL:

SandyBridge CPU:仅限cpu

IvyBridge GPU

Nvidia GTX 950

安装数据包

OpenCL的通用ubuntu软件包

基本安装 sudo apt install ocl-icd-libopencl1 sudo apt install opencl-headers sudo apt install clinfo

允许编译OpenCL代码的包(我认为1.2)

需要链接和编译 sudo apt install ocl-icd-opencl-dev

对于Intel GT核心

在Intel GT,IvyBridge及更高版本

上启用runnig openCL的软件包

sudo apt install beignet

对于SandyBridge Intel CPU和其他可能的

下载此文件 用于Ubuntu *的英特尔®酷睿™和英特尔®至强®处理器的OpenCL™Runtime 16.1.1(64位) 在https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_SDK_release

安装包以将rpm转为deb sudo apt-get install -y rpm alien libnuma1

解压下载的文件 tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz cd opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25/rpm/ 将rpm文件转为deb fakeroot alien --to-deb opencl-1.2-base-6.4.0.25-1.x86_64.rpm fakeroot alien --to-deb opencl-1.2-intel-cpu-6.4.0.25-1.x86_64.rpm 安装.deb包 sudo dpkg -i opencl-1.2-base_6.4.0.25-2_amd64.deb sudo dpkg -i opencl-1.2-intel-cpu_6.4.0.25-2_amd64.deb 触摸本地配置文件 sudo touch /etc/ld.so.conf.d/intelOpenCL.conf 打开文件 sudo vim /etc/ld.so.conf.d/intelOpenCL.conf 并添加行

  

/opt/intel/opencl-1.2-6.4.0.25/lib64/clinfo

创建供应商目录并添加intel.icd sudo mkdir -p /etc/OpenCL/vendors sudo ln /opt/intel/opencl-1.2-6.4.0.25/etc/intel64.icd /etc/OpenCL/vendors/intel64.icd sudo ldconfig

测试是否有效

clinfo应列出您的设备 下载此文件

  

https://codeload.github.com/hpc12/tools/tar.gz/master

运行此代码以确保一切正常 tar xzvf tools-master.tar.gz cd tools-master make ./print-devices ./cl-demo 1000 10 这应该打印好GOOD

对于Nvidia

安装nvidia驱动程序(我使用370),这应包括所有运行时驱动程序