首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有ICD加载程序扩展,OpenCL是如何工作的?

没有ICD加载程序扩展,OpenCL是如何工作的?
EN

Stack Overflow用户
提问于 2016-06-03 11:38:01
回答 1查看 1.6K关注 0票数 7

AFAIK与ICD加载程序扩展类似:

  • ICD (可安装客户端驱动程序)=专有的OpenCL实现= OpenCL运行时;您可以在amdocl.so/dll或IntelOpenCL.so/dll等文件中找到它。
  • ICD加载器(在OpenCL.dll/libOpenCL.so中):用于管理同一个系统中的多个ICD
    • 它与OpenCL应用程序链接,并充当ICD的占位符。
    • 应用程序调用ICD加载程序库导出的函数。但是,ICD加载程序只是根据所选的OpenCL平台决定要重定向到哪个ICD。
    • ICD加载器机制是必要的,因为供应商的OpenCL实现通常只支持该供应商的硬件,但是您可能希望在同一个OpenCL应用程序中使用来自不同供应商的多个设备。

由于ICD加载程序只是一个可选的OpenCL扩展,我想知道没有ICD加载器OpenCL是如何工作的。当然,在这种情况下,您不能同时在同一个应用程序中使用多个供应商的实现,但是用于链接应用程序的是什么呢?如果开发人员将其与特定的实现相关联,那么OpenCL的主要目标--可移植性--就无法再实现。

还是供应商必须提供彼此兼容的动态库?这意味着,如果开发人员链接到供应商A的动态库,那么在运行时,如果目标系统安装了供应商B的动态库,它也会工作吗?

有记载的地方吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-04 03:27:04

对于Windows OpenCL应用程序,您的应用程序包括OpenCL.h (或cl.h)和指向OpenCL.lib的链接,后者是驻留在Windows System32文件夹中的OpenCL.dll的静态库包装器。你不知道是ICD还是供应商驱动。在过去的许多年里,它一直是一个ICD,但在此之前(对于非常早期的OpenCL实现),它是一个供应商驱动程序。ICD的优点是应用程序不需要知道,您只需调用OpenCL API即可。只有当它是ICD时,平台的数量才会大于1。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37613394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档