summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com>2022-07-21 17:02:28 +0530
committerGitHub <noreply@github.com>2022-07-21 13:32:28 +0200
commit5ffc095f63f5e6c82fe6289ae44066b492c37828 (patch)
treeb93a1f4ab36a52fdb14599f2fd8622b9c618d176 /var
parentf85c4ec288095bd7c269aad7c1f031223cccd359 (diff)
downloadspack-5ffc095f63f5e6c82fe6289ae44066b492c37828.tar.gz
spack-5ffc095f63f5e6c82fe6289ae44066b492c37828.tar.bz2
spack-5ffc095f63f5e6c82fe6289ae44066b492c37828.tar.xz
spack-5ffc095f63f5e6c82fe6289ae44066b492c37828.zip
Add version 3.2 of AMD libraries (#31538)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/amd-aocl/package.py36
-rw-r--r--var/spack/repos/builtin/packages/amdfftw/package.py20
-rw-r--r--var/spack/repos/builtin/packages/amdlibflame/package.py31
-rw-r--r--var/spack/repos/builtin/packages/amdlibm/package.py2
-rw-r--r--var/spack/repos/builtin/packages/amdscalapack/package.py12
-rw-r--r--var/spack/repos/builtin/packages/aocl-sparse/package.py1
6 files changed, 82 insertions, 20 deletions
diff --git a/var/spack/repos/builtin/packages/amd-aocl/package.py b/var/spack/repos/builtin/packages/amd-aocl/package.py
new file mode 100644
index 0000000000..2eadbb71c4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/amd-aocl/package.py
@@ -0,0 +1,36 @@
+# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class AmdAocl(BundlePackage):
+ """AMD Optimizing CPU Libraries (AOCL) - AOCL is a set of numerical
+ libraries tuned specifically for AMD EPYC processor family. They have a
+ simple interface to take advantage of the latest hardware innovations.
+ The tuned implementations of industry standard math libraries enable
+ fast development of scientific and high performance computing projects"""
+
+ homepage = "https://developer.amd.com/amd-aocl/"
+
+ maintainers = ['amd-toolchain-support']
+
+ version('3.2')
+ version('3.1')
+ version('3.0')
+ version('2.2')
+
+ variant('openmp', default=False, description="Enable OpenMP support.")
+
+ for vers in ['2.2', '3.0', '3.1', '3.2']:
+ depends_on('amdblis@{0} threads=openmp'.format(vers), when='@{0} +openmp'.format(vers))
+ depends_on('amdblis@{0} threads=none'.format(vers), when='@{0} ~openmp'.format(vers))
+ depends_on('amdfftw@{0} +openmp'.format(vers), when='@{0} +openmp'.format(vers))
+ depends_on('amdfftw@{0} ~openmp'.format(vers), when='@{0} ~openmp'.format(vers))
+ depends_on('amdlibflame@{0}'.format(vers), when='@{0}'.format(vers))
+ depends_on('amdlibm@{0}'.format(vers), when='@{0}'.format(vers))
+ depends_on('amdscalapack@{0} ^amdblis@{0} threads=none'.format(vers), when='@{0} ~openmp'.format(vers))
+ depends_on('amdscalapack@{0} ^amdblis@{0} threads=openmp'.format(vers), when='@{0} +openmp'.format(vers))
+ depends_on('aocl-sparse@{0}'.format(vers), when='@{0}'.format(vers))
diff --git a/var/spack/repos/builtin/packages/amdfftw/package.py b/var/spack/repos/builtin/packages/amdfftw/package.py
index 21d8747b24..72b375a422 100644
--- a/var/spack/repos/builtin/packages/amdfftw/package.py
+++ b/var/spack/repos/builtin/packages/amdfftw/package.py
@@ -71,6 +71,12 @@ class Amdfftw(FftwBase):
'amd-app-opt',
default=False,
description='Build with amd-app-opt suppport')
+ variant(
+ 'amd-dynamic-dispatcher',
+ default=False,
+ when='@3.2:',
+ description='Single portable optimized library'
+ ' to execute on different x86 CPU architectures')
depends_on('texinfo')
@@ -89,10 +95,6 @@ class Amdfftw(FftwBase):
when='@2.2:',
msg='GCC version above 7.2 is required for AMDFFTW')
conflicts(
- '+amd-fast-planner ',
- when='+mpi',
- msg='mpi thread is not supported with amd-fast-planner')
- conflicts(
'+amd-fast-planner',
when='@2.2',
msg='amd-fast-planner is supported from 3.0 onwards')
@@ -176,6 +178,10 @@ class Amdfftw(FftwBase):
'+amd-app-opt',
when='precision=quad',
msg='Quad precision is not supported with amd-app-opt')
+ conflicts(
+ '+amd-dynamic-dispatcher',
+ when='%aocc',
+ msg='dynamic-dispatcher is not supported by AOCC clang compiler')
def configure(self, spec, prefix):
"""Configure function"""
@@ -185,6 +191,12 @@ class Amdfftw(FftwBase):
'--enable-amd-opt'
]
+ # Dynamic dispatcher builds a single portable optimized library
+ # that can execute on different x86 CPU architectures.
+ # It is supported for GCC compiler and Linux based systems only.
+ if '+amd-dynamic-dispatcher' in self.spec:
+ options.append('--enable-dynamic-dispatcher')
+
# Check if compiler is AOCC
if '%aocc' in spec:
options.append('CC={0}'.format(os.path.basename(spack_cc)))
diff --git a/var/spack/repos/builtin/packages/amdlibflame/package.py b/var/spack/repos/builtin/packages/amdlibflame/package.py
index a2676d4e44..61f490a1e1 100644
--- a/var/spack/repos/builtin/packages/amdlibflame/package.py
+++ b/var/spack/repos/builtin/packages/amdlibflame/package.py
@@ -70,21 +70,32 @@ class Amdlibflame(LibflameBase):
def configure_args(self):
"""configure_args function"""
args = super(Amdlibflame, self).configure_args()
- args.append("--enable-external-lapack-interfaces")
- """To enabled Fortran to C calling convention for
- complex types when compiling with aocc flang"""
- if "@3.0: %aocc" in self.spec:
- args.append("--enable-f2c-dotc")
+ # From 3.2 version, amd optimized flags are encapsulated under:
+ # enable-amd-flags for gcc compiler
+ # enable-amd-aocc-flags for aocc compiler
+ if "@3.2:" in self.spec:
+ if "%gcc" in self.spec:
+ args.append("--enable-amd-flags")
+ if "%aocc" in self.spec:
+ args.append("--enable-amd-aocc-flags")
- if "@3.0.1: +ilp64" in self.spec:
- args.append("--enable-ilp64")
+ if "@:3.1" in self.spec:
+ args.append("--enable-external-lapack-interfaces")
+
+ if "@3.1" in self.spec:
+ args.append("--enable-blas-ext-gemmt")
- if "@3.1: %aocc" in self.spec:
+ if "@3.1 %aocc" in self.spec:
args.append("--enable-void-return-complex")
- if "@3.1: " in self.spec:
- args.append("--enable-blas-ext-gemmt")
+ if "@3.0:3.1 %aocc" in self.spec:
+ """To enabled Fortran to C calling convention for
+ complex types when compiling with aocc flang"""
+ args.append("--enable-f2c-dotc")
+
+ if "@3.0.1: +ilp64" in self.spec:
+ args.append("--enable-ilp64")
return args
diff --git a/var/spack/repos/builtin/packages/amdlibm/package.py b/var/spack/repos/builtin/packages/amdlibm/package.py
index 2f4652b6d9..5e4ee6183b 100644
--- a/var/spack/repos/builtin/packages/amdlibm/package.py
+++ b/var/spack/repos/builtin/packages/amdlibm/package.py
@@ -25,6 +25,8 @@ class Amdlibm(SConsPackage):
# of master branch.
# To install amdlibm from latest master branch:
# spack install amdlibm ^amdlibm@master
+
+ version("3.2", branch="aocl-3.2")
version("3.1", branch="aocl-3.1")
version("3.0", branch="aocl-3.0")
version("2.2", commit="4033e022da428125747e118ccd6fdd9cee21c470")
diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py
index 2495ebf760..76d309dad9 100644
--- a/var/spack/repos/builtin/packages/amdscalapack/package.py
+++ b/var/spack/repos/builtin/packages/amdscalapack/package.py
@@ -24,6 +24,7 @@ class Amdscalapack(ScalapackBase):
maintainers = ['amd-toolchain-support']
+ version('3.2', sha256='9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892')
version('3.1', sha256='4c2ee2c44644a0feec0c6fc1b1a413fa9028f14d7035d43a398f5afcfdbacb98')
version('3.0', sha256='6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f')
version('2.2', sha256='2d64926864fc6d12157b86e3f88eb1a5205e7fc157bf67e7577d0f18b9a7484c')
@@ -37,12 +38,11 @@ class Amdscalapack(ScalapackBase):
msg="ILP64 is supported from 3.1 onwards")
def url_for_version(self, version):
- if version == Version('3.1'):
- return "https://github.com/amd/aocl-scalapack/archive/3.1.tar.gz"
- elif version == Version('3.0'):
- return "https://github.com/amd/scalapack/archive/3.0.tar.gz"
- elif version == Version('2.2'):
- return "https://github.com/amd/scalapack/archive/2.2.tar.gz"
+ vers = "https://github.com/amd/{0}/archive/{1}.tar.gz"
+ if version >= Version('3.1'):
+ return vers.format('aocl-scalapack', version)
+ else:
+ return vers.format('scalapack', version)
def cmake_args(self):
""" cmake_args function"""
diff --git a/var/spack/repos/builtin/packages/aocl-sparse/package.py b/var/spack/repos/builtin/packages/aocl-sparse/package.py
index d53ef40d7d..5cebde6d9e 100644
--- a/var/spack/repos/builtin/packages/aocl-sparse/package.py
+++ b/var/spack/repos/builtin/packages/aocl-sparse/package.py
@@ -20,6 +20,7 @@ class AoclSparse(CMakePackage):
maintainers = ['amd-toolchain-support']
+ version('3.2', sha256='db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f')
version('3.1', sha256='8536f06095c95074d4297a3d2910654085dd91bce82e116c10368a9f87e9c7b9')
version('3.0', sha256='1d04ba16e04c065051af916b1ed9afce50296edfa9b1513211a7378e1d6b952e')
version('2.2', sha256='33c2ed6622cda61d2613ee63ff12c116a6cd209c62e54307b8fde986cd65f664')