TSUBAME2.0 利用の手引 - TSUBAME計算サービス

TSUBAME2.0 利用の手引
東京工業大学学術国際情報センター
2013.08
version 1.5
目次
TSUBAME 2.0 利用の手引き
1
1. はじめに
1
2. TSUBAME2概要
2
2.1 全体概念
2
2.2計算ノード
2
2.3 オペレーティングシステム構成
3
2.4 ストレージ
3
2.5 ネットワーク
4
3. 利用環境
3.1 利用できるリソース
5
5
3.1.1 インタラクティブノード
5
3.1.2 インタラクティブノードでの制限
6
3.1.3 バッチノード
6
3.1.4 バッチキューでの制限
7
3.1.5 ノード内並列数
8
3.1.6 制限一覧
8
3.1.7 Xキューの利用条件
9
3.2 利用環境
10
3.2.1 開発環境
10
3.2.2 MPI環境
10
3.2.3 MPI環境の切り替え
11
3.2.4 環境切り替えシェル
11
3.3 アプリケーション
11
3.3.1 ISV アプリケーション
11
3.3.2 free アプリケーション
12
3.4 GPU利用環境
13
3.4.1 インタラクティブ
13
3.4.2 バッチキューへのジョブ投入
13
3.4.3 GPUを使用した大規模並列
13
3.4.4 対応アプリケーション
13
3.5 目的別環境の選択
14
3.5.1 大規模並列環境
14
3.5.2 大容量メモリ
15
3.5.3 大容量ストレージ
15
3.5.4 並列環境とアプリケーション
16
3.6 WINDOWS HPC
17
3.7 関連設備の利用
17
3.8 Naregi連携
17
3.9 ストレージサービス(CIFS)
17
4. システムの利用
18
4.1 アカウントの取得
18
4.2 ログイン
18
4.3 パスワード管理
19
4.4 インタラクティブ
19
4.5 バッチジョブ
19
4.5.1 ジョブの作成
20
4.5.2 ジョブの投入
20
4.5.3 ジョブID
20
4.5.4 ジョブの状態確認
20
4.5.5 ジョブの結果確認
22
4.5.6 ジョブ実行情報・課金情報
22
4.5.7 ジョブの削除
23
4.5.8 sshログイン
23
4.5.9 課金グループでの実行状況確認
23
4.6 ストレージの利用
23
4.6.1 home
23
4.6.2 data
24
4.6.3 work
24
4.6.4 共有スクラッチ
24
4.6.5 ローカルスクラッチ
25
4.6.6 MPIプログラムでのSSDの使用
26
4.6.7 ストレージの制限
27
4.6.8 I/O 専用ノードの利用
28
4.7 WINDOWS HPC
28
4.8 Naregi
28
4.9 ストレージサービス(CIFS)
28
4.9.1 Windowsからの利用
28
4.9.2 Macからの利用
31
4.9.3 TSUBAME2からの利用
33
5. PBSによるジョブの投入
5.1 ジョブスクリプト
34
34
5.1.1 シングルジョブ
34
5.1.2 SMP並列ジョブ
34
5.1.3 GPUジョブ
34
5.1.4 MPIジョブ
34
5.2 ジョブの投入
35
5.2.1 バッチキューの選択
35
5.2.2 PBSオプション
36
5.3 使用資源の指定(l(エル)オプション)
37
5.3.1 シングルジョブ
38
5.3.2 SMP並列ジョブ
38
5.3.3 GPUジョブ
38
5.3.4 MPIジョブ
38
5.3.5 同時実行ジョブ
39
5.3.6 ノード配置
39
5.3.7 大規模並列
39
5.3.8 ハイブリット並列
40
5.4 予約(Hキューの利用)
41
5.5 メモリサイズの指定
41
5.6 アレイジョブ(パラメータサーベイ)
42
5.7 ジョブ関連情報の指定
42
5.7.1 ジョブ名
42
5.7.2 TSUBAMEグループ
43
5.7.3 実行時間
43
5.7.4 メール
43
5.7.5 標準出力ファイル
43
5.7.6 標準エラー出力ファイル
43
5.7.7 出力ファイルの結合
43
5.8 プレミアオプション
43
5.8.1 時間延長
44
5.8.2 プライオリティ
44
5.8.3 課金係数
44
5.9 SSH直接ログイン
44
5.9.1 ジョブスクリプトの準備
44
5.9.2 ノードの確認
45
5.9.3 ログイン
45
6. プログラミングと環境
46
6.1 コンパイラ
46
6.1.1 利用できるコンパイラ
46
6.1.2 数学ライブラリ
46
6.1.3 コンパイラのオプション
47
6.1.4 コンパイラ利用に当たっての注意
47
6.1.5 違うバージョンのコンパイラ
47
6.1.6 コンパイラのマニュアル
48
6.2 SMP並列
48
6.3 MPI並列
49
6.4 ハイブリッド並列
50
6.5 GPU
51
6.5.1 CUDA
51
6.5.2 CULAライブラリ
51
6.5.3 PGIコンパイラ
52
6.5.4 コンパイラ・ライブラリのバージョン
52
6.5.5 MPI+cudaによるコンパイル
53
6.6 性能解析ツール
53
6.6.1 プロファイラ(シングル)
53
6.6.2 プロファイラ(並列)
54
6.6.3 デバッカ(シングル)
54
6.6.4 デバッカ(並列)
55
6.6.5 デバッカ(GPU)
56
6.6.6 パフォーマンスアナライザー
57
6.6.7 PAPIによる性能評価
59
6.7 エラーメッセージ
59
6.7.1 メモリ不足
59
6.7.2 配列外参照
60
6.7.3 配列外参照(MPIジョブ)
60
7. ISVアプリケーション
63
7.1 ANSYS FLUENT
63
7.2 Abaqus Standard/Explicit
64
7.3 Abaqus CAE
65
7.4 Patran
66
7.5 Nastran
66
7.6 Gaussian 09
67
7.7 Gauss View
68
7.8 AMBER
68
7.9 Materials Studio
70
7.10 Discovery Studio
70
7.11 SCIGRESS
70
7.12 Molpro
71
7.13 Mathematica
72
7.14 Maple
72
7.15 AVS/Express
73
7.16 AVS/Express PCE
73
7.17 EnSight
74
7.18 MATLAB
74
7.19 LS-DYNA
75
8. free アプリケーション
77
8.1 GROMACS
77
8.2 POV-Ray
77
8.3 Tinker
78
8.4 GAMESS
78
8.5 platex
79
8.6 Tgif
80
8.7 R
80
8.8 gnuplot
81
改版履歴
83
TSUBAME 2.0 利用の手引き
TSUBAME 2.0 利用の手引き
1. はじめに
本書は,2010年11月から稼働を開始した「TSUBAME2」をご利用いただくための手引きとして作成しています.
TSUBAME2は,HP 社製「 SL390s G7 」を中心とした, クラウド型グリーンスーパーコンピュータシステムです. このシステム
は下記のような特徴を有しております.
• 全体演算性能(ピーク性能)で 2.4 PFLOPS
• 大規模ストレージサービスの実現
• 高バンド幅ネットワーク環境
TSUBAME2 で採用している,オペレーティングシステムは,LinuxおよびWindowsHPC になっております. 本書では,Linux(
UNIX)による利用を説明しておりますので,UNIXの一般的な知識をお持ちのユーザを対象にしています. WindowsHPCに
関しては,別途手引が用意されています. 主な内容は下記の通りです.
• TSUBAME2 の紹介/概要
• システム(リソース)の利用環境
• システム(リソース)の利用方法
これらのTSUBAME2を通して,利用者の研究活動に一層,寄与できるものと確信しております.
2010.10.29 NEC
1
2. TSUBAME2概要
2.1 全体概念
本システムでは,汎用CPUとGPU型アクセラレータによる2.4PFLOPSの演算性能を実現しております. TSUBAME2の全体
概念を以下に示します.
2.2計算ノード
計算ノードを構成するマシンは以下のとおりです.
• Thin計算ノード
• HP社製サーバ「HP SL390s G7」を1,408ノードで構成しています.
• 各ノードは,Intel社製CPU「Xeon X5670」を2Socket(12Core)有しています.
• 各ノードは,54GiBのメモリを有しています.一部96GiBのメモリを有しています.
• NVIDIA社製「NVIDIA Tesla M2050」 を3GPU搭載しています.
これによりThin計算ノードのピーク合算性能は,2,391.35TFLOPS,総主記憶容量は,80.55TBを有しています.
• Medium(24ノード),Fat(10ノード)計算ノード
• HP社製サーバ「HP DL580 G7」を合計34ノードで構成しています.
• Intel社製CPU「Xeon 7550(Nehalem-EX)」を4Socket(32Core)を搭載しております.
• 各ノードは128GiB、または256GiB、または512GiBのメモリを有しています.
• NVIDIA社製GPU「Tesla S2070」または「Tesla S1070」 を1基接続しています(1基あたり4GPU搭載).
TSUBAME2のマシンの基本スペックは次の通りです.
タイプ
ノード
数
CPU
CPUcl
ock
コア/
スレ
Memo
ry
TypeA
1367
Xeon
5670
2.93G
Hz(※)
12/24
TypeB
41
Xeon
5670
2.93G
Hz(※)
TypeC
14
Xeon
7550
2.0GH
z
GPU
性能
GPUメ
モリ
net
M205
0×3
515Gf
lops×
3
3GB×
3
40Gb
ps×2
Thin
240G
B
M205
0×3
515Gf
lops×
3
3GB×
3
40Gb
ps×2
Thin
480G
B
S107
0
345Gf
lops
4GB×
4
40Gb
ps
Mediu
m
SSD
GPU
54GiB
120G
B
12/24
96GiB
32/64
128Gi
B
備考
TypeD
10
Xeon
7550
2.0GH
z
32/64
128Gi
B
480G
B
S207
0
515Gf
lops×
4
6GB×
4
40Gb
ps
Mediu
m
TypeE
8
Xeon
7550
2.0GH
z
32/64
256Gi
B
600G
B
S107
0
345Gf
lops
4GB×
4
40Gb
ps
Fat
TypeF
2
Xeon
7550
2.0GH
z
32/64
512Gi
B
600G
B
S107
0
345Gf
lops
4GB×
4
40Gb
ps
Fat
※ Intel Turbo Boost Technology により3.196GHzで動作可能.
2.3 オペレーティングシステム構成
オペレーティングシステム(OS)は,下記の環境を有しています. OS構成は,サービス実行形態に応じて動的に変更されます.
また,一部のノードでは,OSが仮想環境上で動作しています.
• SUSE Linux Enterprise Server 11 SP1
• Windows HPC Server 2008 R2
2.4 ストレージ
マルチペタバイト級ストレージは,Data Direct NETWORKS社製「DDN SFA10000」を中心として構成されております. 非フォー
マット時で7.13PBの物理容量を有しています. ペタバイト級ストレージはLustreやGPFSを利用した「並列ファイルシステム領
域」,NFS,CIFS,iSCSIを備えた「ホーム領域」などから構成されております. data領域(/data0)はテープライブラリとGPFS
ファイルシステムが連動した階層型ストレージとして構成されます. また,ローカルのSSD領域も利用可能です. 利用にあたっ
ては, 4.6 ストレージの利用 も参照ください.
◎ストレージの特徴
様々な領域がありますが、/work0,1 を購入してジョブを実行するのが一般的です.
• /home 環境設定やソースコード等重要なデータを保存する.ジョブの実行は極力避ける.
• /nest2 Windows環境からエクスプローラでアクセスする.TSUBAME内からはインタラクティブノードからのみ アクセ
ス可.低速なのでジョブの実行には向かない.
• /data0 30TB以上の大容量の入出力結果を長期間保存する.高速な並列I/Oでジョブを実行する. ただし,Vキュー
からは利用できない.(有料)
• /gscr0 ジョブ実行中に生成される中間ファイルや一時ファイルを保存し、高速な並列I/Oでジョブを実行する. クオー
タ制限が無いため,最大100TB程度までの容量を利用できるが,ジョブ実行の終了後に削除される. バッチノードか
らのみアクセス可.
• /work0,1 30TBまでの入出力結果を保存する.高速な並列I/Oでジョブを実行する.(有料)
• /scr ジョブ実行中にノード内でしか利用できないが,高速かつ大量の細かいI/Oのジョブを実行する.
• /tmp システムを動作させるのに必要なため,ジョブの実行に原則利用不可.
◎バックアップ、冗長性
• /home RAID-6構成,定時バックアップあり
• /nest2 RAID-6構成,定時バックアップあり
• /data0 RAID-6構成, バックアップなし
• /gscr0 RAID-6構成,ジョブ終了後削除
• /work0,1 RAID-6構成, バックアップなし
• /scr RAID-0構成,ジョブ終了後保障なし
マルチペタバイト級ストレージ環境は以下の構成となっています.
○ホーム領域(1.2PB)
用途
マウント
ファイルシステム
備考
homeディレクトリ
/home
GPFS+cNFS
GridScaler
共有アプリケーション配備
/usr/apps
GPFS+cNFS
GridScaler
全学ストレージサービス
\\nest2 , /nest2
CIFS , NFS
BlueArc Mercury 100
教育用電子計算機システ
ム
\\nest2
CIFS
BlueArc Mercury 100
iSCSI
BlueArc Mercury 100
TSUBAMEホスティング
○並列ファイルシステム領域(大規模並列領域)(5.93PB)
用途
マウント
ファイルシステム
大規模データ領域
/data0 ※
GPFS
共有スクラッチ領域
/gscr0
Lustre
大規模I/O領域
/work0 ,/work1
Lustre
※ただしVキューでは利用不可
○ローカルスクラッチ領域(SSD)
用途
マウント
ファイルシステム
ローカル高速I/O
/scr
ext3
※ノードによって異なります.詳しくは 4.6.5 ローカルスクラッチ を参照ください.
容量
※注
○テープ領域(4PB)
用途
/data0のマイグレーション
システムのバックアップ
2.5 ネットワーク
各計算ノード間は,Voltaire社製InfiniBand装置「Grid Director 4700」を利用して, フルバイセクション・ノンブロッキングな
結合網を有しています. ThinノードはデュアルレールのQDR InfiniBandネットワークに接続しており,合計で最大80Gbpsの
通信性能を有しています.
TSUBAME2のネットワーク相互関係図を以下に示します.
3. 利用環境
ユーザーが利用可能な環境イメージを以下に示します.
操作イメージは次の通りとなります.
1.TSUBAME2環境へのログイン
ユーザ端末からインタラクティブノードにssh接続し,ログインを行います. インタラクティブノードではプログラム開発,デバッグ,ジョ
ブの投入などを行います. GPUを利用するしないにかかわらずプログラムの開発,デバッグを行う場合は【login-t2.g.gsic.titech.
ac.jp】に接続してください.
【重要】
学外から接続する場合は鍵認証のみ有効となっているため,TSUBAME2利用ポータルを利用して鍵のアップロードを 行っ
てください.学内から接続する場合は鍵認証とID/Passwdが有効になっています.
2.プログラム開発/デバッグ
プログラム開発環境として,IntelCompiler,PGI Compiler,GCCが利用可能です. またGPUプログラム開発環境として
CUDAを利用することが可能です.開発環境の詳細に 関しては 3.2 利用環境 をご参照ください.
3.バッチジョブの投入
t2subコマンドを利用して,開発したプログラムをバッチシステムに投入します. バッチシステムには利用用途に合わせて複
数のキューをご用意しております. 利用できるリソース,キュー構成の詳細に関しては 3.1 利用できるリソース をご参照
ください.
4.バッチジョブの状況確認
t2statコマンドを利用して,バッチシステムに投入したプログラムの状況確認を行います. 詳細に関しては 4.5.4 ジョブの
状態確認 をご参照ください.
5.結果確認
ジョブが終了すると,実行結果ファイルが生成されますので,実行結果を確認します. 詳細に関しては 4.5.5 ジョブの結果
確認 をご参照ください.
6.その他
• プログラムが生成する一次ファイルの保存先として並列ファイルシステム領域とローカルディスク(SSD)が利用できます.
並列ファイルシステム領域の利用方法については 4.6.3 work をご参照ください. 共有スクラッチの利用方法については
4.6.4 共有スクラッチ , またローカルSSDの利用方法については 4.6.5 ローカルスクラッチ をご参照ください.
• Sキューなどのノード占有系の場合,ノード確保している期間はそのユーザのみログイン可能です.
• Hキューでは予約したTSUBAMEグループのメンバーがログイン可能になります.
※ システム利用の詳細に関しては 4. システムの利用 をご参照ください.
3.1 利用できるリソース
TSUBAME2の資源は基本的に全て使用できますが,制限がいくつか存在します.
3.1.1 インタラクティブノード
ログインマシンにリモートログインをすると,負荷分散されてインタラクティブ用の計算ノードのどれかに着地します. ここで,デ
バック,ジョブの投入準備などを行います.
一般用マシン
login-t2.g.gsic.titech.ac.jp
※GPUは全てのインタラクティブでご利用いただけます.
また,障害によりログインできない場合は,次もお試しください.
login-t2-1.g.gsic.titech.ac.jp
login-t2-2.g.gsic.titech.ac.jp
3.1.2 インタラクティブノードでの制限
インタラクティブノードでは,以下の制限があります.
1. ユーザーあたりの利用メモリ 6GB
2. ユーザーあたりのプロセス数 4
3. ユーザーあたりのディスク使用量は /home=25GB, /work0,1 = 30TB/group , /data0 = 30TB/group
4. CPU連続利用時間は 30分
5. 1時間利用がない場合は接続を切断
3.1.3 バッチノード
バッチノードとして,1382ノードが用意されています. 各キューは,利用目的に合わせて選択してご利用いただけます. 有料サー
ビスを利用するためには,TSUBAMEグループの作成を行い, サービスを購入する必要があります. TSUBAMEグループの作
成,サービス購入に関しては TSUBAME2利用ポータル_利用の手引 を参照してください.
サービス
キュー名
用途
ノード/コア/
スレッド数
時間制限
メモリ制限
並列数上限
備考/マシン
タイプ
無料
インタラクティ デバック,ジョ 20/240/4
ブノード
ブ投入
80
30分
6GB
4
(※9)/Thin
従量課金
S
中規模並列
300/3600
/7200 (※
13)
1~4日
1GB(※4)(
54GBまで)
7200
(※14)/Thi
n
従量課金
S96
54GB以上
のメモリ
41/492/9
84
1~4日
1GB(※4)(
96GBまで)
984
(※5)/Thin
従量課金
L128
96GB以上
のメモリ
8/256/51
2
1~4日
1GB(※4)(
128GBまで)
512
(※6)/Medi
um
従量課金
L128F
96GB以上
のメモリ/G
PUあたり6
GBのメモリ
10/320/6
40
1~4日
1GB(※4)(
128GBまで)
640
(※6)/Medi
um
従量課金
L256
128GB以
上のメモリ
8/256/51
2
1~4日
1GB(※4)(
256GBまで)
512
(※7)/Fat
従量課金
L512
256GB以
上のメモリ
2/64/128
1~4日
1GB(※4)(
512GBまで)
128
(※8)/Fat
従量課金
G
GPU専用(
※15)
480/1920
/3840
1~4日
1GB(※4)
無制限
G側でコア
指定は不可
能/Thin
定額課金
V
ノード内並
列
440/3520
/7040
1~4日
1GB(※4)
割当による(
※10)
仮想環境
定額課金
Vw
WindowsH
PC(※1)
40(※12)
1~4日
1GB(※4)
割当による(
※11)
仮想環境
定額課金
Sw
WindowsH
PC(※1)
8(※12)
1~4日
1GB(※4)
192
native/Thi
n
予約
H(※3)
大規模並列
420/5040
/10080
pool(※2)
動的配置
107/1284
/2568
X(※14)
Sキューの混
雑緩和
スロット時間
1GB(※4)
10080
~23時間
予約期間は
ssh接続可
能 (※14)/
Thin
Hに予約が
無い時
表中の注釈(※番号)については次の通りですので,確認してください.
1. 事前の利用準備が必要です.
2. 利用状況に応じて動的に配置されます.
3. 利用するためには事前に予約システムでスロットの予約を行う必要があります. (最小ノード数:16ノード,最大スロット数
:7) 予約方法に関しては TSUBAME2利用ポータル_利用の手引 を参照してください.
4. 「mem」オプションで変更可能です.詳細は 5.5 メモリサイズの指定 を参照ください.
5. Sに対して1.2倍の課金がかかります(使用時間に1.2倍の係数がかかります).
6. Sに対して2倍の課金がかかります(使用時間に2倍の係数がかかります).
7. Sに対して4倍の課金がかかります(使用時間に4倍の係数がかかります).
8. Sに対して8倍の課金がかかります(使用時間に8倍の係数がかかります).
9. 経過時間ではなくプロセスごとのCPU時間が最大30分となります.
10. 1ユニットあたり64CPU(64並列または64本のシングルジョブ)となります.
11. 1ユニットあたり24CPU(24並列または24本のシングルジョブ)となります.
12. 別途用意されている TSUBAME2 windows環境利用の手引 をご参照ください.
13. ジョブの混雑状況に応じて割り当てが増える場合があります.
14. Sキューに投入されたジョブのうち,翌日8時までに終了するアレイ以外のジョブはXキューとして, Hキューの予約が無いマ
シンに割当てます.(Xキューは通常は見えません) 3.1.7 Xキューの利用 を参照ください.
15. GキューでGPUを使用していないジョブは、削除する場合があります.
※ Sキューでは2ノード,10分まで,Vキューでは2並列,10分まで試験実行で使用することがてきます.
ノードのユーザーへの割り当て方法によって,占有ノードと共有ノードの2種類に分けられます.
1. 占有ノード
各ノードは,1つのジョブによって占有されます.1つのジョブが複数のノードを使用することも可能です. S,L128,L1
28F,L256,L512,S96,Gキューおよび予約キューのノードが該当します.
2. 共有ノード
各ノード内で,リソースが許す範囲で不特定多数のユーザーによる複数のジョブが実行されることがあります. 1つ
のジョブが複数のノードを使用することも可能です. Vキューのノードが該当します.
3.1.4 バッチキューでの制限
バッチキューでは,以下の制限があります.
1. ユーザーあたりの利用メモリ
2. ユーザーあたりのプロセス数
3. ユーザーあたりのディスク使用量は /home=25GB, /work0,1 = 30TB/group , /data0 = 30TB/group
4. CPU連続利用時間
5. ユーザーあたりのバッチのジョブ投入本数(キュー別)
マシンの混雑状況により変更になる場合もありますが,目安は次の通りです.
• 各キュー共 10000本
6. 同時実行数の制限
キューにより制限が設定されています.
• Vキュー(定額課金) ------ 1ユニットあたり64CPU (課金グループあたり)
• S/Gキュー(従量課金) ---- 30ジョブ(ジョブ本数:CPU数の制限はありません)
• Hキュー(従量課金) ----- 制限はありません
7. ジョブの種類による制限
GキューはGPU専用のため、CPUのみのジョブ実行は禁止しております。 CPUのみのジョブを実行していた場合、
管理者が削除する事があります。
3.1.5 ノード内並列数
バッチキューのノード内で使用できるスレッド数はキューによって異なります.
キュー名
コア数
仮想コア
S
12
24
V
8
16
L(128-512)
32
64
備考
(仮想環境)
※仮想コアとは,ハイパースレッドを使用するという意味で表現しています.
OpenMP等を使用した場合のノード内スレッド数の上限は仮想コア数になりますが, 最適なスレッド数は実コアと仮想コアの
間にあります.例えばVキューの場合は8から16です. 最も効果の高いスレッド数は,使用するアプリケーションの演算密度に
左右される為, 事前の試験計算で性能を検証してからスレッド数を決定することをお勧めします.
3.1.6 制限一覧
TSUBAME2.0を利用する際に発生する各種の制限を一覧にしました.
1.リソースの制限(バッチ構成)
キュー名
メモリ
------
-node-
------
SSD
GPU
``
(GB)(※1)
数(※2)
core
threads
(GB)
S
53
300
12
24
50
3(M2050)
V
31
440
8
16
10
----
G
18
480
4
8
30
3(M2050)
S96
94
41
12
24
160
3(M2050)
L128
126
8
32
64
400
4(S1070)
L128F
126
10
32
64
400
4(S2070)
L256
252
8
32
64
500
4(S1070)
L512
504
2
32
64
500
4(S1070)
Vw
31
40
8
16
10
----
Sw
53
8
12
24
50
3(M2050)
H(X)
53
420
12
24
50
3(M2050)
インタ(※3)
6
20
12
4
50
3(M2050)
※ 1 PBSで識別する最大値です.
これより1GB程度少ない数字程度を利用の目安にしてください.
※ 2 障害等で減少している場合があります.
季節運用等で数が変化する場合もあります.センターニュースを確認ください.
※ 3 インタ(インタラクティブ)は4procs,連続実行 30分まで.
2.ストレージ
デバイス
制限
/home および /nest2
各25GB
/work0
30TB(ただし購入口数による) (最大容量 750TB)
/work1
30TB(ただし購入口数による) (最大容量1400TB)
/data0
30TB(ただし購入口数による) (最大容量 750TB)
SSD
上記一覧参照(バッチ以外からのアクセス不可)
/gscr0
制限なし(最大容量114TB) (バッチ以外からのアクセス不
可)
最大ファイルサイズ
2TB (ただし、stripe指定により拡大可能)
最大ファイル数
なし
ファイル名等の制限
TSUBAMEで設定する制限はない(Linux(SLES11)準拠)
3.バッチ関連
項目
制限
アレイジョブの最大アレイ数
10000
ジョブの投入本数
10000 本 (Sの場合は加えて課金残高範囲内)
同時実行数
vキューはグループあたりの口数 : Sキュー/Gキューは 30
本(並列数ではなく、ジョブ本数)
isv アプリ
http://tsubame.gsic.titech.ac.jp/applications を参照
アカウント名
20文字(ポータルで自動処理)
グループ名
20文字(t2gの接頭語を含む9~20文字)
3.1.7 Xキューの利用条件
XキューとはHキューにおいてその日予約の無かった計算ノードを集めて利用するキューです. ノードの利用率向上とSキュー
の混雑緩和を目標としています。利用条件は次の通りです.
• 課金方法や課金額はSキューと同等です.
• Sキュー同様、実行中はノードを占有します.
• ノード環境はHキュー(≒Sキュー)と同等です.
• Xキューへのジョブ投入を明示的に指定することができません.
• 以下をすべて満たしたジョブのみXキューで実行されます.
• Sキューを指定すること.
• 投入時にXキューに即実行を開始できるだけの十分なノード数が空いていること.
• 投入時にジョブの実行時間(walltime)が翌午前9時までの時間より短い時間が指定されていること.
• (例) 24時に投入する場合は,9時間より短い時間を指定.
• アレイジョブ,ノードの直接の指定,依存ジョブ(-W dependを指定したジョブ)を利用していないこと.
• 投入時刻が午前9時から午前10時の間以外であること.
• 予約が無い状態が連続する場合でも,午9時をまたぐジョブは投入・実行されません.
• 午前9時から午前10時の間はXキューを利用できません.
• Xキューでジョブが実行されていても、t2stat画面ではSキューとして表示されます. 通常,Job idに「.t2zpbs05」が含
まれている場合Xキューで動作している事になります.
• 1ジョブあたりの最大並列数はその時点でのSキューのサービスノード数となります.
• 一度Sキューにキューイングされたジョブ(.t2zpbs01のリストに表示されたジョブ)は 自動では再度Xキューへ投入さ
れませんので, うまくXキューで実行されなかった場合は時間を空けて再投入する事をおすすめします.
3.2 利用環境
3.2.1 開発環境
利用可能なコンパイラについては次の通りです.
1. コンパイラ
Intelコンパイラ: ifort
, icc
PGIコンパイラ : pgf95
, pgcc
GNUコンパイラ : gfortran , gcc
3.2.2 MPI環境
MPIの動作環境はキューによって異なります.
• 従量課金 --- S,S96,G,L128,L128F,L256,L512,H
IBに対応している,openmpi または mvapich2 を使用してください.
• 定額課金 --- V
IBが利用できない環境ですので,mpich2を使用してください.
利用可能なMPIライブラリは次の通りです. (※これらは,環境変数を使用するか,シェルスクリプトにより切り替えます.)
1. OpenMPI
この環境は従量課金キューでMPIプログラムを実行する場合に使用します.
• OpenMPI1.4.2+intel
export PATH=/usr/apps/openmpi/1.4.2/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/intel/lib:$LD_LIBRARY_PATH
• OpenMPI1.4.2+pgi
export PATH=/usr/apps/openmpi/1.4.2/pgi/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/pgi/lib:$LD_LIBRARY_PATH
• OpenMPI1.4.2+gnu
export PATH=/usr/apps/openmpi/1.4.2/gcc/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/gcc/lib:$LD_LIBRARY_PATH
※デフォルトでは,OpenMPI1.4.2+intelにパスが設定されています.
2. MVAPICH2
この環境は従量課金キューでMPIプログラムを実行する場合に使用します.
• MVAPICH1.5.1+intel
export PATH=/usr/apps/mvapich2/1.5.1/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/intel/lib:$LD_LIBRARY_PATH
• MVAPICH1.5.1+pgi
export PATH=/usr/apps/mvapich2/1.5.1/pgi/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/pgi/lib:$LD_LIBRARY_PATH
• MVAPICH1.5.1+gnu
export PATH=/usr/apps/mvapich2/1.5.1/gcc/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/gcc/lib:$LD_LIBRARY_PATH
※デフォルトでは,パスは設定されていませんので,利用者で設定してください.
【重要】
MVAPICH2をMulti-railで動作させる場合、次の環境変数を .bashrc に追加してください.
export MV2_NUM_HCAS=2
とすることで通信性能を向上できます.(通信によっては変化しない場合もあります)
※各計算ノードに接続されているInfiniBandが複数用意されているネットワークをmulti-railと呼びます. (Thinノードは2本
づつ接続されています)
3. MPICH2
この環境は定額課金キュー(Vキュー)でMPIプログラムを実行する場合に使用します.
• MPICH2+intel
export PATH=/usr/apps/mpich2/1.3/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/intel/lib:$LD_LIBRARY_PATH
• MPICH2+pgi
export PATH=/usr/apps/mpich2/1.3/pgi/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/pgi/lib:$LD_LIBRARY_PATH
• MPICH2+gnu
export PATH=/usr/apps/mpich2/1.3/gcc/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/gcc/lib:$LD_LIBRARY_PATH
※デフォルトでは,パスは設定されていませんので,利用者で設定してください.
3.2.3 MPI環境の切り替え
MPI環境ライブラリをopenmpiからmvapich2/mpich2ベースに変更することができます. 下記の例では,MVAPICH2+pgi
に変更しています. あるいは,setmvp-pgi.sh コマンドを実施することにより,mpif90のパス環境を変更します.
>
>
>
>
pgf90
mpif90 --> pgf90+mvapich2
export PATH=/usr/apps/mvapich2/1.5.1/pgi/bin:$PATH (デフォルト)
export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/pgi/lib:$LD_LIBRARY_PATH
デフォルトに戻す場合は,setompi-intel.sh を実行します.
3.2.4 環境切り替えシェル
環境を切り替えるシェルは,/usr/apps/free/env 内に収められており, 既にパスが通っていますので,次のようにコマンドを
発行してください.
>
>
>
>
>
>
>
>
>
.
.
.
.
.
.
.
.
.
setompi-intel.sh
-setompi-pgi.sh -setompi-gcc.sh
-setmvp-intel.sh -setmvp-pgi.sh
-setmvp-gcc.sh
-setmpch-intel.sh
-setmpch-pgi.sh
-setmpch-gcc.sh
--
デフォルト(openmpi + intel)
openmpi + pgi
openmpi + gcc
mvapich2 + intel
mvapach2 + pgi
mvapich2 + gcc
mpich2 + intel
mpich2 + pgi
mpich2 + gcc
※パスが累積されていきますので,定期的にクリア(再ログイン等)してください.
※バージョン番号が付加された切り替えシェルは研究用です.通常利用は上記コマンドをご利用ください.
3.3 アプリケーション
アプリケーションは,ISV (Independent Software Vendor)提供のソフトウェアと free で提供されているアプリケーションが利
用できます. ISVとして利用できるアプリケーションの一覧を 7. ISVアプリケーション に用意していますので参照ください.fre
eの場合は 8. free アプリケーション を参照してください.
また,バージョンの異なるアプリケーションもご利用いただけます。バージョンについては, 利用可能アプリケーション を参照して
ください. 利用の切り替えなどの操作は、アプリケーション別の利用の手引きを参照ください。
3.3.1 ISV アプリケーション
ご利用いただけるisvアプリケーションは次の通りです.
アプリケーション名
バージョン
GPU対応状況
概要
PGI CDK
13.2
OK
コンパイラ,デバッガ,開発
支援ツール群
Intel Compiler
2013.0.079
no
インテルコンパイラ(64/32
bit用)
ABAQUS Standard/Expli
cit
6.12-3
OK
有限要素法による汎用構造
解析プログラム
ABAQUS/CAE
6.12-3
-
ABAQUS モデリング/ビジュ
アライゼーション環境
MD NASTRAN
2012.2
OK
有限要素法による構造解析
ソフトウェア
PATRAN
2012.2.1
--
CAE環境統合プリ・ポストソ
フトウェア
Gaussian
09 C.01
--
分子軌道計算プログラム
GaussView
5.0.9
--
Gaussian のためのグラフィ
カルユーザーインターフェー
ス
TCP-Linda(Gaussian 用)
8.2
--
並列計算プログラミングツー
ル
Molpro
2010.1
Q3
非経験的分子軌道計算プ
ログラム
AMBER
12bugfix15
OK
モデリングおよび分子力学
と動力学計算シミュレーショ
ンプログラムのパッケージ
Materials Studio
6.0SP1
--
材料分野向け総合シミュレー
ションソフトウェア
Discovery Studio
3.5
--
タンパク質3次元モデリング・
機能解析ソフトウェア
Scigress
2.1
--
材料開発を支援する,計算
化学の統合プラットフォーム
AVS/Express
8.0
--
汎用可視化ソフトウェア
AVS/Express PCE
8.0B
--
大規模データのクラスタ対
応並列可視化ソフトウェア
EnSight
10.0.2(g)
--
汎用科学技術計算結果可
視化ソフトウェア
Mathematica
9.0.1
OK
数式処理機能とグラフィック
表示機能を融合した数式処
理システム
Maple
16.02
OK
数式処理システム
ANSYS FLUENT
14.5
OK
流体計算
MATLAB
R2013a
OK
数理処理
LS-DYNA
Ver.971 R6
--
構造解析
Total View Debugger
8.9.2-0
OK
GUIベースのソースコード
デバッガー
※GPU対応状況で日付が入っているものは,ISVベンダの予定であり,実際のリリースは異なる場合があります.
3.3.2 free アプリケーション
ご利用いただけるfreeアプリケーション、デフォルトバージョンは次の通りです. 最新版を利用できる場合もありますので 8. fre
e アプリケーション を参照ください.
アプリケーション名
バージョン
概要
Platex
ptetex3-20090610+tetex-3.0
日本語対応Tex/Latex環境
Tgif
4.2.2 free
2D ドローイングツール
Tinker
5.1.08
分子力場計算プログラム
GROMACS
4.0.7
分子動力学計算プログラム
POV-Ray
3.6.1/3.50C
3DCG ソフト
GAMESS
25 March 2010
非経験的分子軌道法プログラム
ImageMagick
6.4.3.6
画像表示と画像処理
fftw
3.2.2
C 用のライブラリ
R
2.11.1
オープンソースの統計解析システム
GnuPlot
4.2.3
コマンドラインから使用する2D,3Dプ
ロッタ
3.4 GPU利用環境
TSUBAME2では,GPUを利用しやすい環境が構築されています.
3.4.1 インタラクティブ
全てのインタラクティブノードでGPUを利用できます.次のようにログインします.
ssh login-t2.g.gsic.titech.ac.jp -l USER-ID
プログラムの開発に関しては, 6. プログラミングと環境 を参照ください.
3.4.2 バッチキューへのジョブ投入
GPUを利用できるキューとしては, S , S96, G ,L128, L128F, L256, L512, H, X を選択できます. (V, Vwキューでは利用で
きません).各キューは次のような特徴があります.
キュー
ノード数
構成
S
300
標準Thinノードで12core+3GPU環
境です.
L128F
10
GPU専用Mediumノードで 32core+
4GPUで構成されています.
G
480
GPU専用ノードで 4core+3GPUで構
成されています.
H
420
標準Thinノードで構成されており,大
規模予約キューになります
バッチキューの利用にあたりましては, 5. PBSによるジョブの投入 を参照ください.
また,GPUはノード内に3セット(L128Fは4セット)用意されていますので,シングルジョブでも同時実行が可能です. 5.3.5 同時
実行ジョブ を参照ください.
3.4.3 GPUを使用した大規模並列
Gキューは480ノード用意されておりますのでGPUを使用した大規模並列には,こちらをご利用ください.
Sキューとの比較を以下に示します.
キュー
構成
メモリ
ノード数
課金係数
S
12core+3GPU
54GB
300
1
G
4core+3GPU
22GB
480
0.5
3.4.4 対応アプリケーション
現在のGPU対応アプリケーションは次の通りです.(2013.4.2現在)
• ABAQUS 6.12 --- ABAQUS利用の手引(別冊) を参照ください.
• NASTRAN 2012 --- NASTRAN利用の手引(別冊) を参照ください.
• ANSYS FLUENT 14.5 --- ANSYS FLUENT利用の手引(別冊) を参照ください.
• AMBER 12 --- AMBER利用の手引(別冊) を参照ください.
• Maple 16 --- Maple利用の手引(別冊) を参照ください.
• Mathematica 9 -- Mathematica利用の手引(別冊) を参照ください.
• MATLAB ---- MATLAB利用の手引(別冊) を参照ください.
• GROMACS 4.5/4.6.1 -- 試験公開
• CULA -- 6.5.2 CULAライブラリ を参照ください.
• totalview -- 6.6.5 デバッカ(GPU) を参照ください.
他のアプリケーションにつきましても,順次展開してまいります.
3.5 目的別環境の選択
3.5.1 大規模並列環境
並列環境としては,中規模並列キューとして,Sキューが300ノード用意されており300ノードまでの利用が可能です. (ジョブ
の混雑状況によりノード数が増加する場合もあります) 1ノードあたり,12coreを実装していますので,3600並列(core)のジョ
ブの実行が可能です. また,このcoreはハイパースレッドを実装していまので,演算密度があまり高くないジョブであれば, ハ
イパースレッドを利用して並列数を倍化することも有効になります. スレッドの利用に関しては,事前に確認をお願いします.
300ノードを超える場合を含めて,大規模並列に関しては,Hキューをご利用ください. このキューは予約制ですので,事前の
手続きが必要となります.
予約期間の最小単位を「スロット」と呼びます.1スロットは朝10:00から翌日の朝9:00の23時間です.スロットは「YYYY-M
M-DD」の形で表現されます. 「2012-01-10」のスロットを予約した場合は2012年1月10日10:00から2012年1月11日9:
00の23時間が利用できます.
毎日朝9:00から朝10:00の1時間はメンテナンスが行われ利用できませんが,一回の予約で連続したスロットを予約した場
合は途切れることなく, 最終スロットまで連続して利用する事が出来ます.例えば「2012-01-10」から「2012-01-12」を予
約した場合は,分割された23+23+23時間ではなく, 連続した71時間利用できます.
以下にHキューの特徴を表にしました.
項目
仕様
備考
予約操作
スロット開始1時間前まで
当日9時まで
予約キャンセル
開始の24時間前まで
前日のAM10時まで
連続予約日数
最大1週間
7スロット
並列数制限
最小並列16ノード
16ノード以下は予約できません.
障害時の補償(※)
ポイント返却
システムが原因の場合
予約制限
実行中のスロット+予約可能範囲内
で,予約されている ノード日合計がT
SUBAMEグループあたり600ノード
日まで
420ノード×14日=6160ノード日の1
0%
キューの最大実行時間
1日
最大実行時間は予約した期間になり
ます.
早期予約
8日~14日前
※ Hキューでは保証のため無償で予備ノードが付きます.
TSUBAMEポイントの消費が2倍
• 故障等による影響を最小にするため,ノード数に応じてあらかじめ予備ノードが確保されます.
• 予約ノード数と予備ノード数の関係は以下の通りです.32台毎に2台ずつ増加します.
予約ノード数
予備ノード数
16~32
2
33~64
4
65~96
6
• 予約画面上では予備ノード数は確認できません.
• 予備ノードは故障発生の有無にかかわらず利用することが可能です.
• 予備ノード分,追加でTSUBAMEポイントが消費されることはありません.
・・・
・・・
• システムが障害を検知できた場合,故障ノードは自動でt2subの対象から外されます.(検知は2時間おきに行われます)
• システムが障害を検知できなかった場合,t2subで故障ノードへジョブがアサインされてしまうのでセンターへご連絡くだ
さい.土日祝日、時間外等で対応できない場合は,以下の方法で障害ノードを一時的に利用できなくすることが可能です.
• FAQ:予約マシンに障害が発生したのですが ? (特に夜間,休日の対応について)
• t2subではなく直接ログインしプログラムを実行する場合は,手動で故障ノードを利用しないようにする必要 があ
ります.
• 予備ノード台数を超える障害が発生し,すぐに復旧ができなかった場合は,TSUBAMEポイントの補償を行います.
3.5.2 大容量メモリ
大きなメモリーが必要な場合は,L128,L256,L512キューをご利用ください. ノードあたりの利用可能メモリが段階的に大き
くなり,最大で,512GBまで利用できます. 各キューのメモリサイズの割り当ては次の通りです.
キュー
最大メモリサイズ
ノード数
S
54GB
300
H
54GB
420
S96
96GB
41
L128
128GB
8
L128F
128GB
10
L256
256GB
8
L512
512GB
2
G
22GB
480
V
32GB
440
【重要】
PBSのメモリ識別は1GB=1024MBですので,指定できる最大の数字が若干小さくなります.
3.5.3 大容量ストレージ
大容量ストレージはグループで申請することにより利用可能となります. 利用にあたっては TSUBAME2利用ポータル利用の手
引 を参照ください. 申請すると1グループあたり最大30TBの大容量ストレージが利用可能です. 利用にはTSUBAMEポイン
トが必要です.グループディスク課金の仕組みは以下の通りです.
• 従量制オプションのTSUBAMEポイントによる支払い
• 1TB単位,月単位でTSUBAME2.0利用ポータルより設定
• 実際に保存している容量や転送量ではなく,保存可能枠(ディスククオータ)に課金
• Lustre領域(/work0,1)とGPFS領域(/data0)でそれぞれ設定
• 前払いのみ(対象月開始時ではなく設定直後にTSUBAMEポイントを消費)
• 翌月以降の設定値は事前にキャンセルが可能(返ポイント)
例:4月に「6月1TB」を購入した場合,4,5月中であればキャンセルしポイントに戻す事ができる.
• 当月の設定値はキャンセル不可能(増やすのは可能)
例:4月に「6月1TB」を購入した場合,6月にそれをキャンセルできない.
例:4月に「6月1TB」を購入し,6月に6月分をさらに追加する事ができる.
• 当月に利用が全くなくても返ポイントしない.
• 月の切り替わり等に設定値が実容量を下回った場合の動作
• 利用者は対象ディレクトリにアクセス不能になる.
• 保存可能枠を適切に購入する事で再度アクセス可能になる.
• 一定期間アクセス不能状態が続いた場合,システム側で今後削除する事がある. (具体的な運用方法については
未定)
• 初回利用時は設定した月になると,ディレクトリが自動的に作成される.
• ディレクトリ名(Lustre) : /work0/グループ名 (または/work1)
• ディレクトリ名(GPFS) : /data0/グループ名
• 1ファイルシステムあたり,1グループ最大30TBの制限
• 1ファイルシステムあたり,全グループ合計で750TB の制限
• GPFS領域において,テープ装置へ移動されたデータ分は使用量としてカウントされない.
例:GPFSのHDDに1.5TB,テープに3TBある場合は,2TB分購入しておけばデータを維持する事ができる. しかし,こ
の状態ではHDD側を整理しないと,テープから500GB分しかHDDに取り出す事ができない.
例:ユーザのデータが4.5TBあった場合,GPFS上に2TB分だけ購入しておけば,2TB分GPFSのファイルシステム上に
データを保持することができ,残りの2.5TBはテープライブラリ上に保持することができる. ファイルシステムからテー
プライブラリ上へのデータの移動はGPFS側で透過的に行われる.
• ディスククオータはgidを用いて判別するため,同じファイルシステム内であればどのディレクトリに存在しても使用量と カ
ウントされる.
例:TSUBAMEグループ t2g-group1 と t2g-group2 に属しているユーザーが,/work0/t2g-group1 から /work
0/t2g-group2 に データを移動しても,データのgidが変更されない限りどちらのグループも使用量は増減しない.
• /data0はVキューからアクセスすることができません.
• グループディスクはバックアップを取得していません.重要なデータは複数の領域に保存するか,バックアップを 取得して
いる /homeに保存してください.
• 適切に購入しない状態でデータを長期間保存してはいけません。 たとえ読み書きを全くしていなくてもディスクは占有してお
り、他の利用者がその分だけ利用できないことに変わりありません。 データを保存したいだけの場合でもディスクは購入して
ください。
• アカウントが失効してもその方がグループディスクに作成したデータは削除されません。 作成したデータはTSUBAMEアカウントの期限
内に利用者の責任で適切に管理(移動、取り出し、削除、パーミッション変更)してください。
※ 各ストレージの利用については, 4.6 ストレージの利用 を参照ください.
【重要】
3.5.4 並列環境とアプリケーション
TSUBAME2におけるアプリケーションのキュー別の利用可否を一覧にまとめました.
アプリ名
V以外(※1)
V
ノード内
ノード間
ノード内
ノード間
ABAQUS St/Ex
○
×
○
×
ABAQUS/CAE
○
×
×
×
MD NASTRAN
○
×
○
×
PATRAN
○
×
×
×
GaussView
○
×
×
×
Gaussian
○
×
○
×
Gaussian-Linda
○
○
○
×
Molpro
○
○
○
×
AMBER
○
○
○
×
Materials Studio
○
×
○
×
Discovery Studio
×
×
×
×
Scigress
×
×
○
×
AVS/Express
○
×
×
×
AVS/Express PCE
×
×
×
×
EnSight
○
×
×
×
Mathematica
○
×
○
×
Maple
○
×
○
×
ANSYS FLUENT
○
×
○
×
MATLAB
○
×
○
×
LS-DYNA
○
×
○
×
Total View Debg
○
×
○
×
Tinker
○
×
○
×
GROMACS
○
○
○
×
POV-Ray
○
○
○
×
GAMESS
○
○
○
○
R
○
○
○
×
openmpi
○
○
×
×
mvapich2
○
○
×
×
○
○
mpich2(※2)
○
○
※1 S,S96,G,L128,L128F,L256,L512,H,X
※2 IBを使用しないため,通信性能は十分確認してご利用ください.
【注意】
Discovery Studio, AVS/Express PCE は別途用意したマシンを使用します. 7. ISVアプリケーション を参照ください.
3.6 WINDOWS HPC
別途,利用の手引が用意されています.
3.7 関連設備の利用
TSUBAME1.2で使用していた磁気テープ装置によるバックアップが接続されています.
3.8 Naregi連携
国立情報学研究所の進めているNaregiシステムからTSUBAME2の資源を利用できます. また,同様に,連携している拠点
の計算資源を利用できます.
詳細につきましては,現在,調整中です.
3.9 ストレージサービス(CIFS)
スト―レジサービスによりWindows/Mac端末からオンラインストレージディスクを利用できます. ユーザあたり25GBまで利用
可能です. 利用方法につきましては, 4.9 ストレージサービス をご参照ください.
4. システムの利用
ユーザーからの利用イメージを以下に示します.
ご利用のターミナルからTSUBAME2を利用する場合,次の手順で資源を使用します.
• アカウントの取得
• 学内者(職員,学生)はTSUBAME2.0ポータルから操作
• 学外者は書類による申請
• ログインマシン
UNIX用で,冗長化のため2台のログインマシンが用意されています.
• インタラクティブ
ログインマシンにリモートログインをすると,ここのマシンのどれかに着地します. ここで,デバック,ジョブの投入準備
などを行います.
• PBSサーバー
バッチキューを有効に利用するために,キューイングシステムとしてPBSが採用 されています.PBSサーバーから各
バッチにジョブがスケジューリングされます.PBSの利用に関しては PBSの利用方法を参照してください.
• バッチ計算
投入されたジョブの要求に応じた資源に基づいて計算が実施されます.
4.1 アカウントの取得
TSUBAME2を利用する場合は,専用のアカウントが必要です. アカウント取得方法 に示す流れに沿って手続きをお願いいたし
ます.
【重要】
学内ネットワークからTSUBAME2にログインする時は,鍵認証とパスワード認証が利用できますが 学外ネットワークからの
ログイン時は鍵認証のみ になります.
鍵認証利用時は,TSUBAME2ポータルから認証鍵のアップロードを実施してください.
【重要】
初期パスワードを設定しないとTSUBAMEにログインできませんので必ず最初にパスワードを設定してください.
4.2 ログイン
TSUBAME2の計算サービスを使うためにはまず初めにTSUBAME2へログインする必要があります. ログインにはsshという
ソフトウェアをお使いください. sshとは遠隔のサーバに安全にログインするためのソフトウェアです. sshを用い,TSUBAMEへ
ログインするために必要な情報は以下の通りです.
ログインノード名
login-t2.g.gsic.titech.ac.jp
ユーザ名(アカウント名)TSUBAMEアカウントの名前
パスワード
TSUBAMEアカウントのパスワード
認証方式
学内からはパスワード、公開鍵方式共に許可。 学外からは公開鍵方式のみ許可
次のように接続してください.
> ssh -Y login-t2.g.gsic.titech.ac.jp -l USER-ID
※ユーザーIDは -l (Lの小文字) を使用します.
ログインノードへ接続すると、自動で実際に作業等を行ういずれかのインタラクティブノードへ転送されます。
インタラクティブノードとバッチノードは,共に同じディスクを共有していますので, /homeなどはマシンを意識することなく利用
できます. また,GPUは全てのインタラクティブで利用できます.
インタラクティブノードやログインノードの障害が原因で, TSUBAMEに全くアクセスできなくなる事を防ぐため,ログインノード
は2台用意されており、 転送されるインタラクティブノードも2つのグループに分けられています。
• 第1グループ (login-t2-1.g.gsic.titech.ac.jp)
t2a006161 から t2a006170 の10台のいずれかに転送されます.
• 第2グループ (login-t2-2.g.gsic.titech.ac.jp)
t2a006171 から t2a006180 の10台のいずれかに転送されます.
※login-t2.g.gsic.titech.ac.jpにアクセスしようとすると実際にはDNSラウンドロビンによって login-t2-1.g.gsic.titech.ac.j
p または login-t2-2.g.gsic.titech.ac.jp のいずれかのログインノードへ接続されます。 障害等でTSUBAMEへ接続できない
場合は、障害のでていないもう一方のログインノードを 以下のように直接指定する事で接続できる場合がありますのでお試し
ください.
> ssh -Y login-t2-1.g.gsic.titech.ac.jp -l USER-ID
> ssh -Y login-t2-2.g.gsic.titech.ac.jp -l USER-ID
4.3 パスワード管理
パスワードの管理はユーザー責任になりますので,しっかり管理をお願いします. 次の手順で定期的にパスワードを変更して
ください.
• 課金システムの TSUBAMEポータルからパスワード変更 を選択
• 同一パスワードを2回繰り返し入力する
• 一旦ログアウトして,新パスワードを確認する
※ユーザーが個人で変更したパスワートは管理者にも分りません. しっかり管理をお願いします.
なお、パスワード設定後に 有効期間(168日) を経過すると、TSUBAMEへのssh接続時にパスワードの変更を求められますが、
ここでパスワードを変更することはできません.必ず TSUBAME2.0利用ポータルから変更 を行ってください.
4.4 インタラクティブ
インタラクティブノードへのログインに成功すると次のような表示になります.
jyoucyu-n-aa@t2a006168:~>
(アカウント名@マシン名:~>)
マシン名は,t2a006161~t2a006180 です. このノードでは,実行前のプログラムの作成,デバック等を行います.
ここからPBSを使用してバッチキューへジョブを投入します.
バッチキューへのジョブ投入方法詳細については 5. PBSによるジョブの投入 を御覧ください.
4.5 バッチジョブ
本システムでは,バッチ処理システムを利用することができます.通常のインタラクティブ処理(コマンドの実行)では,利用者が
各々のタイミングでアプリケーショ ンやコマンドを実行するため,計算機資源の利用において競合が発生する確率が高くなり
ます. これに比べて,バッチ処理では,投入したジョブはシステムによってスケジューリングされるため, 他のアプリケーション,
ジョブの影響を受けることなく,計算機資源を効率良く利用することができ ます. バッチ処理システムの利用手順は,以下のよ
うになります.
1. ジョブの作成
2. ジョブの投入
3. ジョブの状態確認
4. ジョブの結果確認
これらについて,順に説明します.PBSに与えるオプションの説明は 5.2 PBSオプション をご参照ください.
4.5.1 ジョブの作成
ジョブは,バッチ処理で実行したいコマンドを記述したシェルスクリプトです. これ以降,ジョブスクリプトと呼びます. 以下にジョ
ブスクリプトの例を示します.
例 ジョブスクリプトmyjob.sh の中身
#!/bin/sh
#
# sample jobscript
#
cd $HOME/test
./myprog < input_data
※ ディレクトリを無指定の場合は$HOMEが実行ディレクトリになります.
上の例 myjob.sh は,$HOME/test ディレクトリ($HOME は各ユーザのホームディレクトリ)に移動し, そのディレクトリ
にあるプログラムmyprog を実行するジョブスクリプトです. このようなコマンドを羅列したファイルをまず作成します.
※ カレント(ジョブを投入した)ディレクトリで実行したい場合は,$HOMEの部分を次のように記述します.
cd ${PBS_O_WORKDIR} (大文字の"オー"です)
※実行シェルには実行権が必要ですので事前に確認してください.
ls -l test.sh
-rwxr-xr-x 1 USER-ID users
225 2012-11-02 16:45 test.sh
パーミッションのオーナー欄に"x"が表示されていることを確認してください.ない場合は
chmod u+x test.sh
あるいは
chmod 755 test.sh
などとして実行権を付与してください.
※ MPIジョブにつきまして,利用環境によりジョブスクリプトが若干違ってきますので, 5.1.4 MPIジョブ をご参照ください.
4.5.2 ジョブの投入
バッチ処理システムを利用するには,ジョブスクリプトをジョブとしてキューに投入します. 投入にはt2sub コマンド(PBSシステ
ムをカスタマイズ)を使用します. このコマンドで投入するジョブをバッチジョブと呼びます. 標準出力,エラー出力はバッチジョ
ブを投入したディレクトリに出力されますので, 出力を残したいディレクトリに移動します.ジョブ投入後,プロンプトが返ります
.
> t2sub -q S -W group_list=t2gxxxx -l select=8:ncpus=8:mpiprocs=8:mem=48gb -l place=scatter ./intel-open.sh
1118.t2zpbs01
※コマンドオプションの簡単な説明
-q S : キューの指定(Sキューは従量課金キュー)
-W group_list
: 課金グループを指定
-l select=8:ncpus=8:mpiprocs=8:mem=48gb -l place=scatter
: 8ノードを使用した64並列指定,ただし,メモリーはノード内(チャンクあたり)総量指定
資源の指定を省略すると cpus=1,mem=1gbが設定されます.
./intel-open.sh : 実行シェル
※チャンクは,並列ジョブの場合に示す意味が変化します.5章を参照してください.
4.5.3 ジョブID
PBSで投入されたジョブはジョブIDによって管理されます.ジョブの情報を確認したり強制終了する 場合はジョブIDが必要と
なります.投入されたジョブIDはt2subが正常に実行終了すると標準出力に表示されます.
> t2sub -q -S -l select=1:ncpus=8 ./job.sh
1234.t2zpbs01
4.5.4 ジョブの状態確認
投入したジョブの状態を確認するには,t2stat コマンドを使用します. 通常は自ユーザアカウントの情報のみ表示されますが,
-allオプションを付与することで自ユーザアカウント以外のジョブ情報も表示されるようになります. ジョブのキューへの溜まり
具合を確認する際などにご利用ください.
> t2stat -a
t2zpbs01:
Job ID
--------------1006.t2zpbs01
1078.t2zpbs01
1118.t2zpbs01
Username
-------necse
necse
necse
Queue
-------S
S
S
Req'd Req'd
Elap
Jobname
SessID NDS TSK Memory Time S Time
---------- ------ --- --- ------ ----- - ----intel-samp
-1
1
54gb 01:00 Q
-OTHERS
-1
1
54gb 01:00 Q
-OTHERS
27781
8
8 424gb 01:00 R 00:23
t2zpbs03:
Req'd Req'd
Elap
Job ID
Username Queue
Jobname
SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - ----147.t2zpbs03
necse
G
OTHERS
23383
1
1
1gb 01:00 Q -などと表示されます.
S の列に表示される,「R」「Q」などの表示はジョブの状態です.各状態の意味はそれぞれ次に示す通りです.
[ジョブの状態一覧]
状態
R
Q
T
B
X
H
E
F
説明
実行中
待機状態
移行中(QからRに変化する最中など)
ジョブアレイ
終了(ジョブアレイのサブジョブ)
保留状態
終了中(実行済み)
終了
キュー名を付与することで対象キューの情報のみを表示できます.また,終了したジョブの一覧を表示する場合は-Hオプション
を使用します. 例えば,Gキューに投入した終了ジョブを確認する場合は,次のコマンドを実行します.
> t2stat -H G
t2zpbs03:
Job ID
--------------140.t2zpbs03
150.t2zpbs03
151.t2zpbs03
Username
-------necse
necse
necse
Queue
-------G
G
G
Req'd Req'd
Elap
Jobname
SessID NDS TSK Memory Time S Time
---------- ------ --- --- ------ ----- - ----OTHERS
11855 -- --- 01:00 F 00:00
OTHERS
5416 -- --- 01:00 F 00:00
OTHERS
5464 -- --- 01:00 F 00:00
ジョブの詳細情報を確認する場合は,-fオプションを使用します. -xオプションを併用することで,ジョブがどの状態(実行中,実
行待ち,終了)であっても表示できるようになります.
> t2stat -xf 139.t2zpbs03
Job Id: 139.t2zpbs03
Job_Name = OTHERS
Job_Owner = nec@t2a010017
resources_used.cpupercent = 0
resources_used.cput = 00:00:00
resources_used.mem = 1500kb
resources_used.ncpus = 1
resources_used.vmem = 11360kb
resources_used.walltime = 00:00:00
job_state = F
queue = G
server = t2zpbs03
Checkpoint = u
ctime = Thu Sep
......
9 20:36:44 2010
[オプション一覧]
オプション
-help
-all
-J
-t
-p
-x
-a
-H
-i
-r
-u userlist
-n
-s
-T
-w
-1
-Q
-q
-B
-f
-G
-M
--version
概 要
ヘルプメッセージを表示
全ユーザのジョブ情報を表示
ジョブアレイのみ表示
ジョブ,ジョブアレイオブジェクト,およびサブジョブの状態を表示
Percentage Completedのカラム付で表示
実行中,実行待ち,終了したジョブの状態を表示
実行中,待機中ジョブ一覧を表示
終了したすべてのジョブ一覧を表示
待機中の全てのジョブ一覧を表示
実行中の全てのジョブ一覧を表示
指定したユーザのジョブ一覧を表示
ジョブに割り当てられたホスト,仮想プロセッサを表示
ジョブコメントを表示
待ち状態ジョブの開始見積もり時刻を表示
横幅を広くして表示
1ジョブ毎に1行表示に整形.-s, -nのみ組み合わせ可能
キューの現在のジョブ実行状況を表示
キューに設定された制限を表示
PBSサーバの情報を表示
ジョブ,キュー,サーバの詳細情報を表示
サイズ表示をGBで表示
サイズ表示をメガワード(MW)単位で表示.1ワード=8バイト
PBSバージョンを表示
4.5.5 ジョブの結果確認
ジョブが終了すると,そのジョブの実行結果ファイルが得られます. デフォルトの実行結果ファイ ル名は,「ジョブ名.o ジョブID」
です. ジョブID はPBSの キュー毎に割り当てられる一意の識別 子です. このファイルには,標準出力(.o*)の内容と標準エラー
出力(.e*)の内容が出力されます. ファイルの標準的な出力先は,ジョブを投入したディレクトリです.
$ ls
OTHERS.e163
OTHERS.o163
などとなります.出力ファイル名を任意の名前にする場合は,-Nオプションを使用します.
4.5.6 ジョブ実行情報・課金情報
ジョブ実行情報および課金情報は標準エラー出力の末尾に,ジョブの出力内容に追加の形で出力されます. ジョブが使用リ
ソースおよび課金係数,消費時間などが出力されます.
================================================
[Your accounting ID]
group id
: t2gsample
-----------------------------------------------[Job informations]
job id
: 1597.t2zpbs01
queue
: L128
num of used node(s) : 4
used node(s) list
:
t2m010167 t2m010168 t2m010169 t2m010170
used cpu(s)
: 32
walltime
: 00:00:00 (0 sec)
used memory
: 2088kb
job exit status
: 0
-----------------------------------------------[Accounting factors]
x 1.0 by group
x 2.0 by queue
x 1.0 by job priority
x 1.0 by job walltime extension
= 2.0 is the total accounting factor
-----------------------------------------------[Expense informations]
total consumed walltime
: 0 sec
consumed budgets with this job : 0 yen
================================================
【重要】
• MPIジョブ等は,ランク = 0 が動作したノードの情報を表示します.
• ここで表示される金額は該当ジョブの利用目安です.精算は使用時間で行なわれます.
• 標準エラー出力の終了コード(job exit status)がマイナスの場合は課金されません.
4.5.7 ジョブの削除
投入したジョブを,終了を待たず削除するには t2del コマンドを使用します.
> t2del 147.t2zpbs03
実行状態のジョブを削除する場合は,-W forceオプションを追加します.キュー待ち状態のジョブも削除可能です.
> t2sub -q -S -l select=1:ncpus=8 ./job.sh
1234.t2zpbs01
> t2del -W force 1234.t2zpbs01
4.5.8 sshログイン
ノード占有系のサービスに対しては,ジョブが確保した計算ノードに対して直接sshログインを行うことができます.
5.9 SSH直接ログイン を参照ください.
4.5.9 課金グループでの実行状況確認
バッチキューに投入されている同一課金グループのジョブを表示することができます.
> t2group -g t2gxxxxxxx (TSUBAMEグループを指定します)
Req'd
Req'd
Group
Job ID
Username Queue
Jobname
NDS
TSK
Mem
Time
S
--------- ------------------ -------- ------- --------- ----- ----- ------- ----- -------- --t2gxxxxxx 3637xx.t2zpbs03
xxxxx1
G
OTHERS
1
1
1gb
02:00:00 R
t2gxxxxxx 3637xx.t2zpbs03
xxxxx2
G
OTHERS
8
64
64gb
0
Q
Elap
Time
-------00:12:18
また,オプション無しでコマンドを発行すると課金グループの利用状況を表示することができます.
> t2group
Groups users restrict_apps t2gxxxx t2gxxxx-Rsv 2 of User xxxxxx
-------------Group-------------|-------FixedQueue-------|-------MeasuredRateQueue------Name
Condition | Factor Condition units | Factor Condition
sec
t2gxxxx
used
|
1.0 used
2 |
1.0 used
5561124
t2gxxxx-RsvTst
used
|
1.0 stopped
0 |
1.0 used
1080000
4.6 ストレージの利用
TSUBAME2では,homeの利用以外にもdata領域としてGPFS, work領域としてLustreなどの様々な並列ファイルシステムを
利用することができます.data領域はテープライブラリシステムと連動した階層型ファイルシステムを構成しているため, 数十
~数百TB規模のデータの保存や大規模データ処理アプリケーションでの利用に向いているのに対し, work領域はHPCシミュ
レーションなど大規模並列アプリケーションでも高いスループット性能が必要なアプリケーションでの 利用に向いております
.
4.6.1 home
ユーザーあたり 25GBを利用できます.利用状況の確認は t2quota コマンドを使用します.
> t2quota
4.6.2 data
data領域(/data0)はテープライブラリとGPFSファイルシステムが連動した階層型ストレージとして構成され, グループあたり
最大30TB のファイルシステム領域を利用できます.ただし,テープライブラリへマイグレーションされた ファイルはQuotaの制
限対象にはなりません.
• マイグレーション
data領域に作成したファイルは定期的にテープライブラリへマイグレーションされます. マイグレーションされる条
件は以下のとおりです.
• 4週間アクセスがない4Mbytes以上のファイル
• ファイル名の拡張子が.archiveでかつ4Mbytes以上のファイル
• アクセスの有無は関係しません.
また、上記の条件を満たすファイルにおいても以下のファイルはテープライブラリへマイグレーションされません.
• ファイル名の拡張子が.noarchiveであるファイル
マイグレーションされたファイルのinode情報はファイルシステム内に残るためテープライブラリへ マイグレーショ
ンされたファイルもアクセス可能です.
• リコール
テープライブラリへマイグレーションされたファイルをファイルシステムへリコールするために特別操作は必要あ
りません.マイグレーションされたファイルであってもファイルシステムシステム上のPATHおよびファイル名で 透過
的にアクセスすることができます.しかし,テープライブラリからファイルシステムへファイルがリコール されるので
,ファイルシステム上に存在するファイルよりも読み込みに多くの時間を要します.
data領域はVキューからはアクセスできません のでご注意ください.
4.6.3 work
work領域はLustreファイルシステムで構成され、グループあたり最大30TBを利用できます. Lustreは,ディレクトリ単位でそ
の設定を変更することが出来ます.以下にその方法を以下に記します.
[設定方法]
/usr/bin/lfs コマンドのサブコマンドsetstripeで設定,getstripeで設定の確認ができます.
setstripe,getstripeの使用方法は下記になります.
$ lfs help setstripe
setstripe: Create a new file with a specific striping pattern or
set the default striping pattern on an existing directory or
delete the default striping pattern from an existing directory
usage: setstripe <filename|dirname> <stripe size=""> <stripe start=""> <stripe count="">
or
setstripe -d <dirname>
(to delete default striping)
stripe size: Number of bytes on each OST (0 filesystem default)
stripe start: OST index of first stripe (-1 filesystem default)
stripe count: Number of OSTs to stripe over (0 default, -1 all)
$ lfs help getstripe
getstripe: To list the striping info for a given filename or files in a
directory or recursively for all files in a directory tree.
usage: getstripe [--obd|-O <uuid>] [--quiet | -q] [--verbose | -v]
[--recursive | -r] <dir|file> ...
4.6.4 共有スクラッチ
並列ファイルシステム(Lustre)で構成された共有スクラッチ領域を利用できます. 利用する際には,$TMPDIRに共有スクラッ
チ領域のパスが設定されます. ジョブスクリプトの中で,作業領域のパスを指定することにより参照可能です.
[例]
#/bin/sh
./output_prog > $TMPDIR/output.dat ※共有スクラッチに中間ファイルを出力
./input_prog < $TMPDIR/output.dat ※共有スクラッチから中間ファイルを入力
Gaussianで共有スクラッチ領域を利用する方法は 7.6 Gaussian を参照してください.
4.6.5 ローカルスクラッチ
SSDを高速スクラッチとして使用することができます. 使用する計算ノードが1ノードの場合は,PBSのstagein/stageoutが使
用できます. (複数ノードはPBSが対応していません)
1.シェルの準備
以下のように,SSDに展開するディレクトリを記述します.
> cat stg.sh
#!/bin/bash
cd /scr/input
./calc01 < in.dat
#
この例では,stageinするのはcalc01(プログラム) と in.dat(入力データ)です.
2.展開ディレクトリの準備
SSDに展開するディレクトリを準備します.
> pwd
/home/usr2/tokou-t-aa/input
> ls -l
-rwxr-xr-x 1 tokou-t-aa users 266177 2010-11-30 12:05 calc01
-rw-r--r-- 1 tokou-t-aa users
5 2010-11-30 12:05 in.dat
ディレクトリinput に収めてSSDにstageinします.
3.ジョブの投入
この時のディレクトリは次のようになっています.
> ls -l
drwxr-xr-x 3 tokou-t-aa users 32768 2010-11-30 14:04 input
-rwxr-xr-x 1 tokou-t-aa users
69 2010-11-30 14:02 stg.sh
ジョブを投入します.
t2sub -q S -l select=1:mem=20gb
-W stagein=/scr@t2a006161:/home/usr2/tokou-t-aa/input
-W stageout=/scr/input@t2a006161:/home/usr2/tokou-t-aa/output ./stg.sh
(記述の都合で分割していますが継続した1行です)
次の点に注意してください.
• この記述では、/scrにinputというディレクトリを展開します.
• 実行シェルのcd とディレクトリを合わせてください.
• @t2a006161の部分はジョブを投入するホスト(インタラクティブ)を記述してください.
4.結果の回収
計算結果はstageoutで指定したディレクトリに置かれます.
> ls -l
-rw------- 1 tokou-t-aa users
445 2010-11-30 14:04 OTHERS.e6296
-rw------- 1 tokou-t-aa users
91 2010-11-30 14:04 OTHERS.o6296
drwxr-xr-x 2 tokou-t-aa users 32768 2010-11-30 14:04 output
> cd output
> ls -l
-rwxr-xr-x 1 tokou-t-aa users
266177 2010-11-30 12:05 calc01
-rw------- 1 tokou-t-aa users
360 2010-11-30 14:04 fort.12
-rw------- 1 tokou-t-aa users 480000008 2010-11-30 14:04 fort.14
-rw------- 1 tokou-t-aa users 480000008 2010-11-30 14:04 fort.18
-rw-r--r-- 1 tokou-t-aa users
5 2010-11-30 12:05 in.dat
stageoutで指定したディレクトリに内容が戻ります.
5.注意点
• Gaussian等の大きなファイルを使用するアプリケーションでは共有スクラッチ(Lustre)をご利用ください.
• SSDで使用できる容量は50GB前後ですがマシンによって異なります.目安は次の通りです.
S/H
V
G
S96
L128
L256/L512
50GB
10GB(共有のため利用は推奨できない)
30GB
160GB
400GB
500GB
• stagein/outはPBSが転送処理を行いますので,ファイル数が多い場合やファイルサイズが大きい場合などは 転送
に時間がかかる場合があります.ご使用になるプログラムの処理をご考慮の上,ご利用ください.
• 研究目的等で,ノード上のSSDを直接使うことが可能になっています. この場合,ジョブ終了時にSSD上のファイル
は消去願います.これを実施しない場合は 他のユーザによって参照される可能性がありますのでご注意ください.
• /scrのパーミッションは 777 に設定されています.不要なファイルは事前に削除可能です.
4.6.6 MPIプログラムでのSSDの使用
プログラムの準備は,FAQ MPIプログラムでの分散ファイルの作成方法を教えてください を 参照してください. 以下の手順で
ジョブを投入します.
1.実行シェルを準備します.
このシェルは最下層で実行させるシェルです.
> cat mpi_go_opn
#!/bin/bash
#-------------------------- 実行環境の記述
export PATH=/usr/apps/openmpi/1.4.2/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/intel/lib:$LD_LIBRARY_PATH
#-------------------------- /scr に移動
cd /scr
#-------------------------- プロセス作業域を作成(この前で rm *しても良い)
if [ ! -d $OMPI_COMM_WORLD_RANK ] ; then
mkdir $OMPI_COMM_WORLD_RANK
fi
#-------------------------- 作業域に入ります
cd $OMPI_COMM_WORLD_RANK
#-------------------------- MPIプログラムを実行(フルパスで記述)
/home/usr2/toukou-a-jj/tune/sample20 < /home/usr2/toukou-a-jj/tune/in.dat
#-------------------------- 欲しいファイルをコピーします
cp out.* /home/usr2/toukou-a-jj/tune
#-------------------------- 作業域を消去します
cd ../
rm -fr $OMPI_COMM_WORLD_RANK
#
◎ /scrで作成したファイルは必ず消去してください.
◎ この例は、openMPI+intel です.
• 使用するMPIに合わせた実行環境を記述してください.
• MPIに mvapich2 を使用する場合,$OMPI_COMM_WORLD_RANK → $PMI_ID と書き換えてご利用ください.
• mpich2 の場合は, $PMI_RANK と書き換えて使用してください.
• コンパイラが違う場合は,環境指定の記述を修正してください.
2. PBSでジョブを投入するシェルを用意します.
(通常のジョブ投入シェルと構成は同じで大丈夫です)
> cat mpi_go
#!/bin/bash
export PATH=/usr/apps/openmpi/1.4.2/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/intel/lib:$LD_LIBRARY_PATH
cd ${PBS_O_WORKDIR}
mpirun -n 4
-hostfile $PBS_NODEFILE ./mpi_go_opn
#
先に用意したシェル,mpi_go_opnの実行シェルをMPI環境下で実行させます.
3.ジョブを投入します.
2番で用意したmpi_goシェルを指定してジョブを投入します.
> t2sub -q S -W group_list=t2gxxxx -l select=4:mpiprocs=1:mem=10gb
-l place=scatter ./mpi_go
【注意】
PBSでは,いきなりmpi_go_opnを指定してもRANK=0を含まないノードに 環境引き渡しが行なわれないため,MPIジョブ
として全てのシェルを実行させます.
4.6.7 ストレージの制限
各ストレージの利用には制限が存在しています.
1. /home は 25GB
2. /work , /data はグループでの利用が購入量まで
となっております. 利用状況の確認は,"t2quota"コマンドで実施します. 以下に使用例を示します.
> t2quota
Disk Quota for User A2400xxx of Filesystem /home
------------------------ Block Limits -----------------------------------|(後半省略)
USER
KB
quota
limit in_doubt grace |
A2400xxx
10125920
0
26214400
0 none |
> t2quota -g
Disk Utilization (/work0):
------------------------ Block Limits -----------------------------------|
GROUP
KB
quota
limit
grace |
t2g-xxxx-new
28889808
1063004405
1073741824
- |
Disk Utilization (/work1):
------------------------ Block Limits -----------------------------------|
GROUP
KB
quota
limit
grace |
t2g-xxxx-new
31421828*
1
1
- |
Disk Utilization (/data0):
------------------------ Block Limits -----------------------------------|
GROUP
KB
quota
limit in_doubt grace |
この例の場合、
• /work0は1TBの制限値以下でまだ余裕があります.
• /work1はquotaが1になっていますので,利用購入していないためご利用いただけません. (この状態の場合は,1T
Bを購入すればご利用いただけます. )
• /data0は購入実績がありません.
通常、最初のディレクトリにはSGID(セット・グループID)が設定されているため、 生成されるファイル,ディレクトリはTSUBAME
グループのgidが継承されますが、 以下のような場合"users"のファイル,ディレクトリが生成されます.
• TSUBAMEグループを指定しないバッチでのジョブ実行したとき(テスト実行時)
• SGIDを外したディレクトリにバッチ以外で読み書きをしたとき.
• 既存のファイル,ディレクトリをgidを手動で変更したとき.
• グループディスク外からrsyncで-aオプション等でgid情報を保持するようコピーした場合
これらに該当している場合, "Disk quota exceeded" のメッセージが表示されて 書き込みに失敗いたします. このような場合、
ディレクトリにSGIDをセットしていただくのが 確実ですが,次のような方法で回避することができます.
> newgrp t2g-xxxx-sample
4.6.8 I/O 専用ノードの利用
TSUBAMEと大量のファイルを転送していると、 インタラクティブノードの時間制限にかかり途中で失敗する場合があります.
このような場合,I/O専用ノードをご利用ください.
ホスト名 io-t2.g.gsic.titech.ac.jp
プロトコル SSH/SFTP/SCP
以下に接続例を示します.
$ ssh -Y io-t2.g.gsic.titech.ac.jp -l <user-ID>
$ sftp <user-ID>@io-t2.g.gsic.titech.ac.jp
WinSCPやCyberDuckといったフリーソフトを利用する事も可能です. これらのソフトウエアの使い方はそれぞれのマニュアル
をご覧ください.
I/O専用ノードは学外/学内からのアクセスを問わず公開鍵認証が要求されます. TSUBAME2.0利用ポータルから鍵登録を
してください. 公開鍵が正しく用意されていないと
"Permission denied (publickey,hostbased)"
等と表示されて接続が拒否されます.
なお,I/O専用ノードから新たに他の計算ノードや学内,学外のサーバへ接続する事はできません. また,ジョブの実行や投入
もできません.
4.7 WINDOWS HPC
別途,利用手引を用意しておりますので, こちら を参照ください.
4.8 Naregi
別途,naregi用利用の手引を用意しておりますので, こちら を参照ください.
4.9 ストレージサービス(CIFS)
TSUBAME2では,ストレージサービスを提供しており,学内のWindows/Mac端末からCIFSによるアクセスが可能です. TS
UBAME2からもアクセスできるようになっております.(2011年4月から)
ストレージサービスは,ユーザあたり25GBを利用できます.(TSUBAME2の/homeとは別の領域です)
4.9.1 Windowsからの利用
Windows 端末から,全学ストレージにアクセスする方法を記載いたします. ※ 画面はWindows 7 のものですが,XP,Vista
でも利用は可能ですので,適宜ご自身の環境に合わせて読み替えてください.
1.エクスプローラの起動
左下のスタートメニューをクリックし,[すべてのプログラム]→[アクセサリ]→[エクスプローラ]の順に選択します.
2. パスの入力
右上の部分をクリックするとパスの入力が可能となります.
この欄に以下のように入力します.
\\nest2.g.gsic.titech.ac.jp\home0
3. ログイン要求
初めてアクセスする時は,以下のような画面が表示され,ユーザー名とパスワードの入力を求められます.
入力する項目は下記の通りとなります.
ユーザー名
パスワード
G\ "TSUBAMEアカウント名"
"TSUBAMEアカウントのパスワード"
4. 割り当てディレクトリへのアクセス
ログインに成功すると,以下の画面のようなディレクトリの一覧が表示されますので,ご自身の割り当てディレクトリにアクセスします.
割り当てディレクトリは,TSUBAME内のホームディレクトリに対応しております. 例えば,ホームディレクトリが /home/usr9/A000
00001 の場合は,[usr9]→[A00000001]の順にアクセスすることで,割り当てディレクトリへのアクセスが可能です.
5. ストレージの利用
割り当てディレクトリ内であれば,ファイルの保存が可能となっております.
4.9.2 Macからの利用
Macから,全学ストレージにアクセスする方法を記載いたします.(※Mac OS X10.6の例です)
1.Finderの起動
Finderを選択してメニューから,[移動]→[サーバへ接続]の順に選択します.
2. 接続
接続先を要求してきますので例のように
cifs://nest2.g.gsic.titech.ac.jp
とします.続けて,登録区分とユーザーIDとパスワードを入力します.
マウントボリュームを聞いてきますが,home0が表示されるのでそのままOKしてください. (※認証されない場合はユーザー
名の前に g\ をつけてみてください)
3.割り当てディレクトリへのアクセス
ログインに成功すると,以下の画面のようなディレクトリの一覧が表示されますので,ご自身の割り当てディレクトリにアクセスします.
割り当てディレクトリは,TSUBAME内のホームディレクトリに対応しております. 例えば,ホームディレクトリが /home/usr9/A000
00001 の場合は,[usr9]→[A00000001]の順にアクセスすることで,割り当てディレクトリへのアクセスが可能です.
4. ストレージの利用
割り当てディレクトリ内であれば,ファイルの保存が可能となっております.
4.9.3 TSUBAME2からの利用
TSUBAME2から全学ストレージへのアクセスは次の通りです.
1. 自分のディレクトリの確認
TSUBAME2での自分のディレクトリを確認してください.
> cd
> pwd
/home/usr3/toukou-t-aa
表示されたディレクトリの"/home"を"/nest2"に読み替えたディレクトリが 全学ストレージの対象ディレクトリの場所にな
ります.この場合は
/nest2/usr3/toukou-t-aa
となります.
2. データのコピー
次のようなコマンドを発行してデータのコピーを確認してください.
> ls /nest2/usr3/toukou-t-aa
aa.txt sample.f90
> cp /nest2/usr3/toukou-t-aa/aa.txt .
> ls
aa.txt
※ファイルが無い場合は表示されません.
5. PBSによるジョブの投入
PBSの基本コマンドは,一般的には「qsub」というコマンドが使用されますが,TSUBAME2では,運用上の都合で, 「t2sub」
というコマンドを使用します.利用方法は,一般的なPBSで使用されているqsubとほぼ同じですが, 一部の オプションがTSU
BAME2用にカスタマイズされています.
5.1 ジョブスクリプト
t2subコマンドを使用してジョブを投入する場合,t2subコマンドで指定する実行モジュールは,スクリプトを指定してください. こ
のジョブスクリプトの中から,実行モジュールを起動します.また,PBSコマンドをシェル内に記述する方法がありますが, TSU
BAME2では,使用する資源等の管理のために,t2subというコマンドからジョブを投入します.シェル内に記述した コマンドは
無効の扱いになるものもありますので, t2subコマンド発行時にオプションを指定する ようにお願いいたします.
5.1.1 シングルジョブ
シングルジョブは実行モジュール名を記述してください.以下に例を示します.
#!/bin/sh
#
# sample jobscript
#
cd ${PBS_O_WORKDIR}
./myprog < input_data
【重要】実行するディレクトリは必ず指定してください.無指定の場合は,homeが使用されます.
この例の場合は,ジョブを投入したディレクトリで実行されます.(/work0または/work1をご利用ください)
5.1.2 SMP並列ジョブ
SMP並列ジョブ,同時実行ジョブにつきましては,シングルジョブと同様に,実行するモジュール名を指定してください. また,
使用するスレッド数につきましては,明示的に指定するようにお願いします.
#!/bin/sh
#
# sample jobscript
export OMP_NUM_THREADS=2
export NCPUS=2
#
cd ${PBS_O_WORKDIR}
./myprog < input_data
【重要】
MPIを使用したSMP(ハイブリット)並列の場合は注意が必要です. 5.3.8 ハイブリット並列 を参照ください.
5.1.3 GPUジョブ
GPUを使用するジョブも,シングルジョブと同様に実行するモジュール名をジョブスクリプト内で指定してください. ただし,MP
Iを使用したGPUジョブにつきましては,次項のMPIジョブを参照ください.
5.1.4 MPIジョブ
MPIジョブにつきましては,使用するMPI環境により使い分けをお願いします.
1. 利用にあたっての注意
MPI環境は使用する課金キューで使い分けをお願いします.
• 従量課金 --- S,S96,G,L128,L128F,L256,L512,H
IBに対応している,openmpi または mvapich2 を使用してください.
• 定額課金 --- V
IBが利用できない環境ですので,mpich2を使用してください.
2. openmpi
デフォルト(無指定)でのMPI環境は, openmpi + intel コンパイラの環境が設定されています. openmpi + pgi を
使用した場合は,環境をスクリプト内に記述してください.
#!/bin/sh
#
# sample jobscript
export PATH=/usr/apps/openmpi/1.4.2/pgi/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/pgi/lib:$LD_LIBRARY_PATH
#
cd ${PBS_O_WORKDIR}
mpirun -n 4 -hostfile $PBS_NODEFILE ./myprog < input_data
【重要】
実行する場合に,必ず 'mpirun -n ' を記述してください. 並列数はPBSから入力される値とイコールである必要が
あります. $PBS_NODEFILE にPBSシステムから使用するノード情報が入ります.
3. mvapich2
mvapich2 を使用した場合は,必ず環境指定を記述してください.
#!/bin/sh
#
# sample jobscript
export PATH=/usr/apps/mvapich2/1.5.1/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/intel/lib:$LD_LIBRARY_PATH
#
cd ${PBS_O_WORKDIR}
mpirun -n 4 -hostfile $PBS_NODEFILE ./myprog < input_data
【重要】
実行する場合に,必ず 'mpirun -n ' を記述してください. 並列数はPBSから入力される値とイコールである必要が
あります. $PBS_NODEFILE にPBSシステムから使用するノード情報が入ります.
4. mpich2
mpich2 を使用した場合は,必ず環境指定を記述してください.
#!/bin/sh
#
# sample jobscript
export PATH=/usr/apps/mpich2/1.3/intel/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/intel/lib:$LD_LIBRARY_PATH
#
cd ${PBS_O_WORKDIR}
mpirun -n 4 -hostfile $PBS_NODEFILE ./myprog < input_data
【重要】
実行する場合に,必ず 'mpirun -n ' を記述してください. 並列数はPBSから入力される値とイコールである必要があり
ます. $PBS_NODEFILE にPBSシステムから使用するノード情報が入ります.
5.2 ジョブの投入
ジョブを投入するバッチキューを選択して,投入コマンド "t2sub" によりバッチキューへジョブを投入します.
5.2.1 バッチキューの選択
使用できるバッチキューは 3.1.3 バッチノード で紹介されていますが, 利用目的に合わせての各キューの特徴を紹介します.
1.プログラムの実行チェック
この場合は,SキューまたはVキューの確認機能をお使いください.
t2sub -q S ./test.sh
この例は,シングルジョブの確認ですが,指定するオプションは,-q S または -q V だけです. 並列ジョブの実行確認はsel
ect文などにより指定が必要です.
※ Sキューでは2ノード,10分まで,Vキューでは2並列,10分まで使用することがてきます.
2.短時間ジョブ
数時間で計算が終了することが判明している場合,Xキューを利用すると計算が早く終了します.
以下の要件を確認してジョブを投入します.
• Cloud Service Utilization に"X"の表示がある (使いたい数以上の空きがある)
• 朝の10時以降である
• 翌日の朝9時までに終了する計算
• アレイジョブ,依存ジョブでない
この条件に当てはまる場合
t2sub -q S -W group_list=xxxxx
./test.sh
とするとXキューにジョブが投入されます.
【重要】
計算時間が判明している場合,できるだけ正確に時間指定をしておくと, 混雑時などでは、ジョブの実行が早まる場合
があります.(無指定時は 1時間に設定されます)
3.パラメータサーベイ
この場合は,アレイジョブ,または,GXPを使用してください. アレイジョブのサイズなど色々な要素がありますが,Vキュー
での実行の場合は1件あたりのアレイサイズを 購入した利用口数で制限される同時実行数を上限として考慮ください.
GXPのご利用は別途ご案内いたします.
4.GPUジョブ
GPUを使用するジョブはGキューをご利用ください.料金がお得に設定されています.
5.大規模ジョブ
並列数が大きなジョブでも,GPUジョブは Gキューをご利用ください.
通常のCPUを使用する大規模ジョブは H (予約)キューをご利用ください.
5.2.2 PBSオプション
t2sub に使用できるオプションを以下に示します.
t2sub options:
-e
標準エラー出力の出力先ファイル名を指定します.
-et (0|1|2)
ジョブ実行時間の延長レベルを指定します.
-j (oe|eo|n)
標準出力,エラー出力を統合する場合に指定します.
-J X-Y[:Z]
パラメトリックケース(アレイジョブ)時に使用します.
-l
使用する資源を指定します.
-m n or (a|b|e)
ジョブの終了を通知するメールを発行します.
-M user[@host][,user[@host,],...]
メールの送信先アドレスを記述します.(-mと連動します)
-N
ジョブ名を指定します. 無指定時は "OTHERS"となります.
-o
標準出力のファイル名を指定します.
-p (0|1|2)
ジョブの実行優先度を指定します.
-q
キュー名を指定します.(必須オプション).
-r (y|n)
障害等で中断時にジョブをリランします.
-S
ジョブスクリプトのインタプリタを指定します.
-v var1=A[,var2=B,...]
環境変数等の設定をジョブに持たせる場合に使用します.
-V
ログイン環境の環境変数を全て設定した状態でジョブを実行します.
-W attr1=value1[,attr2=value2,...]
ジョブの情報(アカウントなど)を入れます.
-z
ジョブ投入時にジョブIDを表示しません.
-help
コマンドラインのヘルプメッセージを表示します.
-verify
コマンド列の文法チェックをします.
t2sub で使用できないPBSオプションを以下に示します.
-C
ジョブスクリプトの指示行を指定します.
-a [[[[CC]YY]MM]DD]hhmm[.SS]
ジョブの実行開始時間を指定
-A account_string
ジョブのAccount_Name属性に指定する文字列を指定
-h
ジョブをhold状態に設定
-I
インタラクティブ実行
-k (e|o|eo|oe|n)
標準出力・標準エラー出力ファイルを実行ホストに保持する
-u user_list
実行ユーザーを指定
※コマンドの最後に指定
コマンドを標準入力から取得
各オプションの利用については,これ以降で説明していますが,やりたいことと、参照場所の概略を以下に示します.
項 目
参 照 先
マシンを何台も使用したい 5.3 使用資源の指定(l(エル)オプション)
メモリーを大きくとりたい 5.5 メモリサイズの指定
ジョブ名を付けて識別したい
5.7.1 ジョブ名
課金グループでジョブを投げる 5.7.2 TSUBAMEグループ
1時間以上のジョブを投げたい
5.7.3 実行時間
開始、終了の連絡を受けたい
5.7.4 メール
リスト出力をまとめたい
5.7.5 標準出力ファイル
1日以上のジョブを投げたい
5.8 プレミアオプション
会話型処理をしたい
5.9 SSH直接ログイン
大規模な並列計算をしたい
5.4 予約(Hキューの利用)
5.3 使用資源の指定(l(エル)オプション)
lオプションは,CPU数の使用方法に応じて指定します.以下に,ケース別に説明します. lオプションで指定できる項目は以下
があります.
select
チャンク数を指定します(シングル,SMP並列時は=1に固定です.以下を参照してください)
ncpus
ノード内で使用するcore数(スレッド数)を指定します
mpiprocs ノード内で動作させるプロセス数を指定します(ただし,placeオプションと連動します)
gpus
ノード内で使用するGPU数を指定します
※Thinノードに搭載されているGPU Tesla M2050のメモリに対して,ECC on/off切り替える機能を予定しています.
• チャンク
select=xx: で記述される ":" 以後の記述内容を1つのチャンク(塊り)と見なします.
• select=1
この場合は,":"以後がありませんからシングルジョブです.
• select=4
この場合は ":"以後がありませんからCPUを4つ使うジョブとして1ノードを割り当てます.
• select=2:mpiprocs=12
この場合は mpiprocs=12の塊りを二つとなりますので,Sキューでは1ノードになります.
• select=2:mpiprocs=12:mem=40gb
この場合は,mpiprocs=12の塊りを二つですが,40gbのメモリを使えるのは1ノードだけですから2ノードを
確保します.
• select=2:mpiprocs=12 -l place=scatter
この場合は2ノードの割り当てになります.
シングルジョブと並列ジョブの指定方法は,t2subコマンドの「-l」(小文字のエル)オプションの使い方で変化します.以下に,
実際の例を示しますので,自分のジョブに合わせて修正してお使いください.
5.3.1 シングルジョブ
通常のシングルジョブは以下の例のようにselect=1の指定でご利用ください.
t2sub -q S -l select=1 ./job.sh
5.3.2 SMP並列ジョブ
openMP/自動並列/Pthreadによる並列実行で,ノード内並列の例になります.
t2sub -q S -l select=1:ncpus=12 ./job.sh
※指定できる並列数はS/Hキューでは24,Vキューでは16となっています.
5.3.3 GPUジョブ
GPUを使用する場合,ノードあたり使用するgpu数を指定します.
t2sub -q G -W group_list=xxxxx -l select=1:ncpus=1:gpus=1 ./gpujob.sh
t2sub -q G -W group_list=xxxxx -l select=1:ncpus=3:gpus=3:mem=10gb ./gpujob.sh
※GPU数はノード内で3まで指定できます.3GPU以上を使用する場合はノード間MPIを併用してください.
5.3.4 MPIジョブ
MPIのみで構成されたジョブとSMP並列も使用したハイブリッド並列が利用できます.
※課金キューを使用する場合、" -W group_list=xxxxx "は必須となります。 以下の例では、説明したい部分のみフォーカスし
ていることにご注意ください。
• MPIジョブ
MPIを使用したジョブの流し方は幾通りかあります.(MPIのみの例)
ノード内並列(2並列)
t2sub -q S -l select=1:ncpus=2:mpiprocs=2 ./mpitest.sh
t2sub -q G -l select=1:ncpus=2:mpiprocs=2:gpus=2 ./mpigpu.sh
ノード間並列(2並列)
t2sub -q S -l select=2 -l place=scatter ./mpitest.sh
t2sub -q G -l select=2:mpiprocs=1:ncpus=1:gpus=1:mem=20gb -l place=scatter ./mpigpu.sh
ノード間並列(4ノードでの16並列)
t2sub -q S -l select=4:ncpus=4:mpiprocs=4 -l place=scatter ./mpitest.sh
• MPI+SMP並列ジョブ
以下の例は,MPIは40並列で,ノード内SMP12並列の投入です.
t2sub -q S -l select=40:mpiprocs=1:ncpus=12
-l place=scatter ./mpitest.sh
• MPI+GPUジョブ
以下の例はノード内で3GPUを使用した4ノードでの12並列の投入です.
t2sub -q G -l select=4:ncpus=3:mpiprocs=3:gpus=3:mem=10gb -l place=scatter ./mpigpu.sh
※MPIジョブの投入に当たっては, 5.3.6 ノード配置 も合わせて参照してください.
• ncpusとmpiprocsの関係
PBSでは,資源の使用にncpusの値を使っています.並列計算時の資源指定は次のようにお願いします.
ncpus = mpiprocs --- MPIのみの並列と解釈
ncpus > mpiprocs --- ハイブリット並列と解釈(※)
ncpus < mpiprocs --- 場合によって資源を過少評価します.この関係にならないように指定してください.(※)
※ 5.3.8 ハイブリット並列 を参照ください.
• 注意
PBSでは,ncpusの資源情報が実行シェルに引き渡されますが,rank=0でのみ有効なためrank=1以降のプロセスでは
デフォルト値のスレッド数で実行されます. 5.3.8 ハイブリット並列 を参照ください.
5.3.5 同時実行ジョブ
この方法は,シングルジョブを同一ノード内で同時に実行させる方法です.
指定するオプションとしては,ノード内並列と同様の指定になります.
++++ job.sh ここから
#!/bin/bash
for n in 1 2 3 4 5 6 7 8; do
./a.out < input$n > output$n &
done
wait
++++ job.sh ここまで
このようなシェルを用意して,並列の扱いでジョブを投入します.
t2sub -q S -l select=1:ncpus=8 ./job.sh
t2sub -q G -l select=1:ncpus=3:gpus=3 ./gpujob.sh
(GPUの時は3以下を指定)
【重要】
Gキューでは3基のGPUが利用可能ですが,cudaSetDevice() 関数による明示的な指定が無い場合, GPUの利用状況
にかかわらず常に1台目のGPUが使用されます. 複数のGPUを同一プログラムで利用する方法につきましては, 以下の
ディレクトリに存在するCUDA SDKのサンプル simpleMultiGPU 等を参考にしてください.
/usr/apps/free/NVIDIA_GPU_Computing_SDK/3.2/C/src/simpleMultiGPU
5.3.6 ノード配置
• l placeオプション
ジョブのノードへの割り当て方法を指定します.
-l place=free (デフォルト)
複数のノードを利用して割り当てを行います.可能であれば複数のチャンクをまとめてノード内に配置します.
t2sub
t2sub
t2sub
t2sub
-q
-q
-q
-q
S
S
S
S
-l
-l
-l
-l
select=4:ncpus=1:mem=1gb -l place=free ./job.sh (1ノード4並列)
select=4:mpiprocs=4:mem=1gb -l place=free ./job.sh (1ノード4並列)
select=8:mpiprocs=8:mem=1gb -l place=free ./job.sh (1ノード8並列)
select=64:mem=1gb -l place=free ./job.sh (3ノード64並列:24+24+16)
※S/Hキューでは24,Vキューでは16,Gキューでは8となっています.
-l place=scatter
複数のノードを利用して割り当てを行います. 一つのチャンクが必ず一つのノードに割り当てられます.
以下の例ではselect数ノード使用されます.
t2sub -q S -l select=4:ncpus=1:mem=1gb -l place=scatter ./job.sh (4ノード4並列)
t2sub -q S -l select=8:mpiprocs=8:mem=1gb -l place=scatter ./job.sh (8ノード64並列)
t2sub -q S -l select=8:mpiprocs=1:ncpus=12:mem=1gb -l place=scatter ./job.sh (8ノードハイブリッド並列)
-l place=pack
ノードを一つだけ使用します.
t2sub -q S -l select=4:ncpus=1:mem=1gb -l place=pack ./job.sh (1ノード4並列)
t2sub -q S -l select=8:mpiprocs=8:mem=1gb -l place=pack ./job.sh (1ノード8並列)
t2sub -q S -l select=24:mem=1gb -l place=pack ./job.sh (1ノード24並列)
5.3.7 大規模並列
並列環境としては,中規模並列キューとして,Sキューで,上限300ノードまでの利用が可能です. 1ノードあたり,12coreを実
装していますので,3600並列までのジョブが実行可能です. また,このcoreはハイパースレッドを実装していまので,演算密
度があまり高くないジョブであれば, ハイパースレッドを利用して並列数を倍化することも有効になります. スレッドの利用に
関しては,事前に確認をお願いします.
GPUを使用した大規模並列では,Gキューがご利用いただけます.1ノードあたり3GPUを利用できますので, 最大で1440の
GPUを使用できます.また,GキューはSキューに比べて課金係数が0.5に設定されていますので ご利用し易くなっています.
300ノードを超える場合などの大規模並列に関しては,Hキューをご利用ください.
• ノード間並列
以下の例は,100ノードを使用した1200並列の投入です.
t2sub -q S -l select=100:ncpus=12:mpiprocs=12
-l place=scatter ./mpitest.sh
• ノード間並列GPUジョブ
以下の例は,100ノードを使用した300並列のGPUジョブ投入です.
t2sub -q G -l select=100:ncpus=3:gpus=3:mpiprocs=3
-l place=scatter ./mpigpu.sh
• ハイブリッド並列
以下の例は,MPIは400並列で,ノード内SMP12並列の投入です.
t2sub -q S -l select=400:mpiprocs=1:ncpus=12
-l place=scatter ./mpitest.sh
※予約キューへの投入の場合は次節を参照してください.(特にキューの指定方法)
5.3.8 ハイブリット並列
ハイブリット並列の場合は実行シェル内で使用されるMPIによって環境変数の操作が異なってくるため PBSの資源指定でジョ
ブをコントロールします. MPIの環境変数設定シェルを使って例を示します.
#!/bin/sh
#
# sample jobscript
#
cd ${PBS_O_WORKDIR}
#openmpi
. setompi-pgi.sh
mpirun -n 4 -hostfile $PBS_NODEFILE -x OMP_NUM_THREADS=$OMP_NUM_THREADS ./myprog
#mvapich2
. setmvp-pgi.sh
mpirun -n 4 -hostfile $PBS_NODEFILE VIADEV_USE_AFFINITY=0 OMP_NUM_THREADS=$OMP_NUM_THREADS ./myprog
#mpich2
. setmpch-pgi.sh
mpirun -n 4 -hostfile $PBS_NODEFILE -env OMP_NUM_THREADS=$OMP_NUM_THREADS ./myprog
※ ご利用するMPI環境部分のみお使いください.
Pthreadプログラムの場合は,"OMP_NUM_THREADS"部分を"NCPUS"としてください.
この場合、PBSからのジョブは
t2sub -q S -l select=4:ncpus=4:mpiprocs=1:mem=48gb -l place=scatter ./job.sh
t2sub -q S -l select=4:ncpus=8:mpiprocs=1:mem=48gb -l place=scatter ./job.sh
t2sub -q S -l select=2:ncpus=4:mpiprocs=2:mem=48gb -l place=scatter ./job.sh
などと任意のスレッド数のジョブが投入できます.ただし,MPIのプロセス総数はPBSからは変更できません.
• 【ノート】
次の様なシェルコマンドを入れ込むことによりプロセス数をコントロールできます.
MPI_PROCS=`wc -l $PBS_NODEFILE | awk '{print $1}'`
mpirun -n $MPI_PROCS -hostfile $PBS_NODEFILE .....
とします. ただし,この方法はPBS情報からプロセス数を編集していますので予定通りのデータが渡ることを必ず
事前に確認してご利用ください.
SMP並列部分で,オーバーヘッドが大きくなりスレッド数を大きく取れない場合はノード内でMPIプロセスを増やす ことなどが
考えられます.この場合の記述が上記例の3番目に該当します. この例では,mpiプロセスが出すスレッドの数がncpusになり
ますので,ノード内には合計8coreが使用されます.
【重要】
SMP並列オプション付きでコンパイルされた実行モジュールを使用する場合でSMPを使用しない場合
t2sub -q S -l select=1:ncpus=1:mpiprocs=4:mem=48gb -l place=scatter ./job.sh
などとncpusの指定を"1"としてください.
5.4 予約(Hキューの利用)
マシンを予約することにより,10000並列を超える大規模計算が可能です. 以下の手順でご利用ください. Hキューの仕組みは
3.5.1 大規模並列環境 を参照ください.
1.予約
別途 TSUBAME2利用ポータル_利用の手引 に従ってキューを予約してください.
2.ノードとキューの確認
1と同様にキューが予約されていることを確認してください. ノード予約画面で,「予約キュー名」に「R123」などと表示されますので,こ
のキューの名前を使用します.
また,TSUBAME にログインし,t2rstat コマンドを実行することでも,予約したキューの情報を確認できます.
> t2rstat
JobId
Queue Group
ReserveState
ReserveStart / ReserveDuration / ReserveEnd
NDS
--------------------------------------------------------------------------------------------------------------R123.t2zpbs05 R123
t2gxxxx RESV_CONFIRMED Tue Jan 1 09:45:00 2013 / 83700 / Wed Jan 2 09:00:00 2013 400
3.バッチによる使用
予約時間になりましたら,予約者のアカウントでジョブの投入ができるようになります. 次のようにキュー名を指定して投入
します.
t2sub -q R123 -W group_list=t2gxxxx -l select=400:ncpus=12:mpiprocs=1:mem=40gb ....
などとします.予約したノード数以内でのご利用であれば自由にジョブを投入できます.
5.5 メモリサイズの指定
メモリサイズの指定は,MPI,SMPにかかわらず,チャンク内で使用されるメモリ量の合計値を指定してください.
• 指定できるメモリサイズ
S/Hキューで使用されているマシンはメモリとして54GiBを実装しています.PBSでメモリ量を指定する場合は, mem=53
gbが上限になります.mbで指定した場合は,mem=54400mb と指定できます. これは,1gb=1024mbで変換してい
るためです. どちらの指定方法でも可能ですが,システムが使用しているメモリもありますので, 実際に ユーザーが利用
できるメモリは52GB程度を目安 に考慮してください. MPIを使用する場合 は,通信バッファにメモリが使用されますの
で, ユーザーが指定するメモリサイズは 50GB以下を目安 としてください.
• SMP並列
t2sub -q -S -l select=1:ncpus=8:mem=40gb ./job.sh
※この場合,チャンクは1ですので,ノード内で使用するメモリ量を記述します.
• MPI並列
t2sub -q S -l select=4:ncpus=4:mpiprocs=4:mem=40gb
-l place=scatter ./mpitest.sh
※この場合はノード内4プロセスが使用するメモリが40gbとして解釈されます.
t2sub -q S96 -l select=4:ncpus=4:mpiprocs=4:mem=40gb
./mpitest.sh
※この場合,上と同じですが,キュー内に40gbのチャンクを二つとれるので,2ノードで実行になります.
ただし,scatterをいれると4ノードでの実行になります.
メモリの単位としてgb,mb,kb,bが指定可能です.1gb=1024mb, 1mb=1024kb, 1kb=1024bとなります.指定がない場合
は b(バイト) が指定されたものとして扱われます.また,小数点は使用できません.したがって,1.5GBのメモリを指定したい場
合は,「mem=1536mb」と指定します.
5.6 アレイジョブ(パラメータサーベイ)
プログラム内のパラメータ感度解析などを実施する場合,パラメータの数字を具体的に変化させて結果の変化を調査します.
プログラムよっては,多くのパラメータを持つため,膨大な計算が発生したりします. このような場合に威力を発揮するのがア
レイジョブです. (パラメトリックスタディジョブと呼ぶ場合もあります). 以下,順に説明します.
1. 投入シェルを作成
> cat jikken.sh
#!/bin/bash
./sample << EndOfFile
$PBS_ARRAY_INDEX
EndOfFile
#
$PBS_ARRAY_INDEX がパラメータ値になります. この例では,プログラム内で要求するパラメータ値をヒアドキュメントの
形でプログラムに入力しています. アレイサイズの最大値は各キューの最大投入本数になっています.
2. ジョブの投入
用意したシェルを次のように投入します.
> t2sub -J 100-150 ./jikken.sh
Checking accounting informations...
Checking requested resources...
Submitting a job to PBS...
6090926[].t2zpbs01
投入オプションは -J 開始値-終了値:増分 として指定します. 上記例( -J 100-150)とした場合,パラメータの開始値が100,
増分1,終了値150 として 解釈(:1の場合は省略可)されます. パラメータ値は $PBS_ARRAY_INDEX という環境変数に
設定されますので,この環境変数をプログラムにヒアドキュメントの形で入力してやります. 同時実行もありますので,ファイ
ルの形にする場合は上書きに注意する必要があります.
3. 実行状況
アレイジョブは次のように表示されます.
> t2stat -u nectest
Job id
Name
User
------------------------------- ---------------6090926[].t2zpbs01 OTHERS
nectest
Time Use S Queue
-------- - ----00:00:10 B S
4. 結果
計算結果はジョブ名の後ろにパラメータ数が付いてリストされます.
> ls OTHER*
OTHERS.o6090926.100
OTHERS.o6090926.101
OTHERS.o6090926.102
OTHERS.o6090926.103
OTHERS.o6090926.104
OTHERS.o6090926.113
OTHERS.o6090926.114
OTHERS.o6090926.115
OTHERS.o6090926.116
OTHERS.o6090926.117
OTHERS.o6090926.126
OTHERS.o6090926.127
OTHERS.o6090926.128
OTHERS.o6090926.129
OTHERS.o6090926.130
5. PBSの他のオプションとの組み合わせ
特に制限,不具合は報告されていません.
5.7 ジョブ関連情報の指定
ジョブ実行にあたって使用する主な関連オプションを説明します.
5.7.1 ジョブ名
• Nオプション
これは,ジョブ名を指定(15文字以下)します.
t2sub -N sample-J -l select=1 ./jpb.sh
無指定の場合は,「OTHERS」がつきます.
5.7.2 TSUBAMEグループ
• W group_listオプション
TSUBAMEグループを指定します.
t2sub -W group_list=xxxxx -q S -l select=1 ./job.sh
下記のコマンドを実行することにより,所属しているグループの確認ができます.
t2group
5.7.3 実行時間
• l walltimeオプション
実行時間を -l walltime=hh:mm:ssの形式で指定します.指定した実行時間に達すると実行中のジョブは強制終了
さ れますので,ジョブの実行に十分な時間を指定してください.指定がない場合は1時間(01:00:00)が指定された
もの として扱われます.
t2sub -l walltime=10:00:00 -W group_list=xxxxx -q S -l select=1 ./job.sh
5.7.4 メール
• m,Mオプション
ジョブの開始,終了時に利用者宛にメールを出すことができます.
t2sub -m abe -M user@host -q S -l select=1 ./job.sh
上記の例では,ジョブの実行開始・終了時および異常終了が発生した場合にuser@host宛てに通知メールが送信され
ます.オプション内の指定は,次の通りです.
n
a
b
e
:
:
:
:
no mails are sent (default)
a mail is sent when the job is aborted.
a mail is sent when the job is started.
a mail is sent when the job finishes.
-m be と記述すると,開始,終了時にメールが出ます. また,-m e と記述すると終了時のみメールが出ます.
5.7.5 標準出力ファイル
標準出力ファイルは-oオプションでの指定をしない場合,以下の名称で出力されます.
(ジョブ名).o(ジョブID数値)
-oオプションを使用することにより,標準出力ファイルのパスを指定できます.
t2sub -q S -l select=1 -o /work0/group-name/user_id/output.txt ./job.sh
5.7.6 標準エラー出力ファイル
標準エラー出力ファイルは-eオプションでの指定をしない場合,以下の名称で出力されます.
(ジョブ名).e(ジョブID数値)
-eオプションを使用することにより,標準エラー出力ファイルのパスを指定できます.
t2sub -q S -l select=1 -e /work0/group-name/user_id/output_err.txt ./job.sh
5.7.7 出力ファイルの結合
標準出力と標準エラー出力を一つにまとめたい場合は-jオプションを使用します.
-j oeを指定すると,標準出力ファイルに標準エラー出力の内容が追加されます.
t2sub -q S -l select=1 -j oe ./job.sh
5.8 プレミアオプション
プレミアオプションとして,次の二つのオプションが利用可能です.
-et (0|1|2)
ジョブ実行時間の延長レベルを指定します. 1,2を指定すると通常よりも高い課金係数が適用されます.
-p (0|1|2)
ジョブの実行優先度を指定します. 1,2を指定すると通常よりも高い課金係数が適用されます.
5.8.1 時間延長
• etオプション
標準での指定可能な実行時間の上限値は1日(24:00:00)となっていますが,-etオプションの指定により 最長4日
(96:00:00)まで指定可能です.
0 : ジョブ実行時間の最大値は1日(24:00:00)となります. (デフォルト)
1 : ジョブ実行時間の最大値は2日(48:00:00)となります.
2 : ジョブ実行時間の最大値は4日(96:00:00)となります.
ただし延長時は,S/Gキューでは追加の課金係数が適用され,Vキューでは,同時実行数が減少します.
t2sub -l walltime=72:00:00
-et 2
-W group_list=xxxxx -q S -l select=1 ./job.sh
5.8.2 プライオリティ
• pオプション
ジョブの実行優先順位を上げることで,ジョブをキュー待ち状態から実行されやすくします.
0 : 標準の実行優先度です. (デフォルト)
1 : 実行優先度は0より高く,2より低くなります.
2 : 最高の実行優先度となります.
0,1,2のパラメータが有効で,1,2を指定することにより通常より高い優先順位となります. ただし,S/Gキューでは
追加の課金係数が適用され,Vキューでは,同時実行数が減少します.
t2sub -p 1 -q S -l select=1 ./job.sh
5.8.3 課金係数
プレミアオプションを使用した場合に適用される課金係数は以下のとおりです.
p 0(優先は普通)
p 1(やや高め)
p 2(高め)
et 0(実行時間:標準)
1
2
4
et 1(2倍に延長)
2
4
8
et 2(4倍に延長)
4
8
16
S/Gキューでの課金係数の適用はご利用になった計算時間(walltime)に係数をかけることによって実施しています. 課金表
示は,標準エラー出力(.e)の最後に出力されています.
また,Vキューでの適用は同時実行数の減少として実施され,課金係数が2倍のとき同時実行数は1/2となります.
5.9 SSH直接ログイン
予約したノード,S,S96,L128,L128F, L256,L512,Hキューで確保したノードには自由にsshでログインすることができます
. S,S96,L128,L256,L512キューはノードを確保したユーザのみが, Hサービスはノードを確保したグループに属するユー
ザが直接ログインすることができます.
sshログインは次のような用途に応用可能です.
• 長時間のGUIアプリケーションの実行を行う用途(PBSではGUIアプリケーションの実行が出来ないため)
5.9.1 ジョブスクリプトの準備
ジョブスクリプトを作成します. sshログインして作業を行うためのノード確保を目的とする場合は, 次のようにsleepのみを実
行するスクリプトを作成します.
#!/bin/sh
sleep 3600
← sleep の引数に秒数(この場合は3600秒=1時間)を指定
ジョブスクリプトを作成後,t2sub コマンドによりジョブを投入します.
5.9.2 ノードの確認
以下の手順により,ジョブが確保したノードが分かります.
①.Sキューのとき
t2statに-n1オプションを指定して確認します.
> t2stat -n1
t2zpbs01:
Req'd Req'd
Elap
Job ID
Username Queue
Jobname
SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - ----2997.t2zpbs01 necse
S
OTHERS
-2
8
1gb 01:00 R
-- t2a000077/0*4+t2a000078/0*4
ノード名1/J1(*P1)+ノード名2/J2(*P2)++...+ノード名N/JN(*PN) の形式でノード一覧が表示されます. 上の例ではノードはt2a00
0077とt2a000078になります.
②.予約キューのとき
t2rstatに-Fオプションと予約したキュー名を指定して実行します.
> t2rstat -F R123
Name: R443.t2zpbs05
...
resv_nodes = (t2a004101:ncpus=24:mpiprocs=24:mem=55574528kb:gpus=3)+
(t2a004102:ncpus=24:mpiprocs=24:mem=55574528kb:gpus=3)
resv_nodes に(ノード名1:...)+(ノード名2:...)+...+(ノード名N:...)の形式でノード一覧が表示されます. 上の例ではノードは
t2a004101とt2a004102になります.
5.9.3 ログイン
該当ノードの一覧で表示されたマシンのどれかをインタラクティブとして
ssh -Y t2a010113 (例です:ノードリストから選択してください)
などとログインしてください. ノード一覧をホストファイルとして,自由にご利用いただけます.
mpirun -np 2048 -hostfile ./nodelist ./mpiprog
mpi環境は通常のインタラクティブと同様に openmpi + intel になっていますので, 他の環境で利用する場合は切り替えて
ご利用ください.
なお,作業完了後に t2del コマンドにより ジョブを削除することを忘れないようにしてください.
6. プログラミングと環境
TSUBAME2で使用できるコンパイラは,gcc,pgi,intelの3種類がインストールされています. 各コンパイラともに利用可能で
す.
※ CUDA(nvcc)については 6.5 GPU を参照ください.
6.1 コンパイラ
基本になる3種類のコンパイラについては,パスが通してありますので特別な処理なして利用可能です.
6.1.1 利用できるコンパイラ
各コンパイラの使用例を以下に示します.
1.pgi
> pgf95 -V
pgf95 13.2-0 64-bit target on x86-64 Linux -tp nehalem
Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
Copyright 2000-2013, STMicroelectronics, Inc. All Rights Reserved.
(pgf90も同じく表示されます)
> pgcc -V
pgcc 13.2-0 64-bit target on x86-64 Linux -tp nehalem
Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
Copyright 2000-2013, STMicroelectronics, Inc. All Rights Reserved.
2.gnu
> gfortran --version
GNU Fortran (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]
Copyright (C) 2008 Free Software Foundation, Inc.
:
> gcc --version
gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]
Copyright (C) 2008 Free Software Foundation, Inc
:
3.intel
> ifort -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64,
Version 13.0.1.072 Build 20120731
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
> icc -V
Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64,
Version 13.0.1.072 Build 20120731
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
4.コンパイル例
fortranプログラムとcで記述された時計ルーチンをコンパイルします.
gnu
gfortran -o sample -Wall sample.f wclock.c
pgi
pgf95 -fastsse -o sample -Minfo=all sample.f wclock.c
intel
icc -c wclock.c
ifort -fast -o sample -report sample.f wclock.o
6.1.2 数学ライブラリ
TSUBAME2では,ベンダー提供のコンパイラに付属する数学ライブラリもインストールされています.
1.PGI
ライブラリにパスが通っていますので,リンクオプションの指定により利用できます.
pgf95 -o sample -fastsse sample10.f wclock.c -lacml
ライブラリの格納場所は /usr/apps/isv/pgi/13.2/linux86-64/13.2/lib になっています.
2.INTEL
math_kernel_libraryがインストールされています.
ifort -o sample -mkl=sequential sample10.f wclock.o -lmkl_lapack95_lp64 \
-L/usr/apps/isv/intel/2013.0.079/composer_xe_2013.0.079/mkl/lib/intel64
ライブラリの格納場所は /usr/apps/isv/intel/2013.0.079/composer_xe_2013.0.079/mkl/lib/intel64 になっ
ています.
6.1.3 コンパイラのオプション
各コンパイラ共に多くのオプションが用意されています.使用される機会の多いオプションを表にしました.
コンパイラ名称
gnu
pgi
intel
FORTRAN
gfortran
pgf95
ifort
c/c++
gcc/g++
pgcc/pgCC
icc/icpc
MPI利用
○
○
◎(※1)
OpenMP
-fopenmp
-mp
-openmp
自動並列
×
-Mconcur
-parallel
高速化オプション
--
-fastsse
-fast
リスト出力
-Wall
-Minfo=all
-report
ドキュメント(※2)
man コマンド
pgi/13.2/linux86-64/1
3.2/doc
intel/2013.0.079/comp
oser_xe_2013.0.079/D
ocumentation/
※1.mpif90利用の場合は、バージョンに注意が必要,※2./usr/apps/isv内
6.1.4 コンパイラ利用に当たっての注意
利用にあたっては,以下の点についてご注意ください.
1.32bitコード
TSUBAMEでの動作は,基本的には64bitで実行されますが,ユーザー様所有のライブラリが 32bit版しかない場合,コ
ンパイルオプションの「-tp」を使用して実行モジュールを作成ください.
pgf95 -tp k8-32 sample.f90 -L/home/user-ID/lib -labc
2.最適化
最近のバージョンでは,最適化が強化されております.プログラムを高速処理するために,一部に書き換えを実施する 場
合があります.特に -fast/-fastsse をご利用のユーザー様には,事前に動作を確認いただきますようお願いいたします.
※ 結果が変化したという報告はいただいておりませんが,念のためにお願いいたします.
3.コンパイラのMPIオプションについて
pgi,intelコンパイラでは,独自にサポートしているmpiオプションがありますが,TSUBAME2ではサポート対象外です.
6.1.5 違うバージョンのコンパイラ
TSUBAME2では,バージョンの異なるコンパイラも用意しています. 次の手順でコンパイラのパスを切り替えてご利用くださ
い.
PGI Compiler の場合.
> . /usr/apps/isv/pgi/pgiset13.7.sh (13.7部分でバージョンを指定)
> pgf95 -V
pgf95 13.7-0 64-bit target on x86-64 Linux -tp nehalem
Intel Compiler Cluster Studio XE 12.1.0.233 の場合.
> . /usr/apps/isv/intel/xe2012/bin/iccvars.sh intel64
> icc -V
Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.1.0.233 Build 20110811
Copyright (C) 1985-2011 Intel Corporation. All rights reserved.
> . /usr/apps/isv/intel/xe2012/bin/ifortvars.sh intel64
> ifort -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.1.0.233 Build 20110811
Copyright (C) 1985-2011 Intel Corporation. All rights reserved.
Intel Compiler Ver.11.1.072 の場合.
> . /usr/apps/isv/intel/11.1.072/bin/iccvars.sh intel64
> icc -V
Intel(R) C Intel(R) 64 Compiler Professional for applications running on Intel(R) 64, Version 11.1
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.
Build 20100414 Package ID: l_cproc_p_11.1.072
> . /usr/apps/isv/intel/11.1.072/bin/ifortvars.sh intel64
> ifort -V
Intel(R) Fortran Intel(R) 64 Compiler Professional for applications running on Intel(R) 64, Version 11.1
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.
Build 20100414 Package ID: l_cprof_p_11.1.072
【重要】
• MPIライブラリの利用において,不整合が発生する場合があります. 必ず動作確認を実施してください.詳細について
は 6.3 MPI並列 を参照ください.
• 2013年8月現在で,PGI(Ver.11.0,11.7,11.9,12.2,12.3,12.4,12,5,12.8,12.9,12.10,13.2,13.3,13.4,13.5,13.7),
Intel(Ver.11.1.072, Cluster Studio XE 12.1.0.233, Ver.2013.0.079)です.
• CUDAについては 6.5 GPU を参照ください.
• PGIを元に戻す場合は 13.2 を指定してください
【注意】
pgi 12.9-13.4では,openacc用のプログラムのコンパイルに高いレベルの最適化オプション(-fastなど)を 付けるとフリー
ズする場合があります.この場合,最適化レベルを下げるとコンパイルが通ります.(13.5では修正されました)
6.1.6 コンパイラのマニュアル
PGI,INTELコンパイラおよびCUDAにはマニュアルが用意されています.
1.PGIコンパイラ
次の操作によりTSUBAME上で参照することができます.
evince /usr/apps/isv/pgi/13.2/linux86-64/13.2/doc/pgi13ug.pdf
firefox /usr/apps/isv/pgi/13.2/linux86-64/13.2/doc/index.htm
man pgf95 (pgcc)
2.INTELコンパイラ
次の操作によりTSUBAME上で参照することができます.
firefox /usr/apps/isv/intel/2013.0.079/composer_xe_2013.0.079/Documentation/en_US/get_started_lf.htm
man ifort (icc)
※日本語で読みたい場合は以下をご利用ください
evince /usr/apps/isv/intel/11.1.072/Documentation/ja_JP/getting_started_c.pdf
3.CUDA
次の操作によりTSUBAME上で参照することができます.
firefox /opt/cuda/5.0/doc/html/index.html
cd /opt/cuda/5.0/doc/
evince (沢山のドキュメントがありますので該当を選択)
man nvcc
6.2 SMP並列
1.openMPを使用した並列コンパイル
openMPによる並列処理が可能なfortranプログラムとcで記述された時計ルーチンをコンパイルします.
gnu
gfortran -O3 -o sampleOMP -fopenmp -Wall sampleOMP.f wclock.c
pgi
pgf95 -fastsse -o sampleOMP -mp -Minfo=all sampleOMP.f wclock.c
intel
icc -c wclock.c
ifort -fast -o sampleOMP -openmp -openmp-report2 sampleOMP.f wclock.o
2.自動並列コンパイル
この機能は,コンパイラがプログラムを解析して自動的に並列化するものです.
gnu
自動並列はありません.
pgi
pgf95 -fastsse -o sampleAUTO -Mconcur -Minfo=all sampleAUTO.f wclock.c
intel
icc -c wclock.c
ifort -fast -o sampleAUTO -parallel -par-report2 sampleAUTO.f wclock.o
注).コンパイルオプションはコンパイラによって異なります.
ここで付加しているオプションは機能的に同様なものを指定しています.
6.3 MPI並列
MPI環境は,コンパイラとMPIドライバの組み合わせで幾種類かを選択して利用することが可能です. 以下に利用方法を示しま
す. (コンパイラのバージョンに注意)
1.MPI標準環境(openMPI + intel)
> mpif90 -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.0.0.079 Build 20120731
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
2.openMPI + pgi環境
> . /usr/apps/isv/pgi/pgiset10.6.sh
> export PATH=/usr/apps/openmpi/1.4.2/pgi/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/pgi/lib:$LD_LIBRARY_PATH
> mpif90 -V
pgf95 10.6-0 64-bit target on x86-64 Linux -tp nehalem-64
Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
Copyright 2000-2010, STMicroelectronics, Inc. All Rights Reserved.
3.openMPI + gnu(gfortran)環境
> export PATH=/usr/apps/openmpi/1.4.2/gcc/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/gcc/lib:$LD_LIBRARY_PATH
> mpif90 --version
GNU Fortran (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]
Copyright (C) 2008 Free Software Foundation, Inc.
4.mvapich2 + intel環境
> export PATH=/usr/apps/mvapich2/1.5.1/intel/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/intel/lib:$LD_LIBRARY_PATH
> mpif90 -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.0.0.079 Build 20120731
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
※ 表示に
main.c:(.text+0x38): undefined reference to `MAIN__'
あるいは
f90main.c:(.text+0x3a): undefined reference to `MAIN_'
などと出る場合がありますが、mpiのバージョン表示時のオプション配置の問題ですので、動作には影響ありません。 (mpich
2でも同様に表示される場合があります)
5.mvapich2 + pgi環境
>
>
>
>
. /usr/apps/isv/pgi/pgiset10.6.sh
export PATH=/usr/apps/mvapich2/1.5.1/pgi/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/pgi/lib:$LD_LIBRARY_PATH
mpif90 -V
pgf95 10.6-0 64-bit target on x86-64 Linux -tp nehalem-64
Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
Copyright 2000-2010, STMicroelectronics, Inc. All Rights Reserved.
6.mvapich2 + gnu環境
> export PATH=/usr/apps/mvapich2/1.5.1/gcc/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/mvapich2/1.5.1/gcc/lib:$LD_LIBRARY_PATH
> mpif90 -version
GNU Fortran (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]
Copyright (C) 2008 Free Software Foundation, Inc.
7.mpich2 + intel環境
> export PATH=/usr/apps/mpich2/1.3/intel/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/intel/lib:$LD_LIBRARY_PATH
> mpif90 -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.0.0.079 Build 20120731
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
8.mpich2 + pgi環境
> . /usr/apps/isv/pgi/pgiset10.6.sh
> export PATH=/usr/apps/mpich2/1.3/pgi/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/pgi/lib:$LD_LIBRARY_PATH
> mpif90 -V
pgf95 10.6-0 64-bit target on x86-64 Linux -tp nehalem-64
Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
Copyright 2000-2010, STMicroelectronics, Inc. All Rights Reserved.
9.mpich2 + gnu環境
> export PATH=/usr/apps/mpich2/1.3/gcc/bin:$PATH
> export LD_LIBRARY_PATH=/usr/apps/mpich2/1.3/gcc/lib:$LD_LIBRARY_PATH
> mpif90 -version
GNU Fortran (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]
Copyright (C) 2008 Free Software Foundation, Inc.
6.4 ハイブリッド並列
ここで言うハイブリッド並列とは,ノード間並列をMPIで,ノード内はSMPを使用した並列のことを表します. 次の手順でプログ
ラムを作成,実行します.
1.コンパイル
icc -c wclock.c
mpif90 -O3 -o hybrid -openmp -openmp-report2 hybrid.f wclock.o
2.動作確認
export
mpirun
mpirun
export
mpirun
OMP_NUM_THREADS=1
-np 1 ./hybrid
-np 2 ./hybrid
OMP_NUM_THREADS=2
-np 2 ./hybrid
3.バッチへの投入
t2sub -l select=4:mpiprocs=1:ncpus=8:mem=3gb -l place=scatter sample.sh
この投入例の場合,ノード内8並列で、4ノードを使用した32並列になります.
※ シェルの作成、投入については 5.3.8 ハイブリット並列 も参照ください.
6.5 GPU
全てのインタラクティブノードでGPUをご利用いただけます.
ssh -Y login-t2.g.gsic.titech.ac.jp -l USER-ID
インタラクティブノードマシン t2a006161 - t2a006180 であることを確認してください.
ただし,インタラクティブノードはコンパイル,デバッグ,バッチへの投入などの作業用としてお使いください. バッチキューの利用
にあたりましては, 5. PBSによるジョブの投入 を参照ください.
6.5.1 CUDA
CUDAコンパイラ,ドライバを初めとしたCUDAツールキットが利用可能となっています. ソースファイル名がsample1.cuの場
合,以下のコマンドを実行すると実行形式a.outが生成されます.
$ nvcc sample1.cu
ソースファイル名の拡張子は「 .CU 」としてください.実行形式ファイル名を指定する場合は-oオプションで指定します.
cudaは活発に開発が行なわれているため,バージョンの更新も比較的短いサイクルで行われます. nvccのバージョンを調べ
る場合は次のようにしてください.
> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Fri_Sep_21_17:28:58_PDT_2012
Cuda compilation tools, release 5.0, V0.2.1221
>
デフォルトと異なるバージョンのcudaを使用したい場合は,次の手順で切り替えてください.
> cd /opt/cuda
> ls
3.0 3.1 3.2 4.0
> cd 4.0
> . ./cuda.sh
4.1
5.0
これによりバージョンを切り替えることができます.
以下の例では実行ファイルsample1が生成されます.その他のオプションについては,-hオプションで参照可能です. ドキュメン
トを参照したい場合は 6.1.6 コンパイラのマニュアル を参照ください.
$ nvcc -o sample1 sample1.cu
実行モジュールが作成てきたら,動作させてみます.
$ ./a.out
動作するようでしたら,ジョブスクリプトを作成して,バッチキュー(G)に投入します.
$ t2sub -q G
-l select=1 -W group_list=xxx ./job.sh
6.5.2 CULAライブラリ
線形代数ライブラリ「LAPACK」をCUDA対応GPUに最適化、実装した「CULA」をご利用いただけます.
同梱のサンプルをコンパイルしてみます.以下の手順でお試しください.
$ cp -r /usr/apps/isv/CULA/examples .
$ cd examples/fortran
$ vi Makefile (パスを修正)
:
CULA_ROOT=/usr/apps/isv/CULA
INCLUDES=-I/usr/apps/isv/CULA/include
LIBPATH64=-L/usr/apps/isv/CULA/lib64
$ make build64
$ export LD_LIBRARY_PATH=/usr/apps/isv/CULA/lib64:$LD_LIBRARY_PATH
$ ./geqrf
Initializing CULA
Calling CULA_SGEQRF
Shutting down CULA
$
ドキュメントは /usr/apps/isv/CULA/doc から参照することができます.
CUDA 5.0 対応版をご利用の場合は,/usr/apps/isv/CULA/R16a/をご利用ください. ライブラリとCUDAのバージョンの整
合は 6.5.4 コンパイラ・ライブラリのバージョン を参照ください.
6.5.3 PGIコンパイラ
PGIコンパイラでは,指示行によりGPUに対応した実行モジュールを生成することができます.
1.指示行
対象となる計算部分(配列計算部分)を挟んで,以下のような指示行を挿入します.
!$acc region
DO k=1,100
DO J = 1,600
DO I = 1,5000
c(j,i) = c(j,i) + A(I,J) * B(J,I)
ENDDO
ENDDO
ENDDO
!$acc end region
2.コンパイル
コンパイルオプションにCUDA用のオプション「-ta=nvidia」を付加します.同時に,使用するcuda Toolkitの バージョンも
指定(,cudax.x)するようにしてください.バージョンの対応については 6.5.4 コンパイラ・ライブラリのバージョン を参照し
てください. また,cuda用のコンパイルをしたことを確認するために-Minfo=all でコンパイルメッセージを確認してくださ
い.
> . /usr/apps/isv/pgi/pgiset13.5.sh
> pgf95 -Minfo=all -fastsse -o tesla -ta=nvidia,cuda5.0 cuda.f wclock.c
:
17, Generating present_or_copy(c(:,:))
Generating present_or_copyin(a(:,:))
Generating present_or_copyin(b(:,:))
Generating NVIDIA code
Generating compute capability 1.3 binary
:
3.実行
実行モジュールができたら,インタラクティブで実行を確認します.
./tesla
動作するようでしたら,ジョブスクリプトを作成して,バッチキュー(G)に投入します.
t2sub -q G
-l select=1 -W group_list=xxx ./job.sh
6.5.4 コンパイラ・ライブラリのバージョン
cuda対応のコンパイラ,ライブラリの相互関係は以下の状況です.
cuda
CULA
pgi
-----------+---------+--------3.0
10.6
3.1/3.2
R10
11.0
3.1/3.2/4.0
R12
11.7
3.1/3.2/4.0
R12
11.9
4.0/4.1
R12
12.2
4.0/4.1
4.1/4.2
5.0
R12
R16
12.3-8
12.9-10
13.2-
cudaのドライバは上位側で互換性がありますので,3.1で作成したアプリを4.0で使う事は可能です.
対応バージョンの異なるルーチンをリンクした場合に実行エラーの可能性がありますので,ご注意ください.
6.5.5 MPI+cudaによるコンパイル
TSUBAMEのMPI環境は,コンパイラとMPIドライバの組み合わせで幾種類かを選択して利用することが可能です. 詳細は 6.3
MPI並列 を参照ください.
基本的な利用としては,各環境時のcコンパイラをnvccに置き換えます. ここでは,例としてopenmpi+gcc環境をベースにし
て実施する例を示します. 始めにMPI環境を指定します.
export PATH=/usr/apps/openmpi/1.4.2/gcc/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps/openmpi/1.4.2/gcc/lib:$LD_LIBRARY_PATH
続いて、コンパイルしますが nvcc を使用する際に明示的に mpi.h にパスを通すようにして,
nvcc
-c
xx.cu -I/usr/apps/openmpi/1.4.2/gcc/include
などと指定します.これにより *.o が生成されますのでこれらをリンクします.
mpicc -o gpumpi xx.o gpufunc.o -L/opt/cuda/5.0/lib64 -lcudart
となります.リンク時は,cudaのライブラリを明示的に指定してください. 最初に *.oを作成し,後にリンクという手順となります
.
6.6 性能解析ツール
TSUBAME2では各種のツールを用意しております.
6.6.1 プロファイラ(シングル)
PGIのプロファイラを使ってみましょう. 最初に,コスト分析する実行モジュールを作成します.
pgf95 -Mprof=func -o sample10 sample10.f wclock.c
ここでは,-Mprof=func のオプションを付加します. sample10という名前の実行モジュールが出来ているはずですから,
./sample10
として実行します.終了すると pgprof.out というファイルが作成されています. このファイルを確認できたら
pgprof -nocheckjvm -jarg,-Xmx4G
これにより,以下のような画面が表示されます.
【注意】
起動できない場合は, 5.9 SSH直接ログイン のようにマシンを確保して実行ください.
6.6.2 プロファイラ(並列)
MPI並列プログラムもプロファイラを使用できます.以下の手順で実施してください.
> pgf95 -o s22 -Mprof=mpich1,func sample10mpi.f wclock.c
> Hostname
<-- 現在のホスト名を調査(毎回違います)
t2a006165
> vi host <-- ホストファイルを作成
> cat host
t2a006165
t2a006165
t2a006165
t2a006165
> /usr/apps/isv/pgi/linux86-64/10.6/mpi/mpich/bin/mpirun -np 4 -machinefile host ./s22
> ls
pgprof.out
pgprof1.out
pgprof2.out
pgprof3.out
> pgprof -nocheckjvm -jarg,-Xmx4G
これにより,以下のような起動画面が表示されます.
例のように"OK"の後,プロファイラのウインドウのFileメニューから「New Profilong Session」を選択します. 以下の①部分の
ようなファイル名指定ウインドウが表示されてきますので,順に情報をいれるとプロファイラ画面が 表示されてきます.
6.6.3 デバッカ(シングル)
TSUBAME2に用意されているTotalViewを使ってみましょう. 最初に,デバックする実行モジュールを作成します.
gfortran -g -o sampleOMP sampleOMP.f wclock.c
ここでは,-gのオプションを付加します. sampleOMPという名前の実行モジュールが出来ているはずですから,
totalview sampleOMP
これにより,以下のような起動画面が表示されます.(プログラムを指定していないと選択画面が出ます)
ここでOKを選択すれば,いよいよ作業画面になります.それでは,デバック開始です.
利用詳細については,利用の手引を参照ください.
6.6.4 デバッカ(並列)
totalviewはMPI並列プログラムも扱うことができます. デバックする実行モジュールを作成します.
mpif90 -g sample11a.f wclock.c
ここでは,-gのオプションを付加します. a.outという名前の実行モジュールが出来ているはずですから,
totalview a.out
これにより,以下のような起動画面が表示されますので,mpi環境と並列数を入力します.
シングルの時と同じような画面が表示されてきますので,プログラムを調査したい部分のライン番号をクリック してマーキング
します.赤くSTOPと表示されたらメニューから「Go」を選択して実行します.
暫らくまっていると指定のポイントで停止しますので,このときの変数の値を右上のウインドウからチェックします. この操作を
順次繰り返してデバックを進めてください.
6.6.5 デバッカ(GPU)
totalviewはGPUプログラムも扱うことができます.
デバックする実行モジュールを作成します.
gfortan
-g samplegpu.f
ここでは,-gのオプションを付加します. a.outという名前の実行モジュールが出来ているはずですから,
/usr/apps/isv/TotalView/8.9.0-2/toolworks/totalview.8.9.0-2/bin/totalview ./a.out
これにより,以下のような起動画面が表示されますので,CUDA環境を選択します.
以後の利用方法は 6.6.3と同じです.
6.6.6 パフォーマンスアナライザー
TSUBAME2にはパフォーマンスアナライザーとして,VTune Amplifier XEがインストールされています.
デバックする実行モジュールを作成します.:
gfortran -g sample.f
次に VTune を起動します.
$ . /usr/apps/isv/intel/vtune/vtune_amplifier_xe_2011/amplxe-vars.sh
Copyright (C) 2009-2011 Intel Corporation. All rights reserved.
Intel(R) VTune(TM) Amplifier XE 2011 (build 139491)
$ amplxe-gui
これにより,以下のような起動画面が表示されます. New Projectボタンを押すと,Create a Projectウインドウが立ち上がり
ます. Project name欄を入力してCreate Projectボタンをクリックします.
Application欄に作成したa.outを入力し,OKボタンをクリックします.
次にNew Analysisボタンをクリックします.
すると次の画面が立ち上がります.
Analysis Type から分析したい内容を選択し,右側の Start ボタンをクリックすると分析が始まります.
6.6.7 PAPIによる性能評価
プログラムの準備は,サンプルプログラムを参照してください.(/work0/soudan/tune/papi_t.c)
1.プログラムをコンパイルします.
. /usr/apps/free/papi/421/papi.sh
gcc papi_t.c -I/usr/apps/free/papi/421/include -lpapi -L/usr/apps/free/papi/421/lib
2.実行します.
./a.out
x=49.500000
Real_time: 0.000009 Proc_time: 0.000002 Total flpins: 305
MFLOPS: 138.903839
ライブラリが見えない場合は,以下を実施してから,実行してください.
export LD_LIBRARY_PATH=/usr/apps/free/papi/421/lib:$LD_LIBRARY_PATH
6.7 エラーメッセージ
一番多いエラーメッセージと対応を示します.
6.7.1 メモリ不足
メモリ不足の場合は,コンパイラによってメッセージが異なりますが,バッチの場合はPBS側のエラーが表示されます.
1. GNU
Operating system error: Cannot allocate memory
Out of memory
2. PGI
0: ALLOCATE: 1920000000 bytes requested; not enough memory
3. intel
forrtl: severe (41): insufficient virtual memory
Image
PC
Routine
ch
0000000000476B5D Unknown
ch
0000000000475665 Unknown
ch
0000000000450360 Unknown
ch
000000000043DFCF Unknown
ch
0000000000415765 Unknown
ch
0000000000404462 Unknown
Line
Unknown
Unknown
Unknown
Unknown
Unknown
Unknown
Source
Unknown
Unknown
Unknown
Unknown
Unknown
Unknown
ch
libc.so.6
ch
0000000000402C7C
00002BA16D91DBC6
0000000000402B79
Unknown
Unknown
Unknown
Unknown
Unknown
Unknown
Unknown
Unknown
Unknown
4. PBS
=>> PBS: job killed: mem 32050216kb exceeded limit 31457280kb
================================================
5. 対策
使用するメモリ量が指定したもの(あるいは実装)より多いために発生しています.次のような処置をお願いします.
• バッチジョブ
指定するメモリ量を多く指定してください.Sキューで不足の場合はS96など実装メモリの大きなキューをお使いください.
• インタラクティブ
インタラクティブでは,6GBの上限が設定されていますのでバッチキューをご利用ください. コンパイルなどもバッチ
を使って実行できます. 5.9 SSH直接ログイン なども参照ください.
6.7.2 配列外参照
エラーメッセージは次のように表示されます.
1. GNU
/var/spool/PBS/mom_priv/jobs/757.t2zpbs03.SC: line 5: 28740 Segmentation fault
================================================
./outck
2. PGI
/var/spool/PBS/mom_priv/jobs/756.t2zpbs03.SC: line 5: 28674 Segmentation fault
================================================
./outck
3. intel
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image
PC
Routine
Line
outck
0000000000402D72 Unknown
Unknown
outck
0000000000402C7C Unknown
Unknown
libc.so.6
00002AB0F39E9BC6 Unknown
Unknown
outck
0000000000402B79 Unknown
Unknown
================================================
Source
Unknown
Unknown
Unknown
Unknown
6.7.3 配列外参照(MPIジョブ)
バッチでもほぼ同じですがMPIプロセスはこの「Segmentation fault」が発生するとシグナル"11" や "-5" としてMPI処理を
終了します.
1. GNU+openmpi
[t2a006176:27110] *** Process received signal ***
[t2a006176:27110] Signal: Segmentation fault (11)
[t2a006176:27110] Signal code: Address not mapped (1)
[t2a006176:27110] Failing at address: 0x17cb2c00
[t2a006176:27111] *** Process received signal ***
[t2a006176:27111] Signal: Segmentation fault (11)
[t2a006176:27111] Signal code: Address not mapped (1)
[t2a006176:27111] Failing at address: 0x17cb2c00
[t2a006176:27110] [ 0] /lib64/libpthread.so.0(+0xf5d0) [0x2b08b38195d0]
[t2a006176:27110] [ 1] /usr/lib64/libgfortran.so.3(+0xb5def) [0x2b08b3177def]
[t2a006176:27110] [ 2] /usr/lib64/libgfortran.so.3(+0xb6ec2) [0x2b08b3178ec2]
[t2a006176:27110] [ 3] /usr/lib64/libgfortran.so.3(+0xb78de) [0x2b08b31798de]
-------------------------------------------------------------------------orterun noticed that process rank 1 with PID 27111 on node t2a006176 exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------
2. PGI+openmpi
[t2a006176:23516] *** Process received signal ***
[t2a006176:23516] Signal: Segmentation fault (11)
[t2a006176:23516] Signal code: Address not mapped (1)
[t2a006176:23516] Failing at address: 0x1e18ab2c0
[t2a006176:23517] *** Process received signal ***
[t2a006176:23517] Signal: Segmentation fault (11)
[t2a006176:23517] Signal code: Address not mapped (1)
[t2a006176:23517] Failing at address: 0xffffffff9eadf440
[t2a006176:23516] *** End of error message ***
[t2a006176:23517] *** End of error message ***
-------------------------------------------------------------------------orterun noticed that process rank 1 with PID 23517 on node t2a006176 exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------
3. intel+openmpi
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image
PC
Routine
Line
Source
ck
000000000040861A Unknown
Unknown Unknown
ck
000000000040843C Unknown
Unknown Unknown
libc.so.6
00002B244C2A2BC6 Unknown
Unknown Unknown
ck
0000000000408339 Unknown
Unknown Unknown
-------------------------------------------------------------------------orterun has exited due to process rank 1 with PID 22812 on
node t2a006176 exiting without calling "finalize". This may
have caused other processes in the application to be
terminated by signals sent by orterun (as reported here).
-------------------------------------------------------------------------4. GNU+mvapich2
MPI process (rank: 1) terminated unexpectedly on t2a004094
Exit code -5 signaled from t2a004094
5. PGI+mvapich2
MPI process (rank: 0) terminated unexpectedly on t2a004091
Exit code -5 signaled from t2a004091
MPI process (rank: 1) terminated unexpectedly on t2a004094
6. intel+mvapich2
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image
PC
Routine
Line
ck
00000000004049AA Unknown
Unknown
ck
00000000004047CC Unknown
Unknown
libc.so.6
00002B929D1AABC6 Unknown
Unknown
ck
00000000004046C9 Unknown
Unknown
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image
PC
Routine
Line
ck
00000000004049AA Unknown
Unknown
ck
00000000004047CC Unknown
Unknown
libc.so.6
00002B126C998BC6 Unknown
Unknown
ck
00000000004046C9 Unknown
Unknown
MPI process (rank: 1) terminated unexpectedly on t2a006176
Exit code -5 signaled from t2a006176
Source
Unknown
Unknown
Unknown
Unknown
Source
Unknown
Unknown
Unknown
Unknown
7. 対策
宣言した配列のインデックスの範囲外の添え字が使用されている場合に発生します. 初期値の設定漏れなどで発生する場
合が多いようです.PGIコンパイラでは「-C」のオプションを 使用して次のようにして調査できます.
> pgf95 -o check -C sample7lk.f wclock.c
> ./check
0: Subscript out of range for array a1 (sample7lk.f: 21)
subscript=40000, lower bound=-1946283772, upper bound=32767, dimension=1
>
これはプログラムの21行目で配列名A1の範囲外を参照したというメッセージです.
MPIジョブの終了は,終了シグナルを親プロセスが受け取り,全プロセスに終了を配信して処理を終了するため, この手
順で終了しない場合,終了を受け取らないプロセスがゾンビとなってしまう場合があります. そうならないために,添え字
の範囲チェックを実施して,範囲外が発生した場合は,MPI-Abortルーチンをコールして終了するようにしてください.
7. ISVアプリケーション
本章では,「TSUBAME2」で利用できるアプリケーションの基本操作について説明します.詳細な取扱いにつきましては,個別
の利用手引を参照してください.
• FLUENT
• ABAQUS Standard/Explicit
• ABAQUS CAE
• NASTRAN
• PATRAN
• Gaussian
• AMBER
• Materials Studio
• Discovery Studio
• SCIGRESS
• Molpro
• mathematica
• maple
• AVS/Express
• AVS/Express PCE
• EnSight
• MATLAB
• LS-DYNA
7.1 ANSYS FLUENT
バージョン14.5を使用できます.
1.[インタラクティブ実行]
$ fluent 3ddp <fluent オプション>
2.[PBSジョブ投入]
PBSの仕様上,GUIを使用できないため,コマンドラインモード(fluent の -g オプション)で起動します. また,予め次のような
ジャーナルファイルをjournalという名で用意しておき処理を自動化することをお勧めします.
/file/read-case "sample.cas"
/solve/iterate 10
exit
(1).シングルジョブ
(a).投入シェル準備
$ cat test_fluent.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
fluent 3ddp -g -i journal <fluent オプション>
-----------------------------------$ chmod +x test_fluent.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_fluent.sh
(2).MPIジョブ投入
MPIジョブはノード内並列のみ対応しています.
(a).投入シェル準備
$ cat test_fluent.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
fluent 3ddp -mpi=openmpi -pib -t<CPU数> -g -i journal <fluent オプション>
-----------------------------------$ chmod +x test_fluent.sh
(注意) V キューを投入先とする場合は,スクリプト中の「-mpi=openmpi -pib」の指定方法を変更する必要があります. 次
のようなスクリプトを用意してください.
○V12.1 の場合
#!/bin/sh
cd ${PBS_O_WORKDIR}
fluent 3ddp -mpi=intel -t<CPU数> -g -i journal <fluent オプション>
○V13, 14, 14.5 の場合
#!/bin/sh
cd ${PBS_O_WORKDIR}
fluent 3ddp -mpi=openmpi -t<CPU数> -g -i journal <fluent オプション>
(b).ジョブ投入
ノード内並列で実行します.
$ t2sub -l select=1:ncpus=<CPUS数> <グループ,キュー等指定> test_fluent.sh
7.2 Abaqus Standard/Explicit
バージョン6.12-3を使用できます.
1.[インタラクティブ実行]
$ abaqus job=<入力ファイル> <Abaqus オプション>
2.[PBSジョブ投入]
(1).シングルジョブ
(a).投入シェル準備
$ cat test_abaqus.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
abaqus job=<入力ファイル> <Abaqus オプション>
-----------------------------------$ chmod +x test_abaqus.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_abaqus.sh
(2).MPIジョブ投入
MPIジョブはノード内並列のみ対応しています.
(a).投入シェル準備
$ cat test_abaqus.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
abaqus job=<入力ファイル> cpus=<CPU数> mp_mode=mpi <Abaqus オプション>
-----------------------------------$ chmod +x test_abaqus.sh
(注意) V キューを投入先とする場合は,スクリプト中の「mp_mode=mpi」の指定方法を変更する必要があります. 次の
ようなスクリプトを用意してください.
#!/bin/sh
cd ${PBS_O_WORKDIR}
abaqus job=<入力ファイル> cpus=<CPU数> mp_mode=threads <Abaqus オプション>
(b).ジョブ投入
ノード内並列のみです.
$ t2sub -l select=1:ncpus=<CPUS数> <グループ,キュー等指定> test_abaqus.sh
7.3 Abaqus CAE
バージョン6.12-3を使用できます.
1.[起動方法]
次のコマンドで起動します.
$ abaqus cae
終了は,メニューバーから「File」を選択し「Exit」をクリックします.
7.4 Patran
バージョン2012.2.1を使用できます.
1.[起動方法]
次のコマンドで起動します.
$ patran
終了は,メニューバーから「File」を選択し「Quit」をクリックします.
7.5 Nastran
バージョン2012.2を使用できます.
1.[インタラクティブ実行]
$ nast20122 <入力ファイル> <Nastran オプション>
2.[PBSジョブ投入]
(1).シングルジョブ
(a).投入シェル準備
$ cat test_nastran.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
nast20122 <入力ファイル> <Nastran オプション>
-----------------------------------$ chmod +x test_nastran.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_nastran.sh
(2).MPIジョブ投入
MPIジョブはノード内並列のみ対応しています.
(a).投入シェル準備
$ cat test_nastran.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
nast20122 <入力ファイル> parallel=<CPU数> <Nastran オプション>
-----------------------------------$ chmod +x test_nastran.sh
(b).ジョブ投入
ノード内並列のみです.
$ t2sub -l select=1:ncpus=<CPUS数> <グループ,キュー等指定> test_nastran.sh
7.6 Gaussian 09
Revision C.01を使用できます.
1.[インタラクティブ実行]
$ g09 test000.com
2.[PBSジョブ投入]
大きなサイズのスクラッチが出力される場合があります. シェルスクリプトで「export GAUSS_SCRDIR=$TMPDIR」の指定
を行い, 共有スクラッチ領域を使用することをおすすめします.
(1).シングルジョブ
(a).投入シェル準備
$ cat test_g09.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
export GAUSS_SCRDIR=$TMPDIR
g09 test000.com
-----------------------------------$ chmod +x test_g09.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_g09.sh
(2).SMP並列ジョブ
(a).投入シェル準備
$ cat test_g09smp.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
export GAUSS_SCRDIR=$TMPDIR
unset NCPUS
unset OMP_NUM_THREADS
g09 test000.com
-----------------------------------$ chmod +x test_g09smp.sh
(b).入力ファイルにSMP並列数指定
入力ファイルの先頭に(マルチステップジョブではステップ毎に),SMP並列オプション指定
$ cat test000.com
%NprocShared=<CPU数>
:
(c).ジョブ投入
$ t2sub -l select=1:ncpus=<CPUS数> <グループ,キュー等指定> test_g09smp.sh
(3).Lindaジョブ投入
(a).投入シェル準備
$ cat test_g09linda.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
export GAUSS_SCRDIR=$TMPDIR
export g09root=/usr/apps/isv/gaussian_linda/gaussian09.C01
source $g09root/g09/bsd/g09.profile
export GAUSS_LFLAGS="-opt "Tsnet.Node.lindarsharg:ssh" -nodelist '`cat $PBS_NODEFILE | tr "\n" " "`' -mp 2"
g09 test000.com
-----------------------------------$ chmod +x test_g09linda.sh
(b).入力ファイル編集
入力ファイルの先頭に(マルチステップジョブではステップ毎に),LINDA/SMP並列オプション指定
$ cat test000.com
%NprocLinda=<ノード数)
%NprocShared=<CPU数>
:
(c).ジョブ投入
$ t2sub -l select=<ノード数>:ncpus=<各ノードのCPU数> -l place=scatter <グループ,キュー等指定> \
test_g09linda.sh
7.7 Gauss View
バージョン5.0.9を使用できます.
1.[起動方法]
次のコマンドで起動します.
$ gview
終了は,メニューバーから「File」を選択し「Exit」をクリックします.
7.8 AMBER
バージョン12(bugfix15)を使用できます.
1.[インタラクティブ実行]
$ sander [-O|A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt <sander オプション>
2.[PBSジョブ投入]
備考
Vキューを投入先とする場合の注意点
V キューを投入先とする場合は,次のように V キュー専用の AMBER を使用するための環境変数設定をジョブスクリプト
に記述してください. V キュー以外を投入先とする場合は,この設定は必要ありません.
この環境変数設定が無い場合,一部コマンドはエラーとなり正常に計算できません.
○バージョン 11(Bugfix 20)を使用する場合
<bash 系の場合>
$ export AMBERHOME="/usr/apps/isv/amber/amber11_bugfix20_V/amber11"
$ export PATH="${AMBERHOME}/bin/:${PATH}"
<csh 系の場合>
% setenv AMBERHOME "/usr/apps/isv/amber/amber11_bugfix20_V/amber11"
% setenv PATH "${AMBERHOME}/bin/:${PATH}"
○バージョン 12(Bugfix 7)を使用する場合
<bash 系の場合>
$ export AMBERHOME="/usr/apps/isv/amber/amber12_bugfix7_V/amber12"
$ export PATH="${AMBERHOME}/bin/:${PATH}"
<csh 系の場合>
% setenv AMBERHOME "/usr/apps/isv/amber/amber12_bugfix7_V/amber12"
% setenv PATH "${AMBERHOME}/bin/:${PATH}"
○バージョン 12(Bugfix 15)を使用する場合
<bash 系の場合>
$ export AMBERHOME="/usr/apps/isv/amber/amber12_bugfix15_V/amber12"
$ export PATH="${AMBERHOME}/bin/:${PATH}"
<csh 系の場合>
% setenv AMBERHOME "/usr/apps/isv/amber/amber12_bugfix15_V/amber12"
% setenv PATH "${AMBERHOME}/bin/:${PATH}"
○MPI 実行する場合(バージョン11, 12 共通)
<bash 系の場合>
$ export PATH="/usr/apps/mpich2/1.3/intel/bin:${PATH}"
$ export LD_LIBRARY_PATH="/usr/apps/mpich2/1.3/intel/lib:${LD_LIBRARY_PATH}"
<csh 系の場合>
% setenv PATH "/usr/apps/mpich2/1.3/intel/bin:${PATH}"
% setenv LD_LIBRARY_PATH "/usr/apps/mpich2/1.3/intel/lib:${LD_LIBRARY_PATH}"
(1).シングルジョブ
(a).投入シェル準備
$ cat test_sander.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
sander [-O|A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt <sander オプション>
-----------------------------------$ chmod +x test_sander.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_sander.sh
(2).GPU(pmemd.cuda)ジョブ投入
(a). 投入シェル準備
$ cat test_pmemd.cuda.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
pmemd.cuda [-O] -i mdin -o mdout -p prmtop -c inpcrd -r restrt <pmemd.cuda オプション>
-----------------------------------$ chmod +x test_pmemd.cuda.sh
(b). ジョブ投入
$ t2sub <グループ,キュー等指定> test_pmemd.cuda.sh
詳細は「AMBER 利用の手引き 7. GPU による高速化」を参照してください.
(3).MPIジョブ投入
(a).投入シェル準備
$ cat test_sander.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
mpirun -np <CPU数> -hostfile $PBS_NODEFILE \
sander.MPI [-O|A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt <sander オプション>
-----------------------------------$ chmod +x test_sander.sh
(b).ジョブ投入
• ノード内並列
$ t2sub -l select=1:ncpus=<CPU数>:mpiprocs=<CPU数> <グループ,キュー等指定> test_sander.sh
• ノード間並列
$ t2sub -l select=<ノード数>:ncpus=<各ノードのCPU数>:mpiprocs=<各ノードのCPU数> -l place=scatter \
<グループ,キュー等指定> test_sander.sh
7.9 Materials Studio
バージョン6.0 SP1を使用できます.
Windows にて,「スタートメニュー」→「すべてのプログラム」からMaterials Studioを起動します.
7.10 Discovery Studio
バージョン3.5を使用できます.
Windows にて,「スタートメニュー」→「すべてのプログラム」からDiscovery Studioを起動します.
7.11 SCIGRESS
バージョン2.1を使用できます.
Windows にて,「スタートメニュー」→「すべてのプログラム」からSCIGRESSを起動します. 計算サーバの指定は,メニューバー
から「プロシージャ」→「計算方法の選択と計算の実行」を選択し, 「サーバの選択」で以下を設定します.
172.17.230.55:8080
7.12 Molpro
バージョン2010.1を使用できます.
1.[インタラクティブ実行]
$ molpro <molpro オプション> <入力ファイル>
2.[PBSジョブ投入]
(1).シングルジョブ
(a).投入シェル準備
$ cat test_molpro.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
molpro <molpro オプション> <入力ファイル>
-----------------------------------$ chmod +x test_molpro.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_molpro.sh
(2).MPIジョブ投入
(a).投入シェル準備
$ cat test_molpro.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
mpirun -np <CPU数> -hostfile $PBS_NODEFILE molprop_2010_1_Linux_x86_64_i8.exe <molpro オプション> <入力ファイル>
-----------------------------------$ chmod +x test_molpro.sh
(b).ジョブ投入
• ノード内並列
$ t2sub -l select=1:ncpus=<CPU数>:mpiprocs=<CPU数> <グループ,キュー等指定> test_molpro.sh
• ノード間並列
$ t2sub -l select=<ノード数>:ncpus=<各ノードのCPU数>:mpiprocs=<各ノードのCPU数> -l place=scatter \
<グループ,キュー等指定> test_molpro.sh
7.13 Mathematica
バージョン9.0.1を使用できます.
1.[起動方法]
次のコマンドで起動します.
<グラフィックユーザインタフェース>
$ Mathematica
画面左部の「Notebook >>」をクリックすることで,ノートブックが起動します. 終了は,メニューバーから「File」を選択し「Qu
it」をクリックします.
<コマンドラインインタフェース>
$ math
Mathematica 9.0 for Linux x86 (64-bit)
Copyright 1988-2013 Wolfram Research, Inc.
In[1]:= (終了する場合はQuitを入力します)
7.14 Maple
バージョン16.02を使用できます.
1.[起動方法]
次のコマンドで起動します.
<グラフィックユーザインタフェース>
$ xmaple
終了は,メニューバーから「File」を選択し「Exit」をクリックします.
<コマンドラインインタフェース>
> maple
|\^/|
Maple 16 (X86 64 LINUX)
._|\|
|/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2012
\ MAPLE / All rights reserved. Maple is a trademark of
<____ ____> Waterloo Maple Inc.
|
Type ? for help.
> (終了する場合はquitを入力します)
7.15 AVS/Express
バージョン8.0を使用できます.
1.[起動方法]
次のコマンドで起動します.
$ xp
終了は,メニューバーから「File」を選択し「Exit」をクリックします.
7.16 AVS/Express PCE
バージョン8.0 Rev.Bを使用できます.
1.次のコマンドを入力し,AVS/Express PCE 専用サーバにログインします.
$ ssh -Y 172.17.230.55 -l USER-ID
2.次のコマンドにより,起動します.
$ para_start <コア数>
7.17 EnSight
バージョン10.0.2(g)を使用できます.
1.[起動方法]
次のコマンドで起動します.
$ ensight100
終了は,メニューバーから「File」を選択し「Quit」をクリックします.
7.18 MATLAB
バージョンR2013aを使用できます.
1.[起動方法]
次のコマンドで起動します.
<グラフィックユーザインタフェース>
$ matlab
終了する場合は,[File]-[Exit]を選択してください.
<コマンドラインインタフェース>
$ matlab -nodisplay
< M A T L A B (R) >
Copyright 1984-2013 The MathWorks, Inc.
R2013a (8.1.0.604) 64-bit (glnxa64)
February 15, 2013
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
>> (終了する場合はexitを入力します)
7.19 LS-DYNA
バージョン971 R6を使用できます.
1.[インタラクティブ実行]
$ smpdynas i=<入力ファイル>
2.[PBSジョブ投入]
(1).シングルジョブ
(a).投入シェル準備
$ cat test_smpdynas.sh
#!/bin/bash
cd ${PBS_O_WORKDIR}
smpdynas i=<入力ファイル>
-----------------------------------$ chmod +x test_smpdynas.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> test_smpdynas.sh
(2).MPIジョブ投入
MPIジョブはノード内並列のみ対応しています.
(a).投入シェル準備
$ cat test_mppdynas.sh
#!/bin/bash
cd ${PBS_O_WORKDIR}
mpirun -np <CPU数> mppdynas i=<入力ファイル>
-----------------------------------$ chmod +x test_mppdynas.sh
(b).ジョブ投入
ノード内並列のみです.
$ t2sub -l select=1:ncpus=<CPUS数> <グループ,キュー等指定> test_mppdynas.sh
8. free アプリケーション
本章は,2010年11月から稼働を開始した「TSUBAME2」に用意されているフリーアプリケーションの手引きとして作成して
います.
• GROMACS
• povray
• thinker
• GAMESS
• platex
• Tgif
•R
• gnuplot
利用にあたっては,開発元の提供している情報を確認してください.
8.1 GROMACS
GROMACS はバージョン4.0.7を使用できます.GCC,PGIコンパイラ,INTELコンパイラで 作成されたバージョンが使えます.
実行する前に以下のように環境変数をセットします.
$ source /usr/apps/free/env/gromas_p-vars.sh PGI版利用時
$ source /usr/apps/free/env/gromas_g-vars.sh GCC版利用時
$ source /usr/apps/free/env/gromas_i-vars.sh INTEL版利用時
Grompp での処理終了後,mdrunで計算を行います.
1.[インタラクティブ実行]
(1). シングル実行
$ mdrun-s -s XX.tpr -o XX.trr -c XX.gro -v -g ログファイル
(2). MPI実行
$ mpirun -np
CPU 数 mdrun -s XX.tpr -o XX.trr -c XX.gro -v -g ログファイル
2.[PBSジョブ投入]
(1).シングルジョブ
(a).投入シェル準備
$ cat testgro.sh
#!/bin/sh
source /usr/apps/free/env/gromas_p-vars.sh
mdrun-s -s XX.tpr -o XX.trr -c XX.gro -v
$ chmod +x testgro.sh
(b).ジョブ投入
$ t2sub <グループ,キュー等指定> testgro.sh
(2).MPIジョブ投入
(a).投入シェル準備
$ cat testgro.sh
#!/bin/sh
source /usr/apps/free/env/gromas_p-vars.sh
mpirun -np CPU数 -hostfile $PBS_NODEFILE mdrun -s XX.tpr -o XX.trr -c XX.gro -v
$ chmod +x testgro.sh
(b)ジョブ投入
$ t2sub <グループ,キュー等指定> -l select=4 testgro.sh
8.2 POV-Ray
1.[インタラクティブノードでの実行]
(1).1CPU 利用時
$ povray [オプション] 入力ファイル [オプション]
※新しい版(3.7.0rc7)も利用できます.
/usr/apps/free/povray/3.7.0rc7/bin/povray [オプション] 入力ファイル [オプション]
(2).複数 CPU 利用時
$ source /usr/apps/free/envsetompi-gcc.sh
$ mpirun -mpi CPU 数 povray [オプション] 入力ファイル [オプション]
2.[PBSジョブ投入]
(1).1CPU 利用時
$ cat > testpov.sh
#!/bin/sh
povray [オプション] 入力ファイル [オプション]
$ chmod +x testpov.sh
$ t2sub <グループ指定等> testpov.sh
(2).複数 CPU 利用時
$ cat testpov.sh
#!/bin/sh
source /usr/apps/free/envsetompi-gcc.sh
mpirun -np CPU数 -hostfile $PBS_NODEFILE povray [オプション] 入力ファイル [オプション]
$ chmod +x testpov.sh
$ t2sub <グループ指定等> testpov.sh
※複数CPU 利用時,並列出力が正常に出力されないため,並列版は3.5C 版が起動します.
8.3 Tinker
1.[インタラクティブノードでの実行]
$ timer Coordinate_file Repetitions Hessian_Evaluations
2.[PBS ジョブ投入]
$ cat testtinker.sh
#!/bin/sh
timer Coordinate_file Repetitions Hessian_Evaluations
$ chmod +x testtinker.sh
$ t2sub <キュー等指定> testtinker.sh
3.新しいバージョン
6.2.01を使用することができます.フルパスでご指定ください.
/usr/apps/free/tinker/6.2.01_g/bin/timer
6.2.01_i_2013.0.079/bin/timer
6.2.01_i_2013.0.079_V/bin/timer
6.2.01_p_13.2/bin/timer
(Vキュー専用)
8.4 GAMESS
バージョン25 Mar 2010を使用できます.
現在フル機能を利用出来るバージョンとしてintel版をデフォルトとしています.
1.インタラクティブノードでの実行
(a).シングル
$ export SCR=/work0/group-ID/USER-ID/scr
$ rm $SCR/*
$ rungms exam01 00 1 > exam01.log
(b).4並列実行
$ rungms exam01 00 4
> exam01.log
※インタラクティブノードでの実行はノード内4並列までです.必ずスクラッチディレクトリの設定をしてください. 無指定の
場合は $HOME/scrに自動的に作成されます. /home は指定しないようにお願いいたします.
2.PBS ジョブ
(a).シェルの作成
$ cat > testgamess.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
export SCR=$TMPDIR/scr
rungms exam01 00 4 > exam01.log
#
(b).ジョブの投入
$ chmod +x testgamess.sh
$ t2sub <キュー等指定> -l select=2:mpiprocs=2 testgamess.sh
※ シェル内の指定並列数とt2sub指定の総プロセス数が同じ場合のみ実行します.
※ GNU版を使用する場合は、実行シェル内でフルパスで指定してください.
/usr/apps/free/gamess/25Mar2010_g/rungms exam01 00 8 > exam01.log
などとなります.
3.違う版を使用する場合
現在、最新版として、25Oct2012 版もインストールされています. デフォルト版以外、例えば01 Oct 2010を使用する場
合は、フルパスで記述すれば使用できます.
$ cat > testgamess.sh
#!/bin/sh
cd ${PBS_O_WORKDIR}
export SCR=$TMPDIR/scr
/usr/apps/free/gamess/01Oct2010_g/rungms exam01 00 4 > exam01.log
#
などとなります.利用できるのは以下になります.
25Mar2010_g gnu版
25Mar2010_i intel版(デフォルト)
01Oct2010_g gnu版
01Oct2010_i intel版
25Oct2012_g gcc版
25Oct2012_i_2013.0.079 intel版
25Oct2012_p_13.2 pgi版
8.5 platex
簡単な文書を作成してみましょう.始めにドキュメントを確認します. ファイル名を test.tex として,以下のように記述しました.
nkf -w
test.tex
\documentclass{jarticle}
\begin{document}
日本語TeXの練習をしています.
特に力を入れているのは
\begin{itemize}
\item きれいな文章
\item 判りやすい表現
\end{itemize}
などです.それでは練習に入りましょう.
\\それでは,長い文章を入力してみましょう.これは,どんな長さの文章でもtexが
調整してくれる事を確認するために行ないます.結構長くなりました.どんなもん
でしょうか.
\\\today
\LaTeX
\end{document}
早速 make してみます.
platex test.tex
これにより,test.dviというファイルができますので,
xdvi
test.dvi
画面が表示されました.続いて,
dvips test.dvi
とコマンドをたたくと,test.psというポストスクリプトファイルが生成されます.
gv test.ps
作成したポストスクリプトファイルを見ることができます.
TSUBAMEから直接接続したプリンターはありませんので,直接の印刷はできません.
8.6 Tgif
このアプリは[フォアグラウンド] でのみ実行します.また, GUIアプリなので,X環境が必要です.日本語入力をする場合には,
日本語表示をするためにX環境に必要な日本語フォントを設定するが必要があります.
起動シェルは,localeは日本語環境設定の場合に,日本語メニューを 表示しますが,localeは日本語以外の場合は英語版を
起動します.
日本語を使用する場合は,次の環境変数を設定します.
$ export LANG=ja_JP.eucjp
アプリ本体を起動します.先の環境変数によって英語版,日本語版版が起動します.
$ tgif
8.7 R
Rは使い方により,実行方法が違いますので,以下から利用方法に合わせて選択してください.
1.single
(1).対話式
$ R
R version 2.11.1 (2010-05-31)
:
> 1+2
[1] 3
>q()
Save workspace image? [y/n/c]:n
(2).バッチ式
$ R CMD BATCH test.R
(3).PBSジョブ
$ cat > testR.sh
#!/bin/sh
R CMD BATCH test.R
$ chmod +x testR.sh
$ t2sub <specifying group, queue, etc.> testR.sh
2.ノード内並列
始めにパスを通します.
$ source /usr/apps/free/env/setompi-pgi.sh
(1).対話式
$ R
R version 2.11.1 (2010-05-31)
:
> library(snow)
> library(pvclust)
> cl <- makeCluster(2,"MPI")
:
q()
(2).バッチ式
$ R CMD BATCH testmpi.R
3.ノード間並列ジョブ
(1).シェルを準備
$ cat test.sh
#!/bin/sh
source /usr/apps/free/env/Rvars_pgi.sh
RMPISNOW CMD BATCH test.R
$ cat testpbs.sh
#!/bin/sh
source /usr/apps/free/env/Rvars_pgi.sh
mpirun -np <CPUs> -hostfile $PBS_NODEFILE RMPISNOW CMD BATCH test.R
(2).実行
(a).会話型実行
$ mpirun -np 4 ./test.sh
(b).PBSバッチ投入例:
$ t2sub -l select=4 -l:place=scatter ./testpbs.sh
※ここのtest.R中にgetclusterで指定MPI並列数で実行
4.最新版の利用
gcc版のみですが、3.0.0がインストールされています.フルパスで指定してください.
> /usr/apps/free/R/3.0.0_g/bin/R
R version 3.0.0 (2013-04-03) -- "Masked Marvel"
:
8.8 gnuplot
gnuplotはX-windowを使用していますので,必ずssh -Y で接続してください.
では,早速使ってみましょう.
$ gnuplot
G N U P L O T
Version 4.2 patchlevel 3
last modified Mar 2008
System: Linux 2.6.16.60-0.21-smp
Copyright (C) 1986 - 1993, 1998, 2004, 2007, 2008
Thomas Williams, Colin Kelley and many others
Type `help` to access the on-line reference manual.
The gnuplot FAQ is available from http://www.gnuplot.info/faq/
Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot>
Terminal type set to 'x11'
gnuplot> plot sin(x)
終了する場合は
gnuplot> quit
としてください.
改版履歴
版数
日付
項目
内容
version 1.0
2010年 10月 29日
--
初版作成
version 1.1
2010年 11月 10日
5.3.2
加筆・修正(スレッドの扱い)
version 1.1
2010年 11月 19日
6.3/7.8/8.7
誤記修正(サンプル修正)
version 1.2
2010年 11月 25日
MPI/Vキュー/6.7
加筆・修正(Vキュー環境の
追記)
version 1.2
2010年 11月 30日
3.5.3/SSD/5.6/誤表記
加筆・修正(Vキュー環境の
追記)
version 1.2
2010年 12月 2日
4.6.4
サンプルの修正
version 1.2
2010年 12月 6日
4.9.2
macからの利用を追記
version 1.2
2010年 12月 17日
5.5/3章
誤記修正/Windowsの記
述修正
version 1.2
2010年 12月 21日
6.1.2/6.6.1-4
ライブラリ/プロファイラ/デ
バッカ
version 1.2
2010年 12月 28日
2.2/5.5
誤記修正/メモリサイズの記
述修正
version 1.2
2011年 1月 11日
4.5.6/6.1.5
注意点の追記/PGI11の追
記
version 1.2
2011年 1月 17日
3章
メモリ制限6G/Sキューの増
加注釈
version 1.2
2011年 1月 27日
3.1.3
S96/L128係数の修正
version 1.2
2011年 1月 28日
5.6/5.9
誤記修正/SSH直接ログイ
ン記述修正
version 1.2
2011年 2月 15日
2.2.1
Turbo Boost追記
version 1.2
2011年 2月 28日
4.6.4
SSD利用の注意を加筆
version 1.2
2011年 3月 8日
3.4/5.1/5.3
GPUジョブの記述を修正・
追加
version 1.3
2011年 4月 1日
2章/3章/5章/7章
キューの追加/アプリバージョ
ンアップ
version 1.3
2011年 5月 6日
6.5.2/6.6.5/8.4
CULA/totalview/gamess
version 1.3
2011年 5月20日
3.1.5/4.6.2/6.6.6
ノード内並列/GPFS/vtune
の項目追加
version 1.3
2011年 6月23日
3.1.6
制限一覧の追加
version 1.3
2011年 7月12日
3.1/4.2
ログイン方法の修正
version 1.3
2011年 7月28日
3.4/6.5/6.1.6
ログイン方法の修正/ドキュ
メント閲覧
version 1.3
2011年 7月29日
6.1.6
ドキュメント閲覧
version 1.3
2011年 8月15日
6.5/3.3.1/5.2
GPU/マシンタイプ/ジョブ
投入
version 1.3
2011年 8月23日
6.1/6.2
MPIジョブ投入の資源指定
version 1.3
2011年10月28日
6.1.5/6.5.5
MPI+cudaでのコンパイル
version 1.3
2011年11月14日
6.5.3/6.5.4
PGI cudaコンパイラ
version 1.3
2011年12月20日
4.5.9/6.1.5
課金グループ/pgiの戻し
version 1.3
2012年1月5日
3.2.2
MVAPICH2環境変数の追
記
version 1.3
2012年1月16日
2章/3.4
記述更新/ABAQUSのGPU
対応
version 1.3
2012年1月20日
2/3/4章
記述更新
version 1.3
2012年2月1日
3/4章
他のドキュメントを取り込み
記載
version 1.3
2012年2月3日
4.6.5
ローカルスクラッチ
version 1.3
2012年2月17日
4.6.6
ローカルスクラッチ(MPI)
version 1.3
2012年2月23日
6.6.7
papiの使用
version 1.3
2012年2月29日
6
pgi12.2の使用
version 1.4
2012年4月2日
isvバージョン
isvアプリのアップデート
version 1.4
2012年4月5日
/work1
/work1の利用および制限
version 1.4
2012年4月10日
/6
pgi 12.3 の使用
version 1.4
2012年4月20日
2.4
ストレージの特徴
version 1.4
2012年5月10日
6.1.5
pgi 12.4 追記
version 1.4
2012年5月21日
3.5
誤記修正(mpi)
version 1.4
2012年5月30日
5.7.4
mail 詳細を追記
version 1.4
2012年6月29日
2/3/4
英語版と同期
version 1.4
2012年7月20日
6.1.5
pgi 12.5 追記
version 1.4
2012年7月24日
6.1.5
intel compiler Cluster St
udio XE 12.1.0.233 追記
version 1.4
2012年8月17日
4.6.7
ストレージの注意点 追記
version 1.4
2012年8月21日
6.1.5
pgi 12.8 追記
version 1.4
2012年9月26日
6.1.5
pgi 12.9 追記, intel comp
iler 2013.0.079 追記
version 1.4
2012年10月1日
3.1.3/3.1.6/3.5.2
L128ノード数 更新
version 1.4
2012年10月25日
4.6.8
I/Oノード追記
version 1.4
2012年10月31日
5.3.6
誤記修正
version 1.4
2012年11月1日
6.1.5
pgi 12.10 追記
version 1.4
2012年11月9日
4.5.1
実行権追記
version 1.4
2012年11月21日
3.1.3/3.1.4
Gキューの注意書
version 1.4
2012年11月30日
7.8
AMBER Vキューを投入先と
する場合の環境変数設定
方法 追記
version 1.4
2012年12月3日
3.1.4
G キューのジョブ本数制限
version 1.4
2012年12月10日
5.3.8
ハイブリット並列
version 1.4
2012年12月19日
3.5.1
予約キューの利用
version 1.4
2013年1月28日
5.4
予約(Hキューの利用) t2rst
at コマンド 追記
version 1.4
2013年2月1日
3.1.7/5.2.1
Xキューの利用時間
version 1.4
2013年2月4日
2/3/4/6章
記述更新(制限など)
version 1.4
2013年2月14日
5.2.2
PBSオプション
version 1.5
2013年4月2日
3、6章
isvバージョン
version 1.5
2013年4月12日
6.3
mpiコンパイラ(pgi)
version 1.5
2013年4月17日
3.5.3
ストレージサービス追記
version 1.5
2013年4月22日
6.1.5
pgi13.4追記
version 1.5
2013年5月9日
6.6
pgprof修正
version 1.5
2013年5月13日
6.1.5
pgi13.5
version 1.5
2013年5月14日
6.5
nvcc のパーション表示
version 1.5
2013年6月20日
8章
free apps のパーションアッ
プ
version 1.5
2013年7月2日
5,6
PDF表示の修正
version 1.5
2013年8月1日
6.1.5
pgi13.7追記