8

CUDA コードを OpenCL に変換しようとしていますが、現在、これらの関数/変数にこだわっています。

  • __syncthreads()
  • blockIdx.x
4

3 に答える 3

11

実は自分で見つけました!ここに役立つ記事があります: http://www.netlib.org/utk/people/JackDongarra/PAPERS/parcocudaopencl.pdf

答えは次のとおりです。__syncthreads() の場合は、barrier(CLK_LOCAL_MEM_FENCE) を使用します。blockIdx.x には get_group_id(0) を使用してください!

于 2013-03-05T13:06:14.530 に答える
6

__syncthreads()->しかし、詳細については、 この質問またはこのドキュメントbarrier(_)の違いを理解し、確認してbarrier(CLK_LOCAL_MEM_FENCE)ください。barrier(CLK_GLOBAL_MEM_FENCE)

blockIdx.x->get_group_id(0)グループ/ブロックの最初/x 次元の ID が表示されます

于 2013-03-05T15:57:21.867 に答える
0

Web には、CUDA を OpenCl に移植するのに役立つページが多数あります (たとえば、こちら)。「バリア」についてここで指摘しているようbarrier(CLK_LOCAL_MEM_FENCE)に、barrier(CLK_GLOBAL_MEM_FENCE)主に違いは、ローカル(CUDAで共有)メモリと2 番目は、グローバル メモリを操作している場合です。ケースに適したものを使用してください。

于 2016-09-08T15:39:04.817 に答える