summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com>2023-01-16 16:35:31 +0530
committerGitHub <noreply@github.com>2023-01-16 12:05:31 +0100
commitb9048dbee994c5943c0b59945612bc30e3e73479 (patch)
tree38b91504ea70d7f15e993cae6178a7e115aa19ac
parent55f71e41d574797ba2d79a30f31aae01c757d13d (diff)
downloadspack-b9048dbee994c5943c0b59945612bc30e3e73479.tar.gz
spack-b9048dbee994c5943c0b59945612bc30e3e73479.tar.bz2
spack-b9048dbee994c5943c0b59945612bc30e3e73479.tar.xz
spack-b9048dbee994c5943c0b59945612bc30e3e73479.zip
AMD Optimized CPU Libraries: add v4.0 (#34681)
What's in AOCL 4.0: 1. amdblis LPGEMM variants with post-ops support AMD "Zen4" support for BLIS 2. amdlibflame Upgrade to LAPACK 3.10.1 specification Improvements in a few more variants of SVD and Eigen Value routines Multithread support enabled for selected APIs 3. amdfftw AVX-512 enablement of DFT kernels AVX-512 optimization of copy and transpose routines 5. amdlibm Black & Scholes support (logf, expf, erff, both scalar and vector) AVX-512 variants of vector functions 6. aocl-sparse New Iterative Solver APIs AVX-512 support for SPMV API 7. amdscalapack Upgrade to Netlib ScaLAPACK 2.2.0 Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
-rw-r--r--var/spack/repos/builtin/packages/amd-aocl/package.py12
-rw-r--r--var/spack/repos/builtin/packages/amdblis/package.py8
-rw-r--r--var/spack/repos/builtin/packages/amdfftw/package.py15
-rw-r--r--var/spack/repos/builtin/packages/amdlibflame/package.py8
-rw-r--r--var/spack/repos/builtin/packages/amdlibm/package.py44
-rw-r--r--var/spack/repos/builtin/packages/amdscalapack/package.py7
-rw-r--r--var/spack/repos/builtin/packages/aocl-sparse/package.py36
7 files changed, 94 insertions, 36 deletions
diff --git a/var/spack/repos/builtin/packages/amd-aocl/package.py b/var/spack/repos/builtin/packages/amd-aocl/package.py
index 698f616813..4a3c242c07 100644
--- a/var/spack/repos/builtin/packages/amd-aocl/package.py
+++ b/var/spack/repos/builtin/packages/amd-aocl/package.py
@@ -11,12 +11,20 @@ class AmdAocl(BundlePackage):
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"""
+ fast development of scientific and high performance computing projects
+
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL license agreement.
+ You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/aocl-eula.html
+ https://www.amd.com/en/developer/aocl/aocl-4-0-eula.html
+ """
homepage = "https://developer.amd.com/amd-aocl/"
maintainers = ["amd-toolchain-support"]
+ version("4.0")
version("3.2")
version("3.1")
version("3.0")
@@ -24,7 +32,7 @@ class AmdAocl(BundlePackage):
variant("openmp", default=False, description="Enable OpenMP support.")
- for vers in ["2.2", "3.0", "3.1", "3.2"]:
+ for vers in ["2.2", "3.0", "3.1", "3.2", "4.0"]:
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))
diff --git a/var/spack/repos/builtin/packages/amdblis/package.py b/var/spack/repos/builtin/packages/amdblis/package.py
index aa2d92afe6..901634a4a9 100644
--- a/var/spack/repos/builtin/packages/amdblis/package.py
+++ b/var/spack/repos/builtin/packages/amdblis/package.py
@@ -2,6 +2,7 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
import os
from spack.package import *
@@ -16,6 +17,12 @@ class Amdblis(BlisBase):
isolate essential kernels of computation that, when optimized, immediately
enable optimized implementations of most of its commonly used and
computationally intensive operations.
+
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL-BLIS license
+ agreement. You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/blis/blis-4-0-eula.html
+ https://www.amd.com/en/developer/aocl/blis/blis-eula.html
"""
_name = "amdblis"
@@ -25,6 +32,7 @@ class Amdblis(BlisBase):
maintainers = ["amd-toolchain-support"]
+ version("4.0", sha256="cddd31176834a932753ac0fc4c76332868feab3e9ac607fa197d8b44c1e74a41")
version("3.2", sha256="5a400ee4fc324e224e12f73cc37b915a00f92b400443b15ce3350278ad46fff6")
version("3.1", sha256="2891948925b9db99eec02a1917d9887a7bee9ad2afc5421c9ba58602a620f2bf")
version("3.0.1", sha256="dff643e6ef946846e91e8f81b75ff8fe21f1f2d227599aecd654d184d9beff3e")
diff --git a/var/spack/repos/builtin/packages/amdfftw/package.py b/var/spack/repos/builtin/packages/amdfftw/package.py
index 58a61167af..0a37706fe7 100644
--- a/var/spack/repos/builtin/packages/amdfftw/package.py
+++ b/var/spack/repos/builtin/packages/amdfftw/package.py
@@ -22,6 +22,12 @@ class Amdfftw(FftwBase):
For single precision build, please use precision value as float.
Example : spack install amdfftw precision=float
+
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL-FFTW license
+ agreement. You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/fftw/fftw-libraries-4-0-eula.html
+ https://www.amd.com/en/developer/aocl/fftw/fftw-libraries-eula.html
"""
_name = "amdfftw"
@@ -31,6 +37,7 @@ class Amdfftw(FftwBase):
maintainers = ["amd-toolchain-support"]
+ version("4.0", sha256="5f02cb05f224bd86bd88ec6272b294c26dba3b1d22c7fb298745fd7b9d2271c0")
version("3.2", sha256="31cab17a93e03b5b606e88dd6116a1055b8f49542d7d0890dbfcca057087b8d0")
version("3.1", sha256="3e777f3acef13fa1910db097e818b1d0d03a6a36ef41186247c6ab1ab0afc132")
version("3.0.1", sha256="87030c6bbb9c710f0a64f4f306ba6aa91dc4b182bb804c9022b35aef274d1a4c")
@@ -44,9 +51,9 @@ class Amdfftw(FftwBase):
variant(
"amd-fast-planner",
default=False,
- description="Option to reduce the planning time without much"
- "tradeoff in the performance. It is supported for"
- "Float and double precisions only.",
+ description="Option to reduce the planning time without much "
+ "tradeoff in the performance. It is supported for "
+ "float and double precisions only.",
)
variant("amd-top-n-planner", default=False, description="Build with amd-top-n-planner support")
variant(
@@ -210,7 +217,7 @@ class Amdfftw(FftwBase):
# Specific SIMD support.
# float and double precisions are supported
- simd_features = ["sse2", "avx", "avx2"]
+ simd_features = ["sse2", "avx", "avx2", "avx512"]
simd_options = []
for feature in simd_features:
diff --git a/var/spack/repos/builtin/packages/amdlibflame/package.py b/var/spack/repos/builtin/packages/amdlibflame/package.py
index fa664f1fe9..35e5ff8eef 100644
--- a/var/spack/repos/builtin/packages/amdlibflame/package.py
+++ b/var/spack/repos/builtin/packages/amdlibflame/package.py
@@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
# ----------------------------------------------------------------------------\
+
from spack.package import *
from spack.pkg.builtin.libflame import LibflameBase
@@ -28,6 +29,12 @@ class Amdlibflame(LibflameBase):
In combination with BLIS library which includes optimizations
for the AMD EPYC processor family, libFLAME enables running
high performing LAPACK functionalities on AMD platform.
+
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL-libFLAME license
+ agreement. You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/blis/libflame-4-0-eula.html
+ https://www.amd.com/en/developer/aocl/blis/libflame-eula.html
"""
_name = "amdlibflame"
@@ -37,6 +44,7 @@ class Amdlibflame(LibflameBase):
maintainers = ["amd-toolchain-support"]
+ version("4.0", sha256="bcb05763aa1df1e88f0da5e43ff86d956826cbea1d9c5ff591d78a3e091c66a4")
version("3.2", sha256="6b5337fb668b82d0ed0a4ab4b5af4e2f72e4cedbeeb4a8b6eb9a3ef057fb749a")
version("3.1", sha256="4520fb93fcc89161f65a40810cae0fa1f87cecb242da4a69655f502545a53426")
version("3.0.1", sha256="5859e7b39ffbe73115dd598b035f212d36310462cf3a45e555a5087301710776")
diff --git a/var/spack/repos/builtin/packages/amdlibm/package.py b/var/spack/repos/builtin/packages/amdlibm/package.py
index 9c4fb448f2..cca1d0cd40 100644
--- a/var/spack/repos/builtin/packages/amdlibm/package.py
+++ b/var/spack/repos/builtin/packages/amdlibm/package.py
@@ -14,21 +14,25 @@ class Amdlibm(SConsPackage):
many routines from the list of standard C99 math functions.
Applications can link into AMD LibM library and invoke math functions
instead of compiler's math functions for better accuracy and
- performance."""
+ performance.
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL-FFTW license
+ agreement. You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/libm/libm-4-0-eula.html
+ https://www.amd.com/en/developer/aocl/libm/libm-eula.html
+ """
+
+ _name = "amdlibm"
homepage = "https://developer.amd.com/amd-aocl/amd-math-library-libm/"
git = "https://github.com/amd/aocl-libm-ose.git"
+ url = "https://github.com/amd/aocl-libm-ose/archive/refs/tags/3.0.tar.gz"
maintainers = ["amd-toolchain-support"]
- # If a user who doesn't specify a version
- # amdlibm installed for commit ID:4033e02
- # 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("4.0", sha256="038c1eab544be77598eccda791b26553d3b9e2ee4ab3f5ad85fdd2a77d015a7d")
+ version("3.2", sha256="c75b287c38a3ce997066af1f5c8d2b19fc460d5e56678ea81f3ac33eb79ec890")
+ version("3.1", sha256="dee487cc2d89c2dc93508be2c67592670ffc1d02776c017e8907317003f48845")
+ version("3.0", sha256="eb26b5e174f43ce083928d0d8748a6d6d74853333bba37d50057aac2bef7c7aa")
version("2.2", commit="4033e022da428125747e118ccd6fdd9cee21c470")
variant("verbose", default=False, description="Building with verbosity")
@@ -41,13 +45,10 @@ class Amdlibm(SConsPackage):
patch("0001-libm-ose-Scripts-cleanup-pyc-files.patch", when="@2.2")
patch("0002-libm-ose-prevent-log-v3.c-from-building.patch", when="@2.2")
- conflicts("%gcc@:9.1.0", msg="Minimum required GCC version is 9.2.0")
- conflicts("%gcc@11.2.0:", msg="Maximum required GCC version is 11.1.0")
- conflicts(
- "%aocc@3.2.0",
- when="@2.2:3.0",
- msg="amdlibm 2.2 and 3.0 versions are not supported with AOCC 3.2.0",
- )
+ conflicts("%gcc@:9.1.0", msg="Minimum supported GCC version is 9.2.0")
+ conflicts("%gcc@12.2.0:", msg="Maximum supported GCC version is 12.1.0")
+ conflicts("%clang@9:", msg="Minimum supported Clang version is 9.0.0")
+ conflicts("%aocc@3.2.0", msg="dependency on python@3.6.2")
def build_args(self, spec, prefix):
"""Setting build arguments for amdlibm"""
@@ -56,14 +57,14 @@ class Amdlibm(SConsPackage):
# we are circumventing the use of
# Spacks compiler wrappers because
# SCons wipes out all environment variables.
- if spec.satisfies("@:3.0 %aocc"):
+ if self.spec.satisfies("@:3.0 %aocc"):
args.append("--compiler=aocc")
- var_prefix = "" if spec.satisfies("@:3.0") else "ALM_"
+ var_prefix = "" if self.spec.satisfies("@:3.0") else "ALM_"
args.append("{0}CC={1}".format(var_prefix, self.compiler.cc))
args.append("{0}CXX={1}".format(var_prefix, self.compiler.cxx))
- if "+verbose" in spec:
+ if "+verbose" in self.spec:
args.append("--verbose=1")
else:
args.append("--verbose=0")
@@ -78,3 +79,6 @@ class Amdlibm(SConsPackage):
with working_dir(self.prefix.lib):
os.symlink("libalm.a", "libamdlibm.a")
os.symlink("libalm.so", "libamdlibm.so")
+ if self.spec.satisfies("@4.0:"):
+ os.symlink("libalmfast.a", "libamdlibmfast.a")
+ os.symlink("libalmfast.so", "libamdlibmfast.so")
diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py
index 24c3b013ec..a16f413ae5 100644
--- a/var/spack/repos/builtin/packages/amdscalapack/package.py
+++ b/var/spack/repos/builtin/packages/amdscalapack/package.py
@@ -16,6 +16,12 @@ class Amdscalapack(ScalapackBase):
AMD's optimized version of ScaLAPACK enables using BLIS and
LibFLAME library that have optimized dense matrix functions and
solvers for AMD EPYC processor family CPUs.
+
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL-ScaLAPACK license
+ agreement. You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/scalapack/scalapack-libraries-4-0-eula.html
+ https://www.amd.com/en/developer/aocl/scalapack/scalapack-libraries-eula.html
"""
_name = "amdscalapack"
@@ -24,6 +30,7 @@ class Amdscalapack(ScalapackBase):
maintainers = ["amd-toolchain-support"]
+ version("4.0", sha256="f02913b5984597b22cdb9a36198ed61039a1bf130308e778dc31b2a7eb88b33b")
version("3.2", sha256="9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892")
version("3.1", sha256="4c2ee2c44644a0feec0c6fc1b1a413fa9028f14d7035d43a398f5afcfdbacb98")
version("3.0", sha256="6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f")
diff --git a/var/spack/repos/builtin/packages/aocl-sparse/package.py b/var/spack/repos/builtin/packages/aocl-sparse/package.py
index 6c61d1a333..71260b4486 100644
--- a/var/spack/repos/builtin/packages/aocl-sparse/package.py
+++ b/var/spack/repos/builtin/packages/aocl-sparse/package.py
@@ -12,21 +12,28 @@ class AoclSparse(CMakePackage):
"""AOCL-Sparse is a library that contains basic linear algebra subroutines
for sparse matrices and vectors optimized for AMD EPYC family of processors.
It is designed to be used with C and C++. Current functionality of sparse
- library supports SPMV function with CSR and ELLPACK formats."""
+ library supports SPMV function with CSR and ELLPACK formats.
+ LICENSING INFORMATION: By downloading, installing and using this software,
+ you agree to the terms and conditions of the AMD AOCL-Sparse license agreement.
+ You may obtain a copy of this license agreement from
+ https://www.amd.com/en/developer/aocl/sparse/sparse-libraries-4-0-eula.html
+ https://www.amd.com/en/developer/aocl/sparse/sparse-libraries-eula.html
+ """
+
+ _name = "aocl-sparse"
homepage = "https://developer.amd.com/amd-aocl/aocl-sparse/"
url = "https://github.com/amd/aocl-sparse/archive/3.0.tar.gz"
git = "https://github.com/amd/aocl-sparse.git"
maintainers = ["amd-toolchain-support"]
+ version("4.0", sha256="68524e441fdc7bb923333b98151005bed39154d9f4b5e8310b5c37de1d69c2c3")
version("3.2", sha256="db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f")
version("3.1", sha256="8536f06095c95074d4297a3d2910654085dd91bce82e116c10368a9f87e9c7b9")
version("3.0", sha256="1d04ba16e04c065051af916b1ed9afce50296edfa9b1513211a7378e1d6b952e")
version("2.2", sha256="33c2ed6622cda61d2613ee63ff12c116a6cd209c62e54307b8fde986cd65f664")
- conflicts("%gcc@:9.1", msg="Minimum required GCC version is 9.2.0")
-
variant(
"build_type",
default="Release",
@@ -35,7 +42,17 @@ class AoclSparse(CMakePackage):
)
variant("shared", default=True, description="Build shared library")
variant("ilp64", default=False, description="Build with ILP64 support")
+ variant("examples", default=False, description="Build sparse examples")
+ variant("unit_tests", default=False, description="Build sparse unit tests")
+ variant("benchmarks", default=False, description="Build Build benchmarks")
+ variant(
+ "avx",
+ default=False,
+ when="@4.0: target=zen4:",
+ description="Enable experimental AVX512 support",
+ )
+ depends_on("boost", when="+benchmarks")
depends_on("boost", when="@2.2")
depends_on("cmake@3.5:", type="build")
@@ -70,15 +87,14 @@ class AoclSparse(CMakePackage):
else:
args.append("-DCMAKE_BUILD_TYPE=Release")
- args.extend(
- [
- self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
- "-DBUILD_CLIENTS_BENCHMARKS:BOOL=%s" % ("ON" if self.run_tests else "OFF"),
- ]
- )
+ args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
+ args.append(self.define_from_variant("BUILD_CLIENTS_SAMPLES", "examples"))
+ args.append(self.define_from_variant("BUILD_CLIENTS_TESTS", "unit_tests"))
+ args.append(self.define_from_variant("BUILD_CLIENTS_BENCHMARKS", "benchmarks"))
+ args.append(self.define_from_variant("USE_AVX512", "avx"))
if spec.satisfies("@3.0:"):
- args.extend([self.define_from_variant("BUILD_ILP64", "ilp64")])
+ args.append(self.define_from_variant("BUILD_ILP64", "ilp64"))
return args