因此,我正在用OpenCL实现Kmeans聚类算法,该算法使用通道:这是Intel针对OpenCL的FPGA SDK的一项功能。
为了简洁起见,这意味着我必须将两个内核放入不同的命令队列中,以便它们可以同时运行。我想在每个迭代中将cl_mem
缓冲区从一个内核复制到另一个内核(这是针对4个集群的,所以在较小的方面),其中一部分需要我调用clEnqueueCopyBuffer
。这需要向函数传递命令队列,但是我不知道它是否要复制缓冲区的队列或复制缓冲区的队列。
这是OpenCL规范对command_queue参数的全部说明:
我可以确认这些内核实际上是在相同的上下文中。将在其中排队复制命令的命令队列。与
command_queue
,src_buffer
和dst_buffer
关联的OpenCL上下文必须相同。
答案 0 :(得分:2)
您可以使用任何一个命令队列,但是您需要从复制操作中获取一个事件,以传递给另一个命令队列中的另一个内核队列。否则,它可能在复制完成之前开始。