高速演算環境サービス 利用の手引き

東北学院大学
情報処理センターシステム 2014
高速演算環境サービス
利用の手引き
-2014.4.01(第2版)-
東北学院大学 情報処理センター
i
目次
1.
高速演算環境サービスの概要 ......................................................................................... 1
2.
高速演算環境サービスの利用手順 .................................................................................. 2
2.1.
高速演算環境へのアクセス.............................................................................................2
2.2.
プログラム作成...............................................................................................................2
2.2.1.
コンパイラ一覧 ........................................................................................................2
2.2.2.
コンパイル...............................................................................................................2
2.2.3.
実行 .......................................................................................................................3
2.2.4.
Fortran プログラムファイル入出力 ..........................................................................3
2.3.
計算ライブラリ ................................................................................................................4
2.4.
バッチ利用 .....................................................................................................................5
2.4.1.
バッチ利用手順 .......................................................................................................5
2.4.2.
バッチ利用上の注意 ..............................................................................................10
2.5.
3.
(参考)Intel コンパイラオプション .................................................................................10
留意事項 ...................................................................................................................... 12
ii
1. 高速演算環境サービスの概要
高速演算環境サービスでは、UNIX 系の研究用プログラムの開発・実行環境を提供します。
従来の高速演算環境サービスから、次の環境が変わっています。
機能
オ ペレーティ ングシ
2009
SUN Solaris
2014
Linux(RedHat)
留意点
基本的な利用方法に変更はあ
りません。
ステム
Fortran コンパイラ
SUN Studio
Intel Compiler
コンパイルオプションが変わ
C/C++コンパイラ
SUN Studio
Intel Compiler
ります。
Pascal コンパイラ
GNU Pascal
GNU Pascal
変更ありません。
バイナリデータ形式
Big endian
リトルエンディアン
プログラム実行時にオプショ
ン設定することで従来のデー
タをそのまま利用できます。
計算ライブラリ
IMSL
IMSL
変更ありません。
尚、高速演算環境サービスの利用には、情報処理センターへの利用申請が必要です。
1
2. 高速演算環境サービスの利用手順
2.1.
高速演算環境へのアクセス
高速演算環境は、研究用サーバで提供されます。研究用サーバは、SSH によるアクセスがで
きます。次のホストに SSH ターミナルソフトを用いてアクセスします。
sop.ipc.tohoku-gakuin.ac.jp
また、接続時の漢字コードには UTF-8 を指定して接続してください。
2.2.
プログラム作成
2.2.1. コンパイラ一覧
次のコンパイラが利用できます。
プログラム言語
コンパイラソフト
コマンド
Fortran
Intel Composer XE
ifort
C/C++
Intel Composer XE
icc
GNU C
gcc
GNU Pascal
gpc
Pascal
2.2.2. コンパイル
プログラム言語ごとのコンパイル実行例を以下に示します。
2.2.2.1. Fortran
プログラムファイル test.f をコンパイルする例:
$ ifort
test.f
2.2.2.2. C
プログラムファイル test.c をコンパイルする例:
$ icc
test.c
2
2.2.2.3. Pascal
プログラムファイル test.p をコンパイルする例:
$ gpc
test.p
2.2.3. 実行
コンパイルして作成された実行ファイルを実行します。
(例)実行ファイル a.out を事項する例
$ ./a.out
2.2.4. Fortran プログラムファイル入出力
2.2.4.1. ファイル入出力方法
Fortran プログラムにおける、WRITE 文、READ 文で使用する入出力ファイル装置(ユ
ニット)番号と、使用されるファイル名は次のようになります。
(1) プログラムソース中にファイル名を指定しない場合
Fortran の OPEN 文を使用しない場合、または、OPEN 文にて”FILE=”指示子
を使用しない場合には、システムの規則に従い、自動的に以下のファイル名が使用さ
れます。
WRITE(10,*) ―出力→ fort.10
READ(25,*) ←入力- fort.25
(2) プログラムソース中にファイル名を指定する場合
OPEN 文の”FILE=”指示子を用いることで、予めプログラムソース中で、入出力
ファイル名を定義することができます。
OPEN(10,FILE=outfile) ←入出力→ outfile
(3) 実行時にファイル名を指定する場合
OPEN 文にてファイル名を指定せずに、実行時に環境変数を設定して、ファイル名
を定義することもできます。
この場合、プログラムソースにて、getenv ライブラリを用いた環境変数の読み込み、
ファイル名への定義に関するコードを記述する必要があります。
3
(例)実行時に環境変数 OUTFILE の定義でファイル名を指定する場合
・Fortran プログラム
---- 該当部抜粋(program.f)
CHARACTER outfile*40
C ユニット 25 の出力ファイル名として $OUTFILE を取得する
CALL getenv('OUTFILE',outfile)
OPEN(25,FILE=outfile)
WRITE(25,*) 'Writing to file: ', outfile
END
・実行方法
$ ifort –o test program.f
$ export OUTFILE=sample.ofile
$ ./test
$ cat sample.ofile
Writing to file: sample.ofile
2.2.4.2. 書式なしデータファイルの入出力
新しい高速演算環境では、従来の環境と Fortran 書式なしデータ形式が変更となっています。
そのため、従来利用していた書式なしデータをそのまま利用するためには、プログラム実行時
に、実行時オプションを設定する必要があります。
バイナリデータ形式変換実行時オプション
F_UTMTENDIAN
プログラム実行前に、形式変換が必要な入出力ファイルの装置番号に、本オプションを指定
します。
(例)装置番号 10 と 20 のファイルに従来のバイナリデータファイルを使用する場合
$ F_UTMTENDIAN=10,20
; export F_UFMTENDIAN
$ a.out
2.3.
計算ライブラリ
高速演算環境では、数値計算ライブラリ IMSL を使用することができます。
4
2.4.
バッチ利用
高速演算環境では、プログラムの実行方法として、2 通りの方法を提供しています。

インタラクティブ方式
SSH ターミナルでログインし、コマンドプロンプトから実行する方法です。
実行時に利用できる資源量(メモリ、CPU 時間)が少ないので、テスト実行などで利用
して下さい。

バッチ方式
プログラムをジョブと呼ばれる単位としてバッチ的に実行する方法です。
プログラム実行時に利用できる資源量(メモリ、CPU 時間)がインタラクティブ方式よ
りも多く設定されています。通常、プログラム実行には、こちらの方法を利用して下さ
い。
2.4.1. バッチ利用手順
高速演算環境では、バッチ方式のプログラム実行の制御機能として、PBS Professional を搭
載しています。
バッチ方式でのプログラム実行は次の手順で行います。
① プログラムの作成
↓
② プログラムのコンパイル
↓
③ 実行スクリプトの作成
↓
④ キュー状態の確認
↓
⑤ ジョブの投入
↓
⑥ ジョブの状況の参照
↓
⑦ ジョブ実行結果の確認
①
プログラムソースの作成
バッチ方式においても、プログラムソースに特別な組み込みは必要ありません。イン
タラクティブ方式でプログラムソースを作成します。
5
②
プログラムのコンパイル
プログラムソースの作成と同様に、特別な処置は必要ありません。インタラクティブ
方式を用いてプログラムのコンパイルを行います。
③
実行ジョブスクリプトの作成
バッチ方式でのプログラムの実行には、従来の JCL に相当するプログラム実行のた
めの各種定義等を記述した、ジョブスクリプトを作成します。
ジョブスクリプトは、UNIX のシェル形式で記述します。
尚、バッチ方式では、実行開始の起点となるディレクトリがホームディレクトリに設
定されますので、ホームディレクトリ以外のディレクトリにプログラムが格納されてい
る場合や、実行時のディレクトリがホームディレクトリ以外の場合には、ジョブスクリ
プトに、該当するディレクトリへ移動するための、cd コマンド実行を記述する必要があ
ります。
(例)ホームディレクトリ配下の test というディレクトリで、test という実行形式
ファイルを実行
$ cd ~
$ ls
test
$ cd test
$ ls
program.f test test.sh
$ cat test.sh
#!/bin/sh
#PBS –N MyTestJob
#PBS –q standard
#PBS –m abe
#PBS –M [email protected]
#PBS –j oe
cd test
date
./test
date
$
『#PBS』で始まる行は、オプション指定となります。お主なオプションは次のとおり
です。尚、各オプションは後述のジョブの投入時に指定することもできます。
6
オプション
内容
-N <ジョブ名>
投入するジョブにつける固有の名前
-q <キュー名>
ジョブを投入するキューの名前
-W <グループ名>
ジョブを投入するグループの ID
利用申請後に発行されたグループ名を指定
します。指定しない場合にはジョブは実行
されません。
-m [aben]
次のジョブの状態時にメールを送信
a:ジョブが中止された場合
b:ジョブの実行が開始された場合
e:ジョブの実行が終了した場合
n:メールを送信しない
-M <メールアドレス>
メール送信先の電子メールアドレス
-j oe
ジョブの標準出力(j)と標準エラー出力(e)
をまとめて出力
④
キューの状態の確認
バッチ方式では、
“キュー“という実行環境に対して、作成したジョブスクリプトの実
行を依頼(ジョブの投入)することで、目的の処理が実行されます。依頼した処理は、”
ジョブ“という概念・単位で管理・制御されます。
キューでは、ジョブの実行に使用可能な計算資源や実行可能なユーザ/グループの制
限などの各種の資源制限が設定されています。キューの権限、ジョブ(プログラム)が
必要とする資源量に応じて、適切なキューにジョブの投入を行います。
システムで定義されているキューの情報は、qstat というコマンドで確認できます。
(例)キュー一覧: キューでのジョブの実行状況の確認
$ qstat -Q
- 11 Queue
Max
Tot
Ena
Str
Que
Run
Hld
Wat Trn
Ext Type
----------
-------
----
-----
-----
------
------
----
-----
-----
16
10
yes
4
0
0
0
1
Exec
extend
8
4
yes
yes
3
0
0
0
0
Exec
special
1
0
yes
no
0
0
0
0
0
Exec
standard
yes
5
1
0
一覧出力の見方:
・ Queue
: キューの名称
・ Max
: 最大同時実行ジョブ数
・ Tot
: 投入されているジョブ数の合計
・ Ena
: ジョブ投入の可否(「yes」:受付可能)
7
-----
-------
・ Str
: 投入されたジョブの実行可否(「yes」:実行可能)
・ Que
: 実行待ちのジョブ数
・ Run
: 実行中のジョブ数
・ Hld
: 実行が保留中のジョブ数
・ Wat
: 実行が待機中のジョブ数
・ Trn
: 移行状態のジョブ数
・ Ext
: 終了状態のジョブ数
・ Type
: キューのタイプ(「Exec」: 実行用キュー)
(例)キュー詳細: キューで使用可能な資源量、権限の確認(キュー standard の例)
$ qstat -Q -f standard
Queue: standard
queue_type = Execution
total_jobs = 0
state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:0 Exiting:0
Begun:0
max_running = 8
resources_max.mem = 2gb
resources_max.ncpus = 1
resources_max.vmem = 1gb
resources_available.mem = 16gb
resources_available.ncpus = 16
resources_available.vmem = 16gb
max_user_run = 2
max_group_run = 4
enabled = True
started = True
詳細表示の見方:
・ ジョブ当りの最大使用可能メモリ量(resources_max.vmem):2GB
・ ジョブ当りの最大使用可能 CPU 数(resources_max.ncpus):1
・ ユーザ当りの最大同時実行ジョブ数(max_user_run):2
・ グループ当りの最大同時実行ジョブ数(max_group_run):4
⑤
ジョブの投入
ジョブの投入には、qsub コマンドを用います。投入先のキュー名と、実行するジョ
ブスクリプトを指定して実行します。
ジョブスクリプトに記述できるオプションと同じものがコマンドのオプションとして
指定できます。ジョブスクリプトに記述されているオプションと同じオプションをコマ
8
ンドオプションとして指定した場合には、コマンドオプションの指定が優先されます。
qsub コマンド:
$
qsub
[オプション] <ジョブスクリプト名>
投入が完了すると、
「ジョブ ID」 というジョブの識別番号が出力されます。バッチ方
式の処理(PBS Pro.)では、以後このジョブ ID でジョブが管理されます
(例)test.sh というジョブスクリプトをキューstandard に投入
$
qsub
-q standard
111.sop
⑥
test.sh
・・・・・・・ 「ジョブ ID」
ジョブ状況の参照
投入したジョブの状態は、qstat コマンドで参照することができます。
(例)ジョブ状況の参照
$ qsub –q standard ./test.sh
111.sop
$ qsub -q standard ./test.sh
112.sop
$ qstat
Job id
Name
User
Time Use
S
Queue
----------------------------------------------------------------------------111.sop
test.sh
testuser
00:00:16
R
standard
112.sop
test.sh
testuser
0
Q
standard
ジョブ状況の見方:
・ ジョブ ID が 111.sop,112.sop という 2 件を投入
・ ジョブ ID 111.sop は、実行状態(R)で、16 秒の CPU を消費
・ ジョブ ID 112.sop は、実行待ち状態(Q)
⑦
ジョブ実行結果の確認
実行が終了したジョブの標準出力と、標準エラー出力は、ジョブを投入した際のカレ
ントディレクトリにシステム規則に従った命名ファイルで格納されます。
(例)ジョブスクリプト:test.sh,ジョブ ID:111.sop
→ 標準出力
:test.sh.o111
→ 標準エラー出力
:test.sh.e111
9
qsub コマンドの-j oe オプションを使用すると、標準出力と標準エラー出
力をまとめて標準出力に出力させることができます。③参照。
2.4.2. バッチ利用上の注意

バッチキューの種別
設定内容
キュー
standard
extend
special
4GB
12GB
30GB
(1GB)
(1GB)
(1GB)
8 CPU
16CPU
30 CPU
(1 CPU)
(1 CPU)
(1 CPU)
ユーザ当りの最大同時実行ジョブ数
2
1
1
グループ当りの最大同時実行ジョブ数
4
1
1
キュー内最大同時実行ジョブ数
16
8
2
キュー内ジョブ使用メモリ容量最大値
キュー内ジョブ使用 CPU 数最大値
※カッコ内は、既定値です。

申請により利用できるバッチキューは、standard キューのみです。メモリ使用量が 4GB
を超えるジョブキューが必要となる場合には、別途、情報処理センターへ相談してくだ
さい。

OS レベルによるジョブの一時保存・復旧機能がありませんので、定期保守などにより
研究用サーバが停止する場合には、実行中のジョブがキャンセルされますので、長時間
のジョブを実行される方は、情報処理センターのスケジュールなども考慮したうえで、
ジョブを投入願います。

メール送信を有効にしておくと、次のような内容のメールが届きます。特にジョブ終了
時のメールには、実行時間や使用メモリ量などが記述されていますので、ジョブの目安
になります。
2.5.
(参考)Intel コンパイラオプション
Intel コンパイラは、各種のプログラム最適化のオプションを有しています。
一般的に利用されるコンパイルオプションは次のとおりです。その他の詳細なオプションに
ついては、コンパイラのマニュアルを参照して下さい。
機能
最適化
オプション
機能概要
-O2
最速化します(既定値設定)。
-O3
特に浮動小数点演算を多用するループや大
きなデータセットを処理するループを含む
10
アプリケーションに推奨します。
この最適化は、場合によって -O2 の最適化
よりもアプリケーションの実行が遅くなる
ことがあります。
並列化
-fast
プログラム全体の速度を最大限にします。
-parallel
コンパイラがプログラム内の並列化を自動
判断し、並列化可能コードを生成します。
OpenMP 指示句がある場合、その指示によ
-openmp
る並列化可能コードを生成します。
11
3. 留意事項
特にありません。
12