我正在使用英特尔 OpenCL SDK。上个月,当我尝试在系统中存在的 CPU 上运行我的 opencl 代码时,通过 clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU , 0, NULL, &num_devices),它工作了......它检测到的总平台数是 2。一个是 Intel GPU另一个是英特尔 CPU。我只需更改宏 CL_DEVICE_TYPE_CPU 即可在英特尔 GPU 和 CPU 上运行代码。但是现在当我尝试检测同一系统上的平台和设备时,它没有检测到 CPU。它将可用平台显示为 1 ,即 Intel GPU。所以,当clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 0, NULL,&num_devices); 被称为它返回-1(CL_DEVICE_NOT_FOUND)并且程序正在退出。
谁能帮我解决这个问题,为什么在同一系统上没有检测到 CPU,当我们有可用的英特尔 CPU 时。但是使用宏 CL_DEVICE_TYPE_GPU 可以正确检测到 GPU。谢谢。