古いバージョンのBBSは閲覧のみ可能です。
The old BBS is read only.

Replies : 6 Last Post : December 30, 2004 (Thu) 16:12:55

128

Error (supercell3*3*3 Calculation)

Posted on : November 24, 2004 (Wed) 21:58:08

by takafumi ihara

今年春のCMDでお世話になりました井原と申します。
Fe(bcc)のスーパーセルの計算を試みたのですが、spec*実行時にセグメントエラーが出てそこから進みません。

インプットファイルは次のようなものになります。
(計算環境は OS:RedHatLinux 8, Compiler:Intel Fortran Compiler 7です)

#----------------------- input data ----------------------------#
# go/ngo/dos/dsp/spc file name
go data/05

#- primitive vector --------------------------------------#
# this aux option is only effective for newest versions of AkaiKKR
aux
1.000000000000 0.000000000000 0.000000000000
0.000000000000 1.000000000000 0.000000000000
0.000000000000 0.000000000000 1.000000000000
16.129
#L.C. of supercell(a.u.)
# 1 Angstrom = 0.529177249 a.u.

#- edelt ewidth nrl/sra mjw/vbh/vwn mag/nmag/-mag/rvrs/kick ------#
0.0010 1.0000 sra vwn mag

#- init/1st/2nd quit/update 0/1/2/../t/l/m/h/u iteration pmix -#
2nd update 5 40 0.02000

#- number of type -----------------------------------------------#
1
# type components rtin field l_max Z concentration----------#
2a 1 0. 0.000 2 26 1.00
#Fe

# number of atoms------------------------------------------------#
54
#- position ---------------------------------------------- type -#
0.00000000a 0.00000000b 0.00000000c 2a
0.33333333a 0.00000000b 0.00000000c 2a
<以下,原子54個(typeは全て2a)分の座標の続き;略>

出たエラーは次のとおりです。
セグメントエラー spec3 < in/05 > out/05 (coreを出力しました)

k点の数を減らしてみたり,specx.fのパラメータも大きくしたり小さくしたりいろいろやってみましたが、まったくエラーが解消されません。とりあえず、現在のspec*.f中の指定パラメータは以下のとおりです。
& (natmmx=54, ncmpmx=1, msizmx=150, mxlmx=3, nk1x=40, nk3x=21,
& msex=201, ngmx=15, nrpmx=250, ngpmx=250, npmx=100, msr=400)

身勝手な質問だとは承知していますが,よろしければアドバイスをいただければと思います。よろしくお願いします。

 
 

129

Re:Error (supercell3*3*3 Calculation, in Japanese)

Posted on : November 26, 2004 (Fri) 20:14:08

by Kobayashi Kazuaki

>今年春のCMDでお世話になりました井原と申します。
>Fe(bcc)のスーパーセルの計算を試みたのですが、spec*実行時にセグメントエラーが出てそこから進みません。
>
>インプットファイルは次のようなものになります。
>(計算環境は OS:RedHatLinux 8, Compiler:Intel Fortran Compiler 7です)
>
>#----------------------- input data ----------------------------#
># go/ngo/dos/dsp/spc file name
> go data/05
>
(中略)
>#- position ---------------------------------------------- type -#
>0.00000000a 0.00000000b 0.00000000c 2a
>0.33333333a 0.00000000b 0.00000000c 2a
><以下,原子54個(typeは全て2a)分の座標の続き;略>
>
>出たエラーは次のとおりです。
>セグメントエラー spec3 < in/05 > out/05 (coreを出力しました)
>
>k点の数を減らしてみたり,specx.fのパラメータも大きくしたり小さくしたりいろいろやってみましたが、
>まったくエラーが解消されません。とりあえず、現在のspec*.f中の指定パラメータは以下のとおりです。
> & (natmmx=54, ncmpmx=1, msizmx=150, mxlmx=3, nk1x=40, nk3x=21,
> & msex=201, ngmx=15, nrpmx=250, ngpmx=250, npmx=100, msr=400)

 物・材機構の小林です。以前の書き込みにもあるように
筆者自身は、当該ソフトを使っていないので一般論としての
コメントです。

 上記の計算において、既にこのバンド計算ソフトを使って、
BCC Feの単位胞としての計算、先日の書き込みにあった
スーパーセル中での16個の計算は、問題なく遂行できている
という前提で話をすると、原子数サイズの増加による問題
が考えられます。

 上記にある、”セグメントエラー”というのは、当該
バンド計算ソフトからのメッセージでしょうか、それとも
OS(システム)側のメッセージでしょか?。これだけ
では情報不足ですが、メモリー関連のエラーのような
気がします。つまり原子サイズを大きくして、システム
が使用できるメモリー以上になったか、或いは、原子数
を大きくしたのに、パラメーター設定の中に原子数増加
に対応させていない部分があり(例えばバンド数など、
鉄54個ならかなりの数になるはず)、メモリー領域を
壊したためにプログラム実行が止まったなどを筆者は
疑います。

 単純にメモリー不足の場合、unlimitで解決する場合
があります。この時、それでもエラーになる場合、膨大
なcoreを出力するので、coredumpsizeはゼロにしておく
ことを薦めます(limit coredumpsize 0)。unlimit
はシステムによっては異なる方法による場合があるかも
しれません。

 既に試したもの、的外れなものであったならご容赦
ください。以上、何かのお役に立てれば幸いです。

(--@--は変なメイル対策です)

 

130

Re^2:Error (supercell3*3*3 Calculation, in Japanese)

Posted on : November 27, 2004 (Sat) 14:51:45

by takafumi ihara

物・材機構 小林 様

早速のご意見,誠にありがとうございます.
既に他の方からの返信もあり,皆様からのご意見を元にして,無事supercell3*3*3の計算を実行し,結果を得ることができました.現在,supercell4*4*4の計算を試行中です.

今後,またご意見を拝聴させていただく機会があるかと思いますが,どうぞよろしくお願いします.

井原隆文

 

131

Re^3:Error (supercell3*3*3 Calculation, in Japanese)

Posted on : November 28, 2004 (Sun) 03:46:56

by Kobayashi Kazuaki

>既に他の方からの返信もあり,皆様からのご意見を元にして,
>無事supercell3*3*3の計算を実行し,結果を得ることができました.
>現在,supercell4*4*4の計算を試行中です.
>
>今後,またご意見を拝聴させていただく機会があるかと思いますが,
>どうぞよろしくお願いします.
>
>井原隆文

 物・材機構の小林です。

 計算がうまく行きなによりです。もし差し障りが無ければ、
どのようにして問題解決に至ったのか(単純なパラメーター
設定の問題か、メモリー問題か等)示して貰えれば、ありが
たいです(筆者にとっても参考になるので)。

 以上、よろしくお願いします。

(--@--は変なメイル対策)

 

132

Re^4:Error (supercell3*3*3 Calculation, in Japanese)

Posted on : December 18, 2004 (Sat) 18:19:49

by takafumi ihara

(物・材機構 小林様wrote)
> 計算がうまく行きなによりです。もし差し障りが無ければ、
>どのようにして問題解決に至ったのか(単純なパラメーター
>設定の問題か、メモリー問題か等)示して貰えれば、ありが
>たいです(筆者にとっても参考になるので)。

井原です。返事が遅れ、大変申し訳ありません。
今回のsupercell3*3*3の計算がうまくいかなかった原因ですが、パラメータ設定の問題とメモリーの問題両方がありました。
まずパラメータ設定の問題として…
  & (natmmx=54, ncmpmx=1, msizmx=150, mxlmx=3, nk1x=40, nk3x=21,
& msex=35, ngmx=15, nrpmx=250, ngpmx=250, npmx=100, msr=400)
といったspec*中のパラメータmsizmxを過小に設定していたことがあります。bccのsupercell3*3*3の計算ですので、54個の原子が存在し、d波散乱まで考慮しているので、最低54*9=486に設定しなくてはならないと指摘されました。これは、マニュアルにも載っていることですし、私の完全なうっかりミスです。
次にメモリなどのハードに依存する問題ですが、これくらいの大きさの系になると、msex、nk1x、nk3xは減らしてよいとの指摘を受けました。msex=は用いるエネルギー積分の数らしいのですが、セルフフンシステントな計算だけならば
35ぐらいでもOKらしいです。ただ、最後にDOSを書きたいときにはこれを増やす必要があるとのことです。
(ちなみにこれは、dosを書く前の計算まではmsex=35で計算して、dosを出す段階になってmsex=200とするだけでいいのか? dosを最終的に出したいときは、最初のgo計算から計画的にmsexを高めに設定しておかなければならないのか、よくわかってなかったりするのですが。)なお、supercell3*3*3の計算ではmsex=35で、インプットファイルでk点を1に設定する(アウトプットファイルに表示されるnkは4になる)と、無事計算を行えました。k点はもう少し増やせるかもしれません。

なお、supercell4*4*4の計算ですが、それ用のspec*をコンパイルして得ようとすると以下のようなメッセージが出ました。
***ここから***
f77 -O -o source/spec4.o -c source/spec4.f
source/spec4.f:60: 変数 `_BLNK__' のサイズが大きすぎます
make: *** [source/spec4.o] エラー 1
***ここまで***
spec4.fを見る限りでは、60行目で宣言されている下記の配列の1次元あたりの長さ(つまり、例えば(2*mxlmx-1)**2*ngmx*nkmx*ndmxの大きさ)がコンパイラ(もしくはシステム?)の限界を超えているのが原因ではないか、と考えております。現在もコンパイルは成功しておりません。
***ここから***
complex*16 e(msex,2),tch((2*mxlmx-1)**2*ngmx*nkmx*ndmx)
***ここまで***
ちなみに計算環境は OS:RedHatLinux 8, Compiler:Intel Fortran Compiler 7です。

以上、失礼します。
井原隆文

 

133

Re^5:Error (supercell3*3*3 Calculation, in Japanese)

Posted on : December 19, 2004 (Sun) 22:47:19

by Kobayashi Kazuaki

 物質・材料研究機構の小林です。

>井原です。返事が遅れ、大変申し訳ありません。

 いえ、情報ありがとうございます。大変参考になります。

>今回のsupercell3*3*3の計算がうまくいかなかった原因ですが、
>パラメータ設定の問題とメモリーの問題両方がありました。
(中略)
>(ちなみにこれは、dosを書く前の計算まではmsex=35で計算して、
>dosを出す段階になってmsex=200とするだけでいいのか? 
>dosを最終的に出したいときは、最初のgo計算から計画的に
>msexを高めに設定しておかなければならないのか、
>よくわかってなかったりするのですが。)

 上記のものとちょっと違う話ですが、大きな系に対し構造最適化まで含めた
計算では、最初少ないk点数で計算して、バンドなどを描く段階でk点数を増
やすということが行われたりします(←この場合、k点数を増やすことで結果
に大きな差が出ないことが前提)。おそらくmsexの数を変えて、結果に差が
出る場合、それが求めるべき精度と比べて十分に小さいかどうかによるのかと
思われます。

>なお、supercell3*3*3の計算ではmsex=35で、インプットファイルでk点を1に設定する
>(アウトプットファイルに表示されるnkは4になる)と、無事計算を行えました。

 これは実質的にk点1点(Γ点)のみでの計算という意味でしょうか?。

>なお、supercell4*4*4の計算ですが、それ用のspec*をコンパイルして得ようとすると以下
>のようなメッセージが出ました。

 4*4*4ということは128個の鉄原子の計算で、かなり大きな計算と思われます。
このくらいになると、さ最初の取り掛かりとしての計算はk点1点のみで行っても問題ない
と思います。ただ求めるべき物理量によっては1点だけでは駄目な場合もあるかと思います。

>***ここから***
>f77 -O -o source/spec4.o -c source/spec4.f
>source/spec4.f:60: 変数 `_BLNK__' のサイズが大きすぎます
>make: *** [source/spec4.o] エラー 1
>***ここまで***
>spec4.fを見る限りでは、60行目で宣言されている下記の配列の1次元
>あたりの長さ(つまり、例えば(2*mxlmx-1)**2*ngmx*nkmx*ndmxの大きさ)
>がコンパイラ(もしくはシステム?)の限界を超えているのが原因ではないか、
>と考えております。現在もコンパイルは成功しておりません。
>***ここから***
> complex*16 e(msex,2),tch((2*mxlmx-1)**2*ngmx*nkmx*ndmx)
>***ここまで***
>ちなみに計算環境は OS:RedHatLinux 8, Compiler:Intel Fortran Compiler 7です。

 上記エラーに関しては何とも言えないのですが、ここで使われている
システムのCPUは32ビットのものでしょうか?。64ビットとそれに対応した
コンパイラ(と大量のメモリー)を使うとうまくいく可能性があるかもしれません。

 以上、的外れな話になってるかもしれませんが、何かの参考になれば幸い
です。

(--@--は変なメイル対策)

 

136

Re^6:Error (supercell3*3*3 Calculation, in Japanese)

Posted on : December 30, 2004 (Thu) 16:12:55

by takafumi ihara

京都大学原子炉実験所の井原です。
今まで、所属を書くのを忘れていました。すいません。

> 上記のものとちょっと違う話ですが、大きな系に対し構造最適化まで含めた
>計算では、最初少ないk点数で計算して、バンドなどを描く段階でk点数を増
>やすということが行われたりします(←この場合、k点数を増やすことで結果
>に大きな差が出ないことが前提)。おそらくmsexの数を変えて、結果に差が
>出る場合、それが求めるべき精度と比べて十分に小さいかどうかによるのかと
>思われます。
k点数は一定ですが、「最初少ないmsex(1)で計算して、バンドなどを描く段階でmsex(2)を増やす」方法と「最初からmsex(2)で計算し、msex(2)でバンドを描く」方法を、Fe2個を含むbccユニットセルで計算し、両者から得られたdosプロットを比較しましたが、各エネルギープロット点におけるdosの誤差は10E-4オーダーレベルのものでした。というわけで、これが大きい系にも適用できるとして、普段の計算でもdosをプロットして正しく計算が行われているか確認することを気にとめつつも、通常はmsexを小さくして計算してよいのだと考えています。
この事実が、そもそも当たり前のことなのか小生まだまだ薄学なのでよくわかりませんが、とりあえず報告しておきます。

> 上記エラーに関しては何とも言えないのですが、ここで使われている
>システムのCPUは32ビットのものでしょうか?。64ビットとそれに対応した
>コンパイラ(と大量のメモリー)を使うとうまくいく可能性があるかもしれません。
たぶん32ビットだと思います。付属の書類に何ビットか書いていないので、なんとも言えませんが。
私自身の見落としだったのかもしれませんが、akaikkrのファイル置き場にmpi対応のプログラムも置いてあるようですね。(大々的に宣伝されていないのか、今まで見落としていたのですが。)
いままでのパッケージでは1CPUでの計算実行しかできなかったのですが、こちらのMPIプログラムで並列計算を行えば、何とかsupercell4*4*4の計算もできるかな、と思い現在テスト中です。

以上、簡単ですが報告させていただきます。
井原隆文
京都大学原子炉実験所