GPUは、リスク計算、流体力学計算、地震解析などの非グラフィカルタスクにますます使用されています。 GPU駆動型デバイスの採用を阻止するにはどうすればよいですか?
今日の質疑応答セッションは、Q&AWebサイトのコミュニティ主導のグループであるStackExchangeの下位区分であるSuperUserの好意で行われます。
質問
スーパーユーザーリーダーのEllは技術ニュースに遅れずについていき、GPUベースのシステムをこれ以上使用しない理由に興味があります。
最近はGPUでたくさんの計算が行われているようです。グラフィックはもちろんそこで行われますが、CUDAなどを使用して、AI、ハッシュアルゴリズム(ビットコインを考えてください)などもGPUで行われます。 CPUを取り除き、GPUを単独で使用できないのはなぜですか? GPUがCPUよりもはるかに高速な理由は何ですか?
なぜ本当に? CPUがユニークな理由は何ですか?
答え
スーパーユーザーの寄稿者であるDragonLordは、GPUとCPUの違いについて十分にサポートされている概要を提供しています。
TL; DR回答: GPUにはCPUよりもはるかに多くのプロセッサコアがありますが、各GPUコアの実行速度はCPUコアよりも大幅に遅く、最新のオペレーティングシステムに必要な機能がないため、日常のコンピューティングでほとんどの処理を実行するには適していません。これらは、ビデオ処理や物理シミュレーションなどの計算集約型の操作に最も適しています。
詳細な答え: GPGPU まだ比較的新しい概念です。 GPUは当初、グラフィックスのレンダリングにのみ使用されていました。テクノロジーが進歩するにつれて、CPUに比べてGPUの多数のコアが、GPUの計算機能を開発することで活用され、データが何であれ、データの多数の並列ストリームを同時に処理できるようになりました。 GPUには数百または数千ものストリームプロセッサを搭載できますが、GPUはそれぞれCPUコアよりも動作が遅く、機能が少なくなります(たとえそうであったとしても) チューリング完了 CPUが実行できる任意のプログラムを実行するようにプログラムできます)。 GPUに欠けている機能には、最新のオペレーティングシステムを実装するために必要な割り込みと仮想メモリが含まれます。
言い換えると、CPUとGPUのアーキテクチャは大幅に異なるため、さまざまなタスクにより適しています。 GPUは、多くのストリームで大量のデータを処理でき、それらに対して比較的単純な操作を実行しますが、単一または少数のデータストリームでの重いまたは複雑な処理には適していません。 CPUは、コアごと(1秒あたりの命令数)ではるかに高速であり、単一または少数のデータストリームに対して複雑な操作をより簡単に実行できますが、同時に多数のストリームを効率的に処理することはできません。
その結果、GPUは、ワードプロセッサなどの多くの一般的な消費者向けアプリケーションを含め、大きなメリットがない、または並列化できないタスクの処理には適していません。さらに、GPUは根本的に異なるアーキテクチャを使用します。アプリケーションを機能させるには、GPU専用にアプリケーションをプログラムする必要があり、GPUをプログラムするには大幅に異なる手法が必要になります。これらのさまざまな手法には、新しいプログラミング言語、既存の言語への変更、および多くのストリームプロセッサによって実行される並列操作として計算を表現するのに適した新しいプログラミングパラダイムが含まれます。 GPUのプログラミングに必要な手法の詳細については、ウィキペディアの記事を参照してください。 ストリーム処理 そして 並列計算 。
最新のGPUは、ベクトル演算と浮動小数点演算を実行でき、最新のカードは倍精度浮動小数点数を操作できます。 CUDAやOpenCLなどのフレームワークを使用すると、GPU用のプログラムを作成できます。また、GPUの性質により、一連の特殊なGPUコンピューティングカードが小規模なものの実行可能な代替となる科学計算などの高度に並列化可能な操作に最適です。のようにクラスターを計算する NVIDIATeslaパーソナルスーパーコンピューター 。 Folding @ homeの経験がある最新のGPUを使用している消費者は、GPUを使用して GPUクライアント 、非常に高速でタンパク質フォールディングシミュレーションを実行し、プロジェクトにより多くの作業を提供できます(必ずお読みください よくある質問 まず、特にGPUに関連するもの)。 GPUは、PhysXを使用したビデオゲームでのより優れた物理シミュレーションを可能にし、ビデオのエンコードとデコードを高速化し、その他の計算集約型タスクを実行することもできます。 GPUが実行に最も適しているのは、これらのタイプのタスクです。
AMDは、と呼ばれるプロセッサ設計の先駆者です。 Accelerated Processing Unit(APU) これは、従来のx86CPUコアとGPUを組み合わせたものです。これにより、CPUコンポーネントとGPUコンポーネントが連携して、個別のコンポーネント用のスペースが限られているシステムでのパフォーマンスが向上する可能性があります。技術が進歩し続けるにつれて、これらのかつては分離されていた部分の収束の度合いが増すでしょう。ただし、PCオペレーティングシステムやアプリケーションによって実行される多くのタスクはCPUに適しているため、GPUを使用してプログラムを高速化するには多くの作業が必要です。非常に多くの既存のソフトウェアがx86アーキテクチャを使用し、GPUにはさまざまなプログラミング手法が必要であり、オペレーティングシステムに必要ないくつかの重要な機能が欠けているため、日常のコンピューティングでCPUからGPUへの一般的な移行は非常に困難です。
説明に追加するものがありますか?コメントで音を立ててください。他の技術に精通したStackExchangeユーザーからの回答をもっと読みたいですか? ここで完全なディスカッションスレッドをチェックしてください 。