以下 这个 和 这个 的帖子,我正在整理 main.c
码上 这个GitHub的Gist.
运行CMake命令 find_package(OpenCL REQUIRED)
我得到了这个。
-- 寻找CL_VERSION_2_2 - 找到 -- 找到OpenCL: C:Program Files (x86)IntelSWToolssystem_studio_2020OpenCLsdklibx86OpenCL.lib (找到版本 "2.2")
表示发现了OpenCL SDK 2.2版本。这与我从以下方面得到的信息相矛盾 clinfo
工具,检测到一个1.2的OpenCL for Intel's SDKplatforms。现在当运行可执行文件时,我得到的是
cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. 默认为220 (OpenCL 2.2)
我的问题是:为什么我得到两个不同版本的OpenCL。
clinfo
?P.S. 这里是 的输出。cmake .. --debug-find
SDK中的OpenCL版本和clinfo报告的OpenCL版本是两码事。
如果你在程序中使用OpenCL 2.0,而你的GPU支持OpenCL 1.2,那么我怀疑其中一个CL函数会报错,或者程序会有未定义的行为。你可以在你的程序中设置目标OpenCL版本,使用 #define CL_TARGET_OPENCL_VERSION <version>
例如
#define CL_TARGET_OPENCL_VERSION 120
然后目标版本以上的API就不应该出现了。