通常のタスクでは CPU が GPU よりも優れているのはなぜですか?

通常のタスクでは CPU が GPU よりも優れているのはなぜですか?

CPU と GPU の相対的な強みを理解しようとしています。

一般的な意見を引用すると、「コアが多ければ多いほど良い」ので、その論理によれば、GPU は常に CPU よりも優れたパフォーマンスを発揮するはずです。そして、暗号通貨のマイニングとクオンツ ファイナンスではそれが当てはまります。私は、CPU と比較して GPU で非常に短時間でインプライド ボラティリティを計算する簡単なプログラムを作成したばかりです。

しかし、このテーマを調べていくうちに、次のようなQ&Aに出会いました。これ

この質問が範囲が広すぎる場合は申し訳ありませんが、私は基本的な電気工学の訓練しか受けておらず、リンクされた Q&A で説明されているような「分岐予測、パイプライン処理、スーパースケーラーなど」といった通常のタスクでは、CPU が GPU よりも好まれる理由について、明確な説明があるかどうか疑問に思っていました。

(おまけとして、この引用文の意味は次のとおりです。「さらに、必要なアルゴリズムは分岐を処理する必要がありません。必要な分岐のほぼすべては、係数を 0 または 1 に設定することで実現できるからです。」)

答え1

GPU のアーキテクチャは、特にグラフィックス用の数学計算などのベクトル アルゴリズムとプログラムを処理するように設計されています。これらのプログラムは分岐やジャンプをあまり行わず、プロセッサを通るデータの流れを重視します。そのため、GPU はこれに対してより合理化されていますが、汎用 CPU はデータ フローを犠牲にしてジャンプや分岐をより適切に処理できる異なるアーキテクチャを備えています。

これらのいずれかの CPU タイプのレイアウトを調べてみると、その違いが明らかになります。

(この答えが少しつまらないことは承知していますが、私は今起きたばかりで、プロセッサの設計を行ってから何年も経っています。)

答え2

あなたがリンクした質問の 2 番目の回答 (承認された回答ではありませんが、最も多くの票を獲得した回答) は、よく書かれており、十分に詳細であると私は思います。

そこに挙げられている概念についてより深く理解したいのであれば、それぞれについて別々に質問したほうがよいと思います (そして、具体的に何が理解できないのかを説明してください)。その理由は、これらの概念はアーキテクチャとマイクロアーキテクチャの両方であり、許容できるレベルで説明するには別個の質問が必要になるからです。

たとえて言うと、CPU はスイスナイフと考えることができます。CPU は多くのことを実行でき、どんな状況でも役立ちます。しかし、300 人分のサラダを切ろうとしているなら、どんな包丁でも最も洗練されたスイスナイフよりも性能が優れています。GPU は包丁です。

CPU は、「一般」ユーザーが実行するさまざまなタスクに適しています。ただし、タスクに大規模な数学的計算が必要であることがユーザーにわかっている場合は、GPU を検討する必要があります。タスクが数学的計算であるだけでなく並列化される可能性がある場合は、このタスクは「GPU 向け」とラベル付けされることがあります。

関連情報