spml の CUDA 対応について 2011/03/14 S.Takehiro CUDA を用いた GPGPU 計算を spml で一部実装してみました. 1. ISPACK/sjpack-cuda による球面調和函数(ルジャンドル陪函数)変換. (w_module_sjpack_cuda, wa_module_sjpack_cuda, wt_module_sjpack_cuda) 2. 連立 1 次方程式を解く lumatrix の計算 (複数行列およびベクトル一度に複数個扱う場合) 動作確認は CUDA ver.3.2 + PGI Fortran ver.10.3 で行いました. ◯インストール * CUDA 計算環境をセットアップして下さい. * ISPACK で sjpack-cuda をコンパイルするよう Mkinclude ファイルを 修正しインストールして下さい. * 環境変数 SYSFFLAGS に -Mcuda を加えて下さい. * configure のオプションに --with-cuda オプションと --with-lumatrix オプションで次のように指定して下さい. --with-cuda=/usr/local/cuda/lib/libcudaart.so --with-lumatrix=CUDA * make ; make test ; make install でインストールして下さい. make test で test を実行するには LD_LIBRARY_PATH に CUDA ライブラリの場所が指定されている必要があります. * 備考 : lumatrix に CUDA をつかわず通常の HOST CPU での計算を 行いたい場合には SYSFFLAGS での -Mcuda オプションは必要ありません. 単に --with-lumatrix=OMP 等と指定して下さい. ◯使用方法 * 球面調和函数変換に GPGPU をつかうには, 従来のプログラム中の use 文を変更するだけでできます. たとえば use w_module -> use w_module_cuda * lumatrix 計算は自動的に GPGPU で行われます.