LAPACK make failed:「 'znep.out'ターゲットのレシピの失敗」エラー

LAPACK make failed:「 'znep.out'ターゲットのレシピの失敗」エラー

私の主な問題は、次のエラーが発生することです。

Makefile:463: recipe for target 'znep.out' failed

走った後make

インストールしてみましたガスシールド溶接(gプロジェクター強化波方式、密度関数理論エミュレーション)をマイコンピュータで実行します。 ASEが動作しており、インストールしました。図書館、指定されたとおりにBLASライブラリをコンパイルします。ここ ただし、抽出されたパッケージで「make」を実行すると、常に同じエラーが発生します。

~/Downloads/lapack-3.8.0$ make 

gfortran -O2 -frecursive -c -o zunt03.o zunt03.f
gfortran  -o xeigtstz zchkee.o zbdt01.o zbdt02.o zbdt03.o zbdt05.o zchkbb.o zchkbd.o zchkbk.o zchkbl.o zchkec.o zchkgg.o zchkgk.o zchkgl.o zchkhb.o zchkhs.o zchkst.o zchkst2stg.o zchkhb2stg.o zckcsd.o zckglm.o zckgqr.o zckgsv.o zcklse.o zcsdts.o zdrges.o zdrgev.o zdrges3.o zdrgev3.o zdrgsx.o zdrgvx.o zdrvbd.o zdrves.o zdrvev.o zdrvsg.o zdrvsg2stg.o zdrvst.o zdrvst2stg.o zdrvsx.o zdrvvx.o zerrbd.o zerrec.o zerred.o zerrgg.o zerrhs.o zerrst.o zget02.o zget10.o zget22.o zget23.o zget24.o zget35.o zget36.o zget37.o zget38.o zget51.o zget52.o zget54.o zglmts.o zgqrts.o zgrqts.o zgsvts3.o zhbt21.o zhet21.o zhet22.o zhpt21.o zhst01.o zlarfy.o zlarhs.o zlatm4.o zlctes.o zlctsx.o zlsets.o zsbmv.o zsgt01.o zslect.o zstt21.o zstt22.o zunt01.o zunt03.o dlafts.o dlahd2.o dlasum.o dlatb9.o dstech.o dstect.o dsvdch.o dsvdct.o dsxt1.o alahdg.o alasum.o alasvm.o alareq.o ilaenv.o xerbla.o xlaenv.o chkxer.o ../../libtmglib.a ../../liblapack.a ../../librefblas.a
make[2]: Leaving directory '/home/joshua/Downloads/lapack-3.8.0/TESTING/EIG'
NEP: Testing Nonsymmetric Eigenvalue Problem routines
./EIG/xeigtstz < nep.in > znep.out 2>&1
Makefile:463: recipe for target 'znep.out' failed
make[1]: *** [znep.out] Error 139
make[1]: Leaving directory '/home/joshua/Downloads/lapack-3.8.0/TESTING'
Makefile:42: recipe for target 'lapack_testing' failed
make: *** [lapack_testing] Error 2

インストール手順で提案されている「Makefile」のデフォルト設定を使用しました。デフォルトファイルは次の場所にあります。ここ

どんな提案がありますか?私はKubuntu 17.10を使用しています

答え1

HPC講義を聞いて研究をした後、答えを得ました。

カーネルが特定の量のメモリをコンパイルプロセスに関連付けるようです。この機能は、問題が発生して不必要に大量のメモリの割り当てを開始したい場合に便利です。しかし、時にはコンパイルに通常より多くのメモリが必要で、エラーが発生し始めます。

次に、次のコマンドを使用してコンパイル用の無制限メモリを設定します。

ulimit -s unlimited

今、すべてがうまくいきます。

追加の質問について@steeldriverに感謝します。

答え2

このulimit -s unlimited回避策は私の問題を完全に解決しませんでした。 gccスタックスマッシュプロテクタのために追加の欠陥が発生します。

# cat TESTING/snep.out 
*** stack smashing detected ***: <unknown> terminated
IOT Trap
 Tests of the Nonsymmetric Eigenvalue Problem routines

スタックスマッシュプロテクターをオフにするには、make.inc の CFLAGS 行を編集して次をお読みください.

 CFLAGS    = -O3 -I$(TOPDIR)/INCLUDE -fno-stack-protector

そしてmake cleanmake all

gccスタックスマッシュ検出器が実際のメモリエラーを検出している可能性が高いです。このバグレポート一部のテストでは、特定の配列にインデックスを付けるときにバグ1つのバイアスがあることが示唆されているため、バグの修正を含む最新バージョンのlapackを試してみる価値があるかもしれませんが、まだ修正されていない場合はバグアップストリームを送信。

(しかし、別のビルドエラーも発生しました。つまり、並列makeを使用してビルドすることはできませんでしたが、標準の単一make -j16 allプロセスを使用してビルドすることはできませんでしたmake all。)

答え3

私も同じ問題があります。回避策を試しましたが、ulimit -s unlimitedテストが実行されているときはコンパイルするのではありません。今、すべてのテストに合格しました!

関連情報