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
© Copyright 2026 Paperzz