Настройка OpenCL в Ubuntu
Я пытаюсь собрать проект 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 и среды)
Что я делаю не так, что не могу заставить работать мою прогу?
Обратите внимание, что я использую 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 битный ПК и по какой-то причине opencl ищет драйвер x64 в /lib)
1 ответ
Я думаю, по крайней мере, на Ubuntu 15.04, вы можете просто установить fglrx
или же fglrx-updates
и зависимости. Вы можете увидеть все нужные библиотеки OpenCL в основном пакете. Я не думаю, что вам нужен бизнес AMD SDK вообще, если у вас установлен fglrx. Андреас дает много полезной информации.
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
драйвер загружен и работает.