約 16384 スレッドを必要とするアプリを実行しています。しかし、実験の結果、CUDA が特定の数を超えるスレッドを起動できないことがわかりました。そのため、特に私のアプリでは、毎回 14337 スレッドが起動されますが、それを超えるスレッドは起動されません。
理由は何ですか?
システム: テスラ C2070 Linux 32 ビット
約 16384 スレッドを必要とするアプリを実行しています。しかし、実験の結果、CUDA が特定の数を超えるスレッドを起動できないことがわかりました。そのため、特に私のアプリでは、毎回 14337 スレッドが起動されますが、それを超えるスレッドは起動されません。
理由は何ですか?
システム: テスラ C2070 Linux 32 ビット
カーネルの起動方法について、もう少し具体的に教えていただけますか? これは単なる推測ですが、スレッド ブロックが大きすぎるように思えます。すでにご存知かもしれませんが、1 つのスレッド ブロックで 16k のスレッドを開始することはできません。たぶん、この SO スレッドが役に立ちます。GPU のブロックあたりのスレッドの最大数は 1024 にする必要があるため、スレッドを複数のスレッド ブロックに編成する必要があります。また、14k スレッドのみが起動されていることを確認する方法も興味深いでしょう (一部のソース コードが役立ちます)。