2

我试图让我的 OpenCL 项目在 Ubuntu 中编译。我有一个兼容的 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 和环境变量的注册)

我做错了什么,我无法让我的 prog 工作?

请注意,我使用的 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.1in 的符号链接/use/lib(因为它是 x64 位 PC,并且出于某种原因,opencl 在 /lib 中查找 x64 驱动程序)
4

1 回答 1

-1

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

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加载并运行驱动程序。

于 2015-10-10T19:41:22.607 回答