2012年1月7日土曜日

g09 linda と pbs

pbsを使う場合、g09のlindaの設定がやりにくい。

export GAUSS_LFLAGS="-nodefile $PBS_NODEFILE”
というoptionが有効と書いてあるサイトもあるが実際やってみるとEM64L-G09RevA.01ではGAUSS_LFLAGSは有効でないためcomに%lindaworks=を書くしかない。

例えば、(2 SMP+ N linda)/nodeならば
%nprocshared=2
%lindaworks=host1:N,host2:N,host3:N,...
(全core数はg09が取れるので%lindaworks=host1,host2,host3,...とhost名だけ書くとnprocsharedからlinda数/nodeを自動計算する。)
とcomを書かねばならないが、PBSでは$PBS_NODEFILEにhost listが書いてあるのでlindaworkersの書式に直すだけである。

$FILE.com
には
%lindaworkers=LINDA
と書いておいて

PBS用のscriptは
例1、lindaのみでcore数=linda数なら
FILE=somefile
LINDA=`cat $PBS_NODEFILE | uniq | tr '¥n' "," | sed 's/,$//' | sed 's/:$//'`
echo "LINDA=",$LINDA  #---確認で書いているだけ
echo "FILE=",$FILE #---確認で書いているだけ
sed "s/LINDA/$LINDA/"  $FILE.com >temp.com
g09 temp.com $FILE.log


例2、nprocsharedからlinda数は自動計算
例1のままで$FILE.comに%nprocshared=を書く。



例3、linda数をcore数から自動計算しないで2 linda/nodeとしたい。
LINDA=`cat $PBS_NODEFILE | uniq | sed 's/$/:2/' | tr '\n' "," | sed 's/,$//' | sed 's/:$//'  `
:2が 2 linda/nodeの意味

なお、lindaが有効でないOS(x86系以外)で%lindaworkers=を書いてもエラーにならず、logにもlindaを使っているかのような表示が出るが実際はlindaは使われない。