如何使特定线程等待,直到其他线程在OpenCL中计算它所需的值

时间:2012-03-09 05:56:23

标签: multithreading opencl

如何阻止特定线程,直到其他线程在OpenCL中计算它所需的值。

1 个答案:

答案 0 :(得分:1)

如果“thread”指的是主机代码,请使用设备clEnqueueReadBuffe(buffer,/*wait*/CL_TRUE,...)的阻止读取。如果您使用无序执行创建了队列,请将事件附加到计算它的内核并等待该事件。

如果您需要等待设备本身,请先打开内核中的get_*_id(...)并使用barrier(CLK_GLOBAL_MEM_FENCE),以便工作组中的其他工作项 (不是所有工作项目)等待那一点。如果您需要所有内核的值,那么在内核之前使用{em}来运行的单线程内核,并将值传递给缓冲区。