summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/amdlibflame/package.py
diff options
context:
space:
mode:
authorAMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com>2021-12-17 22:58:41 +0530
committerGitHub <noreply@github.com>2021-12-17 09:28:41 -0800
commit541ccd6669f0efcf8ba2d1b627ba503ff94b2e6c (patch)
tree6ebaa67bae391ec754073e67bb1c300d05bf33fb /var/spack/repos/builtin/packages/amdlibflame/package.py
parent140e8085dd6f33c78b64075e5d5c9873d28af088 (diff)
downloadspack-541ccd6669f0efcf8ba2d1b627ba503ff94b2e6c.tar.gz
spack-541ccd6669f0efcf8ba2d1b627ba503ff94b2e6c.tar.bz2
spack-541ccd6669f0efcf8ba2d1b627ba503ff94b2e6c.tar.xz
spack-541ccd6669f0efcf8ba2d1b627ba503ff94b2e6c.zip
What's new in AOCL 3.1 (#27988)
* What's new in AOCL 3.1 1) AMD BLIS: 1.a) Supports Dynamic Dispatch and AOCL Dynamic feature 1.b) Improvements in DGEMM, ZGEMM, DTRSM, DSYRK, xGEMV, and DOTV 2) AMD libFLAME: 2.a) Supports LAPACK 3.10.0 specification 2.b) Optimized factorization and ZGEEV routines 3) AMD FFTW: 3.a) Features like 'AMD application optimization layer', 'Fast MPI transpose algorithm' and 'Top N planner' are added 4) AMD LibM: 4.a) Optimized exp2, log2 (Single and Double precision) scalar and vector 4.b) Optimized log10f (scalar and vector) and powf vector variants to support WRF4.1.2 benchmark 5) AOCL-Sparse: 5.a) New API for sparse matrix and dense matrix multiplication 6) AMD ScaLAPACK: 6.a) ILP64 support has been enabled 7) AOCL enabled MUMPS library: 7.a) CMake based build system on Windows for AOCL enabled MUMPS sparse solver library will be available shortly on GitHub 7.a.i) Refer https://github.com/amd/mumps-build 7.b) Spack-based recipe on Linux for AOCL enabled MUMPS sparse solver library will be enabled shortly * Fix invalid version range error * Incorporated review comments 1) Restore to previous url value 2) Instead of if else statements, used spack's enable_or_disable feature * Incorporated following review comments: 1. Use of satisfies() for spec checks 2. Seperate conflict statements to check for minimum and maximum GCC versions 3. Used CMakePackage helpers 4. Code rearrangement to have the directives listed before methods
Diffstat (limited to 'var/spack/repos/builtin/packages/amdlibflame/package.py')
-rw-r--r--var/spack/repos/builtin/packages/amdlibflame/package.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/amdlibflame/package.py b/var/spack/repos/builtin/packages/amdlibflame/package.py
index 56e97e5894..fc27de6d52 100644
--- a/var/spack/repos/builtin/packages/amdlibflame/package.py
+++ b/var/spack/repos/builtin/packages/amdlibflame/package.py
@@ -36,11 +36,22 @@ class Amdlibflame(LibflameBase):
maintainers = ['amd-toolchain-support']
+ version('3.1', sha256='97c74086306fa6dea9233a3730407c400c196b55f4461d4861364b1ac131ca42')
+ version('3.0.1', sha256='5859e7b39ffbe73115dd598b035f212d36310462cf3a45e555a5087301710776')
version('3.0', sha256='d94e08b688539748571e6d4c1ec1ce42732eac18bd75de989234983c33f01ced')
version('2.2', sha256='12b9c1f92d2c2fa637305aaa15cf706652406f210eaa5cbc17aaea9fcfa576dc')
+ variant('ilp64', default=False, description='Build with ILP64 support')
+
+ conflicts('+ilp64', when="@:3.0.0",
+ msg="ILP64 is supported from 3.0.1 onwards")
+ conflicts('threads=pthreads',
+ msg='pthread is not supported')
+ conflicts('threads=openmp',
+ msg='openmp is not supported')
+
patch('aocc-2.2.0.patch', when="@:2", level=1)
- patch('cray-compiler-wrapper.patch')
+ patch('cray-compiler-wrapper.patch', when="@:3.0.0", level=1)
provides('flame@5.2', when='@2:')
@@ -64,8 +75,29 @@ class Amdlibflame(LibflameBase):
if "@3.0: %aocc" in self.spec:
args.append("--enable-f2c-dotc")
+ if "@3.0.1: +ilp64" in self.spec:
+ args.append("--enable-ilp64")
+
+ 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")
+
return args
+ @run_after('build')
+ @on_package_attributes(run_tests=True)
+ def check(self):
+ """make check for single and multithread"""
+ blas_flags = self.spec['blas'].libs.ld_flags
+ if self.spec.variants['threads'].value != 'none':
+ make('check',
+ 'LIBBLAS = -fopenmp {0}'.format(blas_flags), parallel=False)
+ else:
+ make('check',
+ 'LIBBLAS = {0}'.format(blas_flags), parallel=False)
+
def install(self, spec, prefix):
"""make install function"""
# make install in parallel fails with message 'File already exists'