2017-08-15 12 views
0

私のGPUは、コンピューティング機能のバージョンが2.xのNVIDIA GeForce GT440です。 NVIDIAの公式CUDA_C_Programming_Guideは、しかしリミット2.OpenGLとCUDAの不一致最大スレッド数

リミット1にOpenGLのコンピュータシェーダのうちの2つをマルチプロセッサ= 1536

あたりの常駐スレッドの最大数をブロック= 1024
あたりのスレッドの最大数を指摘します実装限界1536

=

リミット3 GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONSあります

私の質問は
です。1.なぜ限界1が限界2と制限3に等しくないのですか?
2.実際のスレッド/ブロック(呼び出し/ワークグループ)は1024か1536か?

+0

"2"は実行中のスレッドで、ハードウェアに依存していません(したがって、2つのブロックを同時に計算できます)。 –

+1

ブロックあたりの実際のスレッド数はCUDAで1024です。これは、1536番号とは別のハードウェア制限です。マルチプロセッサでは複数のブロックを常駐させることができるため、マルチプロセッサは単一のブロックからのスレッドより多くのスレッドをサポートできます。 GL制限がLimit 2に接続されていることは明らかです。制限1と2の違いについては、ここで多くの質問で議論されます。 –

+0

CUDAのブロックあたりのスレッドの最大数は1024です。ただし、OpenGLでの計算ワークグループ呼び出しの最大値は1536です。これらは異なるようです。しかし、私はCUDA **ブロック**はOpenGL ** Work Group **に相当し、2つのmaximun値は同じであるべきだと思います。私は正しい? –

答えて

2

なぜ制限1が制限2と制限3に等しくないのですか?

同じものではありませんので、ブロックはCUDAの論理構造であり、最大1024個のスレッドに制限されています。しかし、マルチプロセッサは複数のブロックを同時に実行できます(ハードウェアの場合は最大8個まで)。したがって、SMはハードウェアに最大1536の同時スレッドを持つことができますが、それらのスレッドのすべてが単一のブロックから来るわけではありません。

実際のスレッド/ブロックを1024または1536にする必要がありますか?

1024上記のすべての理由により、サポートされているすべてのハードウェアhereの機能の完全な要約を見ることができます。

+0

私はCUDA **ブロック**はOpenGL ** Work Group **に相当すると思います。そうですか? –

関連する問題