0

我可以创建 pthread 吗?我可以在每个 pthread 中创建 opencl 环境并调用相同的内核。我想要做的是在同一设备上并行启动 opencl 内核。这可能吗?

谢谢回答。

4

2 回答 2

6

乍一看,这似乎是不必要的。

当您启动 OpenCL 内核时,使用 clEnqueueNDRange() API 调用,您可以启动任意数量的内核;每个都作为同一设备上的自己的线程。OpenCL 模型是一个上下文/命令队列可以在 GPU 上启动 100 到 1000 个轻量级内核线程。

于 2012-07-17T03:07:08.263 回答
1

正如 Tim 所指出的,当 OpenCL 支持这么多线程/内核时,你为什么要使用 opencl 进入 pthreads。与 pthread 相比,GPU 上的其他线程的重量非常轻。Pthread 成本高昂,并且涉及大量上下文切换开销,这实际上可能会显着降低您的性能。

但是使用相同的命令队列启动许多内核将按顺序执行内核。每个内核应该有不同的命令队列。我相信单一上下文不应该是并行启动内核的问题......

于 2012-07-17T05:01:13.253 回答