【问题标题】:What is a host in opencl?opencl 中的主机是什么?
【发布时间】:2011-06-26 16:42:38
【问题描述】:

我现在开始学习openCL。我现在正在做教程,但我无法真正理解主持人的想法,谁能解释一下。谢谢

【问题讨论】:

    标签: opencl host


    【解决方案1】:

    OpenCL 是一个系统,旨在支持现代图形芯片 (GPU) 可以执行的大规模并行处理。在 OpenCL 范例中,“主机程序”是执行基于 GPU 的应用程序配置的外部控制逻辑。该主机程序通常会在通用 CPU 上运行(例如大多数台式 PC 中与 x86 兼容的主处理器)。 OpenCL 程序还包含一个或多个“内核”函数,这些函数设计用于在 GPU 上并行执行。

    一旦所有的缓冲区和内核都配置好了,宿主程序就会调用类似的东西

    EnqueueNDRangeKernel()
    

    这将开始在 GPU 上执行内核。

    根据您的目标平台,情况可能会有所不同。例如,OpenCL 并不特别要求 GPU 的存在。 In 可以将内核作为多个线程在运行主机程序的同一 CPU 上执行。

    OpenCL 命名法总结:

    • Host - 用于配置内核执行的主 CPU
    • 设备 - 包含将执行内核(GPU)的处理单元的组件

    【讨论】:

    • 那么,如何在执行 clGetPlatformIDs 时获得多个平台? (看来我们是在单主机上工作)
    • 使用 clGetPlatformIDs 您可以获得所有可用平台的列表,使用 clGetDeviceIDs 您可以获得平台所有可用设备的列表。
    • 可以说OpenCL API 过于笼统了。我不知道为什么 clGetPlatformIDs() 会返回超过 1 个平台——也许这对 SO 来说是另一个好问题。让 OpenCL 程序正常工作涉及大量样板代码。开始使用 OpenCL 的最佳方式可能是找到一个可行的示例,而不是尝试从头开始构建。
    • 平台:主机加上由 OpenCL 框架管理的设备集合,允许应用程序共享资源并在平台中的设备上执行内核。 OpenCL 规范:khronos.org/registry/cl/specs/opencl-1.1.pdf
    • 您可以轻松拥有多个平台 - 例如带有集成显卡和独立 GPU 的 Intel CPU
    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2012-09-05
    • 2018-11-25
    相关资源
    最近更新 更多