diff options
author | Georgios Eleftheriou | 2019-02-19 23:43:36 +0100 |
---|---|---|
committer | Georgios Eleftheriou | 2019-02-19 23:43:36 +0100 |
commit | 1cd670c1e542cdf9864c88492a3b238c30223ece (patch) | |
tree | 27c43d0f5e2ab39321330c38c5180bba3529ad5b | |
parent | c1aadfc066a332890c7968566698fd361ccd8392 (diff) | |
download | aur-1cd670c1e542cdf9864c88492a3b238c30223ece.tar.gz |
applied patch for MPI 4 compatibility
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 12 | ||||
-rw-r--r-- | mpi4.patch | 102 |
3 files changed, 114 insertions, 4 deletions
@@ -1,7 +1,7 @@ pkgbase = hdf5-openmpi-java pkgdesc = General purpose library and file format for storing scientific data (openmpi version) (full version including its Java Native Interfaces) pkgver = 1.10.4 - pkgrel = 2 + pkgrel = 3 url = https://portal.hdfgroup.org/display/support arch = x86_64 license = custom @@ -24,8 +24,10 @@ pkgbase = hdf5-openmpi-java options = staticlibs source = https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.4/src/hdf5-1.10.4.tar.bz2 source = mpi.patch + source = mpi4.patch md5sums = 886148d0cc9ffd3c8e1fce0bd75ed07b md5sums = 63b43e3d4a5bbea4bcecc84874e08913 + md5sums = 5b981fb1c802d5cacd46af23162ff410 pkgname = hdf5-openmpi-java @@ -1,4 +1,5 @@ # Maintainer : George Eleftheriou <eleftg> +# Contributor: Martin Diehl <MartinDiehl> # Contributor: Jingbei Li <petronny> # Contributor: Ronald van Haren <ronald.archlinux.org> # Contributor: Bruno Pagani (a.k.a. ArchangeGabriel) <archange@archlinux.org> @@ -13,7 +14,7 @@ _mpi=openmpi pkgname=${_pkgname}-${_mpi}-java _prefix=/usr pkgver=1.10.4 -pkgrel=2 +pkgrel=3 pkgdesc="General purpose library and file format for storing scientific data (${_mpi} version) (full version including its Java Native Interfaces)" arch=('x86_64') url="https://portal.hdfgroup.org/display/support" @@ -25,9 +26,11 @@ provides=('hdf5-java' 'hdf5-openmpi' 'hdf5' 'hdf5-cpp-fortran' "hdf5-fortran-${_ conflicts=('hdf5-java' 'hdf5' 'hdf5-openmpi') replaces=("hdf5-fortran-${_mpi}") source=("https://support.hdfgroup.org/ftp/HDF5/releases/${_pkgname}-${pkgver:0:4}/${_pkgname}-${pkgver}/src/${_pkgname}-${pkgver}.tar.bz2" - 'mpi.patch') + 'mpi.patch' + 'mpi4.patch') md5sums=('886148d0cc9ffd3c8e1fce0bd75ed07b' - '63b43e3d4a5bbea4bcecc84874e08913') + '63b43e3d4a5bbea4bcecc84874e08913' + '5b981fb1c802d5cacd46af23162ff410') prepare() { mkdir -p build @@ -35,6 +38,9 @@ prepare() { # FS#33343 patch -p1 -i ../mpi.patch + + # patch for MPI4 compatibility + patch -p1 -i ../mpi4.patch } build() { diff --git a/mpi4.patch b/mpi4.patch new file mode 100644 index 000000000000..a816701222fd --- /dev/null +++ b/mpi4.patch @@ -0,0 +1,102 @@ +--- A/src/H5Smpio.c 2018-09-04 04:54:44.000000000 +0200 ++++ B/src/H5Smpio.c 2018-11-22 16:58:44.365923064 +0100 +@@ -859,7 +859,7 @@ + * (2GB-1)number_of_blocks * the_datatype_extent. + */ + +- MPI_Aint stride_in_bytes, inner_extent; ++ MPI_Aint stride_in_bytes, inner_extent, lower_bound; + MPI_Datatype block_type; + + /* create a contiguous datatype inner_type x number of BLOCKS. +@@ -879,7 +879,7 @@ + HMPI_GOTO_ERROR(FAIL, "MPI_Type_contiguous failed", mpi_code) + } + +- MPI_Type_extent (inner_type, &inner_extent); ++ MPI_Type_get_extent (inner_type, &lower_bound, &inner_extent); + stride_in_bytes = inner_extent * (MPI_Aint)d[i].strid; + + /* If the element count is larger than what a 32 bit integer can hold, +@@ -1424,7 +1424,7 @@ + int block_len[2]; + int mpi_code; /* MPI return code */ + MPI_Datatype inner_type, outer_type, leftover_type, type[2]; +- MPI_Aint disp[2], old_extent; ++ MPI_Aint disp[2], old_extent, lower_bound; + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT +@@ -1500,9 +1500,9 @@ + } + } + +- MPI_Type_extent (old_type, &old_extent); ++ MPI_Type_get_extent (old_type, &lower_bound, &old_extent); + +- /* Set up the arguments for MPI_Type_struct constructor */ ++ /* Set up the arguments for MPI_Type_create_struct constructor */ + type[0] = outer_type; + type[1] = leftover_type; + block_len[0] = 1; +--- A/src/H5.c 2018-10-05 07:21:51.000000000 +0200 ++++ B/src/H5.c 2018-11-22 16:52:52.353016751 +0100 +@@ -138,7 +138,7 @@ + if (mpi_initialized && !mpi_finalized) { + int key_val; + +- if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_NULL_COPY_FN, ++ if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, + (MPI_Comm_delete_attr_function *)H5_mpi_delete_cb, + &key_val, NULL))) + HMPI_GOTO_ERROR(FAIL, "MPI_Comm_create_keyval failed", mpi_code) +--- A/testpar/t_cache.c 2018-09-10 16:43:41.000000000 +0200 ++++ B/testpar/t_cache.c 2018-11-22 16:58:45.405881436 +0100 +@@ -1217,20 +1217,20 @@ + struct mssg_t sample; /* used to compute displacements */ + + /* setup the displacements array */ +- if ( ( MPI_SUCCESS != MPI_Address(&sample.req, &displs[0]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.src, &displs[1]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.dest, &displs[2]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.mssg_num, &displs[3]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.base_addr, &displs[4]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.len, &displs[5]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.ver, &displs[6]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.count, &displs[7]) ) || +- ( MPI_SUCCESS != MPI_Address(&sample.magic, &displs[8]) ) ) { ++ if ( ( MPI_SUCCESS != MPI_Get_address(&sample.req, &displs[0]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.src, &displs[1]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.dest, &displs[2]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.mssg_num, &displs[3]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.base_addr, &displs[4]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.len, &displs[5]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.ver, &displs[6]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.count, &displs[7]) ) || ++ ( MPI_SUCCESS != MPI_Get_address(&sample.magic, &displs[8]) ) ) { + + nerrors++; + success = FALSE; + if ( verbose ) { +- HDfprintf(stdout, "%d:%s: MPI_Address() call failed.\n", ++ HDfprintf(stdout, "%d:%s: MPI_Get_address() call failed.\n", + world_mpi_rank, FUNC); + } + +@@ -1245,14 +1245,14 @@ + + if ( success ) { + +- result = MPI_Type_struct(9, block_len, displs, mpi_types, &mpi_mssg_t); ++ result = MPI_Type_create_struct(9, block_len, displs, mpi_types, &mpi_mssg_t); + + if ( result != MPI_SUCCESS ) { + + nerrors++; + success = FALSE; + if ( verbose ) { +- HDfprintf(stdout, "%d:%s: MPI_Type_struct() call failed.\n", ++ HDfprintf(stdout, "%d:%s: MPI_Type_create_struct() call failed.\n", + world_mpi_rank, FUNC); + } + } |