同时启动内核时要传递给clEnqueueCopyBuffer的哪个command_queue?

时间:2018-06-21 16:25:17

标签: opencl fpga

因此,我正在用OpenCL实现Kmeans聚类算法,该算法使用通道:这是Intel针对OpenCL的FPGA SDK的一项功能。 为了简洁起见,这意味着我必须将两个内核放入不同的命令队列中,以便它们可以同时运行。我想在每个迭代中将cl_mem缓冲区从一个内核复制到另一个内核(这是针对4个集群的,所以在较小的方面),其中一部分需要我调用clEnqueueCopyBuffer。这需要向函数传递命令队列,但是我不知道它是否要复制缓冲区的队列或复制缓冲区的队列。

这是OpenCL规范对command_queue参数的全部说明:

  

将在其中排队复制命令的命令队列。与command_queuesrc_bufferdst_buffer关联的OpenCL上下文必须相同。   

  我可以确认这些内核实际上是在相同的上下文中。

1 个答案:

答案 0 :(得分:2)

您可以使用任何一个命令队列,但是您需要从复制操作中获取一个事件,以传递给另一个命令队列中的另一个内核队列。否则,它可能在复制完成之前开始。