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 で行われます. 

