現在位置: ホーム / Forums / PHASE Forums / User's Forum (General) / HSE計算が不意に終了する

HSE計算が不意に終了する

Up to User's Forum (General)

HSE計算が不意に終了する

Posted by Yukihiro Okuno at June 03. 2013

Phaseユーザー様、開発者様

富士フイルム 奥野と申します。

お世話になっております。

こういう質問をこの場でしていいのかどうかわかりませんが、問題ありましたらご指摘ください。

私は、フリーソフトでウルトラソフトでHSE,PBE0などの計算が出来ることから、最近になってPhaseの利用を始めた者です。

さて、そのHSEの計算ですが、sampleに入っているものは問題なく動くのですが、実際にちょっとした系(といっても簡単な立方晶のペロブスカイトです。)で、計算すると、Iterationが開始されることもなく、

#symmetry op. =           32
0.0000  0.0000 -1.0000  0.0000     0.0000  0.0000 -1.0000  0.0000
1.0000  0.0000  0.0000  0.0000     1.0000  0.0000  0.0000  0.0000
← ここで落ちている。

また、落ちている部分も一定でなく、別の系(やや構造を大きくしたSuperCell、といっても、原子数が40個でk点は4,4,4程度、カットオフも25.00  rydberg くらいなので、メモリなどは十分につんだ環境で計算しています。)

!bPP    2  1  2  2  1  1066   5 il1,tau1,il2,tau2,il3,nrcml,mopsc                    
!bPP   10   2   1   2   2   1  1066   5 : MM, L1,T1,L2,T2,L3,NRC,MORD
!bPP nfp,nfout,kord,mm,il1,tau1,il2,tau2,il3 =    39    6   20   11    2    1    2    2    3
!bPP    2  1  2  2  3  1125   5 il1,tau1,il2,tau2,il3,nrcml,mopsc

← ここで落ちることもある。

エラーメッセージなしで落ちています。念のため、コンパイルは

- Supported platformsで 1) GNU Linux (EM64T/AMD64)を選択
- Supported compilersで 2) Intel Fortran compilerを選択
- Supported programming-modelsで 1) MPI parallelを選択
- Supported MPI librariesで 2) Open MPIを選択
- Enter MPI library directory. で/usr/local/openmpi-intel121を入力
- Supported BLAS/LAPACKで 2) Intel Math Kernel Library (MKL)を選択
- Enter BLAS/LAPACK library directory. で
/opt/intel/composer_xe_2011_sp1/mkl/lib/intel64 を指定

と選択しています。サンプル計算はうまくいっているようなので、特にコンパイル結果が悪さしたとも思えません。

また、並列計算をさせる際に、ne,nkの分け方で(系にもよるかと思いますが)

効率のよい並列計算の割り振りはどのように考えてne,nkを割り振ればよろしいものでしょうか?

なお、計算はPBEで収束させた結果を

initial_wavefunctions = file
initial_charge_density = file

で、初期値にして利用しています。

以下が私のインプットファイルで、SrTiO3のHSE計算です。並列計算は8で ne,nkの指定なしで行っています。(LDA+U,PBEなどの計算はなんの問題もなくできています。)

file_namse.data

c ====<< & or & >>===
c & : VPP, VP
c $ : DEC, HP, SUN
&fnames
F_INP    = './nfinput.data'
F_POT(1) = '../pp/Sr_ggapbe_us_01.pp'
F_POT(2) = '../pp/Ti_ggapbe_us_02.pp'
F_POT(3) = '../pp/O_ggapbe_us_02.pp'
F_DYNM   = './nfdynm.data'
F_CHGT   = './nfchgt.data'
F_ENF    = './nfefn.data'
F_CNTN   = './continue.data'
F_ZAJ    = './zaj.data'
&end

Input  ファイル

Control{
condition = 0      ! {0|1|2|3}|{initial|continuation|fixed_charge|fixed_charge_continuation}
cpumax = 5 day    ! {sec|min|hour|day}
max_iteration = 60000
}

accuracy{
cke_wavefunctions =  25.00  rydberg  ! cke_wf
cke_chargedensity = 230.00  rydberg  ! cke_cd
num_bands = 30
ksampling{
method = mesh ! {monk|mesh|file|directin|gamma}
mesh{ nx=6, ny=6, nz=6}
}
smearing{
method = tetrahedral ! {parabolic|tetrahedral}
width  = 0.002 hartree
}
xctype = ggapbe
hybrid_functional{
sw_hybrid_functional = ON
sw_screened_exchange = ON
alpha  = 0.25
omega = 0.106
reduction_factor{
f1=2
f2=2
f3=2
}
}


scf_convergence{
delta_total_energy = 1.e-9 hartree
succession   = 3   !default value = 3
}
force_convergence{
delta_force = 0.1e-3
}

initial_wavefunctions = file !{random_numbers|matrix_diagon}
initial_charge_density = file

}

structure{
unit_cell_type=bravis
unit_cell{
a = 7.52477 , b= 7.52477 , c= 7.52477
alpha=90.0, beta=90.0, gamma=90.0
}

symmetry{
crystal_structure = simple_cubic
sw_inversion = 0
}
magnetic_state = para !{para|af|ferro}

atom_list{
coordinate_system = internal ! {cartesian|internal}
atoms{
!#default mobile=no
!#tag  rx                 ry                 rz                 element
0.0                0.0                0.0                Sr      
0.5                0.5                0.5                Ti      
0.0                0.5                0.5                O       
0.5                0.0                0.5                O       
0.5                0.5                0.0                O       
}
}
element_list{ !#tag element  atomicnumber  zeta  dev
Sr        38           0.00  2.0
Ti        22           0.00  2.0
O          8           0.00  2.0
}
}

wavefunction_solver{
solvers{
!#tag   sol    till_n  dts  dte  itr  var  prec cmix submat
!!mddavidson       -1     0.1  0.1  500  tanh on   3    on
Davidson       -1    0.1  0.1  500  tanh off   3    off
}

}

charge_mixing{
sw_mix_charge_hardpart = on
mixing_methods{
!#tag no   method   rmxs   rmxe   itr  var    prec istr  nbmix  update
1   simple   0.90   0.95   40   linear  on
2   simple   0.50   0.90  400   tanh    on
3  pulay  0.40   0.40  100   *       on     3    15     RENEW
}
}

structure_evolution{
method = gdiis  !{quench|gdiis|velocity_verlet|quench_with_constraint}
dt  = 100.0
gdiis{
gdiis_box_size = 4
gdiis_update = RENEW
c_forc2gdiis = 0.0050
c_iteration2GDIIS = 3
}
stress{
sw_stress = 0
iconstpw  = 0
}
}

postprocessing{
dos {
sw_dos = on
method = t
}
}

printlevel{
base = 1
timing = 1
solver = 1
evdff  = 1
rmm    = 0
snl    = 0
gdiis  = 1
eigenvalue = 1
spg    = 1
kp     = 2
pulay  = 0
matdiagon = 0
vlhxcq = 0
totalcharge = 1
submat = 0
strcfctr = 0
inputfile = 2
davidson = 1
}

上記の件、ご対処方法、あるいは心当たりなどある方、ご教示いただけると幸いです。

Re: HSE計算が不意に終了する

Posted by 甲賀淳一朗 at June 05. 2013

奥野さま

株式会社アスムスの甲賀と申します.お世話になります.

 

ksamplingブロックの下に,次の設定を挿入すれば異常終了はしなくなるのではないかと思います.

base_reduction_for_GAMMA = off

また,対応している波動関数ソルバーはlm+msd法とrmm法のみなので,

wavefunction_solverブロックの設定も書き換えていただく必要があります.

 

現公開版のハイブリッド汎関数法は,特にウルトラソフト擬ポテンシャルを利用する場合に計算時間の点で問題があり(PBE計算の数万倍もしくはそれ以上の計算時間),非常に単純な問題をのぞき有効にご活用いただくのは難しいかもしれません.

公開時期は未定ですが,次期公開版では改善される予定です.

 

ne, nkに関して申し上げますと,通常k点並列の方が効率がよいのでなるべくnkが大きくなるように設定するのがよいと思います.

ただし,k点数はさほど多くない場合もありますので,そのようなケースではバンド並列も組み合わせてご利用いただくと効率のよい計算ができると思います.

Re: HSE計算が不意に終了する

Posted by Yukihiro Okuno at June 07. 2013

甲賀様

お世話になります。

ご教示いただきありがとうございます。

base_reduction_for_GAMMA = OFFの指定が重要だったようですね。

マニュアルにもあったのに、確認不足で失礼しました。

もう一度トライしてみます。

ただ、ハイブリッド系の計算は、甲賀様のおっしゃられるとおりだとすると、まだ使えるレベルでないのかもしれませんね。

次のバージョンで修正されていれば、それを利用したいかと思います。

ありがとうございました。

 

 

Powered by Ploneboard