summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCory Bloor <Cordell.Bloor@amd.com>2022-07-18 13:21:40 -0600
committerGitHub <noreply@github.com>2022-07-18 12:21:40 -0700
commit5c59e9746a08eb6bbcac5543f1e00c6a624be415 (patch)
treea2cda33951de58c30927f5508294e636b9735f7f
parentb065d69136023693ace8e4d35d9fdad817d63d93 (diff)
downloadspack-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.py25
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'),