smith 計算機システムの使い方

SMITHクラスタ計算機システムはインテルまたは互換CPUを用いた計算機システムです。

ネットワーク構成

-- | 等はネットワークの接続を、[]でくくられた名前はコンピュータの名称をそれぞれ表す。

+ 工学部内 ODINS network
|
|           Backbone network( 工学部ネットワークから直接アクセスできない )
|               |
+- [smith] -----+                          133.1.116.161 ログイン&アプリケーションサーバー & ファイルサーバー
+- [rafiki] ----+                          133.1.116.162 ログイン&アプリケーションサーバー & バックアップ
+- [tiamat] ----+                          133.1.116.211 ログイン&アプリケーションサーバー
|               |
|               |  ■現役ノード■
|               +-- [xe00], [xe01]         計算サーバー グループ4  (各ノード 8CORE (2CPU)) 並列環境=x8  キュー=xe1.q
|               +-- [xe02]-[xe06]          計算サーバー グループ5  (各ノード12CORE (2CP)U) 並列環境=x12 キュー=xe1.q
|               +-- [xe02]-[xe06]          計算サーバー グループ5  (各ノード12CORE (2CPU)) 並列環境=x12 キュー=xe1.q
|               |
|               +-- [xs01]-[xs18]          計算サーバー グループ8  (各ノード16CORE (2CPU)) 並列環境=x16 キュー=xs2.q
|               |
|               +-- [xi01]-[xi12]          計算サーバー グループ9  (各ノード16CORE (2CPU)) 並列環境=x16 キュー=xi1.q
|               |
|               +-- [xh01]-[xh17],[xh19]-[xh34]
|               |                          計算サーバー グループ10 (各ノード16CORE (2CPU)) 並列環境=x24 キュー=xe1.q
|               +-- [xh18],[xh35]-[xh43]   計算サーバー グループ11 (各ノード24CORE (2CPU)) 並列環境=x24 キュー=xh2.q
|               +-- [yh01]-[yh03]          計算サーバー グループ12 (各ノード24CORE (2CPU)) 並列環境=x24 キュー=yh1.q 濱本先生専用
|               +-- [xb01]-[xb14]          計算サーバー グループ13 (各ノード32CORE (2CPU)) 並列環境=x32 キュー=xb1.q
|               +-- [x1701]-[x1706]        計算サーバー グループ14 (各ノード32CORE (2CPU)) 並列環境=x32 キュー=x17.q
|               |
|               |  ■引退ノード■
|               +-- [it??]-[it??]          計算サーバー グループ0 (itanium)
|               +-- [opt00], [opt01]       コンパイルサーバー(opteron,opt01)
|               +-- [opt02]-[opt11]        計算サーバー グループ1 (各ノード2CORE (2CPU)) mpich-opt (opt02-opt11 停止中)
|               +-- [opt12]-[opt21]        計算サーバー グループ2 (各ノード4CORE (2CPU)) 並列環境=mpich-opt2
|               +-- [opt22]-[opt36]        計算サーバー グループ3 (各ノード4CORE (2CPU)) 並列環境=mpich-opt3
|               +-- [xeon00] ----+         サブログイン・計算サーバー (ノード8CORE (2CPU))         
|               |                +--- [xeon01-07] 計算サーバー グループ6 (各ノード8CORE (2CPU))
|               |
|               |
+- [sb100] -----+                          133.1.116.165 別グループ計算サーバー
                |
                +-- [sb101]-[sb120]        計算サーバー グループ7 (各ノード6CORE (1CPU)) 並列環境=

ログインサーバー

  • [smith] 133.1.116.161
  • [rafiki] 133.1.116.162
  • [tiamat] 133.1.116.211 の3台がログインサーバーです。smithにファイルサーバーの機能が設定されており、どのログインサーバにログインしても同じホームディレクトリになります。ファイルサーバーは毎日深夜にバックアップサーバーの/backup_homeにバックアップされています。間違って消去したファイルでも、そこに保存されていればコピーして再生できます。
  • [sb100] 133.1.116.165 はsb100システムのログインサーバーです。

ログイン方法

smithにログインする場合

ssh -l [userID] 133.1.116.161

または

ssh [userID]@133.1.116.161

X11 のフォワーディングを許可する場合

ssh -Y -l [userID] 133.1.116.161

または

ssh -Y [userID]@133.1.116.161
を実行する。現状では
-bash: /usr/local/g09/D01/g09/bsd/g09.profile: Permission denied

というメッセージが出るが、通常の作業に影響は無いので無視する。 初めてログインする際には

passwd

を実行してパスワードを変更すること。

公開鍵の登録方法

ローカルホストで以下を実行

ssh-keygen

デフォルトでは秘密鍵と公開鍵がそれぞれ .ssh/id_rsaと .ssh/id_rsa.pubの名前で保存される。 次に.ssh/id_rsa.pubの内容をリモートホストの .ssh/authorized_keysに追加する。 (スパコンセンターではwebページを通じて公開鍵を登録することが多い) 森川研では公開鍵を登録するwebページが無いので

cat id_rsa.pub

でid_rsa.pubの内容をターミナルで表示、コピーし、リモートホストのauthorized_keysにコピーする。

ジョブキューイングシステムとは?

  • システムで計算を実行するには、計算したい内容をジョブスクリプトファイルに書いてジョブキューイングシステムに投入する必要があります。
  • ジョブ管理システムはSGE(Sun Grid Engine)です。(OGS/GE 2011.11)
  • ジョブは、指定したグループの空いている計算機に自動的に割り当てられて実行されます。
  • 空きが足りない場合は、他のグループに空きがあっても実行されず、他のジョブの終了を待つことになります。
  • 同じ能力を持つ計算ノードはクラスごとにまとめられています。ジョブ投入時にクラスを指定します。

設定上の重要な点

  • .cshrcの中にcdのaliasが記載されている場合がありますが、削除しないとインテルFortran/MPIの初期設定でエラーが生じ正常に実行できません。削除してください。

複数ノードを用いた並列計算について

  • 用いるノード(コア)の数を増やすと自動的に並列度が上がりますが、グループ8,13以外のシステムの通信はギガビットイーサネットで実装されていますので、あまり速くありません。ノード間通信を含む並列計算はあまり有効ではありませんのでご注意ください。グループ8,13ではINFINIBANDが実装されています。並列計算の効率が向上することが期待されます。

ジョブの投入(実行)方法

  • 実行にはキューと並列環境(parallel_environment)を指定する必要があります。ジョブスクリプトrun.cshをグループ10に投入する場合、下記のようになります。
   qsub -q xh1.q  -pe x24 24 run.csh

ジョブの状態を見るには

   qstat

を実行します。特定のユーザのジョブの状態を見るには

   qstat -u [user name]

ジョブをキャンセルするには

  qdel [job ID]

を実行します。Job IDはqstatで表示される1コラム目の数字です。

  • 計算機グループと対応するキュー及び並列環境
              プロセッサの種類     ノード内   ジョブ投入            キュー  並列環境   ノード間
                           コア数/CPU数 サーバー                             並列ファブリック
・グループ4 xeon                 8/2       smith/rafiki/tiamat     xe1.q     x8
・グループ5 xeon                12/2       smith/rafiki/tiamat     xe2.q     x12
・グループ7 core i7 sandy-bridge  6/1       sb100                   all.q     x6
・グループ8 xeon sandy-bridge   16/2       smith/rafiki/tiamat     xs2.q     x16
・グループ9 xeon ivy-bridge     16/2       smith/rafiki/tiamat     xi1.q     x16
・グループ10 xeon Haswell        24/2       smith/rafiki/tiamat     xh1.q     x24       infini-band
・グループ11 xeon Haswell        24/2       smith/rafiki/tiamat     xh2.q     x24       infini-band
・グループ12 xeon Haswell        24/2       smith/rafiki/tiamat     yh1.q     x24
・グループ13 xeon Broadwell      32/2       smith/rafiki/tiamat     xb1.q     x32       infini-band
・グループ14 xeon Skylake         32/2       smith/rafiki/tiamat     x17.q     x32       infini-band
  • グループ8のsb??? にジョブを投入するときは、sb100でqsubコマンドを実行してください。
  • それ以外のグループ にジョブを投入するときは、smithでqsubコマンドを実行してください。
  • ジョブスクリプトの書き方については、下の各グループごとの説明中に「ジョブスクリプトファイルの例」で説明しています。

各グループ

グループ4,5 xeシステム

  • xeon CPUで構成される計算機グループで、x8, x12 の2 parallel_environmentからなります。各ノードは2CPU(計8または12core)で構成されています。
  • ジョブスクリプトファイルの例
     #!/bin/csh
     #$ -cwd
     #$ -pe x12 12
     #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
     mpirun  -np $NSLOTS ./STATE_A < nfinp > nfout
    • -cwd はジョブを投入した時のディレクトリがジョブ開始時のディレクトリになることを指示するオプションです。
    • 上のx12(またはx8)はx12(またはx8)にジョブ投入することを示し、後ろの12が計算に用いるCOREの数を示すオプションです。x12は12、x8は8でないと実行されないようになっていますので注意してください。
    • -Nオプションでジョブの名前を指定できます。(先頭文字は英字です。)
    • STATE_AにはSTATEの実行ファイルをジョブ投入前にリンクしておいてください。
    • また、fort.37等、擬ポテンシャルのファイルも同様にリンクしておいてください。
  • コンパイル
    • コンパイルはxe00にログインしてifortコマンドまたはmpi並列の場合はmpif90コマンドにより行います。
    • STATEユーザーはxe用のMakefileを使用してコンパイルできます。
  • xe??にログインするには?
    • rsh xe00 等でOKです。
  • ライブラリ
    • MKL が利用できます。

ifort xe2011(version12) のインストール記LinuxTipsも参照。

グループ7 sb100システム

  • Sanday-bridge アーキテクチャーのCore i7 CPUで構成される計算機グループです。各ノードは1CPU(6core)で構成されています。メモリは16GBです。
  • AVX機能があり高速に計算できますが、組み込んだ新しいコンパイラの制限?(バグ?)のためコンパイルが正常に終了しません。特定のファイルだけ最適化レベルを落としてコンパイルする必要があります。エラーが出たら、CPPSRCフォルダに移動して、make.sysに書かれているオプションを設定し、最適化レベルだけ-O0にして手動でコンパイルしてください。分からなければ、他の人のSTATEバイナリをコピーして使ってください。
  • smithのデータを直接見れます。/home2にsmithの/homeをNFSリンクしていますのでアクセス可能です。
  • スクリプトの例(cshのみしか使えません)
    • ハイブリッド並列(12コア確保、各ノードにプロセス確保、プロセスごと6-OMPスレッド)
      #!/bin/csh -f
      #$ -pe x6 12
      #$ -cwd
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      setenv OMP_NUM_THREADS 6
      ln -fs ~/STATE/src/STATE_5.4.1/wrksrc6i5_/STATE .
      mpirun  -perhost 1 -np $NHOSTS ./STATE < nfinp > nfout
    • フラット並列(12コア)
      #!/bin/csh -f
      #$ -pe x6 12
      #$ -cwd
      #$ -N JOBNAME
      ln -fs ~/STATE/src/STATE_5.4.1/STATE .
      mpirun -np $NSLOTS ./STATE < nfinp > nfout

グループ8 xsシステム

  • Sanday-bridge アーキテクチャーのXeon CPUで構成される計算機グループです。各ノードは2CPU(計16core)で構成されています。メモリは32GBです。
  • AVX機能があり高速に計算できます。
  • スクリプトの例(cshのみしか使えません)
    • ハイブリッド並列(32コア確保、各ノードにプロセス確保、プロセスごと4-OMPスレッド)
      #!/bin/csh -f
      #$ -cwd
      #$ -q xs2.q
      #$ -pe x16 32
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      source /opt/settings/2017.1/intel-compiler.csh
      source /opt/settings/2017.1/intel-mpi.csh
      setenv I_MPI_PIN     4 
      #setenv I_MPI_FABRICS shm:dapl 
      #setenv I_MPI_FABRICS shm:ofa
      setenv I_MPI_FABRICS shm:tcp
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1
  • フラット並列(32コア)
    #!/bin/csh -f
    #$ -cwd
    #$ -q xs2.q
    #$ -pe x16 32
    #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
    #$ -j y
    source /opt/settings/2017.1/intel-compiler.csh
    source /opt/settings/2017.1/intel-mpi.csh
    setenv I_MPI_PIN     1                          
    #setenv I_MPI_FABRICS shm:dapl 
    #setenv I_MPI_FABRICS shm:ofa
    setenv I_MPI_FABRICS shm:tcp
    #setenv I_MPI_DEBUG 7
    ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
    ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
    ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
    setenv OMP_NUM_THREADS         1                  ←ココが違うだけ
    cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
    mpirun  ./STATE < nfinp_1 > nfout_1

グループ9 xiシステム

  • 大容量なメモリ・localディスク搭載機です。gaussian計算はここで実行するのがよい。
  • Ivy-bridge アーキテクチャーのXeon CPUで構成される計算機グループです。各ノードは2CPU(計16core)で構成されています。メモリは128GBです。
  • AVX機能があり高速に計算できます。
  • スクリプトの例(cshのみ)
    • フラット並列(32コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q xi1.q
      #$ -pe x16 32
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      source /opt/settings/2017.1/intel-compiler.csh
      source /opt/settings/2017.1/intel-mpi.csh
      setenv I_MPI_PIN     1                          
      #setenv I_MPI_FABRICS shm:dapl 
      #setenv I_MPI_FABRICS shm:ofa
      setenv I_MPI_FABRICS shm:tcp
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                  ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1

グループ10、11、12 xhシステム

  • Haswell アーキテクチャーのXeon CPUで構成される計算機グループです。各ノードは2CPU(計24core)で構成されています。メモリは64GBです。
  • グループ10内ではINFINIBANDによる並列計算が可能
  • グループ11内ではINFINIBANDによる並列計算が可能
  • AVX機能があり高速に計算できます。
  • スクリプトの例(cshのみ)
    • フラット並列(48コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q xh1.q
      #$ -pe x24 48
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      source /opt/settings/2017.1/intel-compiler.csh
      source /opt/settings/2017.1/intel-mpi.csh
      setenv I_MPI_PIN     1           
      setenv I_MPI_FABRICS shm:tcp                       ← xh1 の場合 shm:dapl or shm:ofa でinfinibandが使えます
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                  ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1

グループ13 xbシステム

  • Broadwell アーキテクチャーのXeon CPU(Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計32core)で構成されています。メモリは64GBです。
  • スクリプトの例(cshのみ)
    • フラット並列(64コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q xb1.q
      #$ -pe x32 64
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      source /opt/settings/2016.4/intel-compiler.csh
      source /opt/settings/2016.4/intel-mpi.csh
      setenv I_MPI_PIN     1                             
      setenv I_MPI_FABRICS shm:dapl                      ← shm:ofa 
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE    ← STATEの適切なバージョンを使用
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                   ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1

グループ14 x17システム

  • SkylakeアーキテクチャーのXeon CPU(Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計32core)で構成されています。メモリは96GBです。
  • スクリプトの例(cshのみ)
    • フラット並列(2ノード64コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q x17.q
      #$ -pe x32 64
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      source /opt/settings/2016.4/intel-compiler.csh
      source /opt/settings/2016.4/intel-mpi.csh
      setenv I_MPI_PIN     1                             
      setenv I_MPI_FABRICS shm:dapl                      ← shm:ofa 
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE    ← STATEの適切なバージョンを使用
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                   ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1

コンパイル

  • コンパイラの環境設定: ホームディレクトリにある.bashrc(lsでは見えません。ls -laとすると見えます。)に2行を追加して下さい。
    source /opt/settings/2016.4/intel-compiler.sh
    source /opt/settings/2016.4/intel-mpi.sh
  • 最新版のコンパイラを使用したい場合は以下を追加して下さい(STATEの最新版では2016.4版(上記)の使用を推奨)。
    source /opt/settings/2017.1/intel-compiler.sh
    source /opt/settings/2017.1/intel-mpi.sh
  • インクルードファイルmake.arhをSTATEソースのディレクトリに置いてmakeしてください。
  • make.archの例
    ##################################  for (Xeon,smith) #################################
    F90    = mpiifort
    LINKER = mpiifort
    OMP    = -qopenmp
    OPT3   =
    FLAGS  = $(OMP) $(OPT3) -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX,SSE4.2,SSE4.1,SSSE3,SSE3,SSE2 -fixed -extend_source
    FLAGG  = $(OMP) $(OPT3)
    FLAGD  = $(OMP) 
    FFTW_DIR=$(MKLROOT)/include/fftw
    INCLUDE = -I$(FFTW_DIR) 
    #for intelmpi
    LIBS   = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -mkl=parallel
    CPPDIR  = /usr/bin
    CPP     = $(CPPDIR)/cpp -P -C -traditional
    ##for intelmpi
    P_FLAGS  = -D_INTEL_DAVIDSON_ -D_MKL_FFTW_ -D_FFTW3_ -D_TIMER_ -D_OPENMP_FUNC_ -D_SCALAPACK_ \
               -D_ALLGATHERV_NOOVERLAP_
    ################################################################################

過去の情報はSmithシステムの使い方 (旧) を参照して下さい。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS