From 5b2a54952c083dbb1f6ea45827adbd83d023fbbb Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Sat, 13 Mar 2021 06:00:15 -0500 Subject: openblas: prevent microarch flags for generic targets (#22270) As of OpenBLAS 0.3.13, leaving off `TARGET` by default optimizes most code for the host system -- adding flags that cause the resulting library to fail (SIGILL) on older systems. This change should ensure that a "x86_64" target for example will work across deployment systems. https://github.com/xianyi/OpenBLAS/issues/3139 --- var/spack/repos/builtin/packages/openblas/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index a2bd7da1cb..9ec69cc24d 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -218,8 +218,10 @@ class Openblas(MakefilePackage): if microarch.vendor == 'generic': # User requested a generic platform, or we couldn't find a good # match for the requested one. Allow OpenBLAS to determine - # an optimized kernel at run time. - args.append('DYNAMIC_ARCH=1') + # an optimized kernel at run time, including older CPUs, while + # forcing it not to add flags for the current host compiler. + args.extend(['DYNAMIC_ARCH=1', 'DYNAMIC_OLDER=1', + 'TARGET=GENERIC']) elif microarch.name in skylake: # Special case for renaming skylake family args.append('TARGET=SKYLAKEX') -- cgit v1.2.3-60-g2f50