数十のスレッドよりも数千のスレッドの並列プログラムを作成する方が簡単です。GPUには数千のスレッドがあり、ハードウェアスレッドのスケジューリングと負荷分散があります。現在のGPUは主にデータ並列の小さなカーネルに適していますが、そのようなプログラミングを簡単にするツールがあります。Cellには、コンシューマー構成のプロセッサーが数十台程度しかありません。(スーパーコンピューターで使用されるCellの派生物は一線を越え、数百のプロセッサーを搭載しています。)
Cellの最大の問題の1つは、命令キャッシュの欠如でした。(2005年のMICROカンファレンスバルセロナから戻ってきた飛行機の中でセルアーキテクトとこれについて声高に議論しました。彼らは私に同意しませんでしたが、セルのビッグスーパーコンピュータユーザーから同じことを聞きました。)人々は固定サイズのデータメモリへのフィッティングに対処できます--GPUにも同じ問題がありますが、不満があります。しかし、コードを固定サイズの命令メモリに適合させるのは面倒です。IFステートメントを追加すると、オーバーレイの使用を開始する必要があるため、パフォーマンスが低下する可能性があります。開発サイクルの後半でバグを修正するためにコードを追加する必要がないようにするよりも、データ構造を制御する方がはるかに簡単です。
GPUには元々、セルと同じ問題がありました。キャッシュがなく、IもDもありません。
しかし、GPUはより多くのスレッドを実行し、データの並列処理はCellよりもはるかに優れていたため、その市場を食いつぶしました。Cellをコンソールの顧客にロックインしたままにし、GPUよりも複雑であるが、CPUコードよりも複雑ではないコードのみを残します。真ん中で絞った。
そして、その間に、GPUはI$とD$を追加しています。そのため、プログラミングが容易になっています。