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.
This commit is contained in:
Cory Bloor 2022-07-18 13:21:40 -06:00 committed by GitHub
parent b065d69136
commit 5c59e9746a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -85,23 +85,18 @@ def check(self):
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)
# This is the 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')
with when('+tensile'):
# default library format since 3.7.0
depends_on('msgpack-c@3:', when='@3.7:')
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'),