初版2021.4.12
第2版2021.5.12

神戸大学 計算科学教育センター 様

並列計算教育用計算機
利用者マニュアル

目次
1.

システム概要 ..................................................................................................................................................... 3
1.1.

並列計算教育用計算機システム構成 ................................................................................................................. 3

1.2.

各サブシステム構成 ........................................................................................................................................... 32.

1.2.1.

ログインサーバ

4

1.2.2.

計算サーバ

4

1.2.3.

ストレージシステム

4

システム接続方法 .............................................................................................................................................. 5
2.1.

2.2.

SSH ログイン ..................................................................................................................................................... 5
2.1.1.

ログイン方法52.1.2.

OpenSSH 設定

5

2.1.3.

ログアウト方法

6

VNC による GUI 利用 ........................................................................................................................................ 6
2.2.1.

ログインサーバでの vncserver 起動

62.2.2.

PC/ワークステーションから VNC アクセス方法 (学内)

8

2.2.3.

PC/ワークステーションから VNC アクセス方法 (学外)

92.2.4.

VNC の終了方法

11

3.

module コマンドによる環境設定方法 ................................................................................................................ 12

4.

開発環境の利用............................................................................................................................................... 14
4.1.

4.2.

5.

Intel oneAPI Toolkit の利用 ............................................................................................................................. 14
4.1.1.

Intel コンパイラ classic の利用

14

4.1.2.

MPI 通信ライブラリ Intel MPI の利用

17

4.1.3.

数値計算ライブラリ oneMKL の利用

18

HPE MPI の利用 ............................................................................................................................................. 20
4.2.1.

環境設定

20

4.2.2.

コンパイル、リンク方法

20

ジョブスケジューラの利用 ................................................................................................................................. 21
5.1.

ジョブスケジューラの概要 ................................................................................................................................. 21

5.2.

キュー構成 ....................................................................................................................................................... 21

5.3.

ジョブ投入方法 ................................................................................................................................................. 21

6.

5.3.1.

ジョブ投入例

21

5.3.2.

ジョブの投入 qsub コマンド

23

5.3.3.

ジョブスクリプトの作成

25

5.3.4.

ジョブの確認方法

30

5.3.5.

キューの状態確認方法

31

5.3.6.

ジョブのキャンセル方法

31

HPE Cray Programming Environment の利用 ................................................................................................ 32
6.1.

HPE Cray Programming Environment (CPE) 概要......................................................................................... 32

6.2.

環境設定 ......................................................................................................................................................... 32

6.3.

6.2.1.

ログインサーバ上の環境設定

32

6.2.2.

計算サーバ上の環境設定

32

コンパイル・リンク方法 ...................................................................................................................................... 33
6.3.1.

コンパイラ CCE の利用

33

6.4.

数値計算ライブラリ CSML の利用 .................................................................................................................... 34

6.5.

プログラム実行方法 ......................................................................................................................................... 35
6.5.1.

プログラム起動コマンド aprun

35

6.5.2.

ジョブスクリプト例

352

1. システム概要
1.1. 並列計算教育用計算機システム構成
システム構成図を示します。
ログインサーバ 2 ノードおよび計算サーバ 16 ノード、ストレージシステム 200TB より構成されるシステムです。
ログインサーバおよび計算サーバは AMD APYC CPU が搭載されています。
また、サーバ間を接続する相互接続網 は 100Gbps の InfiniBand です。
ログインサーバは 外部から 10Gbps ネットワーク で ログインできます。
ログインサーバおよび計算サーバのファイルシステムとして、容量 200TB の共有ストレージを有しています。

システム

ホスト名

ログインサーバ

pifront1,
pifront2

計算サーバ

pinode01〜16

ハードウェア

ソフトウェアCPU: AMD EPYC 7542 1CPU (2.35 GHz 32C 155W)
MEM: 256GiB (DDR4-3200 32GiB x 8 DIMM)
InfiniBand: 1x IB HDR100 2p HCA
10G NW: 1x 10GbE 2p SFP+ NIC
CPU: AMD EPYC 7282 2CPU (2.8GHz 16C 120W)
MEM: 256GiB (DDR4-3200 16GiB x 16 DIMM
InfiniBand: 1x IB HDR100 2p HCA【Operating System】
Red Hat Enterprise Linux 8.2【開発環境】
Intel oneAPI Toolkit
Cray Programming Environment【ジョブスケジューラ】
Altair PBS Professional

1.2. 各サブシステム構成
ログインサーバ、計算サーバおよびストレージシステムの構成概要を示します。

31.2.1. ログインサーバ
ログインサーバは 2 ノードあり、プログラム開発や並列ジョブの投入に利用します。
ブロックダイアグラムを以下に示します。

1.2.2. 計算サーバ
計算サーバは 16 ノードあり、分散メモリ並列計算に利用します。
ブロックダイアグラムを以下に示します。

1.2.3. ストレージシステム
ログインサーバ 2 台 と 計算サーバ 16 台は HDR100 InfiniBand 経由で 200TB のストレージを共有します。

4

各ユーザには ホーム領域が割り当てられています。
ディレクトリ

ファイルシステム

総容量

備考

/home

NFS

200TB

ホーム領域
ユーザのホームディレクトリの絶対パスは “/home/group/user”

2. システム接続方法
2.1. SSH ログイン
2.1.1. ログイン方法
ログインサーバは ssh によるログインが可能です。
ホスト名 (FQDN)
pifront.eccse.kobe-u.ac.jp
pifront1.eccse.kobe-u.ac.jp
pifront2.eccse.kobe-u.ac.jp

IP アドレス

サービス

認証方式

備考

133.30.94.196
133.30.94.197

ssh
ssh
ssh

公開鍵認証
公開鍵認証
公開鍵認証

pifront1 もしくは pifront2 に接続
pifront1 に接続
pifront2 に接続

PC や ワークステーションから ログインサーバのログインは以下の通りです。
$ ssh scuser@pifront.eccse.kobe-u.ac.jp
実行例[wsuser@workstation ~]$ ssh scuser@pifront.eccse.kobe-u.ac.jp
Enter passphrase for key '/home/wsuser/.ssh/id_rsa':[scuser@pifront1 ~]$2.1.2. OpenSSH 設定
OpenSSH を使用している場合、以下のように設定することで、 “ssh pifront” や “ssh pifront2” といったホスト名の指定のみでログイン可能です。
設定例[wsuser@workstation ~]$ cat ~/.ssh/config
Host pifront
HostName pifront.eccse.kobe-u.ac.jp
5Port 22
User scuser
Host pifront1
HostName pifront1.eccse.kobe-u.ac.jp
Port 22
User scuser
Host pifront2
HostName pifront2.eccse.kobe-u.ac.jp
Port 22
User scuser
上記設定をした場合、 “ssh ホスト名”で ログインが可能になります。
実行例[wsuser@workstation ~]$ ssh pifront2
Enter passphrase for key '/home/wsuser/.ssh/id_rsa':[scuser@pifront2 ~]$2.1.3. ログアウト方法
ssh 接続のログアウトをする場合は “exit” もしくは “logout” コマンドを実行します。
実行例[scuser@pifront2 ~]$ logout
Connection to 133.30.94.196 closed.
[wsuser@workstation ~]$2.2. VNC による GUI 利用
ログインサーバの GUI を VNC (Virtual Networking Computing) で表示することが可能です。

2.2.1. ログインサーバでの vncserver 起動
vncserver を起動します。初回のみ パスワード設定が必要です。
実行例 (初回の VNC 起動)[scuser@pifront1 ~]$ vncserver -geometry 1024x768
You will require a password to access your desktops.
Password: XXXXXXXX
Verify: XXXXXXXX
New 'pifront1:1 (scuser)' desktop is pifront1:1
Creating default startup script /home/scuser/.vnc/xstartup
Creating default config /home/scuser/.vnc/config
Starting applications specified in /home/scuser/.vnc/xstartup
Log file is /home/scuser/.vnc/pifront1:1.log
2 回目以降は 設定済みの VNC パスワードをそのまま利用可能です。
6

実行例 (2 回目以降の VNC 起動)[scuser@pifront1 ~]$ vncserver -geometry 1024x768
New 'pifront1:1 (scuser)' desktop is pifront1:1
Starting applications specified in /home/scuser/.vnc/xstartup
Log file is /home/scuser/.vnc/pifront1:1.log[scuser@pifront1 ~]$これで、pifront1 の セッション 1 番 に VNC でアクセスすると、scuser の GUI が利用できるようになります。

7

2.2.2. PC/ワークステーションから VNC アクセス方法 (学内)
学内から Windows 環境で UltraVNC Viewer を利用してアクセスする場合、”[IP アドレス]:[セッション番号]”で指定します。今回の場合、pifront1 に セッション 1 番で接続するので、”133.30.94.196:1” を指定して、 Connect ボタンを押下します。

フロントサーバ上で VNC サーバを初回に起動した時に設定したパスワードを入力し、”Log On” ボタンを押下します。

VNC が起動します。

8

2.2.3. PC/ワークステーションから VNC アクセス方法 (学外)
学外から Windows 環境で UltraVNC Viewer を利用してアクセスする場合、ssh のポート転送設定が必要です。
VNC の ポート番号は “5900 番 + VNC セッション番号” といった形で指定します。
下記は pifront1 の 5901 番ポート (VNC セッション#1)を PC/ワークステーション の 25901 番ポートでアクセスできるよ
うに設定しています。
pifront1 セッション番号 1 (ポート番号 5901) の設定例
[wsuser@workstation ~]$ ssh -L 25901:pifront1:5901 pifront1

VNC サーバを起動した時に付与されるセッション番号は、その都度変わります。
下記は pifront2 の 5903 番ポート (VNC セッション#3)を PC/ワークステーション の 25901 番ポートでアクセスできるよ
うに設定しています。
pifront2 セッション番号 3 (ポート番号 5903) の設定例
[wsuser@workstation ~]$ ssh -L 25901:pifront2:5903 pifront2

ssh 実行後は、VNC を終了するまで SSH のセッションを開いたままにしておきます。
次に UltraVNC Viewer を起動します。
”[IP アドレス]::[ポート番号]”で指定します。ポート番号にする場合は、”: (コロン)” が 2 個連続で入力されていることに注意してください。
pifront1 の VNC セッション 1 番で接続されている場合、localhost (127.0.0.1) に セッション 1 番が割り当てられたポートで 5901 番で接続するので、”127.0.0.1::1” を指定して、 Connect ボタンを押下します。

フロントサーバ上で VNC サーバを初回に起動した時に設定したパスワードを入力し、”Log On” ボタンを押下します。

VNC が起動します。
9

10

2.2.4. VNC の終了方法
PC/ワークステーションの VNC Viewer を閉じます。

フロントエンドサーバ上で vncserver を 終了します。
[scuser@pifront1 ~]$ vncserver -kill :1
Killing Xvnc process ID 145654[scuser@pifront1 ~]$11

3. module コマンドによる環境設定方法
module コマンドを利用することで、コンパイラやアプリケーションで使用する環境設定をセットすることができます。
利用可能な module 環境は module avail で確認できます。
1. $ module avail
2. ------------------------------------- /share/spack/share/spack/modules/linux-rhel8-zen ------------------------------------3. berkeley-db-18.1.40-gcc-8.3.1-5q2ol2j ncurses-6.2-gcc-8.3.1-mefq7nl

py-setuptools-50.3.2-gcc-8.3.1-aspmcvt

4. bzip2-1.0.8-gcc-8.3.1-p2kq6k2

openblas-0.3.13-gcc-8.3.1-atpqev5

py-threadpoolctl-2.0.0-gcc-8.3.1-e2j4vfw

5. cmake-3.19.5-gcc-8.3.1-sdnk3x5

openssl-1.1.1j-gcc-8.3.1-5rvzi7x

python-3.8.8-gcc-8.3.1-xbx7faq

6. diffutils-3.7-gcc-8.3.1-5cxx2jc

perl-5.32.1-gcc-8.3.1-ezyqegs

readline-8.0-gcc-8.3.1-v2z56yf

7. expat-2.2.10-gcc-8.3.1-hgy7ksk

pkgconf-1.7.3-gcc-8.3.1-zwn7zfd

sqlite-3.34.0-gcc-8.3.1-ut7bdqe

8. gdbm-1.18.1-gcc-8.3.1-ugrzsga

py-cython-0.29.21-gcc-8.3.1-6e3f7yw

tar-1.32-gcc-8.3.1-h2wggm2

9. gettext-0.21-gcc-8.3.1-t6n3pyr

py-joblib-0.14.0-gcc-8.3.1-oaspy2t

util-linux-uuid-2.36-gcc-8.3.1-t25i5ee

10. libbsd-0.10.0-gcc-8.3.1-4ikaln3

py-numpy-1.20.1-gcc-8.3.1-m52nwlz

xz-5.2.5-gcc-8.3.1-favghf3

11. libffi-3.3-gcc-8.3.1-w6vkdly

py-pybind11-2.5.0-gcc-8.3.1-6idzm6c

zlib-1.2.11-gcc-8.3.1-ycvigzu

12. libiconv-1.16-gcc-8.3.1-k4uqlcr

py-scikit-learn-0.24.1-gcc-8.3.1-fl2pjhk

13. libxml2-2.9.10-gcc-8.3.1-e53xwao

py-scipy-1.6.1-gcc-8.3.1-ueumwgw

14.
15. ---------------------------------------------- /usr/share/Modules/modulefiles ---------------------------------------------16. dot hmpt/2.23 module-git module-info modules MPInside/4.2.50 mpiplace/2.00 mpt/2.23 null perfboost use.own
17.
18. ---------------------------------------------------- /share/modulefiles ---------------------------------------------------19. ParaView/5.9.0
20.
21. ------------------------------------------------ /share/oneAPI/modulefiles ------------------------------------------------22. advisor/2021.1.1

compiler/2021.1.1

dnnl-cpu-gomp/2021.1.1 init_opencl/2021.1.2

mkl32/2021.1.1

23. advisor/latest

compiler/2021.1.2

dnnl-cpu-gomp/latest

init_opencl/latest

mkl32/latest

24. ccl/2021.1.1

compiler/latest

dnnl-cpu-iomp/2021.1.1 inspector/2021.1.1

mpi/2021.1.1

25. ccl/latest

compiler32/2021.1.1

dnnl-cpu-iomp/latest

inspector/latest

mpi/latest

26. clck/2021.1.1

compiler32/2021.1.2

dnnl-cpu-tbb/2021.1.1

intel_ipp_intel64/2021.1.1

oclfpga/2021.1.2

27. clck/latest

compiler32/latest

dnnl-cpu-tbb/latest

intel_ipp_intel64/latest

oclfpga/latest

28. compiler-rt/2021.1.1

dal/2021.1.1

dnnl/2021.1.1

intel_ippcp_intel64/2021.1.1 tbb/2021.1.1

29. compiler-rt/2021.1.2

dal/latest

dnnl/latest

intel_ippcp_intel64/latest

tbb/latest

30. compiler-rt/latest

debugger/10.0.0

dpct/2021.1.1

itac/2021.1.1

vpl/2021.1.1

31. compiler-rt32/2021.1.1 debugger/latest

dpct/latest

itac/latest

vpl/latest

32. compiler-rt32/2021.1.2 dev-utilities/2021.1.1 dpl/2021.1.2

mkl/2021.1.1

vtune/2021.1.2

33. compiler-rt32/latest

mkl/latest

vtune/latest

dev-utilities/latest

dpl/latest

module 環境をロードしたい場合は、module load <モジュール名> を実行します。
Intel コンパイラ の 設定例$ module load compiler
ロードした module 環境を初期化したい場合は module purge を実行します。
$ module purge
12ジョブスクリプト内で module コマンドを実行する場合は、スクリプト内で module コマンドの初期設定を行う必要があります。
ジョブスクリプト内 Intel oneAPI 設定例
source /etc/profiled.d/modules.shmodule load compiler
csh 系の場合は “/etc/profile.d/modules.csh” に置き換えてください。

13

4. 開発環境の利用
本システムで利用できる開発環境は以下の通りです。

コンパイラ
数値計算ライブラリ
MPI 通信ライブラ
リIntel oneAPI Toolkit
Intel Compiler Classic

HPE Cray Programming Environment
Cray Compiling Environment (CCE)Intel oneMKL

Cray Scientific and Math Libraries (CSML)Intel MPI

Cray Message Passing Toolkit (CMPT)HPE MPI

HPE MPI

4.1. Intel oneAPI Toolkit の利用
4.1.1. Intel コンパイラ classic の利用
4.1.1.1.

環境設定

module コマンドで compiler モジュールをロードします。
$ module load compiler

4.1.1.2.

コンパイル／リンクの概要

コンパイル／リンクの書式は以下の通りです。
$ command [options] sourcefile […]コンパイルには言語に応じて以下のコマンドを利用します。
言語処理系
Fortran
C
C++

コマンド
ifort
icc
icpc

コマンド形式$ ifort [options] sourcefile$ icc [options] sourcefile$ icpc [options] sourcefile[options] には、最適化オプション、並列化オプション、ライブラリのリンクオプション、その他のコンパイラオプションが入ります。なお、--help オプションを指定すると、コンパイラオプションの一覧が表示されます。
Fortran コンパイル実行例$ ifort -march=core-avx2 -O3 program.f

14

4.1.1.3.

コンパイルの主なオプション

最適化のオプションは以下の通りです。
オプション
-O0
-O1
-O2
-O3
-march=core-avx2-qopt-report=n

説明
最適化レベルオプション
全ての最適化を無効にします。デバッグを行う時に指定してください。
保守的な最適化を行います。
ソフトウェアパイプラインによる最適化を行います。デフォルトの最適化レベルです。何も指定しないとこのオプションで最適化されます。
積極的な最適化を行います。-O2 の最適化に加えて、ループの交換やデータプリフェッチを行います。
CPU アーキテクチャに対する最適化オプション
AVX2 命令セットを持つ AMD EPYC CPU 向けの最適化を行います。
最適化レポートオプション
最適化レポートを生成します。デフォルトでは、レポートは.optrpt 拡張子を持つファイルに出力されます。n には、0 (レポートなし) から 5 (最も詳しい) の詳細レベルを指定します。
デフォルトは 2 です。

[補足]
AMD EPYC CPU は AVX512 命令セットを持たないので、Intel プロセッサ向け 最適化 の -xCORE-AVX512 は用いることはできません。
その他、主なオプションは以下の通りです。
オプション-fp-model precise
-ipo

-g

-traceback

説明
浮動小数点演算、プロシージャ間解析オプション
浮動小数点データの精度に影響する最適化を無効にし、中間結果をソースで定義された精度まで丸めます。
複数のソースファイルにあるプロシージャ間の解析、最適化を行います。リンク時にもオプションとして指定してください。インライン展開を有効にし、プログラムのなかで小さいサイズの関数を何回も呼び出しているような場合に性能向上の効果があります。
デバック用オプション-g オプションはオブジェクト・ファイルのサイズを大きくするシンボリック・デバッグ情報をオ
ブジェクト・ファイルに生成するようにコンパイラに指示します。
このオプションは、ランタイム時に致命的なエラーが発生したとき、ソースファイルのトレー
スバック情報を表示できるように、オブジェクト・ファイル内に補足情報を生成するようにコンパイラに指示します。
致命的なエラーが発生すると、コールスタックの 16 進アドレス (プログラム・カウンター・ト
レース) とともに、ソースファイル、ルーチン名、および行番号の相関情報が表示されます。
マップファイルとエラーが発生したときに表示されるスタックの 16 進アドレスを使用することで、エラーの原因を特定できます。
このオプションを指定すると、実行プログラムのサイズが増えます。

プログラムの実行時にエラーが発生した場合、診断メッセージが出力されます。より詳細な情報であるトレースバックを表示してデバッグするためには “-g -traceback” オプションが有効です。

15

4.1.1.4.

メモリモデル指定

次のいずれかのメモリモデルを使用して実行バイナリを作成します。
メモリモデル-mcmodel=small-mcmoddel=medium-mcmodel=large

説明
コードとデータのすべてのアクセスが、命令ポインター (IP) 相対アドレス指定で行われるように、コードとデータはアドレス空間の最初の 2GB までに制限されます。
-mcmodel オプションを指定しない場合、デフォルトでこちらが指定されます。
コードはアドレス空間の最初の 2GB までに制限されますが、データは制限されません。コードは IP 相対
アドレス指定でアクセスできますが、データのアクセスは絶対アドレス指定を使用する必要があります。
コードもデータも制限されません。コードもデータもアクセスは絶対アドレス指定を使用します。

IP 相対アドレス指定は 32 ビットのみ必要ですが、絶対アドレス指定は 64 ビット必要です。これは、コードサイズとパフォ
ーマンスに影響します。(IP 相対アドレス指定の方が多少速くアクセスできます)。
プログラム内の共通ブロック、グローバルデータ、静的データの合計が 2GB を越えるとき、リンク時に次のエラーメッセー
ジが出力されます。
<some lib.a library>(some .o): In Function <function>:: relocation truncated to fit: R_X86_64_PC32 <some symbol>…………………
: relocation truncated to fit: R_X86_64_PC32 <some symbol>
この場合は、-mcmodel=medium を指定してコンパイル/リンクして下さい。

4.1.1.5.

スレッド並列 (OpenMP と自動並列化)

OpenMP、自動並列化によるスレッド並列によりプログラムの高速化ができます。
オプション

説明
自動並列化

-parallel-qopt-report=n -qopt-report-phase=par-parallel -par-threshold[n]自動並列化の指定です。OpenMP 指示行はコメント行として扱います。
-qopt-report=n の出力を自動並列化に限定します。
自動並列化の閾値を設定します。（n は 0 から 100 までデフォルトは 75）。
-par-threshold0：性能向上が確実でないループでも並列化-par-threshold100：性能向上が確実なループのみ並列化

OpenMP-qopenmp-qopt-report=n -qopt-report-phase=openmp

自動並列化をせずに、OpenMP 指示行のみ有効にします。
-qopt-report=n の出力を OpenMP 並列化に限定します。

16

4.1.2. MPI 通信ライブラリ Intel MPI の利用
Intel MPI を使った MPI プログラムのコンパイルは MPI ライブラリをリンクする専用コマンドを利用します。

4.1.2.1.

環境設定

module コマンドで mpi モジュールをロードします。
$ module load mpi

4.1.2.2.

コンパイル／リンク方法
言語処理系
FortranCC++Intel コンパイラ classic 利用$
mpiifort[options]
sourcefile$ mpiicc [options] sourcefile$ mpiicpc [options] sourcefile

GNU コンパイラ利用$ mpif90 [options] sourcefile$ mpicc [options] sourcefile$ mpicxx [options] sourcefile-show オプションをつけると、実行されるコマンドの詳細を確認できます。
mpiifort コマンドの確認$ mpiifort -show
ifort -I'/opt/intel/oneapi/mpi/2021.1.1//include' -I'/opt/intel/oneapi/mpi/2021.1.1/include' L'/opt/intel/oneapi/mpi/2021.1.1/lib/release' -L'/opt/intel/oneapi/mpi/2021.1.1/lib' -Xlinker -enable-new-dtags -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib/release' -Xlinker rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib' -lmpifort -lmpi -ldl -lrt -lpthread
mpif90 コマンドの確認$ mpif90 -show
gfortran-I'/opt/intel/oneapi/mpi/2021.1.1/include/gfortran/8.2.0'
I'/opt/intel/oneapi/mpi/2021.1.1/include'-L'/opt/intel/oneapi/mpi/2021.1.1/lib/release'
L'/opt/intel/oneapi/mpi/2021.1.1/lib' -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker'/opt/intel/oneapi/mpi/2021.1.1/lib/release'-Xlinker-rpath-Xlinker'/opt/intel/oneapi/mpi/2021.1.1/lib' -lmpifort -lmpi -lrt -lpthread -Wl,-z,now -Wl,-z,relro -Wl,z,noexecstack -Xlinker --enable-new-dtags -ldl

17

4.1.3. 数値計算ライブラリ oneMKL の利用
4.1.3.1.

Intel OneMKL 概要

数値計算ライブラリとして Intel oneMKL (oneAPI Math Kernel Library) を提供します。
BLAS および BLAS 拡張
LAPACK および LAPACK 拡張
ScaLAPACK
ベクトル数学 (VML)
ベクトル統計 (乱数ジェネレータ)

4.1.3.2.

ベクトル統計 (サマリー統計)
データ適合
FFT/DFT
スパース BLAS
スパースソルバー

環境設定

module コマンドで mkl モジュールをロードします。
$ module load mkl
すでに compiler モジュールをロードしている場合は compiler-rt および tbb モジュールを アンロードしてから mkl モジュールをロードします。
$ module load compiler$ module unload compiler-rt tbb$ module load mkl

18

4.1.3.3.

コンパイル／リンク方法

Intel oneMKL のリンク方法は 用途に応じてオプションを選んでください。
Intel コンパイラ classic (ifort, icc, icpc) のコンパイラオプションとして -mkl オプションを利用できます。
用途
逐次
スレッド並列MPI 並列オプション-mkl=sequential-mkl=parallel-mkl=cluster

備考
OpenMP や Intel TBB を使用する場合
Intel MPI を使用する場合-mkl オプションを使わず必要なライブラリを明示的にリンクする場合は、以下のように指定します。
用途

オプション

逐次
スレッド並列ScaLAPACK
スレッド並列64 ビット整数型対応
スレッド並列-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm-lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm-lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm

194.2. HPE MPI の利用
Intel MPI だけではなく、HPE MPI (旧 SGI MPT) を使用した MPI プログラムのコンパイルを利用できます。
HPE MPI を使った MPI プログラムのコンパイルにおいても MPI ライブラリをリンクする専用コマンドを利用します。
※旧システム(vizfront, vizcore)での SGI MPT は、HPE MPI に名称が変更されました。

4.2.1. 環境設定
module コマンドで mpt モジュールをロードします。
$ module load mpt

4.2.2. コンパイル、リンク方法
mpif90、mpicc、mpicxx コマンドが用意されており、環境変数を指定することで Intel コンパイラ classic を利用することができます。
言語処理系
Fortran
C
C++

使用コンパイラ

実行方法

GNU コンパイラ$ mpif90 [options] sourcefile$ module load compiler$ mpif90 [options] sourcefile$ mpicc [options] sourcefile$ module load compiler$ MPICC_CC=icc mpicc [options] sourcefile$ MPI_LIB="mpi+ -lmpi" mpicxx [options] sourcefile$ module load compiler$ MPICXX_CXX=icpc MPI_LIB="mpi+ -lmpi" mpicxx [options] sourcefile

Intel コンパイラ Classic
GNU コンパイラ
Intel コンパイラ Classic
GNU コンパイラ
Intel コンパイラ Classic-show オプションをつけると、実行されるコマンドの詳細を確認できます。
mpif90 コマンドの確認$ mpif90 -show
gfortran -I/opt/hpe/hpc/mpt/mpt-2.23/include
L/opt/hpe/hpc/mpt/mpt-2.23/lib -lmpi-I/opt/hpe/hpc/mpt/mpt-2.23/include-lpthreadIntel コンパイラ classic の モジュールを ロードすると、 ifort に切り替わります。
$ module load compiler$ mpif90 -show
ifort -I/opt/hpe/hpc/mpt/mpt-2.23/include -lpthread -L/opt/hpe/hpc/mpt/mpt-2.23/lib -lmpi

20-

5. ジョブスケジューラの利用
5.1. ジョブスケジューラの概要
本システムでは、効率的なジョブ運用を実現するため、PBS Professional (以降 PBS) が導入されています。
ユーザはジョブ開始時に必要なリソース情報など実行条件を指定し、PBS に対してジョブ実行を指示します。
ジョブ実行形式には、インタラクティブ実行と、ジョブスクリプトを使用したバッチ実行があります。
インタラクティブ実行は対話形式、バッチ実行はスクリプトに記述されたコマンド実行形式です。
ジョブスクリプトの作成方法は、「ジョブスクリプトの作成」をご参照ください。
ユーザがジョブ操作に用いるコマンドは以下の通りです。
機能
バッチジョブ投入
対話形式によるジョブ投入
実行ジョブの確認
実行ジョブのキャンセル

コマンド$ qsub <job script>$ qsub -I$ qstat <jobid>$ qdel <jobid>

5.2. キュー構成
本システムで利用可能なキュー構成は以下の通りです。
キュー名
debug
large

最大 CPU コア数
32512

最大実行時間
30 分
12 時間

実行ホスト
pinode01-16
pinode01-16

5.3. ジョブ投入方法
基本的なジョブ投入方法は、$ qsub <job script>
です。 job script は ジョブスクリプト (ジョブ投入用シェルスクリプト) です。
また、スクリプトによるバッチ実行ではなく、インタラクティブ実行は 以下のコマンドを利用します。
$ qsub -I
ジョブの投入が成功すると、投入ジョブに対してジョブ ID が割り当てられます。インタラクティブ実行時は exit コマンドでジョブを終了します。

5.3.1. ジョブ投入例
バッチ実行時には、ジョブ投入（qsub コマンド実行）を行ったディレクトリに係わらず、実行ユーザのホームディレクトリがカレントディレクトリとなります。したがってプログラムを実行するディレクトリが異なる、または固定的な場所をアクセスす21

るようなジョブの場合には、実行コマンドまたは作成したジョブスクリプト内で cd を実行し、ディレクトリを明示してください。
バッチ実行のジョブ内では”PBS_O_WORKDIR”という環境変数に qsub コマンドを実行したディレクトリがセットされています。
スクリプト内に”cd $PBS_O_WORKDIR”を記載しておくことにより、ジョブ投入を行ったディレクトリに変更する事ができます。

5.3.1.1.

ジョブスクリプトの作成

任意のテキストエディタでスクリプトを作成ください。
$ cat sample_script.sh#!/bin/bash#PBS -q debug#PBS -l select=1:ncpus=1#PBS -N sample_job#PBS -j oe
cd ${PBS_O_WORKDIR}
echo “Hello sample job.”

5.3.1.2.

ジョブの投入作成したジョブスクリプトを用いて qsub コマンドでジョブを投入します。
$ qsub ./sample_script.sh
104.pifront1
104 が PBS で割り当てられたジョブ ID です。

5.3.1.3.

ジョブの終了ジョブの終了後、ジョブスクリプトが出力した内容を確認することができます。
$ cat ./sample_job.o104
Hello sample job.

22

5.3.2. ジョブの投入 qsub コマンドqsub コマンドの主なオプションは以下の通りです。ジョブ投入時に指定する、もしくは ジョブスクリプト内に記載ください。
オプション-q queue_name-N name-a date_time-j oe | eo-o path_name-e path_name-m mail_option-M mail_address-l keyword=value-l walltime=hh:mm:ss

説明
ジョブを投入するキューの指定。
指定がない場合は、デフォルトキュークラスである“debug”へ投入されます。
ジョブ名の指定。指定しない場合はジョブスクリプトの名前が自動的に設定されます。アルファベット、数字、一部記号（+ - _ .）が使用可能です。空白文字は使用できません。
指定した日時にジョブを開始するように指定します。date_time は[[[[CC]YY]MM]DD]hhmm[.SS]というような形式で指定します。CCYY は西暦、MMDD は月日、hhmm.SS は時分秒です。
stdout(標準出力)、stderr(標準エラー出力)の出力ファイルを統合。"oe"を指定した場合は、これらの出力をまとめて stdout に出力します。"eo"を指定した場合は、出力をまとめて stderr に出力します。
stdout の出力ファイル名を指定。無指定だと"ジョブ名.o ジョブ ID"となります。投入時のディレクトリに対する相対パス、絶対パスが指定できます。
stderr の出力ファイル名を指定。無指定だと"ジョブ名.e ジョブ ID"となります。投入時のディレクトリに対する相対パス、絶対パスが指定できます。
メールの送信の設定。mail_option には以下のものがあります。
a : ジョブが中止された場合に送信b : ジョブの実行が開始された際に送信
e : ジョブの実行が終了した際に送信
n : メール送信しない
メール受信者の設定。指定しない場合、ジョブを投入したユーザーアカウントが受信者となります。
ジョブのリソース（コア数、メモリ、実行時間など）要求の指定。利用するノード数、コア数の指定の仕方は「qsub コマンド select 文について」をご覧ください。
ジョブの実行時間制限の指定。hh:mm:ss（時:分:秒）の形式で指定してください。例えば実行時間を 1 時間に制限する場合は、次のように記述します。-l walltime=1:00:00

qsub コマンドの詳細については、オンラインマニュアル (man qsub)、または PBS 付属のユーザガイドを参照ください。

23

5.3.2.1.

qsub コマンドの select 文についてジョブで利用するリソース数（ノード数、CPU コア数など）を指定する場合は select 文を用います。
ジョブスクリプト内もしくはジョブ投入オプションに以下を指定します。
-l select=N1:ncpus=N2
MPI ジョブの場合は 以下を指定します。
-l select=N1:ncpus=N2:mpiprocs=N3
select 文で 指定する N1、N2、N3 の説明は、以下の通りです。
Nx
N1
N2
N3

説明
利用するノード数を指定します。
計算ノード内の CPU コア数を指定します。
本システムの計算ノードは 32 コアを搭載していますので、N2 は 32 以下となります。
計算ノード内の MPI プロセス数を指定します。
MPI ジョブの場合は N3=N2 となります。
MPI と OpenMP のハイブリッドジョブの場合は、N3=N2÷(OpenMP スレッド数) です。

ノードごとに N2、N3 の値が変わる場合には、-l select=N1:ncpus=N2:mpiprocs=N3+M1:ncpus=M2:mpiprocs=M3のように + でつなげて指定してください。

24

5.3.3. ジョブスクリプトの作成
バッチ実行のジョブを投入する際に使用するジョブスクリプトについて、以下にサンプルを示します。
ジョブスクリプトのファイル名は任意で構いません。ジョブスクリプトは qsub コマンドの入力ファイルですので、実行属性は必要ありません。

5.3.3.1.

並列化されていない逐次ジョブ

2 行目から 6 行目のように”#PBS”で始まる行は qsub コマンドに指定するオプションをスクリプト内に記述するものです。
(#PBS 行は、シェルにはコメント行として解釈されますが、qsub コマンドにはオプション指定行として解釈されます)。
1CPU を使用した逐次ジョブのスクリプト例
1 #!/bin/bash
2 #PBS -q debug
3 #PBS -l select=1:ncpus=1
4 #PBS -N serial_JOB
5 #PBS -o serial_out_file
6 #PBS -j oe
7 source /etc/profile.d/modules.sh
8 module load compiler
9 cd ${PBS_O_WORKDIR}
10 ./a.out > log.txt 2>&1

bash スクリプトを宣言
キュー名指定利用するリソースを指定
ジョブ名を指定
標準出力 (stdout) を出力するファイルを指定
標準エラー出力を 標準出力に結合する指定Intel コンパイラ環境を読み込み実行ファイルがあるディレクトリへ移動
プログラムの実行

10 行目のようにプログラムの標準出力、標準エラー出力を明示的に指定するファイルへ出力することもできます。

5.3.3.2.

スレッド並列ジョブ (OpenMP)

OpenMP の並列数(OMP_NUM_THREADS 環境変数)は、デフォルトで qsub 実行時の-l select の ncpus オプションで指定された値が自動的に設定されます。
OpenMP 8 スレッド並列ジョブのスクリプト例
1
2
3
4
5
6
7
8
9
10
11
12

#!/bin/bash#PBS -q debug#PBS -l select=1:ncpus=8#PBS -N omp_JOB#PBS -o omp_out_file#PBS -j oesource /etc/profile.d/modules.shmodule load compiler
export OMP_NUM_THREADS=8
export KMP_AFFINITY=disabled
cd ${PBS_O_WORKDIR}
dplace ./a.out > log.txt 2>&1

利用するノード数、CPU 数 (並列度) を指定

Intel コンパイラ環境を読み込みOpenMP の並列数を明示的に変更する場合。 ncpu と同じ値なら不要。
Intel コンパイラの AFFINITY を無効化
プログラムの実行

自動並列化/OpenMP 並列化ジョブの場合は、性能を安定させるために実行プログラムの前に dplace コマンドを指定してください。
dplace コマンドは、OS のプロセススケジュールによる CPU 間のプロセス移動を避けるために、プロセス/スレッドをコアに固定するコマンドです。

25

5.3.3.3.

MPI 並列ジョブ (HPE MPI)

ジョブ実行時に qsub オプションで確保するリソース数を、-l select の ncpus オプション（CPU 数、並列度）、mpiprocs
オプション（MPI プロセス数）で指定してください。
MPI 8 並列ジョブ (2 ノード x 4 MPI) のスクリプト例
1
2
3
4
5
6
7
8
9
10
11

#!/bin/bash#PBS -q large#PBS -l select=2:ncpus=4:mpiprocs=4#PBS -N hpempt_JOB#PBS -o hpempt_out_file#PBS -j oesource /etc/profile.d/modules.shmodule load compiler
module load mpt
cd ${PBS_O_WORKDIR}
mpiexec_mpt dplace –s1 ./a.out > log.txt 2>&1

利用するノード数、CPU 数 (並列度) 、MPI プロセス数を指定

Intel コンパイラ環境を読み込み
HPE MPI 環境を読み込みプログラムの実行

HPE MPI 並列ジョブを実行するには mpiexec_mpt コマンドを利用します。MPI の並列度を-np オプションで指定しなくても、自動的に PBS の mpiprocs オプションで指定した値が使用されます。
HPE MPI を利用した MPI 並列プログラムの実行には、性能を安定させるためにプログラムの前に dplace -s1 コマンド
（要オプション）を指定してください。
dplace コマンドは、OS のプロセススケジュールによる CPU 間のプロセス移動を避けるために、プロセス/スレッドをコアに固定するコマンドです。-s オプションを指定すると、最初の n 個のプロセスを CPU に配置しません。
mpiexec_mpt では 1+N（並列数）個のプロセスが起動されますが、最初のプロセスは実際にはインアクティブな状態ですので、-s1 を指定してインアクティブなプロセスを CPU に割り当てないようにします。

26

5.3.3.4.

MPI 並列ジョブ (Intel MPI)

ジョブ実行時に qsub オプションで確保するリソース数を、-l select の ncpus オプション（CPU 数、並列度）、mpiprocs
オプション（MPI プロセス数）で指定してください。
MPI 8 並列ジョブ (2 ノード x 4MPI) のスクリプト例
1 #!/bin/bash
2 #PBS -q large
3 #PBS -l select=2:ncpus=4:mpiprocs=4
4 #PBS -N intelmpi_JOB
5 #PBS -o intelmpi_out_file
6 #PBS -j oe
7 source /etc/profile.d/modules.sh
8 module load compiler
9 module load mpi
10 cd ${PBS_O_WORKDIR}
11 mpirun ./a.out > log.txt 2>&1

利用するノード数、CPU 数 (並列度) 、MPI プロセス数を指定

Intel コンパイラ環境を読み込みIntel MPI 環境を読み込みプログラムの実行

Intel MPI 並列ジョブを実行するには mpirun コマンドを利用します。MPI の並列度を-np オプションで指定しなくても、自動的に PBS の mpiprocs オプションで指定した値が使用されます。

27

5.3.3.5.

MPI+OpenMP ハイブリッド並列ジョブ (HPE MPI)

ジョブ実行時に qsub オプションで確保するリソース数を、-l select の ncpus オプション（CPU 数、並列度）、mpiprocs
オプション（MPI プロセス数）で指定してください。
ハイブリッド並列ジョブ (2 ノード x 2MPI x 8 スレッド) のスクリプト例
1
2
3
4
5
6
7
8
9
10
11
12
13

#!/bin/bash#PBS -q large#PBS -l select=2:ncpus=16:mpiprocs=2#PBS -N hybrid_JOB#PBS -o hybrid_out_file#PBS -j oesource /etc/profile.d/modules.shmodule load compiler
module load mpt
export OMP_NUM_THREADS=8
export KMP_AFFINITY=disabled
cd ${PBS_O_WORKDIR}
mpiexec_mpt omplace -nt ${OMP_NUM_THREADS} ./a.out > log.txt 2>&1

利用するリソースを指定

Intel コンパイラ環境を読み込み
HPE MPI 環境を読み込みOpenMP の並列数を指定
Intel コンパイラの AFFINITY を無効化
プログラムの実行

HPE MPI でハイブリッド並列ジョブを実行するには mpiexec_mpt コマンド、omplace コマンドを利用します。
各ノードの OpenMP の並列度は omplace コマンドの-nt オプションの後に指定してください。
omplace コマンドは、OS のプロセススケジュールによる CPU 間のプロセス移動を避けるために、プロセス/スレッドをコアに固定するコマンドです。ハイブリッドジョブでスレッド並列を最適な CPU 配置にする事で、性能が向上する可能性があ
ります。

28

5.3.3.6.

MPI+OpenMP ハイブリッド並列ジョブ (Intel MPI)

ジョブ実行時に qsub オプションで確保するリソース数を、-l select の ncpus オプション（CPU 数、並列度）、mpiprocs
オプション（MPI プロセス数）で指定してください。
ハイブリッド並列ジョブ (2 ノード x 2MPI x 8 スレッド) のスクリプト例
1 #!/bin/bash
2 #PBS -q S
3 #PBS -l select=2:ncpus=16:mpiprocs=2
4 #PBS -N hybrid_JOB
5 #PBS -o hybrid_out_file
6 #PBS -j oe
7 source /etc/profile.d/modules.sh
8 module load compiler
9 module load mpi
10 export OMP_NUM_THREADS=8
11 cd ${PBS_O_WORKDIR}
12 mpirun ./a.out > log.txt 2>&1

29

利用するリソースを指定

Intel コンパイラ環境を読み込みIntel MPI 環境を読み込みOpenMP の並列数を指定
プログラムの実行

5.3.4. ジョブの確認方法
ジョブの確認には qstat コマンドを用います。以下に出力例を示します。
$ qstat
Job id---------------106.pifront1
107.pifront1
108.pifront1
109.pifront1

Name
User
---------------- ---------------mpi256job1
user1
hyb256job2
user2
hyb256job2
user2
mpi256job2
user1

Time Use S Queue-------- - ----17:31:36 R large
01:19:28 R large
0 Q large
0 Q large

qstat コマンドにより参照可能な情報は以下の通りです。
表示の属性
Job idName
UserTime Use
S
Queue

説明
投入時に割り当てられたジョブ ID
ジョブ名
投入ユーザ
経過した CPU 時間
ジョブステータス
ジョブが属するキュー

またジョブステータスは以下の状態を示します。
ジョブステータス
Q
R
E
S

説明
キューに投入され実行待ち
実行中
実行済みで終了処理中
サーバによって中断中

qstat コマンドの主なオプションは以下の通りです。
オプション-u username-f JOBID-Q-s

説明
指定したユーザのジョブの状態を表示します。
ジョブの詳細な状況を表示します。
JOBID を省略すると、全てのジョブについての詳細な状況を表示します。
キューの状況を表示します。
ジョブコメントおよびその他の情報が表示されます。
キューイング中のジョブは実行待ちになっている理由が表示されます。

30

5.3.5. キューの状態確認方法
本システムで設定されているキュークラスの状態を確認したい場合は、”qstat -Q” コマンドを利用します。
qstat コマンドの実行例$ qstat -Q
Queue
Max Tot Ena Str Que Run
Hld Wat Trn Ext Type---------------- ----- ----- --- --- ----- ----- ----- ----- ----- ----- ---debug
00 yes yes
00
0
0
0
0 Exe*
large
0
4 yes yes
3
1
0
0
0
0 Exe*
school0
0 no no00
0
0
0
0 Exe*
qstat -Q コマンドにより参照可能な情報は以下の通りです。
表示の属性
Max
Tot
Ena
Str
Que
Run
Hld
Wat
Trn
Ext
Type

説明
Maximum (該当キューで実行可能なジョブ数の最大値)
Total (該当キューに投入されたジョブの総数)
Enabled (ジョブの受付可否)Started (ジョブの実行可否)
Queued (待機状態のジョブ数)
Running (実行状態のジョブの数)
Hold (保留状態のジョブの数)
Waiting (要求された時間まで待機状態のジョブの数)
Transit (移行状態のジョブの数)
Exiting (実行済みで終了状態のジョブの数)
Execution あるいは Routing (Execution は 該当キューが実行可能であるという意味)

詳細についてはオンラインマニュアル (man qstat)、または PBS 付属の User’s Guide を参照してください。

5.3.6. ジョブのキャンセル方法
ジョブをキャンセルするには qdel コマンドを利用します。実行中のジョブ及び、待機中のジョブをキャンセルする事が可能です。qdel コマンドでキャンセル可能なジョブは自分の投入したジョブに限ります。
$ qdel [JOBID [JOBID…]]
例えば JOBID が 105 の場合、
$ qdel 105
でジョブがキャンセルされます。

31

6. HPE Cray Programming Environment の利用
6.1. HPE Cray Programming Environment (CPE) 概要
HPE Cray Programming Environment (CPE) は コンパイラ (CCE)、数値計算ライブラリ (CSML)、MPI 通信ライブラリ(CMPT)、開発環境設定 (CENV)、プロファイラ (CPMAT) が含まれる 統合開発環境です。
なお、CPE の利用にあたっては、コンパイル・リンクは ログインサーバ (pifront1, pifront2) 上で、ビルドしたプログラムの実行は ジョブとして、キューに投入し、計算サーバ pinode01-16 上で実行します。

6.2. 環境設定
6.2.1. ログインサーバ上の環境設定
CPE を利用するには module コマンドで PrgEnv-cray をセットします。
$ module restore PrgEnv-cray
ロードされている開発環境は module list コマンドを実行し、確認できます。
$ module list
Currently Loaded Modulefiles:
1) cpe-cray4) craype-x86-rome2) cce/11.0.3(default)5) libfabric/1.10.2pre1(default)
3) craype/2.7.5(default)
6) craype-network-ofi

7) cray-mpich/8.1.3(default)
8) cray-libsci/20.12.1.2(default)

6.2.2. 計算サーバ上の環境設定
CPE を利用するには module コマンドで PrgEnv-cray をセットします。
また 後述の aprun コマンドを利用するため、 module コマンドで cray-pals をセットします。
$ module restore PrgEnv-cray$ module load cray-pals

32

6.3. コンパイル・リンク方法
6.3.1. コンパイラ CCE の利用
CCE (Cray Compiling Environment) は コンパイラ群です。
コンパイラのコマンドは以下の形式です。
言語処理系
FortranC
C++

コマンド$ ftn [options] sourcefile$ cc [options] sourcefile$ CC [options] sourcefile

オンラインマニュアル$ man crayftn$ man craycc$ man crayCC

MPI プログラムのコンパイルは、自動的にリンクされるので、明示的にリンクオプションを付ける必要はありません。
OpenMP プログラムのコンパイルはデフォルトでは無効です。明示的に指定する必要があります。

6.3.1.1.

Fortran コンパイラ 主なオプション

オプション-o FILENAME-h omp-h autothread-O[0-3]6.3.1.2.

C、C++コンパイラ 主なオプション

オプション-o FILENAME-fopenmp-O[0-3]-ffast-math

説明
並列化・最適化など
出力ファイル名を指定します。省略時は a.out が設定されます。
OpenMP 指示行による並列化を有効にします。
自動並列化を行います。
自動最適化レベルの指定 (デフォルトは 2、最高 3)

説明
並列化・最適化など
出力ファイル名を指定します。省略時は a.out が設定されます。
OpenMP 指示行による並列化を有効にします。 (デフォルト無効)
自動最適化レベルの指定 (デフォルトは 2、最高 3)
浮動小数点の誤差を一定許容することで、より踏み込んだ最適化を行います。

33

6.4. 数値計算ライブラリ CSML の利用
CSML (Cray Scientific and Math Libraries) は 数値計算ライブラリ群です。
以下のライブラリが利用可能です。
BLAS
BLACS
LAPACK

ScaLAPACK
FFTW3
IRT

なお、FFTW は 別モジュールとなっています。
cray-fftw モジュールをロードします。
$ module load cray-fftw
module list で fftw モジュールが 追加されていることを確認します。
$ module list
Currently Loaded Modulefiles:
1) cpe-cray4) craype-x86-rome2) cce/11.0.3(default)5) libfabric/1.10.2pre1(default)
3) craype/2.7.5(default)
6) craype-network-ofi

7) cray-mpich/8.1.3(default)
8) cray-libsci/20.12.1.2(default)
9) cray-fftw/3.3.8.8(default)

cray-libsci や cray-fftw がロードされると、これらのパッケージに関する全てのヘッダとライブラリが ftn、cc、CC でのコンパイルおよびリンクに追加されます。
PrgEnv-cray モジュールに加えて 他の モジュールをロードする場合、LD_LIBRARY_PATH を以下のように設定します。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CRAY_LD_LIBRARY_PATH
cray-fftw モジュールや LD_LIBRARY_PATH はジョブ実行する際のスクリプト 内においても指定ください。

34

6.5. プログラム実行方法
ビルドしたプログラムの実行は ジョブとして キューに投入します。
ログインサーバでは直接プログラムを実行しないようにしてください。
また、ジョブとしてプログラムを起動するには aprun コマンドを用いて起動します。
aprun コマンドでプログラムを起動しないと、計算サーバでプログラムが実行されないのでご注意ください。

6.5.1. プログラム起動コマンド aprun$ aprun [options] exec_program
主なオプションは以下の通りです。
オプション-n 並列数-d スレッド数-N ノードあたりの並列数-S ソケットあたりの並列数

説明
MPI 並列数を指定します。
OpenMP スレッド数を指定します。
ノードごとに配置する MPI プロセス数を指定します。
CPU ソケットごとに配置する MPI プロセス数を指定します。
プロセス/スレッドの配置方法を指定します。
depth: -d オプションで指定したプロセス/スレッドを連続した CPU コアに固定します。

--cc depth

6.5.2. ジョブスクリプト例
ジョブスクリプト内の select 文では ノード数のみ指定してください。

6.5.2.1.

並列化されていない逐次ジョブ

1CPU を使用した逐次ジョブのスクリプト例
1 #!/bin/bash
2 #PBS -q debug
3 #PBS -l select=1
4 #PBS -N serial_JOB
5 #PBS -o serial_out_file
6 #PBS -j oe
7 module restore PrgEnv-cray
8 module load cray-pals
9 cd ${PBS_O_WORKDIR}
10 aprun ./a.out > log.txt 2>&1

bash スクリプトを宣言
キュー名指定利用するノード数を指定
ジョブ名を指定
標準出力 (stdout) を出力するファイルを指定
標準エラー出力を 標準出力に結合する指定
CPE 環境の呼び出し
aprun コマンドの呼び出し
実行ファイルがあるディレクトリへ移動
プログラムの実行

35

6.5.2.2.

スレッド並列ジョブ

OpenMP 8 スレッド並列ジョブのスクリプト例
1 #!/bin/bash
2 #PBS -q debug
3 #PBS -l select=1
4 #PBS -N omp_JOB
5 #PBS -o omp_out_file
6 #PBS -j oe
7 module restore PrgEnv-cray
8 module load cray-pals
9 export OMP_NUM_THREADS=8
10 cd ${PBS_O_WORKDIR}
11 aprun -d 8 --cc depth ./a.out > log.txt 2>&1

6.5.2.3.

CPE 環境の呼び出し
aprun コマンドの呼び出し
OpenMP の並列数を明示的に指定
プログラムの実行

MPI 並列ジョブ

MPI 8 並列ジョブ (2 ノード x 4MPI) のスクリプト例
1 #!/bin/bash
2 #PBS -q large
3 #PBS -l select=2
4 #PBS -N cmpt_JOB
5 #PBS -o cmpt_out_file
6 #PBS -j oe
7 module restore PrgEnv-cray
8 module load cray-pals
9 cd ${PBS_O_WORKDIR}
10 aprun -n 8 -N 4 ./a.out > log.txt 2>&1

6.5.2.4.

利用するノード数を指定利用するノード数を指定

CPE 環境の呼び出し
aprun コマンドの呼び出しプログラムの実行

MPI+OpenMP ハイブリッド並列ジョブ

ハイブリッド並列ジョブ (2 ノード x 2MPI x 8 スレッド) のスクリプト例
1 #!/bin/bash
2 #PBS -q S
3 #PBS -l select=2
4 #PBS -N hybrid_JOB
5 #PBS -o hybrid_out_file
6 #PBS -j oe
7 module restore PrgEnv-cray
8 module load cray-pals
9 cd ${PBS_O_WORKDIR}
10 export OMP_NUM_THREADS=8
11 aprun -n 4 -N 2 -d 8 --cc depth ./a.out > log.txt 2>&1

36

利用するノード数を指定

CPE 環境の呼び出し
aprun コマンドの呼び出し
OpenMP の並列数を指定
プログラムの実行