diff options
-rw-r--r-- | var/spack/repos/builtin/packages/openmpi/opal_assembly_arch.patch | 27 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/openmpi/package.py | 3 |
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', |