在Nvidia Quadro FX 880上使用乱序执行

时间:2013-03-31 06:16:34

标签: opencl

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

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

我不确定是否可以做所有这些事情......以及错误或正确......所以我只需要确认......!但如果不是这样,请建议另一种方式......!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

FX880M是一款计算能力为1.2的设备。它不支持同时/并发内核执行,只支持执行副本重叠。您可以创建一个乱序执行的命令队列,但它不会产生您要求的效果。