OpenCL 找到平台,但无法打开它们

OpenCL finds platform, but cannot open them

本文关键字:平台 OpenCL      更新时间:2023-10-16

我目前正在使用联想Yoga 510,它使用AMD Radon R5显卡。OpenCL 可以对其进行处理,但是,当我运行代码来查询和获取平台详细信息时,会返回可用平台的总数,但如果给出无法打开此平台的错误。请参阅下面的错误消息。

错误:无法打开平台密钥软件\英特尔\OpenCL\主板以在运行时加载主板库。 在编译主机代码时链接到电路板库,或者参考电路板供应商的文档,了解如何安装电路板库,以便在运行时加载。

无法关闭平台键 (空(,忽略 警告:找不到任何英特尔® FPGA 主板库。 不会加载任何英特尔(R( FPGA 设备。 请联系您的电路板供应商或参阅编程指南的"将您的主机应用程序链接到 Khronos ICD 加载器库"部分以手动设置 FCD。

找到 2 个平台

请参阅下面的代码

[INCLUDE STATEMENTS] 
int main() {
cl_int returned;
cl_int zero = (cl_int)0;
//SET-UP DEVICE EXECUTION ENVIRONMENT
cl_uint no_of_platforms;
//cl_uint no_of_entries;
cl_platform_id* platforms;
size_t device_info_val_size;
char* detail;
//1. Query and select the vendor specific platform
returned = clGetPlatformIDs(zero, NULL, &no_of_platforms);
if (returned == CL_SUCCESS) {
printf("%d PLATFORM(s) FOUND n", no_of_platforms);
}
else {
printf("No Platform Foundn");
return EXIT_FAILURE; //Terminante programme
}
platforms = (cl_platform_id*)malloc(sizeof(cl_platform_id) * no_of_platforms); //create enough space to put platofrm IDs into
clGetPlatformIDs(no_of_platforms, platforms, NULL); //Fill in platform with their ID

free(platforms);
return 0;
}

知道我可能做错了什么或设置错误吗?我想知道为什么它在我的 Radon 显卡上寻找英特尔 FPGA

根据您提供的内容,听起来 OpenCL ICD(可安装客户端驱动程序(配置不正确。这可能是由多种因素引起的(独立(:

  • 旧的/过时的图形驱动程序
  • 系统更新/注册表编辑导致的损坏

最可靠的建议是更新(或作为最后的手段,重新安装(您的图形驱动程序。除非您的 GPU/iGPU 太旧而无法正常工作的 OpenCL 驱动程序,否则这应该可以正确设置所有内容。

由于您使用的是 MSVC,我还建议您下载英特尔提供的 OpenCL SDK(如果是 AMD CPU,则为 AMD(,因为这不仅可以确保您拥有与 OpenCL 相关的最新标头和实用程序,它还为 OpenCL 安装了 CPU ICD,为您提供了一个额外的测试平台。