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