在Ubuntu中设置OpenCL

时间:2014-05-10 06:51:25

标签: ubuntu opencl gpu amd-gpu

我试图在Ubuntu中编译我的OpenCL项目。我有Core i5和AMD HD 5660兼容。

当我执行以下代码时

cl_int status;
// Retrieve the number of platforms
cl_uint numPlatforms = 0;
status = clGetPlatformIDs(0, NULL, &numPlatforms);
if (status != CL_SUCCESS)
{
    std::cout << "Error: Getting platforms!" << std::endl;
    std::cin.get();
}

我得到Error: Getting platforms!

当我执行clinfo时,我得到:terminate called after throwing an instance of 'cl::Error \n what(): clGetPlatformIDs'

我正在使用AMD驱动程序14.4和SDK 2.9(在AMD安装指南中提到,设置这两个文件将处理icd和环境变量的注册)

我做错了什么我不能让我的编程工作?

请注意,我正在使用Eclipse以及lib(/opt/AMDAPP/lib/x86_64)的正确路径。该程序编译正确。

修改

安装程序

  1. 首先安装x64驱动程序14.4

  2. 我按照安装指南中的建议安装了AMD-APP-SDK-v2.9-lnx64.tgz(解压SDK并执行sudo ./Install-AMD-APP.sh.)。

  3. 验证AMDAPPSDKROOT 'and LD_LIBRARY_PATH`是正确的。

  4. /usr/lib64/OpenCL/vendors/amd/libOpenCl.so.1中创建符号链接到/use/lib(因为它是一个x64位的PC,因为某些原因opencl在/ lib中查找x64驱动程序)

1 个答案:

答案 0 :(得分:0)

我认为至少在Ubuntu 15.04上,你可以安装fglrxfglrx-updates和依赖项。您可以在核心包中看到所有正确的OpenCL库。如果您安装了fglrx,我认为您根本不需要AMD SDK业务。安德烈亚斯提供了很多useful information

dpkg -L fglrx-updates-core | grep -v kcl | grep cl
/usr/bin/atiodcli
/usr/bin/clinfo
/usr/lib/libamdocl12cl64.so
/usr/lib/libamdocl64.so
/usr/lib/libaticalcl.so
/usr/lib32/libaticalcl.so
/usr/lib32/libamdocl32.so
/usr/lib32/libamdocl12cl32.so
/etc/OpenCL/vendors/amdocl64.icd

您需要加载并运行flgrx驱动程序。