【问题标题】:Can i take a control of particular cluster in my GPU?我可以控制我的 GPU 中的特定集群吗?
【发布时间】:2013-01-26 11:57:42
【问题描述】:

我是 OpenCL 的新手。例如假设我的 GPU 架构是这样的:

多处理器数量:14

经纱尺寸:32

现在我想做任务并行。我有 14 个流式多处理器

1) 我可以同时运行 14 个不同的任务吗??

2)如果是这样,怎么办??

3)如何提及全局id、组id、本地id等等。

用例子清楚地解释(有一些线程数)

提前谢谢..:)

【问题讨论】:

    标签: kernel opencl gpu


    【解决方案1】:

    GPU 与 CPU 不同。虽然 CPU 可以在“任务并行”模式下运行,这意味着它们可以在每个内核上运行不同的代码。然而,GPU 是“数据并行”并且是 SIMT(单指令多线程)。

    这一切都意味着您一次只能运行一个内核,但该内核将在所有内核上执行,并且每个内核将同时操作一个数据片。

    This question 及其接受的答案有更多描述 SIMT 的信息,并且有很多有用的信息,我不会在这里重复。

    在 GPU 上获得任务并行性的唯一方法是实际拥有多个 GPU/设备。

    从技术上讲,当您使用 clCreateCommandQueue 创建命令队列时,OpenCL API 支持使用 CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE 一次执行多个内核。不能保证内核是同时执行的,但是,在这种模式下,我猜所有的 GPU OpenCL 实现只会一个接一个地执行每个内核。如果您使用基于 CPU 的 OpenCL 实现,情况可能并非如此,您可能会同时执行内核(我自己没有尝试过)。

    【讨论】:

    • 感谢您的回答.. 有意义.. 那么 clEnqueueTask 在无序执行模式中的用途是什么.. 在我看来,它们至少会以最小的时间间隔同时运行,但不是按顺序运行。 。 我对吗?所以我们也可以在 GPU 上执行任务并行化。查看此链接(在底部任务并行图)..fixstars.com/en/opencl/book/OpenCLProgrammingBook/…
    • @Fakruddeen 如果硬件支持任务并行,那么 OpenCL 可能会同时执行内核,但当前的 GPU 硬件设计无法做到这一点。
    猜你喜欢
    • 2021-06-06
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    相关资源
    最近更新 更多