5.10 FOCUSスパコンの使用法

FOCUSスパコンの使用法については下記のページも合わせて参考にしてください。
http://www.e-em.co.jp/FOCUS/index.html

共用領域
FOCUSスパコンの共用領域にビルドされた実行プログラムが置いてあります。 これを使えばユーザーはソースコードをビルドする必要がなく、 入力データ(data/フォルダ以下)だけを用意すれば計算を行うことができます。
共用領域の実行プログラムを使うには最初に以下の作業を行ってください。
ログインサーバーから
$ ssh ff
とした後、以下のコマンドを実行します。
$ mkdir OpenFDTD
$ cd OpenFDTD
$ ln -s /home1/share/OpenFDTD/2.2.1/MPI-openmpi-2.1.1+gnu-6.3.0/ofd .
$ ln -s /home1/share/OpenFDTD/2.2.1/MPI-openmpi-2.1.1+gnu-6.3.0/ofd_mpi .
$ ln -s /home1/share/OpenFDTD/2.2.1/openmpi-2.1.1+gnu-6.3.0+cuda-9.2/ofd_cuda .
$ ln -s /home1/share/OpenFDTD/2.2.1/openmpi-2.1.1+gnu-6.3.0+cuda-9.2/ofd_cuda_mpi .
$ ln -s /home1/share/OpenFDTD/2.2.1/nmpi-1.3.0+nec-1.5.0/ofd_ncc .
$ ln -s /home1/share/OpenFDTD/2.2.1/nmpi-1.3.0+nec-1.5.0/ofd_ncc_mpi .
ここで"2.2.1"はOpenFDTDのバージョンを表します。一番大きな数字を入力してください。

5.10.1 CPUで計算する方法

ソースコードをビルドするにはログインサーバーから
$ ssh fgpu1
とし(注1)、以下のmoduleをloadした後、"5.1.2 Linux開発環境"を参考にしてください。
$ module load PrgEnv-gnu-6.3.0
$ module load MPI-openmpi-2.1.1+gnu-6.3.0+cuda-8.0

(1) 1ノードで実行するとき
1ノードで実行するときのスクリプトファイルは以下の通りです。
このうち、-p, -t行と引数-nの数字とデータファイル名は適当に変えてください。

#!/bin/bash
#SBATCH -p f024h
#SBATCH -t 30
#SBATCH -J ofd_omp
#SBATCH -o stdout.%J
./ofd -n 40 data/benchmark/benchmark100.ofd

(2) 複数ノードで実行するとき
複数ノードで実行するときのスクリプトファイルは以下の通りです。
このうち、-p, -N, -t行と引数-nの数字とデータファイル名は適当に変えてください。
以下の例はHシステム(8コア)を2ノード(=16プロセス)起動することを意味します。

#!/bin/bash
#SBATCH -p h024h
#SBATCH -N 2
#SBATCH -t 30
#SBATCH -J ofd_mpi
#SBATCH -o stdout.%J
module load MPI-openmpi-2.1.1+gnu-6.3.0+cuda-8.0
mpiexec -n 16 ./ofd_mpi data/benchmark/benchmark100.ofd 2> /dev/null

5.10.2 計算結果の取得

計算結果は以下のようにして確認します。

(注意)
一括処理のときと分割処理のポスト処理のとき、引数"-ev"をつけると ev2d.htm, ev3d.htm, geom3d.htm の代わりに ev.ev2, ev.ev3, geom.ev3 が出力されます。 これらは独自フォーマットのファイルであり、Windowsに転送した後、 配布ファイルに含まれている ev2d.exe, ev3d.exe で開いてください。

5.10.3 GPUで計算する方法

Fシステムには NVIDIA Tesla P100 (16GB) を有したノードが2ノードあります。

ソースコードをビルドするにはログインサーバーから
$ ssh fgpu1
とし(注1)、以下のmoduleをloadした後、"5.1.2 Linux開発環境"を参考にしてください。
$ module load PrgEnv-gnu-6.3.0
$ module load MPI-openmpi-2.1.1+gnu-6.3.0+cuda-8.0
$ module load PrgEnv-cuda-9.2

(1) 1ノードで実行するとき
1ノードで実行するときのスクリプトファイルは以下の通りです。
このうち、-t行とデータファイル名は適当に変えてください。

#!/bin/bash
#SBATCH -p f024h_p100
#SBATCH -t 30
#SBATCH -J ofd_cuda
#SBATCH -o stdout.%J
./ofd_cuda data/benchmark/benchmark100.ofd

(2) 複数ノードで実行するとき
複数ノードで実行するときのスクリプトファイルは以下の通りです。
このうち、-N, -t行とデータファイル名は適当に変えてください。

#!/bin/bash
#SBATCH -p f024h_p100
#SBATCH -N 2
#SBATCH --ntasks-per-node=1
#SBATCH -t 30
#SBATCH -J ofd_cuda_mpi
#SBATCH -o stdout.%J
module load MPI-openmpi-2.1.1+gnu-6.3.0+cuda-8.0
mpiexec ./ofd_cuda_mpi data/benchmark/benchmark100.ofd 2> /dev/null

5.10.4 NECスパコンの使用法

[1] Vシステム

Vシステムには NEC SX-Aurora TSUBASA (以下、SX)のA100(1VE)モデルが2ノードあります。
SXでソースコードをビルドするにはログインサーバーから
$ ssh fvpu1
とし(注1)、以下のmoduleをloadします。
$ module load PrgEnv-nec
$ module load MPI-nmpi
その後、OpenFDTDフォルダに移動した後、以下のコマンドを実行してください。
なお、SX用のプログラムはCPU版/GPU版の約3倍のメモリーを必要とします。

$ cd src
$ make -f Makefile_ncc clean
$ make -f Makefile_ncc    共有メモリー版(ofd_ncc)が作成されます
$ cd ../mpi
$ make -f Makefile_ncc clean
$ make -f Makefile_ncc    MPI対応分散メモリー版(ofd_ncc_mpi)が作成されます
$ cd ..

(1) Vシステム1ノードで実行するとき
Vシステム1ノードで実行するスクリプトファイルは下記の通りです。
このうち、-t行とデータファイル名は適当に変えてください。
引数の"-n 8"はSXが8コアであることに対応しています。

#!/bin/bash
#SBATCH -p v024h
#SBATCH -t 30
#SBATCH -J ofd_ncc
#SBATCH -o stdout.%J
./ofd_ncc -n 8 data/benchmark/benchmark100.ofd

(2) Vシステム複数ノードで実行するとき
Vシステム2ノードで実行するスクリプトファイルは下記の通りです。
このうち、-t行とデータファイル名は適当に変えてください。

#!/bin/bash
#SBATCH -p v024h
#SBATCH -N 2
#SBATCH -n 2
#SBATCH -t 30
#SBATCH -J ofd_ncc_mpi
#SBATCH -o stdout.%J
module load PrgEnv-nec-2.3.1
module load MPI-nmpi-2.2.0
NODEFILE=`generate_pbs_nodefile`
mpiexec -machinefile $NODEFILE ./ofd_ncc_mpi -n 8 data/benchmark/benchmark100.ofd 2> /dev/null

[2] Wシステム

Wシステムは NEC SX-Aurora TSUBASA のA300(8VE)モデルの1ノードから成ります。
Wシステムで実行するにはVシステムでコンパイルした実行プログラムを フロントエンドサーバーから実行します。

(3) Wシステム1ノードで実行するとき
Wシステム1ノードで実行するスクリプトファイルは下記の通りです。
このうち、-t行とデータファイル名は適当に変えてください。
引数の"-ve 0-7"は8VEすべてを使用することを表します。

#!/bin/bash
#SBATCH -p w024h
#SBATCH -t 30
#SBATCH -J ofd_ncc_mpi_w
#SBATCH -o stdout.%J
module load PrgEnv-nec MPI-nmpi
mpiexec -ve 0-7 -n 8 ./ofd_ncc_mpi -n 8 data/benchmark/benchmark100.ofd

5.10.5 富士通スパコンの使用法

Xシステムには Fujitsu Supercomputer PRIMEHPC (以下FX) のFX700モデルが2ノードあります。
FXでソースコードをビルドするにはフロントエンドサーバーffから
$ ssh fx01 または
$ ssh fx02
とします(注1)。このときFOCUSスパコン利用開始時に与えられたパスワードが必要です。
初回に.bash_profileに以下の環境変数を設定します。
export PATH=/opt/FJSVstclanga/v1.1.0/bin:$PATH
export LD_LIBRARY_PATH=/opt/FJSVstclanga/v1.1.0/lib64:$LD_LIBRARY_PATH
その後、OpenFDTDフォルダに移動した後、以下のコマンドを実行してください。
なお、FX用のプログラムはCPU版/GPU版の約3倍のメモリーを必要とします。

$ cd src
$ make -f Makefile_fcc clean
$ make -f Makefile_fcc    共有メモリー版(ofd_fcc)が作成されます
$ cd ../mpi
$ make -f Makefile_fcc clean
$ make -f Makefile_fcc    MPI対応分散メモリー版(ofd_fcc_mpi)が作成されます
$ cd ..

(1) Xシステム1ノードで実行するとき
Xシステム1ノードで実行するスクリプトファイルは下記の通りです。
フロントエンドサーバーからジョブを発行してください。
このうち、-t行とデータファイル名は適当に変えてください。
FXは1ノードは1CPUから成り、1CPUは48コアから成ります。 MPI4プロセス、OpenMP12スレッドの組み合わせが一番速いようです。

#!/bin/bash
#SBATCH -p x024h
#SBATCH -t 30
#SBATCH -J ofd_fcc
#SBATCH -o stdout.%J
mpiexec -n 4 ./ofd_fcc_mpi -n 12 ./data/benchmark/benchmark100.ofd

(注1)
いったんビルドしたプログラムを実行するだけのときは、 ログインサーバーから以下のようにフロントエンドサーバーにログインした後、 ジョブを発行することができます。
$ ssh ff