MATLAB&CUDAで快適計算ライフ2

好評だった備忘録(個人的に)の続編です.

CUDA-MATLAB連携の例です.以下に,少し大きめなベクトルx行列の例を示します.

ここで,ファイルをアップします.
1.MATLABのテストスクリプトtest_main.m
2.自作版ベクトルx行列の.cuファイル cuda_test3.cu
と,コンパイル後のmexファイルcuda_test3.mexw32
3.CUDA-SDK付属のScalarProdを改造した,ベクトルx行列の.cuファイルcuda_test4.cuとコンパイル後のmexファイルcuda_test4.mexw32

(注1)これらのファイルを使用してなんかおかしいことになっても責任はとれません.自己責任でバグがないように直してからお使いください.直せない場合は使わないでください.とくに,cuda_test3はサイズチェックや行列の向きのチェックをしていません.例題以外のサイズ行列をかけ合わせたい等の場合,バグりますので気を付けてください.

(注2)SDKの内積計算では,向きが平行(横向きx横向き)と考えていますので,かける順番や転置が適当にかわっていますので注意ください.

結果例:
[1x16384のベクトル]*[16384x1024の行列]の計算で試してみました.
69msec @ Core2Duo2.4GHz(MATLAB使用)
33msec @ Core2Duo4.0GHz(MATLAB使用)

61msec @ 8600GT(kernel programは自作)
35msec @ 9800GTX+(kernel programは自作)

50msec @ 8600GT(SDKのScalar Product改)
28msec @ 9800GTX+(SDKのScalar Product改)

ううむ.自分で作ると速度でないですね.コツがわかりません…
そしてなぜか自作関数で大きなサイズをしますと答えが合いません.なんか間違ってますね…

本日の来訪者: -
昨日の来訪者: -
累積来訪者: -

おなまえ
こめんと


最終更新:2009年08月09日 22:38