Я использую реализацию 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, и теперь я вижу все свои платформы и устройства!
Следующим шагом является создание контекстов.Могу ли я разместить устройства с разных платформ в одном контексте?Это очень сложно, учитывая, что вам нужны отдельные очереди команд для каждого устройства и т. Д., Чтобы написать программу для использования всех устройств в системе, даже если их число составляет сто тысяч?