gpt4 book ai didi

c - 如果没有 ICD 加载程序扩展,OpenCL 如何工作?

转载 作者:太空狗 更新时间:2023-10-29 17:25:58 27 4
gpt4 key购买 nike

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

或者供应商是否必须提供相互兼容的动态库?这意味着,如果开发者链接到供应商 A 的动态库,在运行时它也可以工作,如果目标系统安装了供应商 B 的动态库?

是否有任何记录?

最佳答案

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

关于c - 如果没有 ICD 加载程序扩展,OpenCL 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613394/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com