运行Petsc时Valgrind的问题

问题描述 投票:0回答:1

我从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会给我带来困难。在我初始化整数和双精度等之后,这是我在main.c文件中调用的第一个东西之一。

PetscInitialize(&argc, &argv, NULL, NULL);
SlepcInitialize(&argc, &argv, NULL, NULL);
PetscViewerPushFormat(PETSC_VIEWER_STDOUT_SELF, PETSC_VIEWER_ASCII_MATLAB);

这些只是错误的错误吗?任何帮助将不胜感激。对此有点绝望。谢谢。

valgrind petsc
1个回答
0
投票

有讨论here

看来你使用的是在valgrind下嘈杂的Open MPI。您可以尝试编译两个版本的PETSc(因此两个不同的PETS_ARCH):一个使用系统中的优化MPI,另一个使用MPICH和configure选项--download-mpich构建。

对于调试,您可以选择使用mpich编译的PETSC_ARCH。对于性能评估,您可以选择使用平台的优化MPI编译的另一个PETSC_ARCH。

另外,如果您想同时使用PETSc和SLEPc,您可以选择PetscInitialize或SlepcInitialize来启动他们的环境。重复两次是没有意义的。

我希望它对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.