我想CUDA代碼轉化爲OpenCL和現在我堅持這些函數/變量:什麼是CUDA的__syncthreads()和blockIdx.x的OpenCL模擬器?
__syncthreads()
blockIdx.x
我想CUDA代碼轉化爲OpenCL和現在我堅持這些函數/變量:什麼是CUDA的__syncthreads()和blockIdx.x的OpenCL模擬器?
__syncthreads()
blockIdx.x
其實我發現我自己!這裏是一個有用的文章:http://www.netlib.org/utk/people/JackDongarra/PAPERS/parcocudaopencl.pdf
答案是:用於__syncthreads()的使用屏障(CLK_LOCAL_MEM_FENCE);對於blockIdx.x使用get_group_id(0)!
__syncthreads()
- >barrier(_)
但一定要了解barrier(CLK_LOCAL_MEM_FENCE)
和barrier(CLK_GLOBAL_MEM_FENCE)
檢查這個question或本documentation更多信息之間的差異。
blockIdx.x
- >get_group_id(0)
,這將給你的組/塊的第一個/ x維度ID