summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com>2021-03-19 05:39:20 +0530
committerGitHub <noreply@github.com>2021-03-18 17:09:20 -0700
commit4f1a76a0d161223a5eff21662e4d87176f2b7e4e (patch)
tree1e8fa916f2c3e51dcdc262bb784b7e672c45c373
parentd07cb59bef98f26ed0d2da332301e5277dd8b4d9 (diff)
downloadspack-4f1a76a0d161223a5eff21662e4d87176f2b7e4e.tar.gz
spack-4f1a76a0d161223a5eff21662e4d87176f2b7e4e.tar.bz2
spack-4f1a76a0d161223a5eff21662e4d87176f2b7e4e.tar.xz
spack-4f1a76a0d161223a5eff21662e4d87176f2b7e4e.zip
fixing the perf regression issues with OpenMPI v4.0.x till v4.1.0 for x86_64 (#22350)
-rw-r--r--var/spack/repos/builtin/packages/openmpi/opal_assembly_arch.patch27
-rw-r--r--var/spack/repos/builtin/packages/openmpi/package.py3
2 files changed, 30 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/openmpi/opal_assembly_arch.patch b/var/spack/repos/builtin/packages/openmpi/opal_assembly_arch.patch
new file mode 100644
index 0000000000..4fc3112567
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openmpi/opal_assembly_arch.patch
@@ -0,0 +1,27 @@
+diff --git a/opal/include/opal/sys/gcc_builtin/atomic.h b/opal/include/opal/sys/gcc_builtin/atomic.h
+index d85ff02bd6a..a465fdae5db 100644
+--- a/opal/include/opal/sys/gcc_builtin/atomic.h
++++ b/opal/include/opal/sys/gcc_builtin/atomic.h
+@@ -13,8 +13,8 @@
+ * Copyright (c) 2011 Sandia National Laboratories. All rights reserved.
+ * Copyright (c) 2014-2017 Los Alamos National Security, LLC. All rights
+ * reserved.
+- * Copyright (c) 2016-2017 Research Organization for Information Science
+- * and Technology (RIST). All rights reserved.
++ * Copyright (c) 2016-2021 Research Organization for Information Science
++ * and Technology (RIST). All rights reserved.
+ * Copyright (c) 2018 Triad National Security, LLC. All rights
+ * reserved.
+ * $COPYRIGHT$
+@@ -61,9 +61,8 @@ static inline void opal_atomic_rmb(void)
+ {
+ #if OPAL_ASSEMBLY_ARCH == OPAL_X86_64
+ /* work around a bug in older gcc versions where ACQUIRE seems to get
+- * treated as a no-op instead of being equivalent to
+- * __asm__ __volatile__("": : :"memory") */
+- __atomic_thread_fence (__ATOMIC_SEQ_CST);
++ * treated as a no-op instead */
++ __asm__ __volatile__("": : :"memory");
+ #else
+ __atomic_thread_fence (__ATOMIC_ACQUIRE);
+ #endif
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py
index 2b9d8aa0af..c0c532f187 100644
--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -188,6 +188,9 @@ class Openmpi(AutotoolsPackage):
# The second patch was applied starting version v4.0.0 and backported to
# v2.x, v3.0.x, and v3.1.x.
patch('use_mpi_tkr_sizeof/step_2.patch', when='@1.8.4:2.1.3,3:3.0.1')
+ # To fix performance regressions introduced while fixing a bug in older
+ # gcc versions on x86_64, Refs. open-mpi/ompi#8603
+ patch('opal_assembly_arch.patch', when='@4.0.0:4.1.1')
variant(
'fabrics',