デバイスGeForceGTX680
プログラムでは、カーネル内で処理される非常に長い配列があります(約1 GBの整数)。必要に応じて、配列はいくつかのオーバーラップ(ブロック間のオーバーラップはk)でブロックに順番に分割されます。各ブロックのサイズを固定しました(ブロックサイズはm)。これで、配列は(0、m)(mk、(mk)+ m)、....)の順に分割されます。
上記の計算によると、私のプログラムに必要なブロックの数はおよそ(1GB / m)になります。GPUではブロックの総数が制限されているので、どうすれば効果的にそれを行うことができますか?カーネル内にループがない状態で、ホストからカーネルを繰り返し呼び出す必要がありますか?または、カーネルを1回呼び出してから、カーネル内で複数回ループする必要がありますか?または、合計ブロック数=(1 GB / m)でカーネルを1回だけ呼び出す必要がありますか?
このプログラムのブロック数の最良の値として何を置くことができ、どのような方法がありますか?