phase並列実行時での並列化でのエラー
Up to User's Forum (General)現在利用している手持ちの計算機でやっている系を大規模で実行したく、まずtestファイルとして並列計算をテストしています。
中身は水分子(H2O)です。
-np 32 ne=32 nk=1
という条件で計算を開始したところ、
###ERROR(2104) Number of band-parallelization is greater than number of bands(neg).
というエラーで終了してしまいます。
accuracy{
ksampling{
mesh{
ny = 2
nx = 2
nz = 1
}
method = mesh
で計算をしているのですが、この条件ですとneは最大4(2*2)ということになりますでしょうか。
また、neを大きくするためにファイルの修正をすべきところ等ございますでしょうか。
バージョンは、phase2019.02となっております。
よろしくお願いします。
accuracy{
ksampling{
mesh{
ny = 2
nx = 2
nz = 1
}
method = mesh
は、k点分割の指定であり、並列数指定のnkに関係があります。
k点分割数は、対象性の利用により削減される場合があります。
詳しくは、マニュアルの「k点数の調べ方」を参照してください。
一方、エラーメッセージ
###ERROR(2104) Number of band-parallelization is greater than number of bands(neg).
は「バンド並列」に関するエラーであり、「バンド並列数」を「バンド数」より多くできないことを述べています。
バンド数は、入力ファイル中で
accuracy{
…
num_bands = 16
…
}
のように指定します。
この指定は、価電子数と深く関係します。
水分子一つの計算であれば、価電子数は8個だと思います。
その場合、価電子を全て収容するために必要なバンド数は4で、
それよりも少し多く設定します。
(不測する場合は、実行時に増やされます)
必要以上に大きな値を設定しても、良いことはありません。
num_bands = 32
と設定すればバンド数が32になり、ne=32で計算実行できますが、
「バンド32並列を実行するために、バンド数を増やす」
のは、(プログラムが動作することの確認にはなりますが)
良い方法とは思いません。
水分子一つの計算はテストようとのことですので、
例えば、本番の計算が水分子50個であれば、価電子が50倍の400個になりますので、
バンド数が増えて、バンド並列数を増やして並列実行できます。