【CUDA】ブロック・スレッドを2次元で使う

CUDA入門

CUDAのスレッドは2次元で持つことができるので、その使い方の解説をします。

以下に紹介する処理で、スレッドを2次元で利用するコーディングの例を示します。

処理内容

別の記事でも紹介しましたが、以下のような処理を作成します。

・ 8000×8000のint型 二次元配列で、ある要素を中心として、その周辺3x3の平均値を求める。
・結果を別の二次元配列に保存する。
・この処理を全要素に行う。

コーディング例

カーネルを呼び出す側の関数になります。

こちらはカーネルです。

int idx = blockDim.x * blockIdx.x + threadIdx.x;
int idy = blockDim.y * blockIdx.y + threadIdx.y;

の記述で、自分のスレッドのx,yインデックスを計算しています。
おまじないのようなものなので覚えておきましょう。

マウスコンピューター/G-Tune