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

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

ログインサーバー

  • [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

を実行する。

sb100にログインする場合は同様に

$ ssh -l [userID] 133.1.116.165

などとすれば良い。

初めてログインする際には

$ 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に追加する。

コンパイル/実行環境の設定

従来のsmithとは異なり、コンパイラとライブラリの設定にはmoduleを使用します。 使用可能なモジュールを調べるためには

$ module available

を実行します。特定のモジュールをロードするためには以下を実行します。

$ module load intel/2020.2.254
$ module load intelmpi/2020.2.254
$ module load python/3.8

しログアウトするとこの設定は破棄されますので、~/.bashrcに記録しておきます。

module load intel/2020.2.254
module load intelmpi/2020.2.254
module load python/3.8

古いintelコンパイラ用の設定は以下のように

# source /home/opt/settings/2017.4/intel-compiler.sh
# source /home/opt/settings/2017.4/intel-mpi.sh

などとしてコメントアウト、あるいは削除することを忘れないようにしましょう。

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

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

設定上の重要な点

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

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

  • 用いるノード(コア)の数を増やすと自動的に並列度が上がりますが、ギガビットイーサネットで実装されているグループではあまり速くありません。ノード間通信を含む並列計算はあまり有効ではありませんのでご注意ください。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コラム目の数字です。

計算機グループと対応するキュー及び並列環境

  • smith/rafikiからアクセス可能なノード群
    グループプロセッサコア数/CPU数ジョブ投入サーバキュー並列環境ノード間並列ファブリック
    4xeon8/2smith/rafiki/tiamatxe1.qx8
    5xeon12/2smih/rafiki/tiamatxe2.qx12
    6xeon sandy-bridge16/2smith/rafiki/tiamatxs2.qx16
    7xeon ivy-bridge16/2smith/rafiki/tiamatxi1.qx16
    10axeon Haswell24/2smith/rafiki/tiamatxh1.qx24infini-band
    10bxeon Haswell24/2smith/rafiki/tiamatxh2.qx24infini-band
    10cxeon Haswell24/2smith/rafiki/tiamatxh3.qx24infini-band
    10dxeon Haswell24/2smith/rafiki/tiamatyh1.qx24
    13xeon Broadwell32/2smith/rafiki/tiamatxb1.qx32infini-band
    14xeon Skylake32/2smith/rafiki/tiamatx17.qx32infini-band
    15xeon Cascade Lake40/2smith/rafiki/tiamatx19.qx40infini-band
    16xeon Cascade Lake52/2smith/rafiki/tiamatx20.qx40infini-band
  • sb100からアクセス可能なノード群
    グループプロセッサコア数/CPU数ジョブ投入サーバキュー並列環境ノード間並列ファブリック
    7acore i7 sandy-bridge6/1sb100all.qx6
    7bxeon E5-1650 sandy-bridge6/1rlall.qx6
  • グループ7a, 7bにジョブを投入するときはsb100でqsubコマンドを実行してください。
  • それ以外のグループにジョブを投入するときはsmithでqsubコマンドを実行してください。
  • ジョブスクリプトの書き方については、下の各グループごとの説明中に「ジョブスクリプトファイルの例」で説明しています。

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

  • xeon CPUで構成される計算機グループで、x8, x12 の2 parallel_environmentからなります。各ノードは2CPU(計8または12core)で構成されています。
  • ジョブスクリプトファイルの例 (csh)
     #!/bin/csh
     #$ -cwd
     #$ -q xe2.q
     #$ -pe x12 12
     #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
     mpirun  -np $NSLOTS ./STATE_A < nfinp > nfout
    • -cwd はジョブを投入した時のディレクトリがジョブ開始時のディレクトリになることを指示するオプションです。
    • -q はキュー(グループ)の名前でxe1.qあるいはxe2.qを指定します。
    • 上のx12(またはx8)はx12(またはx8)にジョブ投入することを示し、後ろの12が計算に用いるCOREの数を示すオプションです。xe1.qではx8が、xe2.qではx12の使用が可能です。またx12は12、x8は8でないと実行されないようになっていますので注意してください。
    • -Nオプションでジョブの名前を指定できます。(先頭文字は英字です。)
    • STATE_AにはSTATEの実行ファイルをジョブ投入前にリンクしておいてください。
    • また、fort.37等、擬ポテンシャルのファイルも同様にリンクしておいてください。
  • ジョブスクリプトファイルの例 (bash)
    #$ -S /bin/bash
    #$ -cwd
    #$ -q xe2.q
    #$ -pe x12 12
    #$ -N CO
    #$ -o CO_out
    #$ -e CO_err
    #
    module load intel/2020.2.254
    module load intelmpi/2020.2.254
    #
    export OMP_NUM_THREADS=1
    # 
    SRCDIR=${HOME}/STATE/src/state-5.6.6/src
    PPDIR=${HOME}/STATE/gncpp
    MPI_COMMAND="mpirun -np ${NSLOTS}"
    #
    ln -fs ${SRCDIR}/STATE ./STATE
    #
    ln -fs ${PPDIR}/C_pbe1/#vnew.data fort.37
    ln -fs ${PPDIR}/O_pbe1/#vnew.data fort.38
    #
    INPUT_FILE=nfinp_dav
    OUTPUT_FILE=nfout_dav
    #
    ${MPI_COMMAND} ${STATE}  < ${INPUT_FILE} > ${OUTPUT_FILE}
  • コンパイル
    • コンパイルは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
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      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
    module load intel/2020.2.254
    module load intelmpi/2020.2.254
    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
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      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

グループ10a~d, 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
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      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
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      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
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      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

グループ15 x19システム

  • Cascade LakeアーキテクチャーのXeon CPU(Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計40core)で構成されています。

グループ16 x20システム

  • Cascade LakeアーキテクチャーのXeon CPU(Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計52core)で構成されています。

コンパイル

  • コンパイラの環境設定: ホームディレクトリにある.bashrc(lsでは見えません。ls -laとすると見えます。)に2行を追加して下さい。
    module load intel/2020.2.254
    module load intelmpi/2020.2.254

STATEのコンパイル

  • インクルードファイルmake.archをSTATEソースのディレクトリに置いてmakeしてください。
  • make.archの例
    ##################################  for (Xeon,smith) #################################
    F90    = mpiifort
    LINKER = mpiifort
    OMP    = -qopenmp
    OPT3   =
    FFLAGS= $(OMP) $(OPT3) -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX
    FLAGG  = $(OMP) $(OPT3)
    FLAGD  = $(OMP) 
    FFTW_DIR=$(MKLROOT)/include/fftw
    INCLUDE = -I$(FFTW_DIR) 
     LIBS   = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -mkl=parallel
    CPPDIR  = /usr/bin
    CPP     = $(CPPDIR)/cpp -P -C -traditional
     P_FLAGS  = -D_INTEL_DAVIDSON_ -D_MKL_FFTW_ -D_FFTW3_ -D_TIMER_ -D_OPENMP_FUNC_ -D_SCALAPACK_ \
               -D_ALLGATHERV_NOOVERLAP_
    ######################################################################

あるいは

##################################  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システムの使い方 (旧) を参照して下さい。

ネットワーク構成

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

+ 工学部内 ODINS network
|
|           Backbone network( 工学部ネットワークから直接アクセスできない )
|               |
+- [smith] -----+   133.1.116.161 ログイン&アプリケーションサーバー & ファイルサーバー
+- [rafiki] ----+   133.1.116.162 ログイン&アプリケーションサーバー & バックアップ
+- [tiamat] ----+   133.1.116.211 ログイン&アプリケーションサーバー
|               |
|               | ■ノード名         サーバー CPUコアxCPU数  並列環境  キュー
|               |                   G番号   =ノードコア数
|               +-- [xe00], [xe01]      4     4x2=8        x8       xe1.q
|               +-- [xe02]-[xe06]       5     4x2=8        x8       xe1.q
|               +-- [xe02]-[xe06]       6     6x2=12       x12      xe2.q
|               |
|               +-- [xs01]-[xs18]       8     8x2=16       x16      xs2.q
|               +-- [xi01]-[xi12]       9     8x2=16       x16      xi1.q
|               |      (大メモリ機)
|               +-- [xhxx]             10a    12x2=24      x24      xh1.q
|               +-- [xhxx]             10b    12x2=24      x24      xh2.q
|               +-- [xhxx]             10c    12x2=24      x24      xh3.q
|               +-- [yh01]-[yh03]      10d    12x2=24      x24      yh1.q
|               |
|               +-- [xb01]-[xb14]      13     16x2=32      x32      xb1.q
|               +-- [x1701]-[x1708]    14     16x2=32      x32      x17.q
|               +-- [x1901]-[x1906]    15     20x2=40      x40      x19.q
|               +-- [x2001]-[x2020]    16     26x2=52      x52      x20.q
|               |
|               |  ■引退ノード■
|               +-- [it??]-[it??]       0 (itanium)
|               +-- [opt00], [opt01]    コンパイルサーバー(opteron,opt01)
|               +-- [opt02]-[opt11]     1 (各ノード2CORE) mpich-opt 
|               +-- [opt12]-[opt21]     2 (各ノード4CORE) mpich-opt2
|               +-- [opt22]-[opt36]     3 (各ノード4CORE) mpich-opt3
|               +-- [xeon00] ---+      サブログイン・計算サーバー (ノード8CORE)
|               |               +--- [xeon01-07]  グループ6 (各ノード8CORE)
|               |
|               |
+- [sb100] -----+    133.1.116.165 別グループ計算サーバー
                |
                +-- [sb101]-[sb120]     7a    6x1=6       x6 ?      all.q
                |
+- [rl]---------+    133.1.100.216 (port 4202) 別グループ計算サーバー
|               |
|               +-- [rl03]-[rl20]       7b    6x1=6       x6 ?      all.q
|
+ 基礎工学部 ODINS イントラネット
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS