次のプロパティを持つ NVIDIA GT650M を持っています。
( 2) Multiprocessors, (192) CUDA Cores/MP: 384 CUDA Cores
Maximum number of threads per multiprocessor: 2048
ストリーミング マルチプロセッサ (SM) と実際のマルチプロセッサとの間の混乱から抜け出しました。SM とマルチプロセッサは別物ですよね?たとえば、ビジュアル プロファイラーを使用して、1 スレッドの 1 ブロックで起動されたときに待機するだけで 370 ミリ秒続くダミー カーネルを取得しました。1 つの SM で 1024 スレッドの 4 ブロックで起動できますが、それでも 370 ミリ秒続きます。タスクはチップの 2 つのマルチプロセッサを使用し、それぞれが 2048 の同時スレッドを使用するため、これは正常です (5 ブロック x 1024 を使用するとすぐに、通常は 740ms かかります)。同様に、4 つの SM を使用して 1024 スレッドの 1 ブロックを 4 回同時に起動できますが、それでも 370 ミリ秒かかります。
質問の最初の部分は、SM とマルチプロセッサを混同しないようにするためのものですか? ここのような回答でも時々見られるように: CUDA - マルチプロセッサ、ワープ サイズ、およびブロックあたりの最大スレッド数: 正確な関係は何ですか? その結果、マルチプロセッサを介してタスクがスケジュールされる方法を明示的に制御することはできません。なぜなら (私の知る限り) ランタイム関数がそれを許可していないからです。では、2 つのマルチプロセッサとマルチプロセッサあたり 2048 スレッドのカード、またはそれぞれ 1024 スレッドの 4 つのマルチプロセッサを備えた別のカードがある場合、特定のプログラムは同じように実行されますか?
2 つ目は、どの用途に適しているか、コア数の少ないマルチプロセッサを増やすか、その逆かを知りたかったことです。これまでのところ、私の理解では、(マルチプロセッサーごとの特定の最大スレッドに対して) 少数のコアを持つより多くのマルチプロセッサーは、少数/単純な操作でより大規模な並列処理に適していると言えます。私がほとんど知らないこと)ロード/ストア操作と複雑な数学関数専用のALUが増えるため、スレッドごとにより多くの操作を必要とするカーネルにより適していますか?