正确检查OpenCL版本兼容性?

时间:2014-03-15 09:29:49

标签: opencl

我的应用程序是OpenCL 1.1兼容的,我想检查每个设备是否都有该版本的驱动程序。有两种方法:

  1. clGetDeviceInfo() - > CL_DEVICE_VERSION
  2. clGetPlatformInfo() - > CL_PLATFORM_VERSION
  3. 我有以下怀疑:

    • 我不明白为什么方法1被提供,因为方法2似乎是 对我有正确的方法吗?
    • 平台提供的版本是否可能不会 是否与来自同一平台的设备提供的版本匹配?
    • 什么是clGetDeviceInfo :: CL_DRIVER_VERSION?
    • 从所有这些选项中我应该使用哪个选项来检查设备 可以运行我的OpenCL 1.1代码吗?

1 个答案:

答案 0 :(得分:5)

OpenCL中有一些具有硬件要求的功能。这意味着即使特定供应商的OpenCL实施(平台)支持OpenCL版本,设备也可能不支持。因此,CL_DEVICE_VERSIONCL_PLATFORM_VERSION查询返回的版本完全有可能不同。

当OpenCL 2.0实施开始出现时,这可能会更频繁地发生,因为市场上有大量硬件没有对OpenCL 2.0功能的必要支持。想象一个系统有两个来自 Vendor X 的设备:一个可以运行OpenCL 2.0的新 Device A ,以及一个更老的 Device B “T。在这种情况下,平台版本可能是OpenCL 2.0,但设备版本可能是 Device A 的OpenCL 2.0和的OpenCL 1.2 >设备B

CL_DRIVER_VERSION用于获取实施的供应商特定版本号。此数字可以使用供应商用于跟踪不同软件版本的任何版本编号系统,并且完全独立于OpenCL版本号(尽管某些供应商也可能在此处包含OpenCL版本)。

因此,为了确保设备和平台都支持您所需的OpenCL版本,您只需要检查CL_DEVICE_VERSION