我试图在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
)的正确路径。该程序编译正确。
修改
安装程序
首先安装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
中创建符号链接到/use/lib
(因为它是一个x64位的PC,因为某些原因opencl在/ lib中查找x64驱动程序)答案 0 :(得分:0)
我认为至少在Ubuntu 15.04上,你可以安装fglrx
或fglrx-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
驱动程序。