共通計算機の使用マニュアル

IP addressの使用状況

サーバー室の温度モニター

GWマシン anago [133.3.134.16] について

学外からMSS_Project_LAN[10.249.84.0/255.255.255.0]へanago.cheme.kyoto-u.ac.jp [133.3.134.16] を経由して到達するには、以下の2つの方法がある。いずれもanagoのrootで作業する必要があるので、希望者は管理者(山本量一:ryoichi@cheme.kyoto-u.ac.jp)に連絡すること。

  • SSH
  • アカウント(user_name)の追加はsuになり以下の通り。
       /usr/sbin/useradd -m user_name
       passwd user_name
  • パスワードの変更は各自のIDでログイン後に以下のようにする。
       passwd
  • Windowsからの接続はコマンドプロンプトから以下のようにする、あるいはSSHのクライアントソフト(ex. putty)を別途インストールする。
       ssh anago.cheme.kyoto-u.ac.jp -l user_name
      又は
       ssh user_name@anago.cheme.kyoto-u.ac.jp
  • 外部からsshでanagoに入り,研究室のマシンにmagic packetを送る(WOLで起動する)ことが出来ます。
       wakeonlan ##:##:##:##:##:##   <-起動すべきマシンのMACアドレス

計算ノードについて

  • 新しい計算ノードが来たらすること
    • /etc/profile.d/psxevers.*sh -> /opt/intel/psxevars.*sh にリンクを張る。
# rsh newhost "ln -s /opt/intel/psxevars.* /etc/profile.d/."

ホストマシン ebi [10.249.84.174] について(ファイルサーバー、コンパイル、ジョブの投入)

File System

  • ユーザーデータ

    /home/user_name/  ホームディレクトリ(4.3TB)

    /home1/user_name/  大きなデータの保管領域(16.9TB)

    /home2/user_name/  大きなデータの保管領域(3.3TB)

    /home3/user_name/  大きなデータの保管領域(19.5TB)

  • ディレクトリの使用量を調べるコマンド
     du -skm *|sort -nr
    例えば、個人のディレクトリ使用量を調べるときは
     du -sh /home/(username)
  • アプリケーション

    /opt/intel/  インテルコンパイラ

    /usr/sge/  Sun Grid Engine

tako**, ika**へのジョブの投入

  • 並列環境

    OpenMP, Cluster-OpenMP, MPIが使えます。

    ノード間並列する際は、コア数の指定はノードのコア数の倍数としてください。(takoは8コア、ikaは4コア、tunaは4コア、uniは12コア、ajiは16コア。)

    並列環境オプション(-pe)はtakoでは openmp, cluster-openmp-8, mpi-8、ikaではopenmp-4, cluster-openmp-4, mpi-4です。(uniでは数字のところが12)

  • キューの種類 (オプション -q で指定)

    tako3.q : シングル・並列計算共用(8コア)。ノードはtako10--15。

    ika0.q : シングル・並列計算共用(4コア)。ノードはika00--0a。

    ika1.q : シングル・並列計算共用(4コア)。ノードはika10--1m。

    tuna0.q : シングル・並列計算共用(6コア)。ノードはtuna00--0n。

    uni1.q : 並列計算専用(12コア)。ノードはuni00--06。

    aji1.q : 並列計算専用(16コア)。ノードはaji00--05。

    sanma1.q : 並列計算専用(24コア)。ノードはsanma00--01。

  • スクリプトファイル (run.sh) の例

    tako3.qで8CPUのOpenMPの計算を投げる場合 *1

   #!/bin/sh
   #$ -S /bin/sh        #シェルの指定
   #$ -N username     #ジョブ名の指定
   #$ -cwd                #カレントディレクトリでジョブを実行
   #$ -j y                  #標準出力と標準エラーを1つのファイルに保存
   #$ -q tako3.q         #使用キューの指定
   #$ -pe openmp 8    #並列環境と使用プロセス数の指定
   #$ -v OMP_NUM_THREADS=8 # スレッド数の指定(環境変数を指定する場合は -v を使う)
   # run
   ./a.out

tako3.qで32CPUのMPIの計算を投げる場合

  #!/bin/sh
  #$ -S /bin/sh
  #$ -N username
  #$ -cwd
  #$ -j y
  #$ -q tako3.q
  #$ -pe mpi-8 32
  #
  echo "=== START ==="
  date
  awk '{print $1;}' $PE_HOSTFILE > mpd.hosts  #並列環境のホスト名を取得
  mpdboot -n 4 -f mpd.hosts          #各ホストでmpdを起動
  mpiexec -n 32 -env I_MPI_DEVICE sock ./a.out #MPI計算の実行
  mpdallexit                  #mpdの終了
  echo "=== END ==="
  date

tako3.qで24CPUのCluster-OpenMPの計算を投げる場合 *2

   #!/bin/sh
   #$ -S /bin/sh         #シェルの指定
   #$ -N username    #ジョブ名の指定
   #$ -cwd                   #カレントディレクトリでジョブを実行
   #$ -j y                      #標準出力と標準エラーを1つのファイルに保存
   #$ -q large.q           #使用キューの指定
   #$ -pe cluster-openmp-8 24  #並列環境と使用プロセス数の指定
   # make initial file (kmp_cluster.ini)
   echo -n "--hostlist=" > kmp_cluster.tmp
   awk '{ printf $1",";}' $PE_HOSTFILE >> kmp_cluster.tmp
   echo "--process_threads=8" >> kmp_cluster.tmp
   sed 's/,--process_threads/ --process_threads/g' kmp_cluster.tmp > kmp_cluster.ini
   rm kmp_cluster.tmp
   # run
   ./a.out

ジョブの投入と管理

ジョブの投入はebiから行います。Grid Engineの基本的なコマンドは以下のようです。

  • qsub: ジョブの投入コマンド。例えば,スクリプトファイル run.sh を投入する場合
       qsub run.sh
  • qstat: ジョブの状態を確認。(オプション -f でキュー毎のジョブの状態を確認。)
  • qhost: ノードの状態を確認。

OpenMP並列のジョブを投入するときの注意点

qsub でOpenMP並列のジョブを投入すると、例えば

 #$ -pe openmp 2

などとCPU数を指定したとしても、その数ではなく、デフォルト値(ika=4, tako=8, uni=12)の並列数のジョブが流れます。別途OMP_NUM_THREADSの値を設定する必要があり、以下の行をスクリプト内に書けば設定できます。

 #$ -v OMP_NUM_THREADS=2

Intelコンパイラのバージョンアップメモ

  • download and place ###.tgz in ebi:/work.
    tar xvfz  ###.tgz
    cd ###
    sh ./install.sh
  • /opt/intel/psxevars.*shを確認し、最新版に正しくリンクを張り直す。このファイルは各ノードの/etc/profile.d/psxevers.*shからシンボリックリンクが貼られており、ログイン時に自動的にbash、cshに反映される。

新規ユーザーを追加する

  • ebiでスーパーユーザになり以下を実行。
   # /usr/sbin/useradd -m USERNAME
   # passwd USERNAME
   # cd /var/yp; make
  • パスワードの変更は、各自のアカウントでログイン後に以下のコマンドで行なう。
   yppasswd

NISの設定

  • ebiはNISのプライマリサーバー
   NISドメイン: jstcrestmss
   NISサーバー(master): ebi: 10.249.84.174, 172.16.2.201
   NISサーバー(slave): shake: 10.249.84.173, 172.16.20.201

NFSの設定

  • ebi:/homeは10.249.84.0/255.255.255.0に対してNFSマウントを許可している。
  • ebiとホームディレクトリを共有にしたければクライアントマシンでNFSの設定を行う。

SAMBA

  • Workgroup => HYMD
  \\ebi\pub (public directory for 1koza members) guestアクセス可
  \\ebi\hymd (public directory for MSS members) guestアクセス可
  \\ebi\your_ID (your home directory) パスワード登録が必要
  • ウインドウズマシンからebiの自分のhomeディレクトリを参照したければSambaにパスワードを登録する。
  • SWATによる設定 [http://10.249.84.174:901/]
  • SWAT->PASSWARD->ローカルマシンのパスワード管理->新規ユーザー追加
  • コントロールパネル>資格情報の管理->Windows資格情報->[Windows資格情報]
     インターネットまたはネットワークのアドレス: ebi
     ユーザー名: (ebiの自分のアカウント名)
     パスワード: (sambaに登録したパスワード)  

HDF5

  • ebi:/opt/hdf5.1.8にhdf5-1.8.4-patch 1 をインストール。
  • /opt/hdf5.1.8/binにPATHを追加すれば、h5fcやh5ccでHDF5コードを含んだFortranとCのソースファイルがコンパイルできる。
  • h5fcやh5ccで実際に使われているコンパイラとフラッグは"h5fc -show"で確認できる。
  • (注)c++用のスクリプト作成は成功しなかった。

ホストマシン shake [10.249.84.173] について(ファイルサーバー、コンパイル、ジョブの投入)

  • アプリケーション

    /opt/intel/  インテルコンパイラ

    /usr/sge/  Sun Grid Engine

    /usr/local/cuda CUDA

ikura0*(GPUマシン)へのジョブの投入

  • 並列環境

    OpenMPが使えます。

    ノード間並列する際は、コア数の指定はノードのコア数の倍数としてください。(ikuraは4コア)

    並列環境オプション(-pe)はikuraでは openmp です。

  • キューの種類 (オプション -q で指定)

    all.q : シングル・並列計算共用(4コア)。ノードはikura00--ikura0b。

  • スクリプトファイル (run.sh) の例

    all.qで8CPUのOpenMPの計算を投げる場合

   #!/bin/sh
   #$ -S /bin/sh        #シェルの指定
   #$ -N username     #ジョブ名の指定
   #$ -V              #qsubを実行したシェルの環境変数を反映
   #$ -cwd                #カレントディレクトリでジョブを実行
   #$ -j y                  #標準出力と標準エラーを1つのファイルに保存
   #$ -q all.q         #使用キューの指定
   #$ -pe openmp 4    #並列環境と使用プロセス数の指定
   #$ -v OMP_NUM_THREADS=4 # スレッド数の指定(環境変数を指定する場合は -v を使う)
   # run
   ./a.out

!!ここから下は古い情報!!

緊急にジョブを投入する必要がある場合

qsubでジョブを投入してもなかなか自分のジョブが流れず、〆切までにデータが間に合わない、ということがあると思います。 そのときは、tako_all.q または ika1_all.q を使用すれば、優先してジョブを投入することが可能です。ただし、このキューを使用すると、takoまたはika1で、すでに実行中のジョブが停止されてしまうので、あなたの代わりに誰かが犠牲になります。使用する前に、「緊急にジョブを投入する必要が生じたので、○○さん、ジョブを停止してよいですか?」とあらかじめ確認しましょう。もしかしたら、○○さんも緊急のジョブを走らせているかもしれません!

○○さんのジョブが例えばtako01で動いていた場合(qstatで確認すること)でかつ、○○さんからジョブを止めていいと了承が得られた場合を想定します。以下をスクリプトファイル内で宣言してください。

 #$ -pe tako_all.q@tako01  #tako01は○○さんのジョブが流れていたマシン

これを記述したスクリプトをqsubで実行すると、○○さんのジョブがサスペンド状態になり、あなたのジョブが実行されます。あなたのジョブが終われば、○○さんのジョブは再開されます。協力してくれた○○さんには必ずお礼をいいましょう。

注意:tako_all.q, ika1_all.q は後から投入されたものを優先して、先に動いているプログラムをすべて止めます。したがって、tako_all.q@tako01 で動かしていて、あとから別の人がtako_all.q@tako01 でジョブを投げたら、 先に動いていたジョブも止まってしまいます。tako_all.q を使う場合は必ずどのマシンを使うか事前に確認してから使うようにしましょう。

現在、tako_all.q, ika1_all.q はユーザの使用を制限しています。

  • tako_all.q, ika1_all.q の使用を許可する方法(rootのみ)
     root# qconf -au (username) deadlineusers
  • tako_all.q, ika1_all.q の使用を解除する方法(rootのみ)
     root# qconf -du (username) deadlineusers
  • tako_all.qについての注意
    tako_all.qに関してですが、tako[1-3].qと同じ用に使うことが可能です。 ただ明示的にホストを指定しない限りtakoのどのホストに入るかは判りませんの でアンバランスが生じる可能性があります。例えば tako_all.qでtako10-15の6 台を使いたい場合は -q "tako_all.q@tako1*" などとしてください(正規表現が 使えます)。 またtako[1-3].qはtako_all.qの従属キューになっていますので、tako_all.qが 使われると重なったジョブはサスペンドされジョブは止まってしまいます。 いわずもがなかとは思いますが、サスペンドされたジョブのメモリは開放いたし ません。足りなくなった場合は一時的に(サスペンドされたジョブが)swapはさ れるとは思いますがパフォーマンスに影響が出ますのでご注意ください。また swapはメモリの2倍程度とっているはずですが、それでも足りない場合はどちら のプロセスがkillされますが、どちらのジョブになるのかはそのときのOSの判断 によります。

*1 Cシェルだと "Warning: no access to tty (Bad file descriptor). Thus no job control in this shell." と出力されるので、Bシェルを指定するように変更しました。by 村島
*2 kmp_cluster.iniを作成する箇所を修正しました。by 村島