web-dev-qa-db-ja.com

CUDAで可能な最大ブロック数はいくつですか?

理論的には、グリッドの直径ごとに65535ブロック、最大65535 * 65535 * 65535を使用できます。

私の質問は次のとおりです。このkernel<<< BLOCKS,THREADS >>>()(dim3オブジェクトなし)のようなカーネルを呼び出す場合、BLOCKSで使用できる最大数はいくつですか?

私のアプリケーションでは、192000に設定し、正常に動作しているように見えました...問題は、使用したカーネルが巨大な配列の内容を変更することです。そのため、配列の一部をチェックして正常に見えましたが、カーネルが他の部分で奇妙に動作したかどうかはわかりません。

記録のために、私は2.1 GPU、GTX 500tiを持っています。

13
STE

計算能力3.0以上では、最大2^31 - 1 x次元のブロック、およびy次元とz次元の最大65535ブロック。表H.1を参照してください。 CUDAの計算機能ごとの機能サポート Cプログラミングガイドバージョン9.1

Pavanが指摘したように、グリッド構成にdim3を指定しない場合は、x次元のみを使用するため、ここでは次元ごとの制限が適用されます。

12
perreal

誰かがグーグル検索に基づいてここに着陸した場合(私がちょうどしたように):

この質問があったので、Nvidiaは仕様を変更しました。計算機能3.0以降では、スレッドブロックのグリッドのx次元は、最大2'147'483'647または2 ^ 31-1

現在を参照してください: 技術仕様

12
Marco

一次元で65535。これが完全な テーブル

2
jwdmsd

ラップトップ(MX130)を手動でチェックしましたが、#blocks> 678 * 1024 +651のときにプログラムがクラッシュします。各ブロックに1つのスレッドがあり、さらに1つのブロックを追加すると、SegFaultが発生します。カーネルコードにはグリッドがなく、線形構造のみでした。

0
Varun