計算機毎の使い方
その他、計算機関連
電子状態計算ソフトウェアの使い方
数式処理ソフトウェアの使い方
【新しいユーザーがやるべき準備】
ログインしたら、次のコマンドを入力して環境変数を設定する。
cp /etc/skel/.bashrc .
設定を反映させるには、一回ログアウト。
デフォルト設定 Intelコンパイラのバージョン9.1
【プログラムのコンパイルとジョブ投入方法】
【投入したジョブの状況確認・削除方法】
【キューの種類】
どのノードに計算させるかは、キューを指定して決める。ノードとキューの関係は、コマンド"qhost -q"で確認できる。
【Intel コンパイラのバージョンを11.0に上げる方法】
自分のホームディレクトリにある.bashrcファイル中のOld version以下のsourceから始まる4行の先頭に#をつける。 New version以下のsourceから始まる4行の先頭にある#を削除。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++【構成】
【コンパイル方法とジョブ投入】
【ジョブ管理】
【構成】
【ログイン時の注意】
SSH使用の際、「チャレンジレスポンス認証を使う」にチェック。
【コンパイル方法とジョブ投入】
【ジョブ管理】
【利用申請と準備】
まずは、アカウントを得るために公募に申請(筑波大学計算機科学研究センターのホームページ参照)。
申請が通ったら、指示通りにアカウント作成。
アカウント作成時に、SSH公開鍵を計算科学研究センターに送る必要あり。公開鍵の作り方は、下記参照。
【ログイン方法】
計算機へのログインは、TeraTerm(SSH2)を使って、アカウント作成のときに事前に登録したSSH公開鍵に対応した秘密鍵のファイルを指定して、ログインする。
WinSCPを使ってファイル転送を行う場合も秘密鍵を使う。ただし、SSH秘密鍵をPuTTY形式の鍵へ変換する必要あり。
【プロジェクトの切り替え】
複数のプロジェクトに所属するユーザーは、下記コマンド入力でプロジェクトの切り替え可能。
newgrp [プロジェクト名]
【コンパイラの設定】
使用したい各コンパイラによって、ログイン後毎回、次の操作が必要。
【コンパイル方法とジョブ投入】
【ジョブ管理】
【TeraTermの設定】
ゲートウェイのコンピュータにTeraTermで接続。
TeraTermの「設定」→「SSH転送」をクリック。SSHポート転送の設定画面で「追加」をクリック。
ローカルのポート 22
リモート側ホスト 192.168.0.105 ポート 22
に設定する。この設定はファイルに保存できる(ファイル名はTERATERM.INIなど)ので、次回以降はそのファイルを指定して読み込めば良い。
※TeraTermでパスワードをメモリ上に保存したくないとき、TERATERM.INIファイル中の
RememberPassword=1
を
RememberPassword=0
に替えればよい。
【WinSCPの設定】
WinSCPを起動 →「新規」をクリック。
ホスト名 localhost ポート番号 22
ユーザ名 hogehoge (192.168.0.105にログインするときのユーザ名)
を設定する。
【ファイル転送】
「WinSCPのログイン画面」で「hogehoge@localhost」を選択、「ログイン」をクリック。
192.168.0.105に接続できるので、通常のようにファイル転送可能。
【SSH公開鍵の作り方】
TeraTermの「設定」→「SSHキー作成(RSA)」をクリック。
キーのパスフレーズ(計算機へのログイン時に入力するパスワード)を入力して、秘密鍵と公開鍵を作成。
【SSH秘密鍵のPuTTY形式への変換方法】
「スタート」→「WinSCP」→「鍵関連ツール」→「PuTTYgen」をクリックして、PuTTYgen (PuTTY key generator)を起動。
PuTTY Key generator の「Conversions」→「Import key」をクリック。
TeraTermで作成した秘密鍵のファイル(多分、id_rsa)を選択して、「開く」。
秘密鍵を作るときに入力したパスフレーズを入力。
「Save private key」をクリックしてPuTTY形式(id_rsa.ppk)の秘密鍵を保存。
この秘密鍵を指定すれば、WinSCPでファイル転送可能となる。
【逆に…PuTTYで作った鍵形式(*.ppk)からRSA/DSA鍵への変換方法】
「スタート」→「WinSCP」→「鍵関連ツール」→「PuTTYgen」をクリックして、PuTTYgen (PuTTY key generator)を起動。
PuTTY Key generator の「Conversions」→「Import key」をクリック。
PuTTYで作成した秘密鍵のファイル(多分、*.ppk)を選択して、「開く」。
秘密鍵を作るときに入力したパスフレーズを入力。
「Conversion」→「Export OpenSSH Key」をクリックしてRSA/DSA形式の秘密鍵を保存。
この秘密鍵を指定すれば、TeraTermでRSA/DSA鍵を使ってアクセス可能となる。
【インテルコンパイラ(ifort)でのデバッグ方法(簡易版)】
デバッグしたいプログラム(test.f)を以下のようなオプションをつけてコンパイル
ifort -CB -traceback -g test.f
(オプションの意味)
-CB … 配列の領域外参照を検出。(PGIコンパイラでは、-C)
-traceback … エラーを起こしたプログラム中の行番号を表示。
-g … デバッグ用の実行ファイルを作る。
出来た実行ファイルをいつもするように実行させる。
./a.out > output.txt
[実行結果の例]
デバッグオプションつけずにコンパイルしたときの計算結果(エラー表示部分)
Segmentaion faultで強制終了したことしか分からない。
----------------------------------------------------------------------------
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
a.out 0000000000416A3E Unknown Unknown Unknown
a.out 00000000004161A6 Unknown Unknown Unknown
a.out 0000000000403EE9 Unknown Unknown Unknown
a.out 0000000000402F6A Unknown Unknown Unknown
libc.so.6 000000325B01C3FB Unknown Unknown Unknown
a.out 0000000000402EAA Unknown Unknown Unknown
----------------------------------------------------------------------------
デバッグオプションつけてコンパイルしたときの計算結果(エラー表示部分)
プログラムeqposi.f中の1160行目で、
配列"RAN"がRAN(1:100000)で定義されているにも関わらず、
実行中にRAN(100001)にアクセスがあったため強制終了したことが分かる。
----------------------------------------------------------------------------
forrtl: severe (408): fort: (2): Subscript #1 of the array RAN has value 100001
which is greater than the upper bound of 100000
Image PC Routine Line Source
a.out 0000000000606B53 Unknown Unknown Unknown
a.out 000000000060517E Unknown Unknown Unknown
a.out 00000000005DB66C Unknown Unknown Unknown
a.out 00000000005B9F96 Unknown Unknown Unknown
a.out 00000000005BA1DA Unknown Unknown Unknown
a.out 00000000005B83E6 inivel_ 1160 eqposi.f
a.out 00000000005A920D eqvelo_ 385 eqposi.f
a.out 0000000000406AEB MAIN__ 353 amain-cnt-md-mpi.f
a.out 00000000004030AA Unknown Unknown Unknown
libc.so.6 000000325B01C3FB Unknown Unknown Unknown
a.out 0000000000402FEA Unknown Unknown Unknown
---------------------------------------------------------------------------
【潜在的なエラーを見つけるためのコンパイルオプション(ifort)】
ifort -auto -ftrapuv -check all -warn all -std -fpe0 -traceback test.f
コンパイル時と実行時の両方で、警告レベルから教えてくれる。
[実行結果の例]
-----------------------------------------------------------------------------------------------
forrtl: severe (193): Run-Time Check Failure. The variable 'eqvelo_$VELX' is being used without being defined
Image PC Routine Line Source
a15b.out 0000000000736A93 Unknown Unknown Unknown
a15b.out 00000000007350BE Unknown Unknown Unknown
a15b.out 000000000070B59C Unknown Unknown Unknown
a15b.out 00000000006E9EC6 Unknown Unknown Unknown
a15b.out 00000000006EA15B Unknown Unknown Unknown
a15b.out 00000000006CE4C7 eqvelo_ 472 eqposi.f
a15b.out 000000000040ACF2 MAIN__ 373 amain-cnt-md-mpi.f
a15b.out 00000000004030AA Unknown Unknown Unknown
libc.so.6 000000325B01C3FB Unknown Unknown Unknown
a15b.out 0000000000402FEA Unknown Unknown Unknown
forrtl: error (76): IOT trap signal
/home/ishii/.lsbatch/1231320385.2367: line 8: 13189 Aborted (core dumped) ./a15b.out
-----------------------------------------------------------------------------------------------
ファイルeqposi.f中のサブルーチン"eqvelo"の変数"VELX"が、472行目で、
初期値を与えずに計算しているためのエラーであることが分かる。
【2GB以上のメモリを消費する配列を使う場合の対処法】
【整数型、実数型の変数が取れる範囲】
基本整数型(4バイトの整数型)の変数 … -2^31 (-2147483648) 〜 +2^31-1 (+2147483647) までしか扱えない。
例えば、N=3, M=800000, L=1000の積を整数型変数Iに格納(I=N*M*L)させようとしても
N*M*Lは、2^31以上の大きさになるので正しい値にならない。大規模計算時には、要注意!
[実行結果の例]
N*M*L = -1894967296 (負になってる!間違った値!)
下の例は、5桁の数字まで可能。
INTEGER I
CHARACTER(5) OUTFILE
OUTFILE=" "
DO I=1,10000
WRITE(OUTFILE,'(I5)') I
OUTFILE=ADJUSTL(OUTFILE)
OPEN(1,FILE="data." // TRIM(OUTFILE), STATUS='NEW')
WRITE(1,*) I
CLOSE(1)
END DO
OPEN(1,FILE='data.txt', POSITION='APPEND')
【インストール】
まず、gnuplotのホームページ(http://www.gnuplot.info/)からダウンロード。
windows版は、gp442win32.zip (2010.01現在)。 意味は、ver.4.4.2で、windows 32bit版。
zipファイルを解凍。インストール作業は不要。
解凍されたフォルダ内のwgnuplot.exeが実行ファイル。(注) gnuplot.exeではない。
【初期設定】
wgnuplot.exeを実行すると、gnuplotのウィンドウが開く。が、文字が読めない。
ウィンドウ上で右クリックして、Choose Fontタブをクリック。読みやすいフォントを設定。
再び、右クリックして、Update C:\... をクリックすると、設定したフォントが保存される。
【使い方】
(1) まず、現在のPATHの確認。
echo $PATH
(2) 次に、自分の使っているシェルを知る。
echo $SHELL
(3) PATHを通す。
例えば、下のように段落番号の階層を変えたいとき、
1.
1.1.
1.2.
1.2.1.
1.2.2.
1.3.
段落番号を選択し、Tabキーを1回押す毎に
1. → 1.1. → 1.1.1. となっていく。
逆に、Shift+Tabキーで、
1.1.1 → 1.1 → 1. となる。
新しいスタイルファイルをdownloadしたものの、"*.cls not found"などのエラーが出る場合の対処法。
C:\w32tex\share\texmf-local\tex
の下に、スタイルファイルの入ったフォルダなどを置けば良い。
( ※ W32TeXをインストールした場所が、C:\w32tex の場合 )
「書式」→「字形」をクリックすると、特殊文字の表が出てくるので、使いたい文字をダブルクリック!
GAMESSのホームページ(Mark Gordon's Quantum Theory Group)
指定するパラメータは、$CONTROL、$SYSTEMなどのGROUPに分けて記述。その書式は、必ず、$(GROUP名) 〜 $END の形。
“!”で始まる行は、コメント文。
$CONTRL | ICHARGE | 系全体の電荷 |
MULT | 系全体のスピン多重度。多重度は、不対電子のスピンをSとすると、2S+1で定義。
|
|
DFTTYP | 汎関数の種類 |
|
SCFTYP | 計算の方法 |
|
RUNTYP | 計算目的の指定 |
|
COORD | $DATAグループに格納する座標のフォーマット指定。 |
|
EXETYP | 計算実行の種類を指定。 |
|
MAXIT | SCF計算の繰り返しの最大回数。 |
|
UNITS | 長さの単位。 |
|
NPRINT | 出力データの条件。 |
|
QMTTOL | 誤差の閾値。 |
|
$SYSTEM | TIMLIM | 計算時間の上限(単位:分) |
MWORDS | 確保するメモリサイズ(単位:MWord) |
|
$STATPT | NSTEP | 構造最適化の際の探索回数の上限を指定。 |
OPTTOL | 収束判定の際の閾値を指定。(単位 Hartree/Bohr) |
|
$DFT | DC | Grimme's empirical dispersion correction (R^-6項)をするか否か。即ちDFT-D計算をするか否か。
|
IDCVER | DFT-Dのversionを指定。
|
|
$BASIS | GBASIS | 基底関数の基本セットの選択。 |
NGAUSS | Gaussian関数の数を指定。(GBASIS=STO,N21,N31,N311のとき指定) |
|
NDFUNC | 加えるd-分極関数の数を指定。(重い原子?) 普通 3以下 |
|
NFFUNC | 加えるf-分極関数の数を指定。(Li - Cl) 普通、0 or 1 |
|
FPFUNC | 加えるp-分極関数の数を指定。(H, He) 普通 3以下 |
|
DIFFSP | sp-diffuse関数を加えるか否か。flag to add diffuse sp (L) shell to heavy atoms. Heavy means Li-F, Na-Cl, Ga-Br, In-I, Tl-At.
|
|
DIFFS | s-diffuse関数を加えるか否か。flag to add diffuse s shell to hydrogens.
|
|
$GUESS | GUESS | 初期軌道の作成方法の指定。 |
$SCF | DIRSCF | Direct SCF法を使うか否かの指定。 |
$DATA |
ETHYTLENE/B3LYP-D1/6-31+G(d) C1 C 6 0.000 0.000 0.655 C 6 0.000 0.000 -0.655 H 1 0.000 0.912 1.214 H 1 0.000 -0.912 1.214 H 1 0.000 -0.912 -1.214 H 1 0.000 0.912 -1.214 |
← コメント文 ← 点群の指定 (通常 C1) ← 元素記号 原子番号 X Y Z (in Angstrom) ※Cartesian座標の場合 |
上記の入力ファイルを ethylene.inp、出力ファイル先を ethylene.log と指定する場合、
rungms ethylene.inp >& ethylene.log
で計算実行。
注)クラスター計算機で複数の計算を同時に行う場合、同じ名前の入力ファイルを使うと、
同一の計算nodeに投入された計算は、エラーを起こして停止するので注意。
出力ファイルの最後の部分に、“exited gracefully.”と表示されていれば、とりあえず計算は正常終了。
(途中まで省略)
以下がTotal energy などの結果出力部分。
---------------------------------------------------------------------
PROPERTIES FOR THE B3LYP DFT FUNCTIONAL (RHF TYPE) DENSITY MATRIX
---------------------------------------------------------------------
-----------------
ENERGY COMPONENTS
-----------------
WAVEFUNCTION NORMALIZATION = 1.0000000000
ONE ELECTRON ENERGY = -170.0277680420
TWO ELECTRON ENERGY = 58.2144599222
NUCLEAR REPULSION ENERGY = 33.2774626572
------------------
TOTAL ENERGY = -78.5358454626
ELECTRON-ELECTRON POTENTIAL ENERGY = 58.2144599222
NUCLEUS-ELECTRON POTENTIAL ENERGY = -247.7610113879
NUCLEUS-NUCLEUS POTENTIAL ENERGY = 33.2774626572
------------------
TOTAL POTENTIAL ENERGY = -156.2690888085
TOTAL KINETIC ENERGY = 77.7332433459
VIRIAL RATIO (V/T) = 2.0103250821
(途中省略)
----------------------------------------
CPU timing information for all processes
========================================
0: 46.676 + 0.101 = 46.778
----------------------------------------
ddikick.x: exited gracefully.
unset echo
----- accounting info -----
Files used on the master node lion were:
-rw-rw-r-- 1 ishii ishii 110467 Sep 25 15:45 /scr/ethtlene.dat
-rw-rw-r-- 1 ishii ishii 586 Sep 25 15:45 /scr/ethtlene.F05
-rw-rw-r-- 1 ishii ishii 1047040 Sep 25 15:45 /scr/ethtlene.F10
-rw-rw-r-- 1 ishii ishii 1796336 Sep 25 15:45 /scr/ethtlene.F22
Tue Sep 25 15:45:50 JST 2012
0.115u 0.111s 0:50.37 0.4% 0+0k 0+0io 0pf+0w
(出力ファイルの最後)
(標準出力でのエラーメッセージ)
DDI Process 0: semget return an error.
入力ファイルにミスが無くても出るエラー。Semaphore Arraysを使い切ると出てくる。
GAMESSが異常終了すると、Semaphore arraysが解放されずに残ってしまうらしい。(参照URL:PCと遊ぶ日々の記録)
使用中(解放されてない) Semaphore arrays を確認するコマンド。
ipcs -s
出力結果がずらずらと沢山出てきたら、怪しい。(以下は出力例)
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 10256412 root 666 1
0x00000000 10253265 hishii 666 25
GAMESSを動かすには、2つの方法あり。
方法1:エラーを起こすノードを再起動。
方法2:再起動したくない場合、
次のコマンドで semid を指定して semaphore arrays を開放。
ipcrm -s 10253265
沢山ある場合、面倒なので、次のスクリプトを利用すると楽。
for i in `ipcs -s | sed -n '4,$p' | cut -d" " -f2 ` ;do ipcrm -s $i ;done
計算クラスターの環境では、エラーを起こすすべてのノードでこの作業を行う必要あり。
論文に下記の参考文献を引用しなければならない。
"General Atomic and Molecular Electronic Structure System"
M.W.Schmidt, K.K.Baldridge, J.A.Boatz, S.T.Elbert, M.S.Gordon,
J.H.Jensen, S.Koseki, N.Matsunaga, K.A.Nguyen, S.Su, T.L.Windus, M.Dupuis, J.A.Montgomery,
J. Comput. Chem., 14, 1347-1363(1993).
1つのコマンドの入力が終了したら、その都度、Shift+Enterでコマンド実行。
Copyright © 2012 Hiroyuki Ishii, All Rights Reserved.