AFAIK它的工作方式与此一样 ICD加载程序扩展名
由于ICD加载器只是一个可选的OpenCL扩展,我想知道OpenCL如何在没有ICD加载器的情况下工作。当然,在这种情况下,您不能使用多个供应商'同一个应用程序同时实现,但是用于链接应用程序的是什么?如果开发人员将其与特定实现相关联,则无法再实现OpenCL的主要目标,即可移植性。
供应商是否必须提供彼此兼容的动态库?这意味着,如果开发人员链接到供应商A的动态库,如果目标系统安装了供应商B的动态库,那么在运行时它也可以工作吗?
这有记录吗?
答案 0 :(得分:1)
对于Windows OpenCL应用程序,您的应用程序包括OpenCL.h(或cl.h)以及OpenCL.lib的链接,OpenCL.lib是OpenCL.dll的静态库包装器,驻留在Windows System32文件夹中。您不知道它是ICD还是供应商驱动程序。在过去的许多年里,它一直是ICD,但在此之前(对于早期的OpenCL实现),它是一个供应商驱动程序。 ICD的美妙之处在于应用程序不需要知道,您只需调用OpenCL API即可。只有当它是ICD时,平台的数量才会大于1。