ここでの他の答えはかなり良いです。私も2セントを投入します。
CPUが非常に普及している理由の1つは、CPUが柔軟であることです。無限のさまざまなタスクのためにそれらを再プログラムできます。最近では、製品を製造する企業にとっては、同じタスクを実行するためのカスタム回路を開発するよりも、小さなCPUやマイクロコントローラーを何かに貼り付けてその機能をプログラムする方が安価で高速です。
他のデバイスと同じデバイスを使用することにより、その同じデバイス(または同様のデバイス)を使用している問題に対する既知の解決策を活用できます。また、プラットフォームが成熟するにつれて、ソリューションは進化し、非常に成熟し最適化されます。これらのデバイスでコーディングする人々も専門知識を獲得し、彼らの技術を非常に上手になります。
GPUに代わる新しいデバイスタイプをゼロから作成する場合、最初の採用者でさえ実際に使用方法を理解するのに何年もかかるでしょう。ASICをCPUに接続する場合、そのデバイスへのオフロード計算をどのように最適化しますか?
コンピューターアーキテクチャコミュニティは、このアイデアで数年にわたって賑わってきました(明らかに以前は人気がありましたが、最近ルネッサンスが見られました)。これらの「アクセラレータ」(その用語)には、さまざまな程度の再プログラム可能性があります。問題は、あなたのアクセラレーターが取り組むことができる問題の範囲をどのくらい狭く定義していますか?私は、オペアンプを備えたアナログ回路を使用して微分方程式を計算するアクセラレータの作成に取り組んでいる人たちと話をしました。素晴らしいアイデアですが、非常に狭い範囲です。
作業用の加速器を手に入れた後、経済的な勢力があなたの運命を決定します。市場のinertia性は信じられないほどの力です。何か素晴らしいアイデアがあったとしても、この新しいデバイスを使用するために作業ソリューションをリファクタリングすることは経済的に実現可能ですか?多分そうでないかもしれません。
GPUは実際、特定のタイプの問題に対して恐ろしいため、多くの人々/企業が他のタイプのデバイスで作業しています。しかし、GPUはすでに非常に定着しているので、そのデバイスは経済的に実行可能になりますか?私たちが見ると思います。
編集:私はバスから降りているので、少し答えを広げます。
注意深いケーススタディは、Intel Larrabeeプロジェクトです。ソフトウェアでグラフィックスを実行できる並列処理デバイスとして始まりました。特殊なグラフィックハードウェアはありませんでした。私はプロジェクトで働いていた誰かと話をしましたが、彼らが失敗してキャンセルされたと言った主な理由は(恐ろしい内部政治を除いて)、彼らはコンパイラーにそれのための良いコードを生成させることができなかったからです。もちろん、動作するコードを生成しましたが、製品のポイント全体が最大のパフォーマンスである場合は、かなり最適なコードを生成するコンパイラを使用する方が良いでしょう。これは、新しいデバイスのハードウェアとソフトウェアの両方の深い専門知識が大きな問題であるという以前のコメントに耳を傾けます。
ララビーデザインの一部の要素は、Xeon Phi / Intel MICに組み込まれました。この製品は実際に市場に出ました。科学およびその他のHPCタイプの計算の並列化に完全に焦点を合わせていました。現在は商業的な失敗のようです。Intelで話をした別の人は、GPUとは価格競争力も価格競争力もないということを暗示していました。
FPGAのロジック合成をコンパイラに統合して、FPGAアクセラレータのコードを自動的に生成できるようにしました。彼らはうまく機能しません。
アクセラレータ、またはGPUのその他の代替品にとって本当に肥沃な土壌のように見える場所の1つは、クラウドです。Google、Amazon、Microsoftのようなこれらの大企業に存在する規模の経済は、代替の計算スキームに投資する価値があります。誰かがすでにGoogleのテンソル処理ユニットについて言及しています。Microsoftは、BingおよびAzureインフラストラクチャ全体にFPGAなどを備えています。Amazonと同じ話。規模が時間、お金、エンジニアの涙の投資を相殺できるなら、それは絶対に理にかなっています。
要約すると、専門化は他の多くのこと(経済学、プラットフォームの成熟度、エンジニアリングの専門知識など)と対立します。スペシャライゼーションはパフォーマンスを大幅に改善できますが、デバイスを適用できる範囲が狭くなります。私の答えは多くのネガに焦点を当てていましたが、専門化にも多くの利点があります。それは絶対に追求され調査されるべきであり、私が述べたように、多くのグループが非常に積極的にそれを追求しています。
申し訳ありませんが、もう一度編集してください。最初の前提は間違っていると思います。私は、それが計算能力の余分なソースを探す場合ではなく、機会を認識する人々の場合ではなかったと信じています。グラフィックスプログラミングは非常に線形代数が多く、GPUは行列乗算、ベクトル演算などの一般的な演算を効率的に実行するように設計されています。科学計算にも非常に一般的な演算です。
GPUへの関心は、Intel / HP EPICプロジェクトによって与えられた約束が非常に誇張されていること(90年代後半から2000年代初期)を人々が認識するようになった直後に始まりました。コンパイラの並列化に対する一般的な解決策はありませんでした。「どこで処理能力を増やすか、GPUを試すことができる」と言うのではなく、「並列計算が得意なものがあります。これをより一般的にプログラム可能にすることができます」と思います。関係者の多くは、CrayまたはTeraマシン(Tera MTAには128個のハードウェアスレッドがあります)で実行できる並列Fortranコードをすでに持っていた科学コンピューティングコミュニティにいました。おそらく両方向からの動きがありましたが、私はこの方向からのGPGPUの起源についての言及を聞いただけです。