私はいくつかのコードをcudaカーネルに作りたいと思っています。見よ:CUDA:ループカーネルに埋め込まれています
for (r = Y; r < Y + H; r+=2)
{
ch1RowSum = ch2RowSum = ch3RowSum = 0;
for (c = X; c < X + W; c+=2)
{
chan1Value = //some calc'd value
chan3Value = //some calc'd value
chan2Value = //some calc'd value
ch2RowSum += chan2Value;
ch3RowSum += chan3Value;
ch1RowSum += chan1Value;
}
ch1Mean += ch1RowSum/W;
ch2Mean += ch2RowSum/W;
ch3Mean += ch3RowSum/W;
}
はこれは、一つの手段を計算するRowSumsと1を計算し、そしてどのように私は私のループインデックスはゼロから始まり、Nで終了いけないという事実を処理する必要があり、2つのカーネルに分割すべきか?
1つの質問を選択しようとすると、正解を選択するのが難しくなります。しかし、あなたの2番目の質問については、具体的に答えるのは難しいですが、カーネルを開発するにはもっと遠くになると思います。 – jmilloy
ブロックごとにHブロックとWスレッドのような設定でカーネルを起動する必要があります。次に、カーネル内のblockIdxとthreadIdxの値からrとcを計算します。しかし、あなたがしたいと思う...私はこれを私の答えに入れようとしました... – jmilloy
それは2つの質問のように見えましたが、私は2つの質問としてそれを書こうとした場合、文脈がそこにあるとは思わなかった – Derek