From 5c59e9746a08eb6bbcac5543f1e00c6a624be415 Mon Sep 17 00:00:00 2001 From: Cory Bloor Date: Mon, 18 Jul 2022 13:21:40 -0600 Subject: rocblas: tighten tensile dependencies (#31414) * rocblas: make tensile dependencies conditional * Remove rocm-smi from the rocblas dependency list rocm-smi was added to the rocblas dependency list because Tensile was a dependency of rocBLAS and rocm-smi was a dependency of Tensile. However, that reasoning was not correct. Tensile is composed of three components: 1. A command-line tool for generating kernels, benchmarking them, and saving the parameters used for generating the best kernels (a.k.a. "Solutions") in YAML files. 2. A build system component that reads YAML solution files, generates kernel source files, and invokes the compiler to compile then into code object files (*.co, *.hsco). An index of the kernels and their associated parameters is also generated and stored in either YAML or MessagePack format (TensileLibrary.yaml or TensileLibrary.dat). 3. A runtime library that will load the TensileLibrary and code object files when asked to execute a GEMM and choose the ideal kernel for your specific input parameters. rocBLAS developers use (1) during rocBLAS development. This is when Tensile depends on rocm-smi. The GPU clock speed and temperature must be controlled to ensure consistency when doing the solution benchmarking. That control is provided by rocm-smi. When building rocBLAS, Tensile is used for (2). However, there is no need for control of the GPU at that point and rocm-smi is not a dependency. At runtime, the rocBLAS library uses Tensile for (3), but there is again no dependency on rocm-smi. tl;dr: rocm-smi is a dependency of the tensile benchmarking tool, which is not a build dependency or runtime dependency of rocblas. --- .../repos/builtin/packages/rocblas/package.py | 25 +++++++++------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index 62c6e24d4d..ae61f2961e 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -85,23 +85,18 @@ class Rocblas(CMakePackage): depends_on('llvm-amdgpu@' + ver, type='build', when='@' + ver) depends_on('rocminfo@' + ver, type='build', when='@' + ver) - for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0']: - depends_on('rocm-smi@' + ver, type='build', when='@' + ver) - - for ver in ['4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', - '5.0.0', '5.0.2', '5.1.0', '5.1.3']: - depends_on('rocm-smi-lib@' + ver, type='build', when='@' + ver) + depends_on('python@3.6:', type='build') - # This is the default library format since 3.7.0 - depends_on('msgpack-c@3:', when='@3.7:') + with when('+tensile'): + # default library format since 3.7.0 + depends_on('msgpack-c@3:', when='@3.7:') - depends_on('python@3.6:', type='build') - depends_on('py-virtualenv', type='build') - depends_on('perl-file-which', type='build') - depends_on('py-pyyaml', type='build') - depends_on('py-wheel', type='build') - depends_on('py-msgpack', type='build') - depends_on('py-pip', type='build') + depends_on('py-virtualenv', type='build') + depends_on('perl-file-which', type='build') + depends_on('py-pyyaml', type='build') + depends_on('py-wheel', type='build') + depends_on('py-msgpack', type='build') + depends_on('py-pip', type='build') for t_version, t_commit in [ ('@3.5.0', 'f842a1a4427624eff6cbddb2405c36dec9a210cd'), -- cgit v1.2.3-70-g09d2