理論的には、グリッドの直径ごとに65535ブロック、最大65535 * 65535 * 65535を使用できます。
私の質問は次のとおりです。このkernel<<< BLOCKS,THREADS >>>()
(dim3オブジェクトなし)のようなカーネルを呼び出す場合、BLOCKSで使用できる最大数はいくつですか?
私のアプリケーションでは、192000に設定し、正常に動作しているように見えました...問題は、使用したカーネルが巨大な配列の内容を変更することです。そのため、配列の一部をチェックして正常に見えましたが、カーネルが他の部分で奇妙に動作したかどうかはわかりません。
記録のために、私は2.1 GPU、GTX 500tiを持っています。
計算能力3.0以上では、最大2^31 - 1
x次元のブロック、およびy次元とz次元の最大65535ブロック。表H.1を参照してください。 CUDAの計算機能ごとの機能サポート Cプログラミングガイドバージョン9.1 。
Pavanが指摘したように、グリッド構成にdim3を指定しない場合は、x次元のみを使用するため、ここでは次元ごとの制限が適用されます。
誰かがグーグル検索に基づいてここに着陸した場合(私がちょうどしたように):
この質問があったので、Nvidiaは仕様を変更しました。計算機能3.0以降では、スレッドブロックのグリッドのx次元は、最大2'147'483'647または2 ^ 31-1。
現在を参照してください: 技術仕様
一次元で65535。これが完全な テーブル
ラップトップ(MX130)を手動でチェックしましたが、#blocks> 678 * 1024 +651のときにプログラムがクラッシュします。各ブロックに1つのスレッドがあり、さらに1つのブロックを追加すると、SegFaultが発生します。カーネルコードにはグリッドがなく、線形構造のみでした。