2014-05-10 102 views
3

我試圖讓我的OpenCL項目在Ubuntu中編譯。我有一個兼容的Core i5和AMD HD 5660。在Ubuntu中設置OpenCL

當我執行下面的代碼

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)。該程序編譯正確。

EDIT

安裝步驟

  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. 創建符號鏈接到/use/lib/usr/lib64/OpenCL/vendors/amd/libOpenCl.so.1(因爲它是一個64位PC,由於某種原因的OpenCL會在/ lib下的x64驅動程序)
+0

Ubuntu的版本是什麼? – osgx

+0

嗨,我使用Ubuntu 13.10和14.04。 ( – user3622675

+0

)您是如何安裝amd驅動程序和sdk的?是否有系統(通過ubuntu的apt-get安裝)amd驅動程序和sdk? – osgx

回答

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驅動程序加載並運行。