各プロセスプログラムの実行
事前準備
この項目では以下の事項が全て満たされていることを前提として話を進める.
- CReSS のコンパイルは全て完了し, terrain.exe, surface.exe, gridata.exe, unite.exe, solver.exe が EXE ディレクトリに存在する.
- 計算に必要な外部データが全て計算ディレクトリに存在している.
- 計算に必要な CReSS の実行設定ファイル user.conf の内容が適切に設定されている.
以下, 任意の作業ディレクトリ work 内にて行う.
データの配置.
$ cd 作業用ディレクトリの場所 $ ln -s ~hoge/????? ./ # ????? = 計算に必要な初期値・境界値・地表面データファイル全て $ mv ~hoge/????? ./ # ????? = user.conf ファイルの名前 $ ln -s ~hoge/?????/EXE/*.exe ./ # コンパイルした *.exe ファイル全て
プリプロセスプログラムの実行 (?????? = user.conf ファイルの名前).
$ ./terrain.exe < ?????? > log.terrain $ ./surface.exe < ?????? > log.surface $ ./gridata.exe < ?????? > log.gridata
ジョブ投入スクリプトの編集
以下, 環境に合わせて設定する. "<-" という表記がある箇所が設定箇所.
CX + ifort の場合
#!/bin/sh #PJM --rsc-list "rscunit=cx" #PJM --rsc-list "rscgrp=cx-middle" <- ジョブグループ #PJM --rsc-list "vnode=32,vnode-core=24,elapse=24:00:00,vnode-mem=25600" <- 使用ノード数, 使用スレッド数, 使用時間, 使用メモリ容量 #PJM -P "vn-policy=abs-unpack" #PJM --no-stging #PJM --name "solve.sh" #PJM -j #PJM -S #PJM -X ########## Environment setting ###### source /center/local/apl/cx/intel/impi/4.1.0.024/intel64/bin/mpivars.sh ########## Environment setting ###### ############ configure ############### NODES=32 <- ノード数 CORES=24 <- スレッド数 PROCS=32 <- MPI プロセス数 (特に変な設定にしていないなら NODES と同じでよい.) cnf=user.conf.JPN2.5KM2012082512Z <- user.conf の名前. log=log.solver.txt <- ログ出力ファイルの名前. slv=solver.exe <- solver.exe の名前. ############ configure ############### cd ${PJM_O_WORKDIR} export OMP_NUM_THREADS=$CORES export I_MPI_PERHOST=1 # <= これは 1 ノードに MPI 1 プロセスで指定する場合必須. export I_MPI_FABRICS=shm:ofa export I_MPI_PIN_DOMAIN=omp export I_MPI_PIN_CELL=core mpdboot -n $NODES -f ${PJM_O_NODEINF} -r /bin/pjrsh mpiexec -n $PROCS ./$slv < ./$cnf > ./$log mpdallexit
CX + frt の場合
#!/bin/sh #PJM --rsc-list "rscunit=cx" #PJM --rsc-list "rscgrp=cx-middle" <- ジョブグループ #PJM --rsc-list "vnode=32,vnode-core=24,elapse=24:00:00,vnode-mem=25600" <- 使用ノード数, 使用スレッド数, 使用時間, 使用メモリ容量 #PJM --name "solve.sh" #PJM -j #PJM -S ############ configure ############### NODES=32 <- ノード数 CORES=24 <- スレッド数 PROCS=32 <- MPI プロセス数 (特に変な設定にしていないなら NODES と同じでよい.) cnf=user.conf.JPN2.5KM2012082512Z <- user.conf の名前. log=log.solver.txt <- ログ出力ファイルの名前. slv=solver.exe <- solver.exe の名前. ############ configure ############### cd ${PJM_O_WORKDIR} export OMP_NUM_THREADS=$CORES export MPI_NUM_PROCS=$NODES mpiexec -n $MPI_NUM_PROCS -stdin ./$cnf -of-proc ./$log ./$slv -Wl,-T -Wl,-Lu
FX + frtpx の場合
#!/bin/sh #PJM --rsc-list "rscunit=fx" #PJM --rsc-list "rscgrp=fx-small" <- ジョブグループ #PJM --rsc-list "node=4x3,elapse=24:00:00,node-mem=25600" <- 使用ノード数, 使用スレッド数, 使用時間, 使用メモリ容量 #PJM --name "solve.sh" #PJM -j #PJM -S ############ configure ############### NODES=12 <- ノード数 CORES=16 <- スレッド数 PROCS=12 <- MPI プロセス数 (特に変な設定にしていないなら NODES と同じでよい.) cnf=user.conf.JPN2.5KM2012082512Z <- user.conf の名前. log=log.solver.txt <- ログ出力ファイルの名前. slv=solver.exe <- solver.exe の名前. ############ configure ############### cd ${PJM_O_WORKDIR} export OMP_NUM_THREADS=$CORES export MPI_NUM_PROCS=$NODES export OMP_STACKSIZE=512000 # <= これを指定しないと, omp 処理のときに止まる. mpiexec -n ${MPI_NUM_PROCS} -stdin ./$cnf -of-proc ./$log ./$slv -Wl,-Lu
ジョブの投入.
$ pjsub ????? # ????? = ジョブ投入スクリプトファイルの名前.
ジョブの確認.
$ pjstat
ポストプロセスプログラムの実行 (?????? = user.conf ファイルの名前).
$ ./unite.exe < ?????? > log.terrain
以上で *united.bin というファイルが大量に出力されている. このファイルが CReSS の計算結果が格納されたものである.