4

私はcudaプログラミングが初めてで、「大規模な並列プロセッサのプログラミング-実践的なアプローチ」という本から128個のSP(16個のSM、それぞれに8個のSP)を持つG80チップについて読んでいます。Intel CPU と G80 チップの比較があります。Intel CPU は、マシン モデルに応じて、コアごとに 2 ~ 4 個のスレッドをサポートします。一方、G80 チップは SM ごとに 768 スレッドをサポートしているため、このチップでは最大 12000 スレッドになります。

ここでの私の質問は、G80 チップが 768 スレッドを同時に実行できるということですか? 同時にではない場合、Intel CPU がコアあたり 2 から 4 のスレッドをサポートするとはどういう意味ですか? OS によってスケジュールされた Intel CPU で、常に多くのスレッド/プロセスを実行できます。

4

3 に答える 3

5

G80 は、SM ごとに 768 スレッドのコンテキストを同時に保持し、それらの実行をインターリーブします。これが、CPU と GPU の主な違いです。GPU は、他のスレッドからの計算によって一部のスレッドのメモリ アクセスを隠すディープ マルチスレッド プロセッサです。スレッド実行のレイテンシーは、CPU と GPU がスレッドのレイテンシーではなくスレッドのスループットに合わせて最適化されている場合よりもはるかに高くなります。対照的に、CPU はアウトオブオーダーの投機的実行を使用して、1 つのスレッドの実行遅延を減らします。スレッド スケジューリングのオーバーヘッドを削減するために GPU で使用される手法がいくつかあります。たとえば、GPU はスレッドを波面のワープと呼ばれるより粗いスケジュール可能な要素にグループ化し、ワープのスレッドを SIMD で実行します。GPU スレッドは同一であるため、SIMD モデルに適しています。プログラマの目には、

CPU コアで使用されるスレッドは、動的スケジューリングによってさまざまな実行ユニットを満たすために使用されます。CPU スレッドは必ずしも同じタイプではありません。これは、スレッドが浮動小数点でビジー状態になると、他のスレッドが ALU のアイドル状態を検出する可能性があることを意味します。したがって、これらのスレッドの実行は並行して行うことができます。コアごとに複数のスレッドが維持され、さまざまな実行ユニットが満たされ、アイドル ユニットが効果的に防止されます。ただし、動的スケジューリングは、電力とエネルギー消費の面でコストがかかります。したがって、メーカーは CPU コアごとにいくつかのスレッドを使用します。

質問の 2 番目の部分への回答: GPU のスレッドはハードウェアによって (SM ワープ スケジューラごとに) スケジュールされ、OS やドライバーでさえスケジューリングに影響しません。

于 2012-09-17T14:21:03.213 に答える
1

私の知る限り、768 は の最大数resident threadsですSM。そして、スレッドは 32 個のスレッドからなるワープで実行されます。したがって、SM では、768 個のスレッドすべてが同時に実行されるわけではありませんが、一度に 32 個のスレッドのチャンク、つまり一度に 1 つのワープでスケジュールされます。

于 2012-09-17T08:05:07.500 に答える
1

CPU の類似技術は「同時マルチスレッディング」(SMT)、または Intel のマーケティング スピーチでハイパースレッディングと呼ばれています。通常は 2 つ、一部の CPU では 4 つのスレッドをハードウェアの CPU 自体によってスケジュールできます。

これは、オペレーティング システムがソフトウェアでより多くのスレッドをスケジュールする可能性があるという事実とは異なります。

于 2012-09-17T16:40:29.290 に答える