我试图让我的 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
) 路径。程序编译正确。
编辑
安装程序
首先安装 x64 驱动程序 14.4
我按照安装指南中的建议安装
AMD-APP-SDK-v2.9-lnx64.tgz
(解压 SDK 并执行)。sudo ./Install-AMD-APP.sh.
验证
AMDAPPSDKROOT 'and
的 LD_LIBRARY_PATH` 是正确的。- 创建到
/usr/lib64/OpenCL/vendors/amd/libOpenCl.so.1
in 的符号链接/use/lib
(因为它是 x64 位 PC,并且出于某种原因,opencl 在 /lib 中查找 x64 驱动程序)