- ROOT 6を使えるようにする
・ROOT 6の実行ファイルは、/usr/local/root/v6.04.02/bin/rootにある。また、環境変数設定スクリプトは、/usr/local/root/v6.04.02/bin/thisroot.shであるので、これをsourceで.bashrcに書き込んでおく。この環境変数を使用するには以下を先に読み込んでおく必要がある。
source /usr/local/bin/gcc493R2.sh
これは、コンパイラであるgcc4.9.3及びその関連ライブラリを使用できるようにする操作である。
・これらを踏まえると、ROOT 6がmiho上で使えるようになる。自分のローカルではROOT 6.14/06を使っているが、6.04/02を使ってみた感じ多分互換性はあるように思うので、そのまま気にせず使える気がする。
※2019年6月20日現在、mihoではROOT 6.04/02がインストールされているが、自分はローカルでも使ってるROOT6.14/06を使いたかったため、自分のホームディレクトリ下にROOT公式ページからバイナリーファイルをダウンロード・展開し、設定ファイルを変えた。
ここまでうまくいったが、コマンドライン上でrootと打つと、GLIBC_v_2.14 not foundのようなエラーメッセージが出てきて、rootが開かなかった。
GLIBCのバージョン確認は、ldd --versionで確認できるが、現在のmihoではGLIBCは2.12であり、root 6.14を起動させるライブラリはGLIBC 2.14が必要であり、この二つが対応してないのが原因じゃないかと考えている。
また、バイナリーファイルからではなくソースファイルをmakeしてインストールを試みたが、CMakeのバージョンが3.4.3以上でないとROOT 6.14はmakeできないっぽいが、miho上ではCMakeのバージョンは2.8.12.2となっていたためこの方法も無理。
結局、現在の状態では、mihoでROOT 6.14を使うことはできない。また何か分かったら追記していくつもり。
【2021/04/17追記】sahoになってからは、ROOTは簡単に使えるようになった。
まず、Intelコンパイラとライブラリーのパスを通す。
source /saho/sharedAPL/intel/bin/compilervars.sh intel64
export LD_LIBRARY_PATH=/saho/sharedAPL/intel/lib/intel64:$LD_LIBRARY_PATH
それから、以下の一文を.bashrcに書き込む。これで使えるようになる。(versionは6.20.06)
source /usr/local/root/6.20.06/bin/thisroot.sh
- Geant4を使えるようにする
・まず、Intelコンパイラを使用するために環境変数の設定が必要(これはROOTの時と同じ)。
・次に、パスを通す。これでとりあえず設定は完了。
source /saho/sharedAPL/geant4/10.06.p02/bin/geant4.sh
【簡単に実行方法だけ書いておく】
1. ある作業ディレクトリ(ここではgeant4/)で、適当にexampleファイルをコピー
cp -r /saho/sharedAPL/geant4/10.06.p02/share/Geant4-10.6.2/examples/basic/B1 ~/geant4
2. 今回は、B1/でビルドするので、mkdir B1-buildしてディレクトリ作成
3. cd B1-buildで移動して、cmakeを用いてビルドの設定
cmake -DGeant4_DIR=/saho/sharedAPL/geant4/10.06.p02/lib64/Geant4-10.6.2 ~/geant4/B1
.
.
.
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Found OpenGL: /usr/lib64/libOpenGL.so
-- Configuring done
-- Generating done
-- Build files have been written to: (自分のホームディレクトリへのパス)/geant4/B4_build
//ここまででとりあえずOK。
//次にビルドする。
make
.
.
.
[ 81%] Building CXX object B4d/CMakeFiles/exampleB4d.dir/exampleB4d.cc.o
[ 84%] Building CXX object B4d/CMakeFiles/exampleB4d.dir/src/B4PrimaryGeneratorAction.cc.o
[ 87%] Building CXX object B4d/CMakeFiles/exampleB4d.dir/src/B4RunAction.cc.o
[ 90%] Building CXX object B4d/CMakeFiles/exampleB4d.dir/src/B4dActionInitialization.cc.o
[ 93%] Building CXX object B4d/CMakeFiles/exampleB4d.dir/src/B4dDetectorConstruction.cc.o
[ 96%] Building CXX object B4d/CMakeFiles/exampleB4d.dir/src/B4dEventAction.cc.o
[100%] Linking CXX executable exampleB4d
[100%] Built target exampleB4d
//エラーが出なければ、実行したいディレクトリに移動(cd B4a/など)し、make。その後、./ exampleB4aで実行。
- emacsの環境変数設定
・これは、各自がローカルPCで設定している内容を、新たにホームディレクトリに.emacs.d/init.elを作成しその中にそのままコピペすれば使える。
※ただし、いくつか試したが日本語入力がうまくできないため、(global-set-key (kbd "C-j") 'toggle-input-method)を書き、Ctrl+jで日本語入力との切替ができるようにした。
また、-nwで開くと"C-j"をしなくても通常のかなボタンで問題なく日本語入力ができた。
- サーバの使い方
・詳しい内容は、このページ(RCNP内部ネットワークからのみ閲覧可能)に書いてある。そのため、ここでは必要最低限の事柄を書く。(旧ページ)
・まずRCNPには、会話型サーバ(miho-1やmiho-2(おそらく美穂ヶ丘から取ったと思われる))とバッチサーバ(the high performance computing (HPC) server)という二つのサーバがあり様々なことができる。
会話型サーバでは、ファイルの移動、ファイルの作成・削除、マクロ作成、バッチジョブのサブミットなどインタープリター形式で色々な処理ができる。
バッチサーバは、主に計算などをするためのサーバであり、mihoから"qsub"コマンドを打つことによりバッチジョブをサブミットすることができる。
※miho-1,2で重い計算をするのは良くないらしいので、重い計算をする場合はバッチサーバを使うべきとのこと。
・一つのアカウントのホームディレクトリに与えられるストレージは、150GBらしい。このストレージを超えないようにしないといけない。
より大きなストレージを使いたければ(例えば実験の生データなどの保存)、それぞれグループに与えられたディレクトリがあるので、そちらに置くのが良い。グループのディレクトリを使うには、それぞれグループの管理者に連絡する必要あり。
・デフォルトのログインシェルはtcshとなっており、bashへ変更することもできる。
・miho-1,2(saho-a,b)にはROOTやgeant4など様々な便利なツールがインストールされており、パスを通すことで使うことができる。
・HPCサーバへのジョブのサブミットの仕方
ジョブをサブミットするには、HPCへサブミットするためのシェルスクリプトと実際行いたいジョブ内容が書かれているシェルスクリプトの二つを作成する必要がある。以下のように書くと良い。シェルスクリプト名はそれぞれtest.shとhello.shとする。
[test.sh]
#!/bin/bash
#PBS -q (グループのクラス) -m abe -l select=1:ncpus=1:mem=8gb
#PBS -M (メールアドレス)
path=/home/アカウント名 #(自分が行いたいジョブ内容が書かれたシェルスクリプトまでのパス。)
cd $path
./hello.sh
この場合は、1つのchunk、1つのCPU、8GBのメモリーを使用することになる。
[hello.sh]
#!/bin/bash
echo "job test"
path=/home/アカウント名/work #(自分が計算したいマクロが書かれた場所までのパス。ここではそれはホームディレクトリ下のworkディレクトリ内にあるとする。)
echo "****************************************************************"
cd $path
echo "Hello, World!"
[この下に、上記で書いた2つのシェルスクリプトについて、1行ずつ解説文を載せる。]
○まずtest.shの内容について。一番上の#!/bin/bashは、スクリプトファイルの一番上に記載する必要があるもので、"シバンやシェバン"と呼ばれるもので、これをつけることで実行属性を付けてファイルを実行できるようになる?らしい。これはあんまりよくわかってない。それでもって#!/bin/shというのもあるらしく、#!/bin/bashとの違いは、/bashはbashと使うことを明記しているためbash固有の機能を堂々と使え、/shはUnix系の多くの環境で実行することができるらしい。つまり、/shとしておいた方が汎用性が高そう。
でも、PHCサーバにサブミットする時は/bashにした方が良さそう。
2行目の#PBSのオプションについて。-qはグループのジョブクラスを定義するために必要なものらしい。所属するグループに応じてキューを選択する。-mは、その後ろのabeを使うためのオプションで、それぞれ順番に"a"はバッチシステムによってジョブが中止された場合にメールを送信、"b"はジョブの実行が開始された時にメールを送信、"e"はジョブの実行が終了したらメールを送信。他に"n"を入れるとメールの送信をしないようにできる。
-lは後ろのノードやcore、メモリを定義するのにいるっぽい。selectがノード、ncpusがcore、memがメモリを表していて、いくつかの候補から自分のジョブ内容にあったものを選択する。自分の場合はそこまで重い計算をしない予定のため、あまりcoreなどを使わないように定義した。
3行目は2行目とセットなような気がする。ここに記載したメールアドレス宛に"PBS JOB [Job ID]"の件名で送られてくる。
5行目と7行目は上の四角内の#以下に書いてある通りの内容を記載。
9行目にHPCサーバで行いたいジョブ内容が書かれたシェルスクリプトが実行されるように./[実行したいシェルスクリプト名]とする。
○続いて、hello.shの内容について。1行目は先ほどと同じ。2行目や7行目は必ずいるものではない。4行目はtest.shに書いたことと同じように記載する。10行目で実際に行う内容を書く。ここでは、"Hello, World!"と表示させるだけ。
これは、全般的なシェルスクリプトに言えるが、"#"を前につけるとコメントアウトの意味がある。でも、なぜか#PBSなどはコメントアウトにはなってないっぽい。よくわからん。
・肝心のジョブのサブミット方法であるが、次のようなコマンドを打ちジョブをサブミットする。
(ジョブをサブミットするには、事前にシェルスクリプトのパーミッションを変更し、実行権限をグループとその他に与えておく必要がある。)
qsub [ジョブを投げるためのシェルスクリプト名]
例として、qsub test.sh のようにターミナルに打ち込む。
ジョブの状況の確認には、qstat -a、特に自分が投げたジョブの情報を閲覧したい場合は、qstat -a | grep [ユーザ名]とする。(qstat -xをすると、終了したジョブを含めた情報が閲覧可能)。
例えば、qstat -aをした場合には、以下のような形でリストされて表示される。
Job ID | Username | Queue | Jobname | SessID | NDS | TSK | Req'd Memoroy | Req'd Time | S | ElapTime
それぞれの意味は以下の通り。(一番上に出てくるjcm-aは、ジョブを管理しているサーバ)
Job ID:PBSによって割り振られているジョブ番号。.jcm-aの前がジョブ番号
Username:ジョブを投入したユーザ名
Queue:実行中や実行予定のキュー名
Jobname:ユーザ自身が投げたジョブの名前(.shの部分)。(#PBS -Nで指定した名前)
SessID:セッションID
NDS:投げたジョブが要求しているノードの数(select=で指定した数)
TSK:ジョブが要求しているCPUの数
Req'd Memory:ジョブが要求しているメモリーのサイズ
Req'd Time:ジョブが要求している経過時間(XX時:XX分)
S:ジョブの状態
Elap Time:実際の経過時間(XX時:XX分)
ジョブサブミット後の途中での消去はqdel [Job ID] とする。
→ジョブの開始と終了時にメールを送信するように設定した場合、以下のような文章とともにメールが送られてくる。
ジョブの開始時
PBS Job Id: [ジョブのID]
Job Name: [ジョブのシェルスクリプトの名前]
Begun execution
ジョブの終了時
PBS Job Id: [ジョブのID]
Job Name: [ジョブのシェルスクリプトの名前]
Execution terminated
Exit_status=0
resources_used.cpupercent=98
resources_used.cput=00:20:04
resources_used.mem=8980kb
resources_used.ncpus=8
resources_used.vmem=339352kb
resources_used.walltime=00:20:06
※resourcesのところの値は一例である。
- ポスタープリンターにおいて
・しばらく使っていないと、プリントした時に赤字が黄色になるなどうまくプリントできないことがある。対処法としてまず第一に、メニューボタンを押し、ヘッドクリーニングをすれば良くなる場合がある。(クリーニングには10分くらいかかる。)