web-dev-qa-db-ja.com

GPUコアとCPUコア

(NVidiaなど)GPUは、ストリーミングプロセッサの配列またはCUDAコアで構成されるストリーミングマルチプロセッサで構成されています。 V100には5120のCUDAコアがあります。汎用(たとえばIntel)CPUには、最大48コアしかありません。

GPUコアとCPUコアの違いは何ですか?違いは本質的にサポートされている命令セットですか? CUDAコアの周波数はいくつですか?

編集

CPUでのベクトルレジスタ操作は単一命令複数データ(SIMD)であり、GPU上のグリッド/スレッドブロック/スレッド間で分散されるカーネルは単一命令複数スレッド(SIMT)です。 GPUは単なるSIMTデバイスと言えるでしょうか?データはどうですか?異なるスレッドが並行して実行され、同じカーネルを異なるデータセットに適用していますか?次に、GPUはSIMDとSIMTの両方を実行するようです。コメントしませんか?

3
kiriloff

CPUは、GPUよりもはるかに汎用的なマシンです。 GPUを「一般的な目的」のGPUとして使用することについて話をするかもしれませんが、それらには異なる長所があります。

CPUコアは、さまざまな操作が可能であり、(すべてのインテントで何と見なすことができるか)ランダム分岐命令ストリームを処理します。複数のプログラムはすべて、プロセッサ上で時間を争い、オペレーティングシステムによって制御されています。命令ストリームの突然の変化に対応できるようにしたまま、可能な限りキャッシュと予測を行います。

一方、GPUはdataストリームを処理するように設計されたプロセッサです。それらのプロセッサは、潜在的に膨大な量のデータにわたって、一連の小さな命令(シェーダープログラム)で動作するように設計されています。 HD、2k、4k画面には膨大な数のピクセルが含まれており、シェーダーは特定の効果を達成するために、連続する実行ですべてのピクセルにわたってプログラムを実行する必要があります。そのため、プログラムは(CPUと比較して)小さく、コアごとのキャッシュも同様に小さくなっていますが、メモリへの帯域幅は驚くほど高速です。

彼らは適切なプログラミングで同じタスクを達成できるかもしれませんが、命令vsdata(処理は、CPUとGPUを分離するものです。

そのため、それらのコアはそれらの強みに機能するように設計されています。長い間、GPUシェーダーコアは約1〜2 GHz(最新のIntelグラフィックコア 速度を500 MHz〜1.5 GHzとしてリスト )で動作し、CPUは1.5〜4 GHz以上でした。

命令ストリームを複数のストリームに分割することは困難または不可能である可能性があるため、命令処理は個々のユニットの速度からより多くの利益を得ます。したがって、CPUは命令をより速く処理するために高速である必要があります。問題は、コアを実行する速度が速ければ速いほど、コアが生成する熱が増えるため、実行速度の限界に達することです。 (クロック速度に影響を与える他の技術的な制限がありますが、それは別の話のためのものです。)

一方、データ処理は、異なるデータセットと並列処理で同じタスク(プログラム)を実行するのに適しています。そのため、タスクに投入できるコアの数が多いほど良い結果が得られます。コアを低速で実行すると、発熱が少なくなります。発熱が少ないということは、より多くのコアを配置できるため、データのスループットが向上するということです。したがって、データタスクは、CPUとは異なる(小さくて無駄のない)タイプのコアから恩恵を受けます。

その結果、2つの異なるタイプのプロセッサができました。 1つは汎用命令ストリームを対象とし、もう1つはバルクデータ処理を対象としています。

5
Mokubai

現在、CPUコアはgpCPUコアと呼ばれることが多い-g eneral p urpose CPUコア。大きな違いを指摘するもの:gpCPUコアはかなり多くのことを行うために最適化されていますが、GPUコアは1つのこと(基本的に浮動小数点SIMD)を本当に非常にうまく行うように設計されています。

GPUコアはIO、キャッシュコヒーレンシ、およびフレンドについて何も(近くに)認識しておらず、その整数パフォーマンスは平凡です。

FP SIMDワークロードの場合、GPUは素晴らしいアクセラレータです:gpCPUをマネージャー、GPUコアをワーカーとして考えてください。両方とも、ジョブを完了するために必要であり、どちらもそれぞれに特化しています。役割。

0
Eugen Rieck