我在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。
为什么?
答案 0 :(得分:1)
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