計算機関係メモ    [トップページへ戻る]

計算機毎の使い方

その他、計算機関連

電子状態計算ソフトウェアの使い方

数式処理ソフトウェアの使い方

ワークステーション lion (研究室所有の並列計算機)

【新しいユーザーがやるべき準備】
ログインしたら、次のコマンドを入力して環境変数を設定する。
cp /etc/skel/.bashrc .
設定を反映させるには、一回ログアウト。
デフォルト設定 Intelコンパイラのバージョン9.1

【プログラムのコンパイルとジョブ投入方法】

【投入したジョブの状況確認・削除方法】

【キューの種類】

どのノードに計算させるかは、キューを指定して決める。ノードとキューの関係は、コマンド"qhost -q"で確認できる。

【Intel コンパイラのバージョンを11.0に上げる方法】

自分のホームディレクトリにある.bashrcファイル中のOld version以下のsourceから始まる4行の先頭に#をつける。 New version以下のsourceから始まる4行の先頭にある#を削除。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
### Old Version ###
# choose OpenMPI
source /home/appl/openmpi-1.2.5/ompi.sh
. /opt/intel/fce/9.1.052/bin/ifortvars.sh
. /opt/intel/cce/9.1.052/bin/iccvars.sh
. /opt/intel/mkl/9.1/tools/environment/mklvarsem64t.sh

### New Version ###
# choose OpenMPI
#source /home/appl/openmpi-1.3.2-ic110/ompi.sh
#. /opt/intel/Compiler/11.0/074/bin/intel64/ifortvars_intel64.sh
#. /opt/intel/Compiler/11.0/074/bin/intel64/iccvars_intel64.sh
#. /opt/intel/Compiler/11.0/074/mkl/tools/environment/mklvarsem64t.sh
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

コンパイラのバージョンを上げたら、
Open-MPIでコンパイルした時のスクリプトファイルも変更が必要。

#!/bin/sh
#$ -S /bin/sh
#$ -cwd
#$ -V
#$ -q gr1.q  ←ジョブを投入するキューの指定(ここではgr1.q)
#$ -pe mpi 8  ←使用するCPUの数の指定(ここでは8並列) 
/home/appl/openmpi-1.3.2-ic110/bin/mpirun -machinefile $TMPDIR/machines -np $NSLOTS ./a.out

東京大学 物性研究所 システムA(SX-9/64M4)

【構成】

【コンパイル方法とジョブ投入】

【ジョブ管理】

東京大学 物性研究所 システムB(SGI Altix ICE 8400EX)

【構成】

【ログイン時の注意】

SSH使用の際、「チャレンジレスポンス認証を使う」にチェック。

【コンパイル方法とジョブ投入】

【ジョブ管理】

筑波大学 計算機科学研究センター T2K

【利用申請と準備】

まずは、アカウントを得るために公募に申請(筑波大学計算機科学研究センターのホームページ参照)。
申請が通ったら、指示通りにアカウント作成。
アカウント作成時に、SSH公開鍵を計算科学研究センターに送る必要あり。公開鍵の作り方は、下記参照。

【ログイン方法】

計算機へのログインは、TeraTerm(SSH2)を使って、アカウント作成のときに事前に登録したSSH公開鍵に対応した秘密鍵のファイルを指定して、ログインする。
WinSCPを使ってファイル転送を行う場合も秘密鍵を使う。ただし、SSH秘密鍵をPuTTY形式の鍵へ変換する必要あり。

【プロジェクトの切り替え】

複数のプロジェクトに所属するユーザーは、下記コマンド入力でプロジェクトの切り替え可能。
newgrp [プロジェクト名]

【コンパイラの設定】

使用したい各コンパイラによって、ログイン後毎回、次の操作が必要。

【コンパイル方法とジョブ投入】

【ジョブ管理】

自宅から研究室の計算機(192.168.0.105)に、ゲートウェイマシンを介して直接ファイル転送する方法

【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公開鍵の作り方、形式変換

【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 (負になってる!間違った値!)

Fortranの小技

Doループのカウンターをファイル名にする方法

下の例は、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

【インストール】
まず、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:\... をクリックすると、設定したフォントが保存される。

【使い方】

Intel Visual Fortran

初期設定の問題点
デフォルトでは、スタック領域のサイズが小さすぎて、プログラムを実行させると以下のエラーが出る。
severe(170): Program Exception - stack overflow

スタック領域のサイズの変更方法
Intel Visual Studio の右にある「Solution explore」で右クリック。
そこから -> properties -> linker -> systemを選択。

stack reserve size 0
stack commit size 0

の数値を0から、100000000に変更すると、スタック領域を100MB確保することになる。
ちなみに、commit size は、ソフト起動時に予約する容量(らしい)。
ソフトの起動は遅くなるが、スタックの確保に時間はかからない。

馬鹿にされても構わない…Linuxの覚書

Pathの通し方

(1) まず、現在のPATHの確認。
echo $PATH
(2) 次に、自分の使っているシェルを知る。
echo $SHELL
(3) PATHを通す。

(4) 設定を反映させる。
(5) ちゃんとPATHが通ったか確認。
echo $PATH

Emacsの覚書

emacs画面の分割

Microsoft Wordの覚書

段落番号の階層

例えば、下のように段落番号の階層を変えたいとき、
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. となる。

LaTeXの覚書

styleファイルの置き場所

新しいスタイルファイルをdownloadしたものの、"*.cls not found"などのエラーが出る場合の対処法。

C:\w32tex\share\texmf-local\tex

の下に、スタイルファイルの入ったフォルダなどを置けば良い。 ( ※ W32TeXをインストールした場所が、C:\w32tex の場合 )

Illustrator CS の覚書

特殊文字の入力方法

「書式」→「字形」をクリックすると、特殊文字の表が出てくるので、使いたい文字をダブルクリック!

GAMESSの使い方

GAMESSのホームページ(Mark Gordon's Quantum Theory Group

入力データ

実行の仕方

上記の入力ファイルを ethylene.inp、出力ファイル先を ethylene.log と指定する場合、

rungms ethylene.inp >& ethylene.log

で計算実行。

注)クラスター計算機で複数の計算を同時に行う場合、同じ名前の入力ファイルを使うと、 同一の計算nodeに投入された計算は、エラーを起こして停止するので注意。

出力データ

出力ファイルの最後の部分に、“exited gracefully.”と表示されていれば、とりあえず計算は正常終了。

【要注意】GAMESSの実行時のエラー

(標準出力でのエラーメッセージ)
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を動かすには、次のコマンドで semid を指定して semaphore arrays を開放する必要あり。
ipcrm -s 10253265
沢山ある場合、面倒なので、次のスクリプトを利用すると楽。
for i in `ipcs -s | sed -n '4,$p' | cut -d" " -f2 ` ;do ipcrm -s $i ;done
計算クラスターの環境では、すべてのノードでこの作業を行う必要あり。

GAMESSを利用時の注意

論文に下記の参考文献を引用しなければならない。

"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).

Maximaの簡単な使い方

グラフの描画

1つのコマンドの入力が終了したら、その都度、Shift+Enterでコマンド実行

Copyright © 2012 Hiroyuki Ishii, All Rights Reserved.

為替レート