在运行时收到 "cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)" 警告
Getting "cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)" warning during runtime
关注 and this posts, I'm compiling the main.c
code on this GitHub Gist。
运行 CMake 命令find_package(OpenCL REQUIRED)
我明白了:
-- Looking for CL_VERSION_2_2 - found
-- Found OpenCL: C:/Program Files (x86)/IntelSWTools/system_studio_2020/OpenCL/sdk/lib/x86/OpenCL.lib (found version "2.2")
表明找到了 OpenCL SDK 版本 2.2。这与我从 clinfo
工具中得到的结果相矛盾,该工具检测到英特尔 SDK/platforms 的 1.2 OpenCL。现在当 运行 我得到的可执行文件时:
cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
我的问题是:
- 为什么我从 CMake 和
clinfo
获得了两个不同版本的 OpenCL?
- 我在运行时收到的警告是什么以及如何解决?
P.S. Here 是 cmake .. --debug-find
的输出
SDK 中的 OpenCL 版本和 clinfo 报告的版本是 2 个不同的东西:
- clinfo 报告您的 GPU 支持的 OpenCL 版本
- SDK OpenCL 版本是 SDK 支持的最高版本
现在,如果您在程序中使用 OpenCL 2.0,并且您的 GPU 支持 OpenCL 1.2,那么我怀疑其中一个 CL 函数会报告错误,或者程序会出现未定义的行为。您可以使用 #define CL_TARGET_OPENCL_VERSION <version>
在您的程序中设置目标 OpenCL 版本,例如
#define CL_TARGET_OPENCL_VERSION 120
然后 API 以上目标版本应该不可用。
关注 main.c
code on this GitHub Gist。
运行 CMake 命令find_package(OpenCL REQUIRED)
我明白了:
-- Looking for CL_VERSION_2_2 - found -- Found OpenCL: C:/Program Files (x86)/IntelSWTools/system_studio_2020/OpenCL/sdk/lib/x86/OpenCL.lib (found version "2.2")
表明找到了 OpenCL SDK 版本 2.2。这与我从 clinfo
工具中得到的结果相矛盾,该工具检测到英特尔 SDK/platforms 的 1.2 OpenCL。现在当 运行 我得到的可执行文件时:
cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
我的问题是:
- 为什么我从 CMake 和
clinfo
获得了两个不同版本的 OpenCL? - 我在运行时收到的警告是什么以及如何解决?
P.S. Here 是 cmake .. --debug-find
SDK 中的 OpenCL 版本和 clinfo 报告的版本是 2 个不同的东西:
- clinfo 报告您的 GPU 支持的 OpenCL 版本
- SDK OpenCL 版本是 SDK 支持的最高版本
现在,如果您在程序中使用 OpenCL 2.0,并且您的 GPU 支持 OpenCL 1.2,那么我怀疑其中一个 CL 函数会报告错误,或者程序会出现未定义的行为。您可以使用 #define CL_TARGET_OPENCL_VERSION <version>
在您的程序中设置目标 OpenCL 版本,例如
#define CL_TARGET_OPENCL_VERSION 120
然后 API 以上目标版本应该不可用。