From 9ccbdc95cef128da1c1ff97f527e6aff0c7d2791 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sun, 24 Nov 2019 16:35:22 -0700 Subject: [PATCH] Add upstream fix for error in calculating aggregators in 32bit mode --- 7126.patch | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ openmpi.spec | 8 +++++- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 7126.patch diff --git a/7126.patch b/7126.patch new file mode 100644 index 0000000..72e0e64 --- /dev/null +++ b/7126.patch @@ -0,0 +1,77 @@ +From ea1355beae918b3acd67d5c0ccc44afbcc5b7ca9 Mon Sep 17 00:00:00 2001 +From: Edgar Gabriel +Date: Tue, 29 Oct 2019 15:21:22 -0500 +Subject: [PATCH] fcoll/two_phase: fix error in calculating aggregators in + 32bit mode + +In fcoll_two_phase_supprot_fns.c: calculation of the aggregator index +failed for large offsets on 32bit machine, due to improper handling of +64bit offsets. + +Fixes Issue #7110 + +Signed-off-by: Edgar Gabriel +--- + .../two_phase/fcoll_two_phase_support_fns.c | 25 +++++++++++-------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +diff --git a/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c b/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c +index 777cf08b9ae..69a56f2c6c7 100644 +--- a/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c ++++ b/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c +@@ -10,7 +10,7 @@ + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. +- * Copyright (c) 2008-2011 University of Houston. All rights reserved. ++ * Copyright (c) 2008-2019 University of Houston. All rights reserved. + * Copyright (c) 2014-2018 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2015 Los Alamos National Security, LLC. All rights +@@ -156,23 +156,26 @@ int mca_fcoll_two_phase_calc_aggregator(ompio_file_t *fh, + { + + +- int rank_index, rank; ++ int rank_index, rank; + OMPI_MPI_OFFSET_TYPE avail_bytes; +- +- rank_index = (int) ((off - min_off + fd_size)/ fd_size - 1); +- ++ long long off_ll = (long long) off; ++ long long min_off_ll = (long long) min_off; ++ long long fd_size_ll = (long long) fd_size; ++ long long rank_index_ll; ++ ++ rank_index_ll = (((off_ll - min_off_ll + fd_size_ll)/ fd_size_ll) - 1); ++ rank_index = (int) rank_index_ll; + if (striping_unit > 0){ + rank_index = 0; + while (off > fd_end[rank_index]) rank_index++; + } + +- + if (rank_index >= num_aggregators || rank_index < 0) { + fprintf(stderr, +- "Error in ompi_io_ompio_calcl_aggregator():"); ++ "Error in mca_fcoll_two_phase_calc_aggregator:"); + fprintf(stderr, +- "rank_index(%d) >= num_aggregators(%d)fd_size=%lld off=%lld\n", +- rank_index,num_aggregators,fd_size,off); ++ "rank_index(%d) >= num_aggregators(%d) fd_size=%ld off=%ld min_off=%ld striping_unit=%d\n", ++ rank_index, num_aggregators, fd_size, off, min_off, striping_unit); + ompi_mpi_abort(&ompi_mpi_comm_world.comm, 1); + } + +@@ -184,9 +187,9 @@ int mca_fcoll_two_phase_calc_aggregator(ompio_file_t *fh, + + rank = aggregator_list[rank_index]; + +- #if 0 ++#if 0 + printf("rank : %d, rank_index : %d\n",rank, rank_index); +- #endif ++#endif + + return rank; + } diff --git a/openmpi.spec b/openmpi.spec index 8aeff19..182b47b 100644 --- a/openmpi.spec +++ b/openmpi.spec @@ -33,7 +33,7 @@ Name: openmpi%{?_cc_name_suffix} Version: 4.0.2 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Open Message Passing Interface License: BSD and MIT and Romio URL: http://www.open-mpi.org/ @@ -45,6 +45,9 @@ Source2: openmpi.pth.py2 Source3: openmpi.pth.py3 Source4: macros.openmpi +# fcoll/two_phase: fix error in calculating aggregators in 32bit mode +Patch0: https://patch-diff.githubusercontent.com/raw/open-mpi/ompi/pull/7126.patch + BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: valgrind-devel @@ -356,6 +359,9 @@ make check %changelog +* Sun Nov 24 2019 Orion Poplawski - 4.0.2-3 +- Add upstream fix for error in calculating aggregators in 32bit mode + * Fri Nov 15 2019 Orion Poplawski - 4.0.2-2 - Drop python2 for Fedora 32+ (bz#1773125)