-
Notifications
You must be signed in to change notification settings - Fork 947
Description
hdf5 (and netcdf) are widely used libs in production codes, e.g. in weather and climate.
Before using hdf5 libs, built with ompi, in production, I'd like to make sure the hdf5 mpi tests pass.
I guess the issue might as well be with hdf5, but since the tests pass with the intel mpi, I'll open the ticket here.
I'm seeing the same behaviour with ompi 5.0.9 and with recent master branch commits:
pmix/99-2026-01-18-1eb961d0
prrte/99-2026-01-18-97e683de
openmpi-ifort/99-2026-01-15-a5a7068b
The modules are mine. The version has the commit tag, and the date.
I'm building hdf5 1.14.6 with:
COMMON_FLAGS="-O3 -march=core-avx2"
./configure \
CC=cc \
CFLAGS="-std=c11 -Wbad-function-cast ${COMMON_FLAGS}" \
FC=ftn \
FCFLAGS="${COMMON_FLAGS}" \
--enable-parallel \
--enable-hl \
--enable-fortran \
--with-zlib=...
where ftn and cc are my wrappers for Intel oneapi C compiler and Intel ifort Fortran compiler.
The mpi tests seem to hang (or run very slow) after this:
============================
Test log for t_mpi
============================
*** Hint ***
You can use environment variable HDF5_PARAPREFIX to run parallel test files in a
different directory or to add file type prefix. e.g.,
HDF5_PARAPREFIX=pfs:/PFS/user/me
export HDF5_PARAPREFIX
*** End of Hint ***
===================================
MPI functionality tests
===================================
--------------------------------
Proc 0: *** MPIO 1 write Many read test...
--------------------------------
MPI-process 0. hostname=tst5-hbv4-2
MPI-process 2. hostname=tst5-hbv4-2
MPI-process 4. hostname=tst5-hbv4-2
MPI-process 1. hostname=tst5-hbv4-2
MPI-process 3. hostname=tst5-hbv4-2
MPI-process 5. hostname=tst5-hbv4-2
--------------------------------
Proc 0: *** MPIO File size range test...
--------------------------------
MPI_Offset is signed 8 bytes integral type
which starts here:
https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/testpar/t_mpi.c#L1159
and calls test_mpio_gb_file:
https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/testpar/t_mpi.c#L190
ps ax shows:
2494942 ? Rl 1:17 /dev/shm/SPE/1769088574/hdf5-1.14.6/testpar/.libs/t_mpi
2494943 ? Rl 1:17 /dev/shm/SPE/1769088574/hdf5-1.14.6/testpar/.libs/t_mpi
2494944 ? Rl 1:17 /dev/shm/SPE/1769088574/hdf5-1.14.6/testpar/.libs/t_mpi
2494951 ? Rl 1:17 /dev/shm/SPE/1769088574/hdf5-1.14.6/testpar/.libs/t_mpi
2494959 ? Rl 1:17 /dev/shm/SPE/1769088574/hdf5-1.14.6/testpar/.libs/t_mpi
2494970 ? Rl 1:17 /dev/shm/SPE/1769088574/hdf5-1.14.6/testpar/.libs/t_mpi
Attaching gdb to a randomly chosen process of the above, I see some progress,
i.e. the bt changes with time.
So I might see
(gdb) bt
#0 uct_ib_mlx5_poll_cq (iface=0xa88b010, cq=<optimized out>, poll_flags=2, check_cqe_cb=<optimized out>) at ib_mlx5.inl:168
#1 uct_rc_mlx5_iface_poll_rx_cq (iface=0xa88b010, poll_flags=2) at rc/rc_mlx5.inl:277
#2 uct_rc_mlx5_iface_common_poll_rx (iface=0xa88b010, poll_flags=2) at rc/rc_mlx5.inl:1471
#3 uct_rc_mlx5_iface_progress (arg=0xa88b010, flags=2) at rc/rc_mlx5_iface.c:111
#4 uct_rc_mlx5_iface_progress_cyclic (arg=0xa88b010) at rc/rc_mlx5_iface.c:121
#5 0x0000068f8ba9fc66 in ucs_callbackq_dispatch (cbq=<optimized out>)
at /dev/shm/SPE/1768926075/ucx-1.20.0/src/ucs/datastruct/callbackq.h:215
#6 uct_worker_progress (worker=<optimized out>) at /dev/shm/SPE/1768926075/ucx-1.20.0/src/uct/api/uct.h:2824
#7 ucp_worker_progress (worker=0xa6eca60) at core/ucp_worker.c:3071
#8 0x0000068f8bb93a6d in opal_progress ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libopen-pal.so.0
#9 0x0000068f8dc61365 in ompi_request_default_wait_all ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#10 0x0000068f8dd08f49 in ompi_coll_base_barrier_intra_basic_linear ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#11 0x0000068f8dce25c4 in mca_common_ompio_file_close ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#12 0x0000068f8ddd37f7 in mca_io_ompio_file_close ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#13 0x0000068f8dc5214e in file_destructor ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#14 0x0000068f8dc52e34 in ompi_file_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#15 0x0000068f8dc8f23f in PMPI_File_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#16 0x0000000000405275 in ?? ()
#17 0x0000068f8d827efb in __libc_start_call_main () from /usr/lib/libc.so.6
#18 0x0000068f8d827fbb in __libc_start_main () from /usr/lib/libc.so.6
#19 0x0000000000404b75 in ?? ()
(gdb)
or
(gdb) bt
#0 uct_mm_iface_poll_fifo (iface=0x1be4b3a0) at sm/mm/base/mm_iface.c:348
#1 uct_mm_iface_progress (tl_iface=0x1be4b3a0) at sm/mm/base/mm_iface.c:410
#2 0x00000a5a9a62cc66 in ucs_callbackq_dispatch (cbq=<optimized out>)
at /dev/shm/SPE/1768926075/ucx-1.20.0/src/ucs/datastruct/callbackq.h:215
#3 uct_worker_progress (worker=<optimized out>) at /dev/shm/SPE/1768926075/ucx-1.20.0/src/uct/api/uct.h:2824
#4 ucp_worker_progress (worker=0x1bde98a0) at core/ucp_worker.c:3071
#5 0x00000a5a9a720a6d in opal_progress ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libopen-pal.so.0
#6 0x00000a5a9c9d1e65 in mca_pml_ucx_recv ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#7 0x00000a5a9c8a1fc9 in ompi_coll_base_barrier_intra_basic_linear ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#8 0x00000a5a9c9f89e4 in mca_sharedfp_sm_file_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#9 0x00000a5a9c87b211 in mca_common_ompio_file_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#10 0x00000a5a9c96c7bf in mca_io_ompio_file_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#11 0x00000a5a9c969ebf in mca_io_base_file_select ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#12 0x00000a5a9c7ebdf4 in ompi_file_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#13 0x00000a5a9c82823f in PMPI_File_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#14 0x0000000000405275 in ?? ()
#15 0x00000a5a9c427efb in __libc_start_call_main () from /usr/lib/libc.so.6
#16 0x00000a5a9c427fbb in __libc_start_main () from /usr/lib/libc.so.6
#17 0x0000000000404b75 in ?? ()
or
(gdb) bt
#0 0x00000cdfb5ac507e in uct_rc_mlx5_iface_progress_cyclic (arg=0x3bea9010) at rc/rc_mlx5_iface.c:120
#1 0x00000cdfb6644c66 in ucs_callbackq_dispatch (cbq=<optimized out>)
at /dev/shm/SPE/1768926075/ucx-1.20.0/src/ucs/datastruct/callbackq.h:215
#2 uct_worker_progress (worker=<optimized out>) at /dev/shm/SPE/1768926075/ucx-1.20.0/src/uct/api/uct.h:2824
#3 ucp_worker_progress (worker=0x3bd0b4e0) at core/ucp_worker.c:3071
#4 0x00000cdfb89dde91 in mca_pml_ucx_recv ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#5 0x00000cdfb88adfc9 in ompi_coll_base_barrier_intra_basic_linear ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#6 0x00000cdfb88875c4 in mca_common_ompio_file_close ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#7 0x00000cdfb89787f7 in mca_io_ompio_file_close ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#8 0x00000cdfb87f714e in file_destructor ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#9 0x00000cdfb87f7e34 in ompi_file_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#10 0x00000cdfb883423f in PMPI_File_open ()
from /data/ashterenli/spe-tst5/install/u_intel/2025.1.0.666/openmpi-ifort-99-2026-01-15-a5a7068b/lib/libmpi.so.0
#11 0x0000000000405275 in ?? ()
#12 0x00000cdfb8427efb in __libc_start_call_main () from /usr/lib/libc.so.6
#13 0x00000cdfb8427fbb in __libc_start_main () from /usr/lib/libc.so.6
#14 0x0000000000404b75 in ?? ()
but after maybe 20 min, the test exists with:
prterun noticed that process rank 2 with PID ... on node tst5-hbv4-2 exited on
signal 14 (Alarm clock).
With intelmpi (same oneapi compiler + ifort) the mpi tests pass in ~1 min, or less.
I suspect these test failures might be related to weird hangs and crashes in real applications using
the same toolchain.
So I'm keen to resolve these.
Maybe somebody can reproduce building hdf5
Thank you