我正在使用 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....!
我不确定所有这些事情是否可以完成......以及什么是错或对......所以我只需要确认......!但如果不是这种方式,请建议另一种方式......!