【翻訳】FAQ - 5. よくあるエラー
RESOURCES - FAQ - 5. Frequent errors during executionの翻訳です。翻訳間違い等ありましたら、コメント欄にお願いします。
5. よくあるエラー
5.1 forrtl: severe (59): list-directed I/O syntax error, unit 5, file stdinのようなエラーは何を意味しますか?
“forrtl” = Fortranランタイムライブラリ (つまり,Fortranのエラーです)
“list-directed I/O syntax error” = 読み書き中に起こったエラー (下記参照)
“unit 5″ = fortran unit (5 is typically used to read input data)
“stdin” = 標準入力 (つまり,端末入力かリダイレクト)
ターミナルか,"code < data-dile"という形式でデータを読み込んでいるのだと思います。多くの場合,ターミナルへの入力か,"data-file"にエラーがあります。データに不備があるのであり,コードに不備があるのではありません。データを注意深くご覧ください。よく見ても判明しない場合,FAQの4.4節をご覧ください。
5.2 segmentation faultでジョブがクラッシュします。
考えられる理由は幾つかあります。メモリの要求量が多い,実行ファイルや数学ライブラリが別のハードウェア用にコンパイルされている,コンパイラと数学ライブラリの間の非互換性,ハードウェアの異常,コンパイラや数学ライブラリのバグ。。後二者は,マシンやコンパイラが異なると再現しなくなります。バグは時々回避することもできますが,通常は何度も再現されるでしょう。動作テストや実施例におけるセグメンテーション違反は,ほとんど常に,コンパイラや数学ライブラリ,あるいは両者の互換性に関する問題点を指摘しています。
並列化計算で原因がよくわからない,予測できない,不安定なエラーは,ほとんどの場合はコンパイラやMPIライブラリのバグが原因で,時にはハードウェアの不備も可能性として考えられます。
大変申し訳ありませんが,Quantum ESPRESSOのせいではありません。
5.3 IOTKという意味不明なエラーでクラッシュします。
IOTKはXMLファイルを読み書きするツールキットです。
IOTKがXMLファイルデータの変数を見つけられないことに起因したエラーが,特にgfortranでコンパイルしたケースやMKLライブラリにおいて良く報告されています。
エラー内容に関する説明がない場合(例えば,ファイルは正常に読み込まれ,検索している変数は確かに存在する場合)や,再現性なく時たま発生する場合(例えば,特定のコンパイラの特定のバージョンで発生するなど)は,コンパイラのバグです。最適化レベルを下げるか,他のコンパイラ試してみてください。市販のコンパイラを利用しているのであれば,販売元へ問い合わせてください。
5.4 davcioというエラーで止まります。
davcioはディスクの読み書きルーチンです。I/O操作に対応する番号がエラー番号として返されていますので,エラーが発生したという以上の意味合いを持ちます。考えられる理由は幾つか考えられます。ディスク容量が無い,出力ディレクトリへの書込みができない,pw.xが生成しないデータの後処理命令が含まれている(あるいは変数wf_collectが設定されていない),データファイルやディレクトリが混乱している,データファイルが破損している,同一ファイル名の同一一時ディレクトリで複数のpw.xを実行している,などです。
5.5 原子座標が間違っていると言われます。
2つ以上の原子位置が重複しているか,近過ぎるのが原因です。XCrysDenなどのソフトで可視化して良く見てみてください。また,コード側でも周期的イメージをチェックしていることを忘れないでください。
5.7 cdiaghgやrdiaghgというエラーでコードが止まります。
このエラーは深刻です。部分占有空間と補正状態で計算されたハミルトニアンや重なり行列(反復対象化で使用)がおかしいことを意味します。しかし,このエラーは,1) 原子位置が酷く間違っている(例えば,近過ぎる),または2) 擬ポテンシャルが悪いか良くない限り発生しません。2)は通常,ウルトラソフト擬ポテンシャルで発生します。エラーが他のマシンで再現できない等不安定な場合,数学ライブラリを疑ってください。原因が分からない場合,"diagonalization='cg'"をオプションで指定してみてください。
5.8 scale_hルーチンでエラーが出て止まります。
可変セル構造最適化("vc-relax")の際,以下のエラーが出ることがあります。
Error in routine scale_h (1): Not enough space allocated for radial FFT: try restarting with a larger cell_factor.
これは,単位胞の初期値が小さ過ぎる場合に起こります。単位胞が酷く大きく変化すると,平面はやGベクトルの数が増え,最初に割り当てられた配列長を超えてしまうためです。変数"cell_factor"の値を大きくするか,より大きな単位胞で計算をしてみてください。