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',
|
||||
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')
|
||||
|
||||
@ -88,10 +94,6 @@ class Amdfftw(FftwBase):
|
||||
'%gcc@:7.2',
|
||||
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',
|
||||
@ -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 @@ def configure(self, spec, prefix):
|
||||
'--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)))
|
||||
|
@ -70,22 +70,33 @@ def lapack_libs(self):
|
||||
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:
|
||||
# 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.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")
|
||||
|
||||
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')
|
||||
|
@ -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")
|
||||
|
@ -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"""
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user