3

CUDA by Exampleの 9.4 章から、GPU グローバル メモリでアトミック操作を不適切に使用すると、メモリ アクセスの競合が原因で、プログラムのパフォーマンスが純粋に CPU で実行された場合よりも低下する可能性があることを読みました。

最悪の場合、GPU で実行されるプログラムは高度にシリアル化されており、並列で実行されるスレッドはありません。これは、シングルスレッド プログラムが CPU で実行される方法と同じです。したがって、重要な問題は、プログラムがメモリにアクセスする速度です。

私が言及した本の例を考慮すると、GPU がデバイス上のグローバル メモリにアクセスするよりも、CPU がホスト メモリに高速にアクセスするようです。

そうですか?または、今説明した状況でプログラムのパフォーマンスに影響を与える他の要因はありますか?

4

1 に答える 1

5

あなたは物事を少し読み違えていると思います。はい、GPU 上のシングルスレッド コードは通常、CPU よりも遅いと言っています。しかし、それは生のメモリ帯域幅によるものではありません。単一のスレッドを実行する場合、CPU は GPU よりもはるかに強力だからです。たとえば、CPU にはパイプライン処理と洗練された分岐予測機能があり、メモリからデータをプリロードしますが、GPU はデータを待機するときにコンテキストを別のスレッドに切り替えるように設計されています。CPU はシングル スレッド ケース用に調整され、GPU は多数のスレッド用に調整されます。

どのメモリが最速か知りたい場合は、カードとモボの技術仕様を調べてください。

于 2012-07-12T04:33:05.153 に答える