问题1
如果我想构建一个支持OpenCL的应用程序,我是否可以保证我的供应商的OpenCL.lib
实现能够与其他供应商的所有设备一起使用?如果是,实施之间有什么区别?
问题2
是否可以在同一个应用程序中使用不同的OpenCL版本?例如,AMD发布了OpenCL 2.0
支持的预览驱动程序。另一方面,名为Nvidia的可爱公司仍在试图忽略OpenCL 1.1
之后的所有事情。如果我能用不同的版本编写特定于平台的代码,那就太好了。
答案 0 :(得分:4)
1:在Windows上,OpenCL.lib是OpenCL.dll的静态包装器,它是ICD加载器,并公开所有可用平台。它由Khronos提供,由OpenCL平台供应商重新分发。所以继续并链接到它;它将适用于所安装的任何内容(尽管如果没有安装,您的应用程序将无法运行,因为它无法找到OpenCL.dll;这可以通过其他方式解决)。
2:是的。只要ICD加载程序是最新的,您就可以在较新的平台/设备上使用较新的API。只是不要在旧设备上使用新的API;会崩溃或更糟。