CUDAメモリ転送のパフォーマンス
前回に続きCUDAネタ。
メモリ転送の性能は、転送のサイズや、使用するシステムマザーボードのタイプなど、多くの要因に左右されます。
http://forum.nvidia.co.jp/EokpControl?&tid=10372&event=QE0004
そりゃ、確かに多くの要因に左右されるのは間違いないけど、自分の環境ではどの位の数値になるのだろう?試してみなければ分からないので、早速やってみた。テスト環境は下記の通り。
- MacBook Pro 13inch (Core2 Duo 2.26GHz, Memory 4GB)
- MacOS X 10.5.8
- CUDA SDK ver.2.3
$ ./bin/darwin/release/bandwidthTest Running on...... device 0:GeForce 9400M Quick Mode Host to Device Bandwidth for Pageable memory . Transfer Size (Bytes) Bandwidth(MB/s) 33554432 277.1 Quick Mode Device to Host Bandwidth for Pageable memory . Transfer Size (Bytes) Bandwidth(MB/s) 33554432 1401.5 Quick Mode Device to Device Bandwidth . Transfer Size (Bytes) Bandwidth(MB/s) 33554432 5870.4 &&&& Test PASSED Press ENTER to exit...
「デバイス→ホスト」に比べると「ホスト→デバイス」の転送速度はえらく悪いような気がする。軽く一桁も違うとは凄いね。
今度はオプションで「メモリ固定」を指定して再実行。
$ ./bin/darwin/release/bandwidthTest --memory=pinned Running on...... device 0:GeForce 9400M Quick Mode Host to Device Bandwidth for Pinned memory . Transfer Size (Bytes) Bandwidth(MB/s) 33554432 4109.9 Quick Mode Device to Host Bandwidth for Pinned memory . Transfer Size (Bytes) Bandwidth(MB/s) 33554432 4100.3 Quick Mode Device to Device Bandwidth . Transfer Size (Bytes) Bandwidth(MB/s) 33554432 5872.3 &&&& Test PASSED Press ENTER to exit...
今度はホストとデバイス間の速度が、両方向で同程度となった。上を見ればキリが無いのだろうけど、ノートPCとしては悪くないパフォーマンスかも知れない。でも、このマシンの場合、グラフィックの仕様として「256MB DDR3 SDRAMをメインメモリと共有」なのだ。「デバイス間転送」と「ホスト・デバイス間転送」は一体何がどう違うのだろう?