Add upstream fix for error in calculating aggregators in 32bit mode
This commit is contained in:
parent
03674c8f8f
commit
9ccbdc95ce
77
7126.patch
Normal file
77
7126.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
From ea1355beae918b3acd67d5c0ccc44afbcc5b7ca9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Edgar Gabriel <egabriel@central.uh.edu>
|
||||||
|
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 <egabriel@central.uh.edu>
|
||||||
|
---
|
||||||
|
.../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;
|
||||||
|
}
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
Name: openmpi%{?_cc_name_suffix}
|
Name: openmpi%{?_cc_name_suffix}
|
||||||
Version: 4.0.2
|
Version: 4.0.2
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Open Message Passing Interface
|
Summary: Open Message Passing Interface
|
||||||
License: BSD and MIT and Romio
|
License: BSD and MIT and Romio
|
||||||
URL: http://www.open-mpi.org/
|
URL: http://www.open-mpi.org/
|
||||||
@ -45,6 +45,9 @@ Source2: openmpi.pth.py2
|
|||||||
Source3: openmpi.pth.py3
|
Source3: openmpi.pth.py3
|
||||||
Source4: macros.openmpi
|
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-c++
|
||||||
BuildRequires: gcc-gfortran
|
BuildRequires: gcc-gfortran
|
||||||
BuildRequires: valgrind-devel
|
BuildRequires: valgrind-devel
|
||||||
@ -356,6 +359,9 @@ make check
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Nov 24 2019 Orion Poplawski <orion@nwra.com> - 4.0.2-3
|
||||||
|
- Add upstream fix for error in calculating aggregators in 32bit mode
|
||||||
|
|
||||||
* Fri Nov 15 2019 Orion Poplawski <orion@nwra.com> - 4.0.2-2
|
* Fri Nov 15 2019 Orion Poplawski <orion@nwra.com> - 4.0.2-2
|
||||||
- Drop python2 for Fedora 32+ (bz#1773125)
|
- Drop python2 for Fedora 32+ (bz#1773125)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user