大規模なデータ セットと比較して、小規模なデータ セットでは GPU の関心が低くなることは珍しくありません。この理由は、特定のアルゴリズムによって異なります。一般に、GPU は CPU よりも高いメイン メモリ帯域幅を備えており、負荷の高い数値計算では通常、GPU よりも優れたパフォーマンスを発揮します。しかし、GPU は通常、問題に固有の並列処理が存在する場合にのみ適切に機能し、それが明らかになる可能性があります。この並列処理を利用することで、アルゴリズムはより大きなメモリ帯域幅とより高い計算能力を利用できるようになります。
ただし、GPU が何かを行う前に、GPU にデータを取得する必要があります。そして、これにより、CPU バージョンには通常存在しないコードの GPU バージョンに「コスト」が発生します。
より正確に言うと、GPU での計算時間の削減 (CPU による) がデータ転送のコストを上回る場合、GPU はメリットをもたらします。一次方程式系を解くことは、O(n^2) から O(n^3) の複雑さのどこかにあると思います。n が非常に小さい場合、この計算の複雑さは、データ転送のコストを相殺するのに十分な大きさではない可能性があります。しかし、明らかにnが大きくなるにつれて、そうあるべきです。一方、ベクトル演算は O(n) の複雑さしかない場合があります。したがって、利益のシナリオは異なって見えます。
O(n^2) または O(n^3) の場合、より大きなデータ セットに移動すると、データを転送するための "コスト" は O(n) として増加しますが、ソリューションの計算要件は O( n^2) (または O(n^3))。したがって、データセットが大きいほど、コンピューティングワークロードが指数関数的に大きくなり、データ転送の「コスト」の影響が軽減されます。一方、O(n) 問題には、おそらくこのスケーリング ダイナミクスはありません。ワークロードは、データ転送の「コスト」と同じ割合で増加します。
また、GPU へのデータ転送の「コスト」を計算作業と重ねることで隠すことができる場合、重複部分の「コスト」は「無料」になります。つまり、全体の解決時間には寄与しません。