Skip to content

Instantly share code, notes, and snippets.

@aokomoriuta
Created August 30, 2012 03:16
Show Gist options
  • Save aokomoriuta/3521982 to your computer and use it in GitHub Desktop.
Save aokomoriuta/3521982 to your computer and use it in GitHub Desktop.
OpenCLでベクトル和を高速化するには3
https://github.com/aokomoriuta/StudiesOfOpenCLWithCloo/tree/master/VectorAddition/UseHostPointer の倍精度の結果
単精度と傾向は同じ。
ただしやはり加速率は倍精度のほうが上。
= ベクトル加算の試験 =
ホストポインタの使用有無での比較
プラットフォーム:NVIDIA CUDA (OpenCL 1.1 CUDA 4.1.1)
デバイス数:2
* GeForce GTX 295 (NVIDIA Corporation)
* GeForce GTX 295 (NVIDIA Corporation)
== 実行速度計測開始 ==
要素数:15728640 (120[MB])
単一CPU : 341589915
複数CPU : 351735945
単一GPU(ホスト) データ転送あり: 453873090
単一GPU(ホスト) データ転送なし: 404896313
複数GPU(ホスト) データ転送あり: 671939873
複数GPU(ホスト) データ転送なし: 173534370
単一GPU(非ホスト)データ転送あり: 649020435
単一GPU(非ホスト)データ転送なし: 626841015
複数GPU(非ホスト)データ転送あり: 282875287
複数GPU(非ホスト)データ転送なし: 163555582
https://github.com/aokomoriuta/StudiesOfOpenCLWithCloo/tree/master/VectorAddition/UseHostPointer の単精度の結果
単一GPUの場合は、ホストポインタ使ったほうが速い。プラットフォーム側で転送の最適化でもされているっぽい?
対して、複数GPUの場合は、ホストポインタ使わないほうが速く、特にデータ転送が高速化されているところを見るに、たぶんホストポインタを使うと、使ってないデータ(別のデバイスが計算する領域)まで転送しているんじゃないかという疑惑がある。
最終的に最も高速なのは「複数GPUでホストポインタを使わない」場合だった。
= ベクトル加算の試験 =
ホストポインタの使用有無での比較
プラットフォーム:NVIDIA CUDA (OpenCL 1.1 CUDA 4.1.1)
デバイス数:2
* GeForce GTX 295 (NVIDIA Corporation)
* GeForce GTX 295 (NVIDIA Corporation)
== 実行速度計測開始 ==
要素数:20971520 (80[MB])
単一CPU : 248091158
複数CPU : 251874593
単一GPU(ホスト) データ転送あり: 233968642
単一GPU(ホスト) データ転送なし: 198287303
複数GPU(ホスト) データ転送あり: 450451185
複数GPU(ホスト) データ転送なし: 107242357
単一GPU(非ホスト)データ転送あり: 424227757
単一GPU(非ホスト)データ転送なし: 418311525
複数GPU(非ホスト)データ転送あり: 176744686
複数GPU(非ホスト)データ転送なし: 106876590
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment