明らかに、これは複雑な質問です。この質問には、セル プロセッサも含まれる場合があります。また、他の関連する質問に対して正しい答えはおそらく 1 つもありません。
私の経験では、抽象的な方法で行われた実装、つまりコンパイルされた高レベル言語とマシンレベルの実装は、特に複雑なアルゴリズムの実装では必然的にパフォーマンスコストがかかります。これは、あらゆるタイプの FPGA とプロセッサの両方に当てはまります。複雑なアルゴリズムを実装するために特別に設計された FPGA は、処理要素が汎用的な FPGA よりも優れたパフォーマンスを発揮し、入力制御レジスタ、データ I/O などからある程度のプログラマビリティを実現できます。
FPGA のパフォーマンスが大幅に向上するもう 1 つの一般的な例は、プロセスの出力が別のプロセスへの入力になり、同時に実行できないカスケード プロセスです。FPGA でプロセスをカスケードするのは簡単で、メモリ I/O 要件を劇的に下げることができますが、プロセッサ メモリを使用して、データの依存関係がある 2 つ以上のプロセスを効果的にカスケードできます。
GPU と CPU についても同じことが言えます。キャッシュ メモリまたはメイン メモリ システムの固有のパフォーマンス特性に関係なく開発された CPU で実行される C で実装されたアルゴリズムは、実装されたものほどうまく機能しません。確かに、これらのパフォーマンス特性を考慮しないと、実装が簡単になります。しかし、パフォーマンスコストがかかります。
GPU を直接使用した経験はありませんが、固有のメモリ システムのパフォーマンスの問題を知っているため、パフォーマンスの問題が発生する可能性があります。