From d6d78b84579d3da819e2e1c0abd06a90688ed871 Mon Sep 17 00:00:00 2001 From: Sreenivasa Murthy Kolam <67086238+srekolam@users.noreply.github.com> Date: Tue, 23 Nov 2021 18:35:16 -0800 Subject: rocm-tensile: Add new GPUs to tensile-architecture list (#26913) --- .../repos/builtin/packages/rocm-tensile/package.py | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/rocm-tensile/package.py b/var/spack/repos/builtin/packages/rocm-tensile/package.py index 07ff61f007..ca4ce6ade6 100644 --- a/var/spack/repos/builtin/packages/rocm-tensile/package.py +++ b/var/spack/repos/builtin/packages/rocm-tensile/package.py @@ -27,12 +27,15 @@ class RocmTensile(CMakePackage): version('3.7.0', sha256='488a7f76ea42a7601d0557f53068ec4832a2c7c06bb1b511470a4e35599a5a4d') version('3.5.0', sha256='71eb3eed6625b08a4cedb539dd9b596e3d4cc82a1a8063d37d94c0765b6f8257') - tensile_architecture = ('all', 'gfx803', 'gfx900', 'gfx906', 'gfx908') + tensile_architecture = ('all', 'gfx906', 'gfx908', 'gfx000', 'gfx900', + 'gfx906:xnack-', 'gfx908:xnack-', 'gfx90a:xnack-', + 'gfx1010', 'gfx1011', 'gfx1012', 'gfx1030') variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') - variant('tensile_architecture', default='all', values=tensile_architecture, multi=False) + variant('tensile_architecture', default='all', values=tensile_architecture, multi=True) variant('openmp', default=True, description='Enable OpenMP') - + conflicts('tensile_architecture=gfx906', when='@4.0.1:') + conflicts('tensile_architecture=gfx908', when='@4.0.1:') depends_on('cmake@3:', type='build') # This is the default library format since 3.7.0 depends_on('msgpack-c@3:', when='@3.7:') @@ -62,8 +65,20 @@ class RocmTensile(CMakePackage): def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) - def cmake_args(self): + def get_gpulist_for_tensile_support(self): arch = self.spec.variants['tensile_architecture'].value + if arch[0] == 'all': + if self.spec.satisfies('@:4.0.0'): + arch_value = self.tensile_architecture[1:4] + elif self.spec.satisfies('@4.1.0:4.2.0'): + arch_value = self.tensile_architecture[3:6] + elif self.spec.satisfies('@4.3.0:'): + arch_value = self.tensile_architecture[3:] + return arch_value + else: + return arch + + def cmake_args(self): args = [ self.define('amd_comgr_DIR', self.spec['comgr'].prefix), self.define('Tensile_COMPILER', 'hipcc'), @@ -80,10 +95,8 @@ class RocmTensile(CMakePackage): if '@3.7.0:' in self.spec: args.append(self.define('Tensile_LIBRARY_FORMAT', 'msgpack')) - if self.spec.satisfies('@4.1.0:'): - if arch == 'gfx906' or arch == 'gfx908': - arch = arch + ':xnack-' - args.append(self.define('Tensile_ARCHITECTURE', arch)) + args.append(self.define('Tensile_ARCHITECTURE', + self.get_gpulist_for_tensile_support())) if self.spec.satisfies('^cmake@3.21.0:3.21.2'): args.append(self.define('__skip_rocmclang', 'ON')) -- cgit v1.2.3-60-g2f50