1 背景:
操作系统:openEuler22.03 SP1
编译器:系统yum安装的openmpi-4.1.4
HDF5版本:1.10.3 源码地址:https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.3/src/hdf5-1.10.3.tar.gz
编译安装命令:
CC=mpicc CXX=mpicxx FC=mpifort ./configure --build=aarch64-unknown-linux-gnu --enable-fortran --enable-static=yes --enable-parallel --enable-shared
make
2 报错现象:

3 解决思路:
根据报错提示,MPI_Type_extent接口在MPI-3.0中已被移除,采用MPI_Type_get_extent替代
打开代码H5Smpio.c的第882行和1503行,将MPI_Type_extent改成MPI_Type_get_extent

再次make

此时继续报错
经过查阅openmpi的接口资料发现,MPI_Type_extent与MPI_Type_get_extent的用法有差异


很明显发现MPI_Type_get_extent比MPI_Type_extent多了一个参数
回到代码H5Smpio.c的第882行和1503行,加上中间的参数lb
查阅代码H5Smpio.c发现,882行处的MPI_Type_get_extent,在665行已定义MPI_Aint lb,这此时再882行中直接在中间加上参数lb即可

但1503行处的MPI_Type_get_extent,在1427行中未定义,此时也需要在1427行上定义上MPI_Aint lb,同时在1503行中间加上参数lb


此时,重新make即可解决问题。
1 背景:
操作系统:openEuler22.03 SP1
编译器:系统yum安装的openmpi-4.1.4
HDF5版本:1.10.3 源码地址:https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.3/src/hdf5-1.10.3.tar.gz
编译安装命令:
CC=mpicc CXX=mpicxx FC=mpifort ./configure --build=aarch64-unknown-linux-gnu --enable-fortran --enable-static=yes --enable-parallel --enable-shared
make
2 报错现象:

3 解决思路:
根据报错提示,MPI_Type_extent接口在MPI-3.0中已被移除,采用MPI_Type_get_extent替代
打开代码H5Smpio.c的第882行和1503行,将MPI_Type_extent改成MPI_Type_get_extent
再次make

此时继续报错
经过查阅openmpi的接口资料发现,MPI_Type_extent与MPI_Type_get_extent的用法有差异
很明显发现MPI_Type_get_extent比MPI_Type_extent多了一个参数
回到代码H5Smpio.c的第882行和1503行,加上中间的参数lb
查阅代码H5Smpio.c发现,882行处的MPI_Type_get_extent,在665行已定义MPI_Aint lb,这此时再882行中直接在中间加上参数lb即可

但1503行处的MPI_Type_get_extent,在1427行中未定义,此时也需要在1427行上定义上MPI_Aint lb,同时在1503行中间加上参数lb

此时,重新make即可解决问题。