LAPACK make 실패: "'znep.out' 대상에 대한 레시피 실패" 오류

LAPACK make 실패: "'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"의 기본 구성을 사용했습니다. 기본 파일은 다음 위치에 있습니다.여기.

어떤 제안이 있으십니까? 나는 쿠분투 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테스트가 실행 중일 때, 컴파일할 때가 아닙니다. 이제 모든 테스트가 통과되었습니다!

관련 정보