开发者
资源
解决openmpi4.1.4编译hdf5-1.10.3过程中报错“call to ‘MPI_Type_extent’ declared with attribute error:”
解决openmpi4.1.4编译hdf5-1.10.3过程中报错“call to ‘MPI_Type_extent’ declared with attribute error:”
发表于2023/09/07
7425

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 报错现象:

​cke_8139.png

3 解决思路:

根据报错提示,MPI_Type_extent接口在MPI-3.0中已被移除,采用MPI_Type_get_extent替代

打开代码H5Smpio.c的第882行和1503行,将MPI_Type_extent改成MPI_Type_get_extent

cke_28834.png

再次make

​cke_35152.png

此时继续报错

经过查阅openmpi的接口资料发现,MPI_Type_extent与MPI_Type_get_extent的用法有差异

cke_41545.png

cke_49419.png

很明显发现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即可

​cke_56075.png

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

​cke_62625.png

cke_69256.png

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

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞