valgrind에서 다음과 같은 오류가 나타납니다.Petsg 실행시 Valgrind 관련 문제
==30996== Conditional jump or move depends on uninitialised value(s)
==30996== at 0x12B28904: ??? (in /usr/lib64/libmlx4-rdmav2.so)
==30996== by 0xE12CF9A: ibv_open_device (in /usr/lib64/libibverbs.so.1.0.0)
==30996== by 0xAAFA03B: btl_openib_component_init (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xAAF0832: mca_btl_base_select (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xAAF0160: mca_bml_r2_component_init (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xAAEE95D: mca_bml_base_init (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xABE96D9: mca_pml_ob1_component_init (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xABE75A8: mca_pml_base_select (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xAA98BD3: ompi_mpi_init (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0xAAB87EC: PMPI_Init_thread (in /sw/arcts/centos7/openmpi/1.10.2-gcc-4.8.5/lib/libmpi.so.12.0.2)
==30996== by 0x5D4664: PetscInitialize.part.3 (in /scratch/kfid_flux/ykmizu/ROMLSS/bin/ks_main.x)
==30996== by 0x49B5B4: main (in /scratch/kfid_flux/ykmizu/ROMLSS/bin/ks_main.x)
==30996==
이 오류는 반복해서 반복됩니다. PetscInitialize가 나에게 왜 힘든 시간을 줄 것인지 이해할 수 없습니다. 내가 int 치의과 복식을 초기화 등
PetscInitialize(&argc, &argv, NULL, NULL);
SlepcInitialize(&argc, &argv, NULL, NULL);
PetscViewerPushFormat(PETSC_VIEWER_STDOUT_SELF, PETSC_VIEWER_ASCII_MATLAB);
이 단지 거짓 오류 후에 내가 내 main.c에 파일에서 호출하는 첫 번째 것들 중 하나입니까? 어떤 도움이라도 대단히 감사하겠습니다. 이것에 대해 조금 절실합니다. 고맙습니다.
어떻게 서로 다른 두 개의 빌드가 앞쪽 mpich 용이고 다른 쪽은 open-mpi 용입니까? 나는 mpich를 설치했는데, 그것은 open-mpi의 링크를 풀게했다. 한번 시도한 결과, make는 mpi.h를 찾지 못했습니다. mpich를 재 연결하여 프로그램을 다시 작동 시키려고했지만 mpi.h를 찾을 수 없습니다. 한 번에 두 개의 open-mpi와 mpich 중 하나만 연결할 수 있다면 어떻게 두 가지 다른 버전을 만들 수 있습니까? – Yue
죄송합니다. configure --download-mpich 옵션을 사용하여 설치를 시도 했습니까? 또는 당신은 혼자서 mpich를 설치했습니다. 내 의견에는 가장 안전한 방법은이 옵션을 직접 사용하는 것입니다. –
두 버전을 빌드하는 경우 PETSC를 동일한 PETSC_DIR로 구성 할 수 있지만 PETSC_ARCH는 다릅니다. 예를 들어, openmpi 버전의 경우 : ./confugre PETSC_DIR = yourdir PETSC_ARCH = arch-linux-openmpi --with-mpi-dir = your_openmpi_dir ... mpich 버전의 경우 : ./confugre PETSC_DIR = yourdir PETSC_ARCH = arch-linux-mpich - -download-mpich ... 스위치 환경 변수 PETSC_ARCH에 의해 서로 다른 두 버전의 mpi를 링크하고 코드를 다시 컴파일 할 수 있습니다. –