0

我正在使用 Quadro FX 880 卡。在我的图像分割代码中,我将图像分为 4 个部分(即如果有 4000 个像素,则每个部分为 1000 个像素)。我的代码中有 8 个内核......其中前 4 个将并行执行,接下来的四个将再次并行执行,但在前四个内核执行之后。如果我对所有 8 个内核使用相同的命令队列并为前四个内核中的每一个指定一个 clEnqueueNDRangekernel 命令并且我在创建命令队列时提到 OUT_OF_ORDER 参数,这是否可能......?如果这是可能的,如何并行执行接下来的四个内核,即在前四个内核之后执行..?我可以在前四个内核之后给出一个 clWaitForEvents 命令,然后指定接下来的四个内核.. ? 这将保证前四个内核并行执行,接下来的四个内核在它们之后但并行执行..?

我认为 clEnqueueTask 会使我的代码变慢,因为我在每个内核中有大约 1000 个像素,而 clEnqueueTask 允许 gobal_workitem_size 和 local_work_item_size 仅为 1....!

我不确定所有这些事情是否可以完成......以及什么是错或对......所以我只需要确认......!但如果不是这种方式,请建议另一种方式......!

4

2 回答 2

1

较新的设备应该支持在多个命令队列上并行运行多个内核。

于 2014-01-30T07:49:24.857 回答
0

FX880M 是一款计算能力为 1.2 的设备。它不支持同时/并发内核执行,仅支持执行复制重叠。您可以创建一个无序执行的命令队列,但它不会产生您所询问的效果。

于 2013-03-31T07:40:31.903 回答