什么是CUDA的__syncthreads()和blockIdx.x的OpenCL模拟?

Vla*_*mir 6 parallel-processing cuda opencl

我正在尝试将CUDA代码转换为OpenCL,现在我仍然坚持使用这些函数/变量:

  • __syncthreads()
  • blockIdx.x

Vla*_*mir 9

其实我是靠自己找到的!这是一篇有用的文章:http://www.netlib.org/utk/people/JackDongarra/PAPERS/parcocudaopencl.pdf

答案是:对于__syncthreads()使用barrier(CLK_LOCAL_MEM_FENCE); 对于blockIdx.x,请使用get_group_id(0)!


小智 5

__syncthreads()- > barrier(_)但请务必了解它们之间的区别barrier(CLK_LOCAL_MEM_FENCE)barrier(CLK_GLOBAL_MEM_FENCE) 查看此问题或本文档以获取更多信息.

blockIdx.x- > get_group_id(0)将为您提供组/块的第一个/ x维度ID