UNIX 入門 - TSUBAME計算サービス

UNIX 入門
TSUBAME2.5版
2.8.1(2016.9.29)
東京工業大学 学術国際情報センター
1
目 次
l TSUBAME2.5概要
n TSUBAMEシステム ・・・・・・・・・・・・・・・ TSUBAME2.5とは?
n サービスの概要
・・・・・・・・・・ TSUBAME2.5でできること
l UNIX入門
n UNIXの概要 ・・・・・・・・・・ UNIXとは、ログイン、ログアウト
n ファイル操作 ・・・・・・・・・・・・・ ファイルシステムとその操作
n 各種コマンド ・・・・・・・ 各種コマンドの使用方法、エディタ
n プログラム実行
・・・・・・・・・・ ユーザープログラムの実行
n 利用環境 ・・・・・・・・・・・ ファイル転送、X環境の利用方法
●この資料は http://tsubame.gsic.titech.ac.jp/docs/guides/UNIX/UNIX.pdf
2
TSUBAME2.5概要
lTSUBAME2.5とは
lTSUBAME2.5システム概念
l機器詳細
lISVアプリケーション
lサービス内容
l演算サーバの利用
lセンターホームページの活用
3
TSUBAME2.5とは
修正
l 平成22年11月に東京工業大学学術国際情報センターに導入され、
平成25年9月に最新のGPU K20Xを装備した大規模なクラウド型グ
リーンスーパーコンピュータ TSUBAME2.5へ
l
l
l
l
全体性能 17 Pflops(単精度)/5.7 Pflops(倍精度)
7PBの大規模ストレージ + 4PBのテープ装置
高バンド幅ネットワーク
世界コンピュータtop500ランキング(TSUBAME2.5) 31位(2016/6)
TSUBAMEの名称は
Tokyo-tech Supercomputer and UBiquitously Accessible Mass-storage Environment
の略で公募により命名されています
4
TSUBAME2.5システム概念図
修正
5
機器詳細 (1)
修正
l 演算サーバ HP SL390s G7 / DL580 G7
– タイプA 1219ノード (Thin)
• Intel Xeon E5600 2.93GHz 12Core搭載
• 搭載メモリ 54GB , SSD 120GB , Tesla K20X 3 GPU搭載
– タイプB 39ノード (Thin)
• Intel Xeon E5600 2.93GHz 12Core搭載
• 搭載メモリ 96GB , SSD 240GB , Tesla K20X 3 GPU搭載
– タイプC 24ノード (Medium)
• Intel Xeon E7520 2.0GHz 32Core搭載
• 搭載メモリ 128GB , SSD 480GB , Tesla S2070 4 GPU搭載(10ノード)
– タイプD 8ノード (Fat)
• Intel Xeon E7520 2.0GHz 32Core搭載
• 搭載メモリ 256GB , SSD 480GB
– タイプE 2ノード (Fat)
• Intel Xeon E7520 2.0GHz 32Core搭載
• 搭載メモリ 512GB , SSD 480GB
6
機器詳細 (2)
修正
l テラビット級ネットワーク
– Mellanox社製 InfiniBand
• ポートあたり40Gb/s が 324ポート
l ストレージ
– home用ストレージ
・ 1200TB /home
– work用ストレージ GPFS/Lustre など
・ 5900TB /data0 , /work0 ,/work1 など
l ソフトウェア
•
•
•
•
SUSE LINUX Enterprise Server11 SP3
PGI CDK(コンパイラ,デバッガ,開発支援ツール)/intel SDK
Mellanox MPI (openmpi/mvapich/mpich)
ISVアプリケーション 別ページ参照
7
アプリケーション一覧
l ABAQUS (Standard 及びExplicit)
(6.14-2)
l ABAQUS/CAE (6.14-2)
l Nastran 2014.1
l Patran 2014.1
l MARC(2015)
l Dytran(2012)
l LS-DYNA(R8.0.0)
l Gaussian 09E Rev 01 (+Linda)
l GaussView (5.0.9)
l AMBER (14 update13)
l Materials Studio (8.0SP1)
l Discovery Studio (4.5)
l
l
l
l
l
l
l
l
l
l
l
l
l
AVS/Express (8.3)
AVS/Express PCE (8.2)
FLUENT (16.2)
Mathematica (10.3)
Maple 18.01
MATLAB(R2016a)
PGI コンパイラ (16.1)
INTEL コンパイラ (2013.1.046)
Total View Debugger (8.14.1-8)
Vtune Amplifier XE (2015)
GROMACS (4.0.7/4.6.5/5.0.4)
GAMESS (01May 2013)
R(2.11/3.1.0)
8
サービス内容
修正
l 演算サーバ利用
– 1268ノードの演算サーバSL390,DL580を利用可能
演算サーバ利用イメージは,別ページ参照
l ストレージ利用
– home領域(制限 25GB)
• 各自のホームディレクトリは,/home/usr?/アカウント名
• システムの全マシンから,アクセス可能
– 全学ストレージサービス(制限 25GB)
• TSUBAME2内と連携(/nest2にマウント)
– work領域(/work0,/work1,/data0 :グループあたりの容量制限)
• 利用したい場合,/work0/group-name/ , /work1/group-name/
配下にディレクトリを作成(各30TBまで)
• 全ての演算サーバから,/work0,/work1 をアクセス可能
9
演算サーバ利用イメージ (1)
l ログイン
– 研究室内PCなどより,sshコマンドを実行.負荷分散を考慮し,
自動的にインタラクティブのいずれかにログインされる.
負荷分散によりloginノードの
どちらかにログインし,
学内
端末
自動的に,loginノードから,
インタラクティブノードのいずれかにログイン
ホスト名:login-t2.g.gsic.titech.ac.jp
ホスト名:t2a006161~t2a006180
loginノード1
インタラクティブノード
loginノード2
全20ノード
インタラクティブノード
「ssh login-t2.g.gsic.titech.ac.jp -l ログイン名」 実行により
インタラクティブノードに自動的にログイン
障害発生時は:login-t2-1.g.gsic.titech.ac.jp (または-2)を使用
10
修正
演算サーバ利用イメージ (2)
l ジョブの実行
n インタラクティブジョブ(小規模ジョブ)
uインタラクティブノード上で実行
$ ./a.out
n バッチジョブ(大規模ジョブ)
uインタラクティブノードから,ジョブ投入用コマンド t2sub を利用して実行
$ t2sub –q U
–l select=1:mem=3gb
./job.sh
uバッチノードは,いくつかのキューに分かれている.
→ キュー構成は,「利用の手引き」参照
インタラクティブノード
t2subコマンドでバッチジョブ投入
ホスト名:
t2a000001~t2a006160,t2b010109~t2b010138
t2f010173~t2f010180,t2x010181~t2x010182
バッチノード
…
全1268ノード
バッチノード
11
修正
センターホームページの活用
TSUBAMEポータル
問い合わせ
FAQ
各種情報
お知らせ
稼動状況
マニュアル
12
詳しくは
l 重要なお知らせ、最新のお知らせ
障害情報が掲載されているので,定期的に参照してください.
n 学術国際情報センター 研究用計算機システム
http://tsubame.gsic.titech.ac.jp/
l 利用前に,必ず利用の手引きを読んでください.
n 利用の手引き
http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/pdf/TSUBAME2.5-user-guide-ja.pdf (日)
http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/pdf_en/TSUBAME2.5-user-guide-en.pdf (英)
n システム利用上の注意
http://tsubame.gsic.titech.ac.jp/usage
n 問い合わせ先/簡単な問答集(FAQ)
http://tsubame.gsic.titech.ac.jp/faq (日本語)
http://tsubame.gsic.titech.ac.jp/en/faq (英語版)
13
UNIXの概要
lUNIXの概略
lログイン
lリモートログイン、ログアウトの仕組み
lターミナル
lTSUBAMEへのログイン
lログアウト
14
UNIXの概略
— UNIXには、SystemVおよびBSDの流れがある
— LinuxはUNIXと互換
— UNIXはマルチタスク/マルチユーザーのOS
n利用者が誰であるのか
n正当な利用者であるかどうか
ログイン名/パスワードを設定
15
ログイン
l 利用者が誰であるかの判断と利用者が正当な利用
者であるかどうかの認識をする。
______-000 へようこそ
ログイン名 : ______
パスワード : ______
必要事項を入力後に認証されて使用可能となる
16
リモートログイン
l
l
l
l
遠隔地にあるホストを、現在のホストから使用する
コマンドとしては telnet,rlogin, ssh など
TSUBAMEではセキュリティの高い ssh を導入
学外からは鍵認証
① 認証
②作業
ターミナル
③ 実行終了
※ターミナルの使用開始もターミナルへのログイン
17
ターミナル
UNIX利用時は標準的なターミナルを使用する
(Cygwinのtermの例)
(Linuxのtermの例)
18
Windowsターミナルからの利用
Xwin Serverのアイコンをクリック
cygwinのアイコンをクリック
ssh -Y -l login_name login-t2.g.gsic.titech.ac.jp
startxwin
l windows用の2ボタンマウスの操作
(ホイールつき)
n 中ボタンクリック時は、ホイールを軽く押す
n ホイールを回せばスクロール可能
n 使用例(メニューの表示)
u コントロール+中ボタンでメニューを表示
u スクロールバーをチェック
n 使用例(ペースト)
u 左ボタンで選択(色が反転:コピー)
u ホイールを軽く押す(ペースト)
19
Macからの利用
ターミナルの設定で、
3ボタンエミュレートを選択
こちらでもほぼ同じ
※control、あるいは、contol+optionを押しながらマウスをクリックでメニュー
20
TSUBAME2.5へのログイン
l ログイン操作 → % や $ という記号を表示(ターミナル)
l これをプロンプトと呼び、コマンドを入力できる状態
l この状態からTSUBAMEを使うためにリモートログイン
→ ssh を使用
$ ssh -Y –l login_name login-t2.g.gsic.titech.ac.jp
[email protected]'s password::
Last login: Tue Sep 24 11:36:54 2013 from t2a006161
login_name@t2a006161:~>
以下のようにしても同じ
$ ssh -Y login-t2.g.gsic.titech.ac.jp –l login_name
$ ssh -Y [email protected]
※うまく接続できない場合、 login-t2-1 や login-t2-2 も試してみてください
21
ログアウト
l 操作を終了したい場合はログアウト操作
l 現在作業しているマシンの確認
uデータの整理
u実行状態の確認
l ログアウト操作
u Ctrlキーと小文字のdを同時に入力(Ctrl-dと表現)
u logoutコマンドを利用
u exitコマンドを使用
22
ファイル操作
lファイルシステム
lファイルの指定
lファイル指定に使用する記号
l情報表示コマンド
lファイルを指定する特殊文字
lファイルのパーミッション
lファイル管理コマンド
lマシン(OS)によるファイルの差異
23
ファイルシステム
l階層構造で表現
lディレクトリによるファイル管理
l一般ファイルと特殊ファイル
/
tmp
temp
ディレクトリ
ファイル
usr
lib
library
home
bin
user1
user2
コマンド
abc.f
bcd.c
24
情報表示コマンド
l pwd
$ pwd
/home5/usr05/userA030
l ls
(欲しい情報に合わせてオプションを指定)
$ ls
C++
$ ls -a
. ..
$ ls -F
a.txt
$ls –l
drwxr-xr-x
-rw-r--r-lrwxrwxrwx
MM5
.bashrc
bbb/
abc.log
c.txt
c.txt
3 userA030 procon
1 userA030 procon
1 userA030 procon
d
d*
e
e@
4096 Apr 28 15:54 MM5
221 May 11 11:47 ren.tex
41 Apr 27 14:52 ppcc ->
../new/data.txt
25
ファイルの指定
l 階層構造のトップを / と表現し、”ルート”と呼ぶ
l ファイルへのアクセス方法
– 絶対指定 : ルート(/)からフル指定
– 相対指定 : 自分の位置(ディレクトリ)からファイルが
存在する位置を指定
$ cd /home5/usr05/userA030/MM5
$ cd ../share_file
26
ファイル指定に使用する記号
l ディレクトリを確認するコマンド
l ホームディレクトリ
~
l 一つ上のディレクトリ
..
pwd
~ : チルダ
> : 大なり
< : 小なり
^ : ハット
$ pwd
/home5/usr05/userA030/MM5
$ cd ..
$ cd ~
※カレントディレクトリ(現在位置)を表現する場合 . (ドット)を使用
27
ファイルを指定する特殊文字
l ファイル名を指定するために特殊文字表現が利用可能。
※便利な機能であるが、利用には注意が必要
メタキャラクタ
機 能
使用例
*
全ての文字列に対応
ls *
?
1文字に対応
ls ?
文字列の中の1文字に対応
ls bc
【文字列】
【文字1-文字2】
文字1と2の間にある1文字に対応
ls b[a-c]d
※メタキャラクタ
それ自体は意味を持たないが、他の文字と組み合わせることで全体で
意味を持たせる働きを持つ記号のこと。メタ文字とも呼ぶ。
28
ファイルのパーミッション
$ls –l
drwxr-xr-x
-rw-r--r-lrwxrwxrwx
モード
3 userA030 procon
1 userA030 procon
1 userA030 procon
4096 Apr 28 15:54 MM5
221 May 11 11:47 ren.tex
41 Apr 27 14:52 ppcc ->
所有者
日付
グループ
ファイル名
サイズ
r:リード権
w:ライト権
x:実行権
drwxr-xr-x
ファイルの種類
d:ディレクトリ
l:リンク
-: 通常ファイル
../new/data.txt
オーナー
その他
グループ
/work0,1 では SGID (Set Group ID) が設定さ
れているため drwxrws--- などと表示されます。
必ず確認してください
29
ファイル管理コマンド
l ディレクトリの作成 --- % mkdir aaa
l ディレクトリの削除 --- % rmdir aaa
l ファイル属性の変更 --- % chmod 755 aaa
※ 755はビット表現と呼び、所有者、グループ、その他のユーザーに対する
アクセス権を表現する
例 chmod –R 777 sample
r w x
4 2 1
モードに対応した数字を指定
読み書きの場合 4 + 2 で 6
全ての場合 4 + 2 + 1 で 7
※ SGIDが使用されている場合(/work0,1) は chmod 2755 aaa と指定する
(以下はマシン管理者の操作)
l 所有者の変更
l グループの変更
-----
% chown necapps aaa
% chgrp procon aaa
30
マシン(OS)によるファイルの差異
l テキストファイルの改行コード
Unix/linux
Macintosh
Win/Dos
¥n LF(line feed)
¥r CR(carrage return)
¥r ¥n CRLF
l 日本語の表示コード
Unix/Linux
Macintosh/windows
UTF-8/EUC
S-JIS
l nkf コマンドにより変換
nkf –w abc.txt > abcd.txt
-wはUTF-8に変換
-Lu とすると改行コードの変換
31
圧縮・解凍
— 圧縮
n
n
n
n
n
n
gzip atom45.tar
zip atom45.zip atom45
lha a text.lzh *.txt
tar czvf atom45.tgz atom45
tar cjf smpl.tar.bz2 smpldir
bzip2 sample.txt
→
→
→
→
→
→
atom45.tar.gz
atom45.zip
text.lzh
atom45.tgz
smpl.tar.bz2
sample.txt.bz2
— 解凍
n
n
n
n
n
n
n
zcat atom45.tar.Z | tar -xvf tar jxf sample.tar.bz2
gzip -d atom45.tar.gz → atom45.tar
unzip book2nd.zip
lha e text.lzh
tar xzvf atom45.tgz
bzip2 -d sample.txt.bz2 → sample.txt
32
各種コマンド
lよく使用するコマンド
lコマンド操作
lファイル操作コマンド
lalias(別名)の機能
lエディタ
lオンラインマニュアル
lコマンドの結合
lコマンドとジョブ
33
よく使用するコマンド
—
—
—
—
—
—
—
—
ssh
exit
mkdir
rmdir
chmod
chown
chgrp
nkf
—
—
—
—
—
—
—
—
cd
cp
mv
rm
pwd
ls
vi
emacs
—
—
—
—
—
—
—
—
view
tail
cat ,more ,less
find
file
grep
diff ,sdiff
man
34
コマンド操作
l コマンドのみで実行
l コマンドに引数(オプション)をつける
l コマンドに引数(ファイル)を指定する
l 複数のコマンドを組み合わせる
例
$ ls
$ ls
–l
$ cal 10 2012
October 2012
Su Mo Tu We Th Fr
1 2 3 4 5
7 8 9 10 11 12
14 15 16 17 18 19
21 22 23 24 25 26
28 29 30 31
コマンドのみ
オプション付
Sa
6
13
20
27
2つの引数
35
ファイル操作コマンド
lcd
cd ../tmp
cd /usr/bin
lcp
cp a.txt b.txt
(a.txtはそのまま残る)
lmv
mv a.txt b.txt
(a.txtは残らない)
lrm
rm a.txt (消去)
※cp,mv,rmは –i オプションで確認処理をする
※一度消去したファイルの復活コマンドはありません。
36
alias(別名)の機能
l
l
l
l
よく使うコマンドやコマンド列に別名をつける。
別名もまた、コマンドとして利用できる。
別名を設定するコマンドを alias と呼ぶ。
別名定義を解除するコマンドを unalias という。
$ cat .bashrc
#
alias rm='rm -i'
※このように.bashrcに書いておくとミスによるファイルの喪失を防止できる。
例えば、rm a* とすると、aで始まるファイルだけを削除する。
間違って、rm a * のように間にスペースが入ると、aというファイルと全てのファイルを
削除してしまう。 aliasを設定することで、-i オプションが利き、削除するか確認が来る。
37
viエディタ
UNIXマシンには必ずインストールされているエディタ
% vi temp.txt
l
l
l
l
l
l
l
待機モードでopen
i または a で入力モード
Escで待機モード
xで1文字削除、ddで1行削除
:wqでエディタを保存終了
:q! で廃棄終了
uで一つ前に戻れる
待機モード時は以下のキーで移動
↑
← h j k l →
矢印キーも有効
↓
入力モード時の表示
Esc キーで待機に戻る
左下が空白時は待機モード
コマンド待ちの表示
38
emacsエディタ
% emacs temp.txt
C-x C-c emacsの終了
C-p
カーソルを上に移動
C-n
カーソルを下に移動
C-b
カーソルを左に移動
C-f
カーソルを右に移動
C-a
カーソルを行頭に移動
C-e
カーソルを行末に移動
M-b
カーソルを左の単語に移動
M-f
カーソルを右の単語に移動
M-a
カーソルを文の先頭に移動
M-e
カーソルを文の末尾に移動
C-x C-s ファイルへの保存
C-x C-w 別ファイル名で保存
<ENTER>,C-m,C-j
改行
<BS>
カーソルの左1文字を削除
M-<BS>
カーソルの左1単語または1文節を削除
<DEL>,C-d カーソルの右1文字を削除
M-d
カーソルの右1単語または1文節を削除
C-k
カーソルから行末までの1行を削除
C-y
C-kで削除した部分を貼り付ける
C-s
前方検索
C-r
後方検索
C-s C-¥
日本語の前方検索
C-r C-¥
日本語の後方検索
日本語入力:
C-¥
<ENTER>,C-l
<SPACE>,C-w
M-s
確定
漢字変換
候補一覧
39
viewコマンド
l viエディタと同じエディタ内コマンドが利用可能。
l 上書き禁止モードでエディタを開く。
l ファイルの中身を確認する場合に使用。
view sample_smp.f90
40
tailコマンド
l ある出力の最後の一部分を標準出力に表示
$ tail -10 mpai2.f
call mpi_barrier(mpi_comm_world,ierr)
call mpi_finalize(ierr)
pai=(float(mr(2))/float(mr(1)))*4.0
if(np.eq.0) then
write(6,*) 'SAMPLE=',mr(1),' HIT=',mr(2),' PAI=',pai
endif
CALL TIME(TIMEW)
WRITE(6,*) TIMEW
stop
end
$
※計算結果を定期的にファイルに出力して、tailコマンドで進行状況をみる。
ただし、プログラムでのテキストの連続出力はしない
tailコマンドの連続発行はしない (マシン負荷が増大するため)
41
cat ,more ,lessコマンド
l ファイルの内容を表示したい場合にcatを利用
l サイズの大きいファイルをページ出力したい場合はmore,less
$ more mpai2.f
include 'mpif.h'
CHARACTER TIMEW*8
integer np,npe,ist,ierr,i
integer m(2),mr(2)
dimension ist(mpi_status_size)
call mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world,np,ierr)
call mpi_comm_size(mpi_comm_world,npe,ierr)
c
:
--More--
more,lessはページ単位で停止するので、スペースキーでページ送りします。
42
修正
findコマンド
l ファイルの存在する位置を知る
→ ファイル名やファイル名の一部がわかっている場合
→ 実行権のないディレクトリに関する検索は不可能
l 類似コマンドとしてwhereisやwhichコマンド
$ find . -name hogehoge -print
$ which pgf95
/usr/apps.sp3/isv/pgi/16.1/linux86-64/2016/bin/pgf95
$ which mpif90
/usr/apps.sp3/mpi/openmpi/1.6.5/i2013.1.046/bin/mpif90
43
fileコマンド
l ファイルの型を調べる
l 指定されたファイルの文字列を調べ内容を判断
$ file sample_smp.f90
sample_smp.f90: ASCII text
※判断ミスもあるので、全面的に信用しないこと
44
grepコマンド
l ファイル内の文字列検索
l 標準出力(パイプ)からの文字列検索を行なう
viエディタやmoreコマンドなどの文字列検索を行なう前
に実行すると便利。
> grep mpi *.c
sample11a.c:#include <mpi.h>
sample5.c:#include <mpi.h>
> grep -i mpi *.c
sample11a.c:#include <mpi.h>
sample11a.c:
MPI_Status status;
sample5.c:#include <mpi.h>
sample5.c:
MPI_Status status;
> grep -i mpi *.c | more
45
diffコマンド
l 2つのファイルの違いを表示する
$ diff omp.f90 ompc1.f90
11c11
< !$omp parallel do private(x),shared(w),reduction(+:sum)
--> !--!$omp parallel do private(x),shared(w),reduction(+:sum)
$
$ sdiff omp.f90 ompc1.f90
program compute_pi
implicit none
integer n,i
double precision w,x,sum,pi,f,a
! function to integrate
f(a)=4.d0/(1.d0+a*a)
n=500000000
! calculate the interval size
w=1.0d0/n
sum=0.0d0
!$omp parallel do private(x),shared(w),reduction(+:sum)
do i=1,n
x=w*(i-0.5d0)
program compute_pi
implicit none
integer n,i
double precision w,x,sum,pi,f,a
! function to integrate
f(a)=4.d0/(1.d0+a*a)
n=500000000
! calculate the interval size
w=1.0d0/n
sum=0.0d0
| !--!$omp parallel do private(x),shared(w),reduction(+:sum)
do i=1,n
x=w*(i-0.5d0)
46
オンラインマニュアル
l man コマンド名/ファイル名
l man -k キーワード
$ man ls
Man: find all matching manual pages
* ls (1)
ls (1p)
Man: What manual page do you want?
Man: 1
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
Section 1 - Executable programs or shell commands)
Section 1p - Executable programs or shell commands [POSIX]
Section 2 - System calls
Section 3 - Library calls
Section 3p - Library calls [POSIX]
Section n - Tk built-in commands
POSIX
【Portable Operating System Interface for UNIX】
IEEEによって定められた、UNIXベースのOSが
備えるべき最低限の仕様のセット。(e-wordより抜粋)
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuSUX
nor --sort.
:
47
修正
練習
l ここまでに出てきたコマンドを使ってみます
–
–
–
–
–
–
–
–
cd
mkdir lesson
cd lesson
cp /work1/soudan/UNIX/sample.sh .
cp sample.sh sample.txt
file sample.txt
grep sample *
vi sample.txt
どこかを適当に編集してください
:wq (保存終了)
– diff sample.sh sample.txt
– sdiff sample.sh sample.txt
<--※注意(以下の方法で一括処理が可能)
メタキャラクタ * を使って
cp /work1/soudan/UNIX/*
全てのファイルをコピー
cpオプションを使って
cp -r /work1/soudan/UNIX
ディレクトリごとコピー
.
.
/work1/soudan/UNIX には以下のファイルがあります
プログラム
compute_pi.c
compute_pi.f90
sample.f90
sample4.f90
説明
Cによるπの計算(pthread)
f90によるπの計算(MPI)
足し算プログラム(input_data)
プロファイラお試し
バッチ用シェル
C_pi.sh
mpi_pi.sh
sample.sh
48
コマンドの結合
コマンドを結合させて、プログラムのように一括処理ができる
l コマンドをセミコロン(;)でつなぐ
l コマンドをパイプ( | )でつなぐ
l コマンドの実行結果をファイルに書き出す
l ファイルをコマンドに入力する
l シェルを組む
49
セミコロン
l 複数のコマンドをセミコロンでつなぐ(グルーピング)
l コマンド1の実行後に、コマンド2,コマンド3が順次実行される
例) arch
コマンド1
;
hostname
コマンド2
;
id
コマンド3
50
パイプ
例)
cat compute.tex
コマンド1
コマンド1
|
grep index
標準出力
コマンド2
標準出力
51
リダイレクション
例)
ls
ls
>
>>
コマンド1
./d.txt
./d.txt
← ./d.txtを新規作成
← ./d.txtにlsの結果を追記
コマンド1
標準出力
ファイル
52
ヒアドキュメント
標準入力からデータをコマンド(プログラム)へ渡す
lファイルからの入力
$ a.out < input.dat
l標準入力からの入力
$ a.out << EndOfFile
100
EndOfFile
$
ここで指定した文字列が
出てくるまで入力データとなる
入力終了
53
バックグラウンド実行
l 実行時間の大きなコマンド(プログラム)
l コマンド実行中に他の事をしたい
→バックグラウンドジョブとして実行
※フォアグラウンドでコマンドの実行は問題ない
l コマンドの後ろに&をつけて実行
$ find . –name xinit –print
[1] 32709
$
&
54
コマンドとジョブ
フォアグラウンド
ジョブ
ユーザー
Ctrl-z
fg
コマンド
fg
Ctrl-c
バックグラウンド
ジョブ(停止中)
コマンド&
強制終了
bg
バックグラウンド
ジョブ(実行中)
kill
55
プログラムの実行
lコンパイル
lライブラリのリンク
lマニュアル
lプログラムの実行
lバッチジョブ
lツールの利用
l処理情報収集コマンド
56
修正
コンパイラ
l 利用できるコンパイラ
コンパイラ名称
gnu
FORTRAN
C , C++
MPI利用
openMP
自動並列
高速オプション
2G超え
リスト出力
gfortran
gcc,g++
○
-fopenmp
×
-○
-Wall
l 注意点
pgi
pgf95
pgcc,pgc++
○
-mp
-Mconcur
-fastsse
○
-Minfo=all
intel
ifort
icc,icpc
○
-openmp
-parallel
-fast
○
-report
MPI標準コンパイラ
TSUBAME2.5のMPI標準コンパイラはintelです。(バージョン2013)
fpic オプションが付加された場合、メモリ使用は2GBまでとなります。
標準以外でMPIを利用する場合は切り替え処理が必要です。
57
コンパイル(基本型)
例1. Fortranプログラム 「sample.f」 の場合
$ ifort sample.f または $ pgf95 sample.f
例2. Cプログラム 「sample.c」 の場合
$ icc sample.c または $ pgcc sample.c
「a.out」を作成
例3. 実行オブジェクトファイルを明示的に指定する場合
$ pgf95 -o sample sample.f
任意の名前を指定(推奨)
例4. コンパイルオプションを明示的に指定する場合
$ pgf95 –fastsse -o sample sample.f
58
修正
コンパイル(並列)
例5. MPI Fortranプログラム 「sample.f」 の場合
$ source set_mpch-3.1_i2013.1.046.sh (使用するMPI環境を指定)
$ mpif90 -o sample sample.f
※コンパイルと実行するMPI環境はシェルを使って同じにします(P.67参照)
例6. OpenMP Fortranプログラム 「sample.f」 の場合
$ ifort -openmp -o sample sample.f
※自動並列の場合は –openmpの代わりに–parallelを付加
(PGIコンパイラは –Mconcur , P57参照)
例7. pthread Cプログラム 「sample.c」の場合
$ pgcc -o sample sample.c –lpthread
例8. MPI とOpenMPを使用する「sample.f」の場合
$ mpif90 –openmp -o sample sample.f
59
ライブラリのリンク
l リンク時にオプションでライブラリ名を指定
→ アーカイブファイルを検索してリンク
l lib***.a というライブラリをリンクする
→
-l***
とオプションの直後に記述
例1. Fortran,Cプログラムに「libm.a」をリンクする場合
$ ifort sample.f –lm
$ icc sample.c –lm
例2. 特定の場所にあるlibblas.aをリンクする場合
$ ifort sample.f –L/opt/lib –lblas
例3. 数値演算ライブラリをリンクする場合
$ ifort -o sample -fast sample10.f wclock.o -lmkl_blacs_lp64
-L/usr/apps.sp3/isv/intel/xe2013.1.046/composer_xe_2013_sp1.2.144/mkl/lib/intel64
※PGIのACMLは廃止されました。
60
修正
コンパイラのマニュアル
l ユーザーズマニュアルの利用方法
(最新のコンパイラを使う場合)
> source /usr/apps.sp3/isv/pgi/pgiset16.7.sh
> which pgf95
/usr/apps.sp3/isv/pgi/16.7/linux86-64/2016/bin/pgf95
> cd /usr/apps.sp3/isv/pgi/16.7/linux86-64/2016
> cd doc
> ls
documentation.html
LICENSE_LAPACK.txt
LICENSE.txt
editline_license.txt
LICENSE_LLVM.txt
(pgiug-x64.pdf )
…
> evince pgiug-x64.pdf <-- マニュアル参照
※ 注意
pgiのマニュアルは、ver16より「http://www.pgroup.com/resources/docs.htm」
から利用者がダウンロードしてくださいとのことです。
※同様の手順にてintelも参照できます。
(/usr/apps.sp3/isv/intel/2015.0.090/composer_xe_2015/Documentation)
61
プログラムの実行環境
JOBの投入にあたっての注意点
1. 多くのユーザーが共同利用
(Sキューの例)
t2sub –q U –W grop_list=t2gxxx –l select=1:ncpus=4:mem=4gb ./job.sh
※使用する資源をなるべく正確に把握して指定してください。
2. /workの活用
/homeは保存データ、プログラムを配置
/work1/group-name/USER-ID/ で実行
(quota による制限の導入)
3. 実行
cd /work1/group-name
TSUBAMEグループIDをセットする
newgrp group-name
mkdir login_name
自分用の作業領域を作成
cd login_name
/work領域にプログラムのリンクを張る
ln -s /home/usr/login_name/a.out .
t2sub –q U -W grop_list=t2gxxxx ./job.sh
バッチ投入
62
プログラムの実行(確認)
例1. Fortranプログラム 「sample」 を1CPUで実行する場合
$ ./sample
例2. MPIの実行ファイル「sample」を2CPUで実行する場合
$ mpirun -np 2 ./sample
例3. OpenMPの実行ファイル「sample」を2CPUで実行する場合
$ export OMP_NUM_THREADS=2
$ ./sample
例4. pthreadの実行ファイル「sample」を2CPUで実行する場合
$ export NCPUS=2
$ ./sample
※この形の実行は試験のみにしてください
63
修正
プログラムの実行(デバッグ)
例1. デバッガを使って「sample10」 をチェック
$ gfortran -g -o sample10 sample10.f wclock.c
$ totalview sample10
例2. プロファイラを使って「sample10」 をチェック
$
$
$
$
source /usr/apps.sp3/isv/pgi/pgiset15.10.sh
pgf95 -Mprof=func -o sample10 sample10.f wclock.c
./sample10
pgprof -nocheckjvm -jarg,-Xmx4G -exe ./sample10
利用の手引き(6.6 性能解析ツール)を参照
http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/programming.html#id11
64
バッチジョブ
ジョブスケジューラに PBS が導入されています
フォアグラウンド
ジョブ
ssh直接ログイン※
ユーザー
確認 (t2stat)
強制終了
t2sub コマンド
t2del
バッチジョブ
※利用の手引5.9節を参照、また、バッチの構成は以下を参照
http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/resources.html
65
バッチキューの構成
t2sub -N ジョブ名 -q 投入先キュー -W group_list=t2gxxxx ジョブスクリプト
l キューの特徴
U/V(試験) 10分まで(マシンに空きがある場合)
V
連続1日まで(延長は –et オプションで、4日まで)
S/U/G/H
連続1日まで(延長は –et オプションで、4日まで)
l グループ
t2gxxxxxx
グループ無し
課金キューが利用できるグループ
U/Vキュー(試験実行)のみ
t2sub -q U ./sample.sh
(一番簡単な例です)
66
修正
プログラムの実行(シェルの作成)
バッチで実行するためのジョブスクリプトの作成
例1. シングルジョブ(SMP並列を含む)
#!/bin/sh
#
export OMP_NUM_THREADS=8
cd ${PBS_O_WORKDIR}
./OMP.exe
例2. MPI並列ジョブ
← SMP並列で必要
Uキュー利用時は
set_mpch-3.1_p16.1.sh
set_mpch-3.1_i2013.1.046.sh
set_mpch-3.1_g4.3.4.sh
など、詳細は手引参照
#!/bin/sh
使用したMPIとコンパイラを指定(P.59参照)
#
source set_mpch-3.1_i2013.1.046.sh
cd ${PBS_O_WORKDIR}
mpirun –n 8 -hostfile $PBS_NODEFILE ./MPI.exe
67
プログラムの実行(バッチ実行)
t2sub -N ジョブ名 -q 投入先キュー ジョブスクリプト
※詳細は「TSUBAME2.5利用の手引き」を参照
http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/index.html
例1. 単一ジョブ
$ t2sub -q U –W grop_list=t2gxxxx sample.sh
例2. 並列ジョブ(OpenMP, ptheread)
OpenMP,スレッドなどを使用し、4CPU使用したい場合
$ t2sub –q U –l select=1:ncpus=4 sample_parallel.sh
例3. 並列ジョブ(MPI)
MPIを使用し、4CPU使用したい場合
$ t2sub –q U –l select=1:ncpus=4:mpiprocs=4 ./mpi.sh
※メモリを使用する場合は :mem を必ずつけてください
(2.5Gbyteを使う場合には mem=2500mb、15Gbyteの場合は mem=15gb とします)68
バッチキューの確認
• ジョブが投入されていることを確認
> t2stat
Job id
Name
User
---------------- ---------------- ---------------151305.t2zpbs-vm1 OTHERS
xxM12345
> t2stat -a (オプションを付けると情報が増えます)
Time Use S Queue
-------- - ----0 Q U
• ジョブを消去
> t2sub -q U -l select=1 ./job.sh
151305.t2zpbs-vm1
<---- これがジョブ番号になります
> t2del 151305.t2zpbs-vm1
実行中の場合は、
> t2del -W force 151305.t2zpbs-vm1
※すぐに削除されない場合もあります。少し時間をおいて確認してください。
69
プレミアサービス
lV (定額)
利用枠をCPU数に換算します
計算式 : 利用可能並列数 = 64 × ユニット数 ÷ 課金係数
lU (従量課金キュー)
課金で精算されます
計算式 : 料金 × 課金係数
課金係数一覧(計算に使用)
p0
(普通)
V/U
et 0 (1時間)
l利用方法(t2subにて)
-p wait時の優先順位の指定
p0<p1<p2
-et 最大時間の延長
et 1 (1日)
0.9
1(デフォルト)
P1
P2
(優先) (最優先)
1.8
3.6
2
4
et 2 (2日)
2
4
8
et 3 (4日)
4
8
16
※et使用は繁忙期のみ(12~2)
n使用例
$ t2sub –W group_list=t2gxxxx -et 2 -l walltime=48:0:0 ./job.sh
$ t2sub –W group_list=t2gxxxx –p 2 –et 3 -l walltime=96:0:0 ./job.sh
※walltime は必須(et使用時)
70
プログラムの実行サイズ
l 実行時のメモリサイズの調べ方
例1. 配列を静的に確保している場合
>
pgsize a.out
:
1161 .strtab
3221238694 Total
3.2Gbyteなので :mem=3300mbとする
例2. 配列を動的に確保している場合
topコマンドを使用
ただし、確認終了後はすみやかにプログラムを停止
( q を入力して終了)
71
プログラムの強制終了
l 実行中のジョブのプロセス番号の確認
例1. psコマンドによる確認
> ps -ef | grep userA030
userA030 8767 8765 0 16:09 ?
userA030 8770 8768 0 16:09 ttywe
userA030 9718 8770 99 16:11 ttywe
00:00:00 sshd: userA030@ttywe
00:00:00 /bin/bash -l
00:00:05 ./sample10a
例2. Topコマンドによる確認
> top
PID
9718
15555
6504
USER
userA030
sgeB0531
necapps
PR
25
15
16
NI VIRT RES SHR S %CPU %MEM
TIME+
0 720m 245m 61m R
99 0.4
0:01.63
0 104m 97m 1656 S
8 0.2
2822:25
0 28376 24m 828 S
2 0.0 492:33.64
COMMAND
sample10a
sge_execd
top
l Kill コマンドの実行
> kill 9718
とします。これで終了しない場合は
> kill -9 9718
とします。これでも終了できない場合は soudan 宛てに連絡してください。
72
処理情報収集コマンド(1)
lログインしているユーザーを表示(whoコマンド)
$ who
root
tram
userA030
userD019
pts/0
ttyp0
ttyp1
ttyp3
May 9 22:16 (172.17.74.227)
May 12 17:32 (login1)
May 12 16:35 (login1)
May 15 13:14 (login2)
:
lログインユーザーの状態を表示(wコマンド)
$ w
14:29:43 up 7 days, 2:59, 15 users, load average: 4.03, 3.85, 3.72
USER
TTY
LOGIN@
IDLE
JCPU
PCPU WHAT
root
pts/0
Tue22
2days 0.06s 0.06s -bash
tram
ttyp0
Fri17
2days 22:38
0.02s /bin/csh -f ./burnGd.csh
necapps ttyp5
10:26
19:02
0.05s 0.04s /bin/bash
:
73
処理情報収集コマンド(2)
l実行jobを表示(topコマンド)
$ top
top - 16:06:02 up 7 days, 19:51, 14 users, load average: 4.26, 3.62, 3.28
Tasks: 880 total,
5 running, 873 sleeping,
1 stopped,
1 zombie
Cpu(s): 16.7%us, 0.0%sy, 0.0%ni, 83.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:
54450M total,
39452M used,
14998M free,
283M buffers
Swap:
2055M total,
0M used,
2055M free,
34314M cached
PID
4807
9704
1
2
USER
aaniecxx
necapps
root
root
:
PR
25
16
16
RT
NI VIRT RES SHR S %CPU %MEM
0 3802m 920m 7632 R
94 1.4
0 4284 1416 828 R
0 0.0
0
640 260 216 S
0 0.0
0
0
0
0 S
0 0.0
TIME+
1758:03
0:00.13
0:36.48
0:00.53
COMMAND
molprop_2010
top
init
migration/0
※ q を押して終了
l実行jobを表示(psコマンド)
$ ps aux
$ ps aux | grep necapps
74
利用環境
lシェル
l環境変数
lTCP/IP
l UNIX上での代表的なサービス
lファイル転送
lX-windowシステムの特徴
lクライアント/サーバ
75
シェル
— コマンドを実行する事が出来る環境をシェルと呼ぶ
— 環境は、ユーザの好みに合わせて変更できる
— サポートしている主なシェルは以下のとおり
– sh (ボーンシェル)
– bash
– csh
– tcsh
(TSUBAME2にて)
76
環境
l ログインシェルはbash(/etc/passwdファイルを編集、または chsh)
l 起動時に確認する設定ファイルの順番
n /etc/profileおよび/etc/bashrc
n ~/.bash_profile
n ~/.bash_login(~/.bash_profileがなければ)
l
対話ログインは、~/.bashrcが読み込まれる
l 個人設定ファイル~/.bashrcの編集
PATH="/usr/games:$PATH"
export PATH
l 編集後に有効にするには再ログインか source .bashrcとする
l aliasもここに書いておくとよい。
l 変更する場合は、良く確認してから更新してください
また、新しいターミナルで必ず確認してください
77
HISTSIZEシェル変数
History機能
— 今までに使用していたコマンド履歴を決められた数だけ保存。
— コマンド実行時に有効に再利用できるようにする。
— 保存したいコマンド履歴の数は、任意の数を選べる。
— コマンド履歴は、この機能を有効にしてから保持。
設定例
$ export HISTSIZE=500 ⇒ コマンド履歴サイズを500にする
$ history 3 ⇒ ヒストリリストを3件表示する
534
535
536
cd
ls
history 3
78
PATH変数
— コマンド等の検索場所を設定
独自に作成したコマンド、プログラム等の保存場所を指定
$ ls
a.out omp.f90 ompT
$ a.out
bash: a.out: command not found
$ PATH=$PATH:.
$ a.out
computed pi=
3.141592653589814
FORTRAN STOP
$
※ .bashrc 等に記述しておけば毎回有効になる
79
TCP/lP
— Transmission Control Protocol,lnternet Protocol
— インターネットやイントラネットで標準的に使われるプ
ロトコル。
米国防総省が、核攻撃で部分的に破壊されても全体が停止することの
ないコンピュータネットワークを開発する過程で生まれた。
— プロトコルとは
ネットワークを介してコンピュータ同士が通信を行なう上で、
相互に決められた約束事の集合。通信手順、通信規約などと
呼ばれることもある。
(e-word.jpより引用)
80
UNIX上での代表的なサービス
l ファイル転送
l リモートログイン (p.17参照)
l X-Window
l 電子メール --- (以下の詳細は省略) --l Webクライアント
l NIS (Network Information Service)
l DNS (Domain Name System)
l NFS (Network File System)
81
ファイル転送
l ネットワークで接続されたシステムをTCP/IPではホスト
と呼ぶ。
l このホスト間では、簡単に他のホストのファイルをコ
ピーできる。
l この機能を使用するためのコマンド
→ ftp,rcp
→ sftp,scp
l 本学ではsftpまたはscpを導入
82
sftp/scpコマンドの例
$ sftp [email protected]
[email protected]'s password:
Connected to login-t2.g.gsic.titech.ac.jp.
sftp> dir
a1.sh
abaqus.rpy
share_file
tmp
sftp> get a1.sh
Fetching /home5/usr05/toukou-t-yj/a1.sh to a1.sh
/home5/usr05/toukou-t-yj/a1.sh
100%
12
sftp> quit
0.0KB/s
00:00
$ scp [email protected]:/home5/usr05/toukou-t-yj/ren.tex .
Password:
ren.tex
100% 221
0.2KB/s
00:01
$
83
sshコマンドの例
lログイン名を指定してのログイン
$ ssh -Y login-t2.g.gsic.titech.ac.jp -l toukou-t-yj
[email protected]'s password:
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jan 25 08:35:52 2011 from 172.17.74.211
toukou-t-yj@t2a006161:~>
(ssh -Y [email protected]としても同じ)
l使用マシンのアカウントのログイン名がTSUBAMEと同じ場合のログイン
$ ssh -Y login-t2.g.gsic.titech.ac.jp
Password:
Last login: Tue Jan 25 09:47:14 2011 from 172.17.74.211
toukou-t-yj@t2a006161:~>
84
X-Windowシステムの特徴
l UNIXをはじめ多くのOSで使用
l US MITで開発
l ハードウェアに依存しない
uLinux/Macintoshは標準装備
uWindows用のソフトも多数
→ Windows用Xサーバーソフト(フリー) cygwin
http://tsubame.gsic.titech.ac.jp/node/360
85
クライアント/サーバ
l X-Windowのアプリケーションの動作
→ クライアントプログラム、サーバプログラム
l Xプロトコルという独自の通信手順
→ クライアント/サーバ間のデータのやり取り
u サーバ側(表示される側)
どのシステムからの表示要求を許すかを定義
% xhost +クライアントホスト名
u クライアント側(表示させる側)
DISPLAY環境変数を指定
% export DISPLAY=サーバホスト名
86