2010年10月6日水曜日

GAMESSのプロファイリング

compallから読み出されるシェルスクリプトcompに説明がある.
---------------
# To profile code during development stages,
# 1. "comp" desired modules with -pg added to the xlf flags
# 2. "lked" after adding -p to the xlf flags.
# 3. execute to completion, generating 'mon.out' file.
# 4. generate results by 'prof gamess.00.x mon.out'.
---------------
gfortranの場合は,以下を追加
1380行(32bit)
gfortran -pg -c $OPT -std=legacy $MODULE.f
1517行(64bit)
gfortran -pg -c -fdefault-integer-8 $OPT -std=legacy $MODULE.f

2010年10月4日月曜日

GAMESSのコンパイル

GAMESSをコンパイルした.数値計算ライブラリにはAtlasを使用.

1)Atlasのコンパイル
・Atlasをダウンロード
http://sourceforge.net/projects/math-atlas/
・適当なところに解凍
・解凍したディレクトリの中に,適当なディレクトリを作る(例えばmyobj)
cd myobj
../configure -Si cputhrchk 0(CPUのclock変動を無視する.このオプションを付けないとエラー.)

2)GAMESSのコンパイル
・ダウンロード
http://www.msg.ameslab.gov/gamess/download.html
のobtaining GAMESSをクリック.agreeするとメールアドレスの登録が要求される.登録したメールアドレスにダウンロード先とパスワード(毎週変わる)が送られる.
・解凍
tar -xvzf gamess-current.tar.gz
cd gamess
・コンパイルに関する設定
./configure
Fortranはgfortran
数値演算ライブラリにはatlasを選択
configureによる設定はinstall.infoに書き込まれる(ここを手作業で修正することも可能)
・コンパイル
./compall
・ddiのコンパイル
cd ddi
./compddi
・リンク
./lked
gamess.00.xが出来る
----------------------------------------
atlasはスカラー版がリンクされる.SMP並列版をリンクするにはlkedの一部を書き換える.
set MATHLIBS="-L$GMS_MATHLIB_PATH -lf77blas -latlas"
の行を
set MATHLIBS="-L$GMS_MATHLIB_PATH -lptf77blas -lpthread -latlas"
とする(2箇所)

2008年12月15日月曜日

HTの効果が現れない場合


同じくポリエチレンの重合度466の鎖一本を伸び切った状態で真空中で分子動力学計算した.計算時間は5psと長くしてある.並列化の効率が低下しているが,これは相互作用が鎖に沿って2次元的であるためだろう.物理4コアまでは計算時間は短くなっているが,hyperthreadingのある5〜8では寧ろ物理4コアより計算時間が遅くなっている.相互作用が2次元的な場合には,スレッド数は物理コア数までとするのがよいようだ.こうした系では,物理8コアの方が,hypethreadingで論理8コアとするよりも遥かに計算時間は短縮出来る.


2008年12月12日金曜日

Core i7とAthlon X2との比較

core i7とHyperthreadingの効果(2)


ポリエチレン1本鎖,重合度466
他の計算条件はcore i7とHyperthreadingの効果(1)とほぼ同じ.


ほぼ同じ原子数,密度であるが,連結されたことにより,計算時間が約3倍掛かっている.スレッド数に対する計算速度の向上の度合いは,(1)の場合と同程度.物理コア4+論理コア1の5スレッドでは一旦計算速度が低下するが,6~8スレッドで計算速度が向上するのも同じ現象.

8スレッドで,物理コア6個程度の計算速度になる.

2008年12月11日木曜日

Core i7とHyperthreadingの効果(1)


Core i7をMaterials Studio 4.3でベンチマークテストした.
【系】butane 100分子,密度〜0.8cm-3,Amorphous Cellで充填
【CPU】Core i7 940 2.93 GHz, 4 core
【計算法】MD,  NVT, 0.1ps, 298K
【力場】compass


スレッド数の逆数に対して,CPU timeをプロットした.

物理コア数と同じスレッド数4までは順調に伸びているが,スレッド5では4よりも速度が落ちる(グラフで跳ね上がっているところ).複数回実行しても同じ結果になった.スレッド6〜8は,物理コア並みの速度アップである.スレッド8で論理コア数8と同じになる.この時の速度は実質物理コア6程度ではないかと思われる.無機物や分子集合系のシミュレーションでは,コア数の効果は大きく,hyperthreadingも効く様である.

物理4コアまでの直線を外挿すると,物理6コアで3.60 s,物理8コアで2.97 sとなった.

2008年6月4日水曜日

#BIOSYM btcl 3
#
# Input File For Discover Generated By Materials Studio
# Input Client Model Document: C:Documents and SettingssasakiMy DocumentsMaterials Studio ProjectsUntitled0109 FilesDocuments3D Atomistic.xsd
# Job: [MTG9C] - 3D Atomistic Disco Min
#
autoEcho off
#
# Begin Forcefield Section
begin forcefield = compass

# File setup
set file [open energy_table.out w]

# Nonbond section:
forcefield nonbond
-separate_coulomb
vdw
summation_method = atom_based
cutoff = 9.50
spline_width = 1.00
buffer_width = 0.50
coulomb
dielectric_value = 1.0

# End Forcefield Section
#

# Minimization Section: All-trans
minimize
method = newton
iteration_limit = 5000
sd
convergence = 1000.0000000
line_search_precision = 0.5000000
cg
convergence = 10.0000000
line_search_precision = 0.5000000
method = fletcher
newton
convergence = 0.1000000
line_search_precision = 0.5000000
max_atoms = 200
method = bfgs

set energyValue_all_trans [energy]

#set restraint
restraint create rst1 torsion cn

restraint scale rst1 1000


#increment
$k = 1

for {$i = 0} {$i < 360.1} {incr i $k} {


molGeom set torsion $i cn
restraint target rst1 $i


# Minimization Section:
minimize
method = newton
iteration_limit = 5000
sd
convergence = 1000.0000000
line_search_precision = 0.5000000
cg
convergence = 10.0000000
line_search_precision = 0.5000000
method = fletcher
newton
convergence = 0.1000000
line_search_precision = 0.5000000
max_atoms = 200
method = bfgs

set energyValue [energy]

molGeom get torsion phi cn

#cc

$delta_E = $energyValue - $energyValue_all_trans
puts $file "[format "%5i%12.5f" $i $delta_E] [object phi]"

#
# Write coordinate file:
}