Платформа OpenCL / запрос устройства - PullRequest
0 голосов
/ 05 января 2012

Я использую реализацию openCL от Nvidia.

cl_uint devicecount=NULL;
cl_uint NumPlatforms;
clGetPlatformIDs (0, NULL, &NumPlatforms);

cl_platform_id* PlatformIDs;
PlatformIDs = new cl_platform_id[NumPlatforms];
clGetPlatformIDs(NumPlatforms, PlatformIDs, NULL);

cl_device_id cdDevice;
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_CPU, 1, &cdDevice, &devicecount);

cout << NumPlatforms << endl;
cout << PlatformIDs << endl;
cout << cdDevice << endl;
cout << devicecount << endl;

Возможно, на данный момент у меня нет совместимого графического процессора, но у меня совместимый процессор.Запрос говорит мне, что у меня 0 платформ и 0 устройств.Я делаю это правильно?Я не совсем понимаю, что такое платформа и почему у меня ее нет.Что именно нужно OpenCL для поиска и использования платформы?

РЕДАКТИРОВАТЬ:

Я получил свою новую карту по почте сегодня, установил amd sdk и переустановил nvidia sdk, и теперь я вижу все свои платформы и устройства!

Следующим шагом является создание контекстов.Могу ли я разместить устройства с разных платформ в одном контексте?Это очень сложно, учитывая, что вам нужны отдельные очереди команд для каждого устройства и т. Д., Чтобы написать программу для использования всех устройств в системе, даже если их число составляет сто тысяч?

Ответы [ 2 ]

2 голосов
/ 05 января 2012

Платформа - это, по сути, установленная реализация OpenCL.Физически это запись ICD (файл в /etc/OpenCL/vendors/ в * nix, запись реестра в Windows), которая помогает OpenCL.dll / libOpenCL.so находить фактические реализации, зависящие от поставщика.

В вашем случае это выглядит так, поскольку ваш GPU не поддерживает OpenCL, драйвер не добавил библиотеку nVidia в список платформ.[offtop] Интересно, потребуется ли переустанавливать драйвер после обновления оборудования до совместимости с CUDA / OpenCL ...

Чтобы использовать ваш ЦП в качестве устройства OpenCL, необходимо установить либо AMD APPSDK или Intel OpenCL SDK , поскольку реализация nVidia никак не поддерживает ЦП

0 голосов
/ 07 января 2012

Я установил intel и amd SDK и получаю интересные результаты, когда получаю информацию для устройства cpu на платформе intel против платформы amd.

Мое устройство intel I5 на платформе Intel имеет 128 сэмплеров и 128 возможностей исполнения, а на платформе amd - 16 сэмплеров и возможности исполнения. Также на платформе amd максимальная тактовая частота процессора составляет 3310, а на платформе Intel 3300.

Интересно, есть ли эта разница только в названии или есть разница в производительности между выбором устройства Intel на платформе Intel?

...