gpt4 book ai didi

c - 为什么 OpenCL 找不到任何设备?

转载 作者:行者123 更新时间:2023-11-30 15:20:00 25 4
gpt4 key购买 nike

我一直在摆弄 OpenCL,它似乎没有检测到我有一个可以在我的计算机中使用的设备(我确实检测到了)。

这是 dxdiag 的结果:

enter image description here

这是我的代码的第一部分,其中引发错误,检查我的计算机上可用的设备数量。

cl_platform_id platform;
cl_uint num_devices;
cl_int err;

//get first platform
err = clGetPlatformIDs(1, &platform, NULL);

if (err < 0){
perror("Couldn't find any platforms");
exit(1);
}

//determine number of devices: ERROR RAISED AS RESULT OF THIS
err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_ALL, 1, NULL, &num_devices);

if (err < 0){
perror("Couldn't find any devices");
exit(1);
}

这是此代码的输出: enter image description here

当我打印它正在找到的设备数量时,使用

printf("找到 %d 个设备", num_devices);

每次都给出相同的数字:

enter image description here

请让我知道哪些其他信息可能有助于解决这个问题。

最佳答案

您无法确定它没有找到设备,因为您没有正确检查返回值。 more 有 5 个值( clGetDeviceIDs ,具体取决于您的 OpenCL 版本)可以返回:

  • CL_SUCCESS 如果函数执行成功。
  • CL_INVALID_PLATFORM(如果平台不是有效平台)。
  • CL_INVALID_DEVICE_TYPE(如果 device_type 不是有效值)。
  • CL_INVALID_VALUE 如果 num_entries 等于 0 并且 device_type 不为 NULL,或者 num_devices 和 device_type 都为 NULL。
  • CL_DEVICE_NOT_FOUND 如果未找到与 device_type 匹配的 OpenCL 设备。

您应该对照这些值检查您的 err 值,以确保 CL_DEVICE_NOT_FOUND 确实如此。

<小时/>

同样,您应该为 clGetPlatformIDs 提供 num_platforms 值。您选择的平台可能没有有效的设备,但另一个平台有。

关于c - 为什么 OpenCL 找不到任何设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com