OpenCL clGetDeviceIDs在GPU时返回-1,在CPU时返回0

时间:2015-05-06 14:23:17

标签: opencl gpu

我在Ubuntu 14.04.2 LTS(NVIDIA Corporation GM204 [GeForce GTX 980])上运行我的OpenCL / C ++代码。 它在CPU上正常工作,但当我将clGetDeviceIDs更改为CL_DEVICE_TYPE_CPU时,CL_DEVICE_TYPE_GPU方法返回-1。

有问题的代码:

ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, &ret_num_devices);
cout << ret;
checkError(ret, "clGetDeviceIDs");

输出-1。

但是以下内容:

ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices);
cout << ret;
checkError(ret, "clGetDeviceIDs");

输出0。

为什么?

1 个答案:

答案 0 :(得分:1)

解决了:) 我根据此链接https://devtalk.nvidia.com/default/topic/498968/printing-all-opencl-devices-not-detecting-all-opencl-devices-under-windows/

中的代码进行了一些修改
    cl_int ret = clGetPlatformIDs(2, platforms, &ret_num_platforms);
cout << ret;
    //ret = clGetDeviceIDs( platforms[0], CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices);  // Execute me on CPU
    ret = clGetDeviceIDs( platforms[1], CL_DEVICE_TYPE_GPU, 1, &device_id, &ret_num_devices); // Execute me on GPU