GPUプログラミング
単体のGPUを使うプログラムで、CPU側のメモリとGPU側のメモリについて一般的に正しいものはどれか。
- A別々のメモリなので、計算の前にデータをGPUへコピーし、終わったら結果をCPUへコピーして戻す
- B同じメモリなので、コピーは一切必要ない
- CGPUは計算の結果を保存できない
答えと解説を見る
正解:A. 別々のメモリなので、計算の前にデータをGPUへコピーし、終わったら結果をCPUへコピーして戻す
単体のGPUは、カードの上にGDDRやHBMの専用のメモリを持ち、CPUのメモリとはPCI Expressなどでつながっています。そのため、CPUのメモリにあるデータをGPUのメモリへコピーしてからカーネルを起動し、終わったら結果をCPUのメモリへコピーして戻すのが基本の流れです。このコピーの時間が全体の性能を左右することがよくあります。
- A. 正しい。cudaMemcpyなどでコピーします。
- B. 単体のGPUは自分専用のメモリを持っています。
- C. GPUのメモリに結果を書き込めます。