diff options
author | Cory Bloor <Cordell.Bloor@amd.com> | 2022-07-18 13:21:40 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-18 12:21:40 -0700 |
commit | 5c59e9746a08eb6bbcac5543f1e00c6a624be415 (patch) | |
tree | a2cda33951de58c30927f5508294e636b9735f7f | |
parent | b065d69136023693ace8e4d35d9fdad817d63d93 (diff) | |
download | spack-5c59e9746a08eb6bbcac5543f1e00c6a624be415.tar.gz spack-5c59e9746a08eb6bbcac5543f1e00c6a624be415.tar.bz2 spack-5c59e9746a08eb6bbcac5543f1e00c6a624be415.tar.xz spack-5c59e9746a08eb6bbcac5543f1e00c6a624be415.zip |
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.
-rw-r--r-- | var/spack/repos/builtin/packages/rocblas/package.py | 25 |
1 files 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'), |