Add version 3.2 of AMD libraries (#31538)
This commit is contained in:
parent
f85c4ec288
commit
5ffc095f63
36
var/spack/repos/builtin/packages/amd-aocl/package.py
Normal file
36
var/spack/repos/builtin/packages/amd-aocl/package.py
Normal file
@ -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))
|
@ -71,6 +71,12 @@ class Amdfftw(FftwBase):
|
|||||||
'amd-app-opt',
|
'amd-app-opt',
|
||||||
default=False,
|
default=False,
|
||||||
description='Build with amd-app-opt suppport')
|
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')
|
depends_on('texinfo')
|
||||||
|
|
||||||
@ -88,10 +94,6 @@ class Amdfftw(FftwBase):
|
|||||||
'%gcc@:7.2',
|
'%gcc@:7.2',
|
||||||
when='@2.2:',
|
when='@2.2:',
|
||||||
msg='GCC version above 7.2 is required for AMDFFTW')
|
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(
|
conflicts(
|
||||||
'+amd-fast-planner',
|
'+amd-fast-planner',
|
||||||
when='@2.2',
|
when='@2.2',
|
||||||
@ -176,6 +178,10 @@ class Amdfftw(FftwBase):
|
|||||||
'+amd-app-opt',
|
'+amd-app-opt',
|
||||||
when='precision=quad',
|
when='precision=quad',
|
||||||
msg='Quad precision is not supported with amd-app-opt')
|
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):
|
def configure(self, spec, prefix):
|
||||||
"""Configure function"""
|
"""Configure function"""
|
||||||
@ -185,6 +191,12 @@ def configure(self, spec, prefix):
|
|||||||
'--enable-amd-opt'
|
'--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
|
# Check if compiler is AOCC
|
||||||
if '%aocc' in spec:
|
if '%aocc' in spec:
|
||||||
options.append('CC={0}'.format(os.path.basename(spack_cc)))
|
options.append('CC={0}'.format(os.path.basename(spack_cc)))
|
||||||
|
@ -70,22 +70,33 @@ def lapack_libs(self):
|
|||||||
def configure_args(self):
|
def configure_args(self):
|
||||||
"""configure_args function"""
|
"""configure_args function"""
|
||||||
args = super(Amdlibflame, self).configure_args()
|
args = super(Amdlibflame, self).configure_args()
|
||||||
args.append("--enable-external-lapack-interfaces")
|
|
||||||
|
|
||||||
"""To enabled Fortran to C calling convention for
|
# From 3.2 version, amd optimized flags are encapsulated under:
|
||||||
complex types when compiling with aocc flang"""
|
# enable-amd-flags for gcc compiler
|
||||||
if "@3.0: %aocc" in self.spec:
|
# 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.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:
|
||||||
|
args.append("--enable-void-return-complex")
|
||||||
|
|
||||||
|
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")
|
args.append("--enable-f2c-dotc")
|
||||||
|
|
||||||
if "@3.0.1: +ilp64" in self.spec:
|
if "@3.0.1: +ilp64" in self.spec:
|
||||||
args.append("--enable-ilp64")
|
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
|
return args
|
||||||
|
|
||||||
@run_after('build')
|
@run_after('build')
|
||||||
|
@ -25,6 +25,8 @@ class Amdlibm(SConsPackage):
|
|||||||
# of master branch.
|
# of master branch.
|
||||||
# To install amdlibm from latest master branch:
|
# To install amdlibm from latest master branch:
|
||||||
# spack install amdlibm ^amdlibm@master
|
# spack install amdlibm ^amdlibm@master
|
||||||
|
|
||||||
|
version("3.2", branch="aocl-3.2")
|
||||||
version("3.1", branch="aocl-3.1")
|
version("3.1", branch="aocl-3.1")
|
||||||
version("3.0", branch="aocl-3.0")
|
version("3.0", branch="aocl-3.0")
|
||||||
version("2.2", commit="4033e022da428125747e118ccd6fdd9cee21c470")
|
version("2.2", commit="4033e022da428125747e118ccd6fdd9cee21c470")
|
||||||
|
@ -24,6 +24,7 @@ class Amdscalapack(ScalapackBase):
|
|||||||
|
|
||||||
maintainers = ['amd-toolchain-support']
|
maintainers = ['amd-toolchain-support']
|
||||||
|
|
||||||
|
version('3.2', sha256='9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892')
|
||||||
version('3.1', sha256='4c2ee2c44644a0feec0c6fc1b1a413fa9028f14d7035d43a398f5afcfdbacb98')
|
version('3.1', sha256='4c2ee2c44644a0feec0c6fc1b1a413fa9028f14d7035d43a398f5afcfdbacb98')
|
||||||
version('3.0', sha256='6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f')
|
version('3.0', sha256='6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f')
|
||||||
version('2.2', sha256='2d64926864fc6d12157b86e3f88eb1a5205e7fc157bf67e7577d0f18b9a7484c')
|
version('2.2', sha256='2d64926864fc6d12157b86e3f88eb1a5205e7fc157bf67e7577d0f18b9a7484c')
|
||||||
@ -37,12 +38,11 @@ class Amdscalapack(ScalapackBase):
|
|||||||
msg="ILP64 is supported from 3.1 onwards")
|
msg="ILP64 is supported from 3.1 onwards")
|
||||||
|
|
||||||
def url_for_version(self, version):
|
def url_for_version(self, version):
|
||||||
if version == Version('3.1'):
|
vers = "https://github.com/amd/{0}/archive/{1}.tar.gz"
|
||||||
return "https://github.com/amd/aocl-scalapack/archive/3.1.tar.gz"
|
if version >= Version('3.1'):
|
||||||
elif version == Version('3.0'):
|
return vers.format('aocl-scalapack', version)
|
||||||
return "https://github.com/amd/scalapack/archive/3.0.tar.gz"
|
else:
|
||||||
elif version == Version('2.2'):
|
return vers.format('scalapack', version)
|
||||||
return "https://github.com/amd/scalapack/archive/2.2.tar.gz"
|
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
""" cmake_args function"""
|
""" cmake_args function"""
|
||||||
|
@ -20,6 +20,7 @@ class AoclSparse(CMakePackage):
|
|||||||
|
|
||||||
maintainers = ['amd-toolchain-support']
|
maintainers = ['amd-toolchain-support']
|
||||||
|
|
||||||
|
version('3.2', sha256='db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f')
|
||||||
version('3.1', sha256='8536f06095c95074d4297a3d2910654085dd91bce82e116c10368a9f87e9c7b9')
|
version('3.1', sha256='8536f06095c95074d4297a3d2910654085dd91bce82e116c10368a9f87e9c7b9')
|
||||||
version('3.0', sha256='1d04ba16e04c065051af916b1ed9afce50296edfa9b1513211a7378e1d6b952e')
|
version('3.0', sha256='1d04ba16e04c065051af916b1ed9afce50296edfa9b1513211a7378e1d6b952e')
|
||||||
version('2.2', sha256='33c2ed6622cda61d2613ee63ff12c116a6cd209c62e54307b8fde986cd65f664')
|
version('2.2', sha256='33c2ed6622cda61d2613ee63ff12c116a6cd209c62e54307b8fde986cd65f664')
|
||||||
|
Loading…
Reference in New Issue
Block a user