GPGPU
GPGPUは制約はあるもののHPCの分野で注目される応用技術である。伝統的に構築されてきた、カスタムCPUとして開発されるベクトルプロセッサを主体としたスーパーコンピュータと比較して、疎行列で計算効率が低下する、可変長ベクトル命令が扱えずレジスタ長で割り切れない要素を別途考慮する必要があるという欠点はあるものの、GPUを主体として計算機システムを構成する方がコストパフォーマンスが高くなることからHPC分野での導入が進んでいる。
しかし、GPU特有の制約は無くなりつつある。2023年現在ではプログラマブルシェーダーの発展によりCPUと同程度のプログラマビリティが実現されており、OpenCLなどを用いることでCPUとGPUでの相互で互換性を持ったプログラムを作成することも可能であることから、前述のランダムメモリアクセスに弱い、可変長ベクトル命令が利用できないという、伝統的なベクトルプロセッサと比較した場合の原理的な欠点以外については改善されてきている。
フォトンマッピング手法の開発者であるWann Jensen博士によると、複雑なデータ構造をGPU上で扱おうとするとCPUよりもはるかに困難となる場合が多いと評されている。他にも、GPUプログラミング言語であるHLSL、GLSL、およびOpenCL CではC++テンプレートのようなジェネリックプログラミング機能がサポートされないため、生産性が低い。なおBLASやFFTに関しては、NVIDIAによるCUDA実装のcuBLASやcuFFT、およびAMDによるOpenCL実装のclMath (clBLAS, clFFT) が存在する。そのほか、二分探索、ソート、リダクション、スキャンといったよく使われるアルゴリズムに関しては、NVIDIAによるCUDA実装のC++テンプレートベース並列アルゴリズムライブラリThrustや、AMDによるOpenCL/C++ AMP実装の同等ライブラリBoltが存在するが、両者に互換性はない。
また、GPUで演算した結果をCPUで読み出して利用する場合、従来アーキテクチャではGPUメモリからCPUメモリへのデータ転送が必要となる。その逆もまた然りである。こうしたCPU-GPU間のメモリ転送にかかる処理時間およびプログラミング上の手間が、性能のボトルネックやソフトウェア開発の難しさにつながるという問題も抱えている。