*高速計算サーバ [#z8902a9c]
-高速計算サーバはSGI UV2000の8ノードで構成されています。
-1ノードあたり、16ソケット(128コア)の1TBの共有メモリを搭載しており、大規模な共有メモリ計算、OpenMPプログラムの実行に適しています。
-ここでは、ジョブクラスB~Fでバッチジョブを投入する方法を紹介します。

**OpenMP並列計算 [#g02887d8]
-スクリプト例(ジョブクラスCで32並列のOpenMPプログラム(md)を実行)
 #!/bin/csh
 #$ -ac P=32
 #$ -ac n=32
 #$ -jc C
 #$ -cwd
 setenv OMP_NUM_THREADS 32
 dplace -x2 ./md
並列数32を、-ac P,-ac nとOMP_NUM_THREADSの引数に指定します。(3か所)~
ジョブクラスBの場合は8、E、Fの場合は64を同様に3か所指定してください。~
ジョブの性能を安定させるためにプログラムの前に''dplace -x2''コマンドをつけてください。~
~
|~B|~C,D|~E,F|
|#$ -ac P=8&br;#$ -ac n=8&br;#$ -jc B&br;#$ -cwd|#$ -ac P=32&br;#$ -ac n=32&br;#$ -jc C&br;#$ -cwd|#$ -ac P=64&br;#$ -ac n=64&br;#$ -jc E&br;#$ -cwd|
**MPI並列計算 [#z7e89696]
-スクリプト例(ジョブクラスCで32並列のMPIプログラム(xhpl)を実行)
 #!/bin/csh
 #$ -ac P=32
 #$ -ac n=32
 #$ -jc C
 #$ -cwd
 mpiexec_mpt -np 32 dplace -s1 ./xhpl
EICシステムではMPIジョブの実行の際、''mpiexec_mpt''コマンドを使用してください。~
並列数32を、-ac P,-ac nとmpiexec_mptの引数に指定します。(3か所)~
ジョブクラスBの場合は8、E、Fの場合は64を同様に3か所指定してください。~
ジョブの性能を安定させるためにプログラムの前に''dplace -s1''コマンドをつけてください。~
~
|~B|~C,D|~E,F|
|#$ -ac P=8&br;#$ -ac n=8&br;#$ -jc B&br;#$ -cwd|#$ -ac P=32&br;#$ -ac n=32&br;#$ -jc C&br;#$ -cwd|#$ -ac P=64&br;#$ -ac n=64&br;#$ -jc E&br;#$ -cwd|

**MPI/OpenMPハイブリッド計算 [#h15fc781]
MPIプロセスごとにOpenMPのスレッドを起動する計算です。~
同一MPIプロセス中のOpenMPのスレッドが同一CPU内のローカルメモリを使用できるように、OpenMPのスレッド数は2,4,8のいずれかを推奨します。

MPI4プロセス×OpenMP8スレッドの場合~
 0          1          2          3       mpiプロセス番号~
[0,0,0,0,0,0,0,0] [1,1,1,1,1,1,1,1] [2,2,2,2,2,2,2,2][3,3,3,3,3,3,3,3] OpenMPスレッドが所属するMPIプロセス番号~
[ ]はCPUソケット~

-スクリプト例(ジョブクラスEで8並列x8スレッドのMPIプログラム(a.out)を実行)
 #!/bin/csh
 #$ -ac P=64
 #$ -ac n=64
 #$ -jc E
 #$ -cwd
 setenv OMP_NUM_THREADS 8
 mpiexec_mpt -np 8 omplace ./a.out
合計使用コア数の64を-ac P,-ac nの2か所に指定し、mpiexec_mpt、OMP_NUM_THREADSの引数にそれぞれ8を指定します。~

-スクリプト例(ジョブクラスCで8並列x4スレッドのMPIプログラム(a.out)を実行)
 #!/bin/csh
 #$ -ac P=32
 #$ -ac n=32
 #$ -jc C
 #$ -cwd
 setenv OMP_NUM_THREADS 4
 mpiexec_mpt -np 8 omplace ./a.out
合計使用コア数の32を-ac P,-ac nの2か所に指定し、mpiexec_mptにMPIプロセス数に8、OMP_NUM_THREADS にスレッド数4を指定します。~
dplaceの代わりに、&color(#FF0000){''omplace ''コマンドをつけてください。};~
~

|~B|~C,D|~E,F|
|#$ -ac P=8&br;#$ -ac n=8&br;#$ -jc B&br;#$ -cwd&br;setenv OMP_NUM_THREADS 2&br;mpiexec_mpt -np 4 &color(#FF0000){omplace}; ./a.out&br;もしくは&br;setenv OMP_NUM_THREADS 4&br;mpiexec_mpt -np 2 &color(#FF0000){omplace}; ./a.out|#$ -ac P=32&br;#$ -ac n=32&br;#$ -jc C&br;#$ -cwd&br;setenv OMP_NUM_THREADS 8&br;mpiexec_mpt -np 4 &color(#FF0000){omplace}; ./a.out&br;もしくは&br;setenv OMP_NUM_THREADS 4&br;mpiexec_mpt -np 8 &color(#FF0000){omplace}; ./a.out|#$ -ac P=64&br;#$ -ac n=64&br;#$ -jc E&br;#$ -cwd&br;setenv OMP_NUM_THREADS 8&br;mpiexec_mpt -np 8 &color(#FF0000){omplace}; ./a.out&br;もしくは&br;setenv OMP_NUM_THREADS 4&br;mpiexec_mpt -np 16 &color(#FF0000){omplace}; ./a.out&br;|

----
**OpenMPコア飛ばし [#x39bcae3]
-64コアを占有して、32コアを使用する例です。
-#$ -ac P=には実際に使用するコア数(ここでは32)、#$ -ac n=には占有するコア数(ここでは64)を指定します。
-コア飛ばしではomplaceというコマンドを使用します。-ntの引数に、#$ -ac P=と同じ値(ここでは32)を指定してください。
-"-c 0-:s=2"は各コアを1つ飛ばして、0,2,4,6....と使用することを意味します。
-omplaceを使う場合は、OMP_NUM_THREADSは不要です。(つけていても問題はありません。-ntの値が優先されます。)~
 #!/bin/csh
 #$ -ac P=32
 #$ -ac n=64
 #$ -jc E
 #$ -cwd
 omplace -nt 32 -c 0-:st=2 ./md

**MPIコア飛ばし [#p076501a]
-64コアを占有して、32コアを使用する例です。
-#$ -ac P=には実際に使用するコア数(ここでは32)、#$ -ac n=には占有するコア数(ここでは64)を指定します。
-mpiexec_mptの引数-npには#$ -ac P=と同じ値(ここでは32)を指定します。
-"setenv MPI_DSM_CPULIST 0-63/2"は各コアを1つづつ飛ばして、0,2,4,6...と使用することを意味します。
-''コア飛ばしをする場合は、dplaceをつけないでください。''~
 #!/bin/csh
 #$ -ac P=32
 #$ -ac n=64
 #$ -jc F
 #$ -cwd
 setenv MPI_DSM_CPULIST 0-63/2
 mpiexec_mpt -np 32 ./xhpl

**ハイブリッドコア飛ばし [#xfa94087]
-8ソケット64コアを占有して、 8プロセスMPI x 4スレッドOpenMPを実行する例です。(1ソケット8コア中で4コアのみを使用します。)
-#$ -ac P=には実際に使用するコア数(ここでは32)、#$ -ac n=には占有するコア数(ここでは64)を指定します。
-mpiexec_mptには、MPIプロセス数(ここでは8)を指定します。
-"omplace -nt 4 -c 1-:st=2"は各MPIプロセス毎に4つのOpenMPスレッドを起動し、一つ飛ばしで配置することを意味します。OpenMPスレッドは0,2,4,...という形で配置されます。~
-"omplace -nt 4 -c 0-:st=2"は各MPIプロセス毎に4つのOpenMPスレッドを起動し、一つ飛ばしで配置することを意味します。OpenMPスレッドは0,2,4,...という形で配置されます。~
 #!/bin/sh
 #$ -ac P=32
 #$ -ac n=64
 #$ -jc E
 #$ -cwd
 mpiexec_mpt -np 8 omplace -nt 4 -c 0-:st=2   ./a.out

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ