OpenCL 找到平台,但无法打开它们
OpenCL finds platform, but cannot open them
我目前使用的是使用 AMD Radon R5 显卡的 Lenovo Yoga 510。 OpenCL 可以处理它,但是,当我 运行 我的代码查询和获取平台详细信息时,会返回可用平台的总数,但如果给出无法打开该平台的错误。请参阅下面的错误消息。
错误:无法打开平台密钥 SOFTWARE\Intel\OpenCL\Boards 以在 运行 时加载板库。
在编译主机代码时 link 到开发板库,或者参考开发板供应商的文档,了解如何安装开发板库,以便它可以在 运行 时间加载。
无法关闭平台密钥(空),忽略
警告:找不到任何英特尔(R) FPGA 开发板库。
不会加载任何英特尔(R) FPGA 设备。
请联系您的电路板供应商或参阅编程指南的 "Linking Your Host Application to the Khronos ICD Loader Library" 部分以手动设置 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 Found\n");
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(可安装客户端 Driver)配置不正确。这可能是由多种因素(独立)引起的:
- Old/outdated 图形驱动程序
- 系统损坏update/Registry编辑
最可靠的建议是更新(或者,作为最后的手段,重新安装)您的图形驱动程序。除非您的 GPU/iGPU 太旧而无法使用 OpenCL 驱动程序,否则这应该会正确设置所有内容。
由于您使用的是 MSVC,我还建议您下载 Intel(或 AMD,如果是 AMD CPU)提供的 OpenCL SDK,因为这不仅可以确保您拥有大多数 up-to-date headers 和与 OpenCL 关联的实用程序,它还为 OpenCL 安装 CPU ICD,为您提供额外的测试平台。
我目前使用的是使用 AMD Radon R5 显卡的 Lenovo Yoga 510。 OpenCL 可以处理它,但是,当我 运行 我的代码查询和获取平台详细信息时,会返回可用平台的总数,但如果给出无法打开该平台的错误。请参阅下面的错误消息。
错误:无法打开平台密钥 SOFTWARE\Intel\OpenCL\Boards 以在 运行 时加载板库。 在编译主机代码时 link 到开发板库,或者参考开发板供应商的文档,了解如何安装开发板库,以便它可以在 运行 时间加载。
无法关闭平台密钥(空),忽略 警告:找不到任何英特尔(R) FPGA 开发板库。 不会加载任何英特尔(R) FPGA 设备。 请联系您的电路板供应商或参阅编程指南的 "Linking Your Host Application to the Khronos ICD Loader Library" 部分以手动设置 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 Found\n");
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(可安装客户端 Driver)配置不正确。这可能是由多种因素(独立)引起的:
- Old/outdated 图形驱动程序
- 系统损坏update/Registry编辑
最可靠的建议是更新(或者,作为最后的手段,重新安装)您的图形驱动程序。除非您的 GPU/iGPU 太旧而无法使用 OpenCL 驱动程序,否则这应该会正确设置所有内容。
由于您使用的是 MSVC,我还建议您下载 Intel(或 AMD,如果是 AMD CPU)提供的 OpenCL SDK,因为这不仅可以确保您拥有大多数 up-to-date headers 和与 OpenCL 关联的实用程序,它还为 OpenCL 安装 CPU ICD,为您提供额外的测试平台。