GPUは [〜#〜] simd [〜#〜] パラダイムを使用します。つまり、コードの同じ部分が並列に実行され、データセットのさまざまな要素に適用されます。
ただし、CPUはSIMDも使用し、命令レベルの並列処理を提供します。たとえば、私の知る限り、SSEのような命令は並列処理でデータ要素を処理します。
SIMDパラダイムはGPUとCPUで異なる方法で使用されているようですが、GPUはCPUよりもSIMDパワーが高いですか?
CPUの並列計算機能は、GPUの並列計算機能よりもどのように「弱い」のですか?
ありがとう
それは同様のアイデアで、次のようになります(非常に非公式に言えば)。
CPUとGPUはどちらもSIMDを提供し、最も標準的な概念単位は16バイト/ 128ビットです。たとえば、4つの浮動小数点数(x、y、z、w)のベクター。
簡素化:
次に、CPUは、将来の命令をパイプライン化することでより多くの並列化を行い、プログラムの処理を高速化します。次に、独立したプログラムを実行する複数のコアがあります。
一方、GPUは、SIMDアプローチを継続し、同じプログラムを複数回実行することで並列化します。両方とも、プログラムのセットがロックステップで実行される純粋なSIMDによって(ifステートメントの両側が実行される必要があるため、GPUでの分岐が悪い理由です)、ロックステッププログラムが同じように進行するように1つの結果が破棄されます割合);また、 単一プログラム、複数データ(SPMD) でも同じプログラムのセットのグループが並行して進行しますが、必ずしもロックステップではありません。
GPUアプローチは、まったく同じ処理を大量のデータに適用する必要がある場合に最適です。たとえば、同じ方法で変換する必要のある100万の頂点や、色を生成するための処理を必要とする何百万のピクセル。それらがデータブロック/パイプライン停止にならないと仮定すると、GPUプログラムは一般に、その制限により、より予測可能な時間制限付き実行を提供します。これも時間的な並列処理に適しています。プログラムは、たとえば60 fpsで毎秒60回(16ミリ秒)の特定のレートでサイクルを繰り返す必要があります。
ただし、CPUアプローチは、複数の異なるタスクを同時に決定して実行し、変化する入力と要求を処理するのに適しています。
他の多くの用途と目的は別として、CPUはGPUが実行する作業を調整するために使用されます。