#author("2019-07-05T20:27:16+09:00","mss","mss")
#author("2019-07-05T21:52:49+09:00","mss","mss")
// mssonly
* User / Admin manuals for lab computers [#v27ed8ef]

** [[List of IP addresses>IpList]] [#b0e4eec1]

** [[Temperature of computer room:http://10.249.84.177]] [#p803a962]

** How to connect lab computers from off-campus network [#q09a3f75]

- PPTP [ [[English:http://www.iimc.kyoto-u.ac.jp/en/services/kuins/vpn/]]/[[日本語:http://www.iimc.kyoto-u.ac.jp/ja/services/kuins/vpn/]]]

-- PPTP server host name: pptpg.iimc.kyoto-u.ac.jp
-- ID: [ECS-ID/SPS-ID]@32240

** Jupyter Hub [#v3eadfb2]
- http://10.249.84.174:8000

- startup
 cat cat /etc/rc.d/rc.local
 ...
 nohup /opt/anaconda3/bin/jupyterhub --no-ssl -f /opt/anaconda3/jupyterhub_config.py &


** Mathematica [#dfe08670]
- You can use Mathematica (11.2.0) on ebi via the site license from SCL at Kyoto Univ. The program can be launched only by a fixed single user (uid=lab1, pw:yamamoto)
 ssh lab1@ebi
 (pw)
 mathematica


** Cluster nodes [#l7bca525]

- To do list for adding new cluster machines
-- Make symbolic link: /etc/profile.d/psxevers.*sh -> /opt/intel/psxevars.*sh

 # rsh newhost "ln -s /opt/intel/psxevars.* /etc/profile.d/."


** Host machine (ebi) [10.249.84.174] (File server, Compile, Job submission) [#h5879dde]

*** File System [#q95ecc89]

- User data
~''/home/user_name/''  default home directories (30TB)
~''/home1/user_name/''  storage for big data (30TB)
//~''/home2/user_name/'' storage for big data (3.3TB)
~''/home3/user_name/''  storage for big data (20TB)
~''/home4/user_name/''  storage for big data (50TB)
~''/home5/user_name/''  storage for big data (20TB)

- To check disk usage of /home per users

  sudo du -skm /home/* | sort -nr

- Applications
~''/opt/intel/''  Intel compilers
~''/usr/sge/''  Sun Grid Engine

*** Job submission [#r4fd19d7]
- Parallel environments
~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 で指定)
//~''tako1.q'' : 並列計算用。使用するノードはtako01--05。 
//~''tako2.q'' : 並列計算用。ノードはtako06--09,0a。
~''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の計算を投げる場合
((Cシェルだと "Warning: no access to tty (Bad file descriptor). Thus no job control in this shell." と出力されるので、Bシェルを指定するように変更しました。by 村島))

    #!/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の計算を投げる場合
((kmp_cluster.iniを作成する箇所を修正しました。by 村島))

    #!/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


*** ジョブの投入と管理 [#c74edb83]
ジョブの投入は''ebi''から行います。Grid Engineの基本的なコマンドは以下のようです。
- ''qsub'': ジョブの投入コマンド。例えば,スクリプトファイル run.sh を投入する場合
    qsub run.sh
- ''qstat'': ジョブの状態を確認。(オプション -f でキュー毎のジョブの状態を確認。)
- ''qhost'': ノードの状態を確認。

*** OpenMP並列のジョブを投入するときの注意点 [#y7f4f690]

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

*** OS Update [#z64ba89f]

 yum update --skip-broken

 yum clean all

*** Anaconda Update [#t7e5e5f4]

 export PATH="/opt/anaconda3/bin:$PATH"
 conda update conda
 conda update anaconda
 conda update -c conda-forge jupyterhub
 conda update notebook

*** Intelコンパイラのバージョンアップメモ [#m8dddb11]

- 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に反映される。

*** GCCのバージョンアップメモ [#w0cbd90e]

- Standard yum repository supports gcc but only up to version 4.2. One can install higher versions using Devtoolset-2 (4.8),
 # cd  /etc/yum.repos.d/
 # wget http://people.centos.org/tru/devtools-2/devtools-2.repo
 # yum install devtoolset-2-gcc devtoolset-2-binutils
 # yum install devtoolset-2-gcc-c++ devtoolset-2-gcc-gfortran
 # scl enable devtoolset-2 bash
 # gcc -v
Devtoolset-3 (4.9),
 # cd  /etc/yum.repos.d/
 # wget https://copr-fe.cloud.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo ‘--no-check-certificate
 # yum install devtoolset-3-gcc devtoolset-3-binutils
 # yum install devtoolset-3-gcc-c++ devtoolset-3-gcc-gfortran
 # scl enable devtoolset-3 bash
 # gcc -v
or Devtoolset-4 (5.2).
 # cd /etc/yum.repos.d/
 # wget https://copr.fedorainfracloud.org/coprs/hhorak/devtoolset-4-rebuild-bootstrap2/repo/epel-6/hhorak-devtoolset-4-rebuild-bootstrap2-epel-6.repo
 # yum install devtoolset-4-gcc devtoolset-4-binutils devtoolset-4-gcc-c++
 # scl enable devtoolset-4 bash

- New gcc/g++ can be found in "/opt/rh/devtoolset-2/root/usr/bin/" and "/opt/rh/devtoolset-3/root/usr/bin/". One may include one of the following lines in ".bash_profile".
 source /opt/rh/devtoolset-2/enable
 source /opt/rh/devtoolset-3/enable
 source /opt/rh/devtoolset-4/enable


*** 新規ユーザーを追加する [#ja2caf25]

- ebiでスーパーユーザになり以下を実行。

    # /usr/sbin/useradd -m USERNAME
    # passwd USERNAME
    # cd /var/yp; make

- パスワードの変更は、各自のアカウントでログイン後に以下のコマンドで行なう。

    yppasswd

*** NISの設定 [#y0e1a9e1]

- 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の設定 [#x0f6884e]

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

*** SAMBA [#hafc2aaa]

- 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にパスワードを登録する。

- ebiのコマンドラインでの設定
   smbpasswd -a (ebiの自分のアカウント名)

-  または,SWATによる設定 [http://10.249.84.174:901/]
   SWAT->PASSWARD->ローカルマシンのパスワード管理->新規ユーザー追加

- Windowsからebiにアクセスし,上で設定したユーザー名とパスワードを入力・保存する.通常はこれでOKだが,アクセス出来ない時は以下を確認する.
-- コントロールパネル>資格情報の管理->Windows資格情報->[Windows資格情報]
  インターネットまたはネットワークのアドレス: ebi
  ユーザー名: (ebiの自分のアカウント名)
  パスワード: (sambaに登録したパスワード)  

*** HDF5 [#k01bc3a0]

- 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] について(ファイルサーバー、コンパイル、ジョブの投入) [#r2e9025b]

- アプリケーション
~''/opt/intel/''  インテルコンパイラ
~''/usr/sge/''  Sun Grid Engine
~''/usr/local/cuda''   CUDA

*** ikura0*(GPUマシン)へのジョブの投入 [#r4fd19d7]
-並列環境
~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


** !!ここから下は古い情報!! [#m55eb30a]

*** 緊急にジョブを投入する必要がある場合 [#h55ef87d]

~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の判断
によります。

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

学外から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アドレス