commit:     523d7b2ee32d79b44796efa2c08f0b897c633801
Author:     Yiyang Wu <xgreenlandforwyy <AT> gmail <DOT> com>
AuthorDate: Sat Feb 11 10:43:46 2023 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Fri Feb 24 16:49:51 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=523d7b2e

dev-util/Tensile: add client USE to compile tensile_client

tensile_client is for running benchmarks. By default, Tensile contains a
whole set of scripts to configure and compile tensile_client via cmake
for very benchmark. This commit enables a use flag to compile and
install this executable, so at runtime benchmark won't need to compile
again.

Signed-off-by: Yiyang Wu <xgreenlandforwyy <AT> gmail.com>
Signed-off-by: Marek Szuba <marecki <AT> gentoo.org>

 dev-util/Tensile/Tensile-5.4.2.ebuild              | 32 +++++++++++++++++++--
 ...01-Detect-prebuilt-tensile_client-in-PATH.patch | 33 ++++++++++++++++++++++
 dev-util/Tensile/metadata.xml                      |  3 ++
 3 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/dev-util/Tensile/Tensile-5.4.2.ebuild 
b/dev-util/Tensile/Tensile-5.4.2.ebuild
index 9a12444e7abf..8c23e68fdb21 100644
--- a/dev-util/Tensile/Tensile-5.4.2.ebuild
+++ b/dev-util/Tensile/Tensile-5.4.2.ebuild
@@ -5,7 +5,8 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{10..11} )
 DISTUTILS_USE_PEP517=setuptools
-inherit distutils-r1 llvm prefix
+ROCM_VERSION=${PV}
+inherit cmake distutils-r1 llvm prefix rocm
 
 LLVM_MAX_SLOT=15
 
@@ -17,6 +18,8 @@ S="${WORKDIR}/${PN}-rocm-${PV}"
 LICENSE="MIT"
 KEYWORDS="~amd64"
 SLOT="0/$(ver_cut 1-2)"
+IUSE="client"
+REQUIRED_USE="client? ( ${ROCM_REQUIRED_USE} )"
 
 # Not compatible with recent versions of pytest
 RESTRICT="test"
@@ -38,7 +41,7 @@ PATCHES=( "${FILESDIR}"/${PN}-4.3.0-output-commands.patch
                  
"${FILESDIR}"/0001-Change-cmake-name-for-msgpack-5-release.patch
          )
 
-CMAKE_USE_DIR="${WORKDIR}/Source"
+CMAKE_USE_DIR="${S}/${PN}/Source"
 
 src_prepare() {
        distutils-r1_src_prepare
@@ -68,6 +71,26 @@ src_prepare() {
        popd || die
 
        sed -e "/package_data/d" -e "/data_files/d" -i setup.py || die
+       use client && PATCHES= cmake_src_prepare  # do not apply patches again 
in cmake_src_prepare
+}
+
+src_configure() {
+       distutils-r1_src_configure
+       if use client; then
+               local mycmakeargs=(
+                       -DCMAKE_SKIP_RPATH=ON
+                       -DTENSILE_USE_MSGPACK=ON
+                       -DTENSILE_USE_LLVM=ON
+                       -DTensile_LIBRARY_FORMAT=msgpack
+                       -DAMDGPU_TARGETS="$(get_amdgpu_flags)"
+               )
+               CXX=hipcc cmake_src_configure
+       fi
+}
+
+src_compile() {
+       distutils-r1_src_compile
+       use client && cmake_src_compile
 }
 
 python_install() {
@@ -87,4 +110,9 @@ src_install() {
        doins -r Configs Perf ReplacementKernels ReplacementKernels-cov3 Source 
CustomKernels
        insinto /usr/$(get_libdir)/cmake/${PN}
        doins cmake/*.cmake
+
+       if use client; then
+               pushd "${BUILD_DIR}" || die
+               dobin client/tensile_client
+       fi
 }

diff --git 
a/dev-util/Tensile/files/0001-Detect-prebuilt-tensile_client-in-PATH.patch 
b/dev-util/Tensile/files/0001-Detect-prebuilt-tensile_client-in-PATH.patch
new file mode 100644
index 000000000000..116711db44fc
--- /dev/null
+++ b/dev-util/Tensile/files/0001-Detect-prebuilt-tensile_client-in-PATH.patch
@@ -0,0 +1,33 @@
+From 3c806ec52f46d0a1f770f524d1e4f0ffeb8809c2 Mon Sep 17 00:00:00 2001
+From: Yiyang Wu <xgreenlandfor...@gmail.com>
+Date: Sat, 11 Feb 2023 17:48:08 +0800
+Subject: [PATCH] Detect prebuilt tensile_client in PATH
+
+---
+ Tensile/Tensile.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Tensile/Tensile.py b/Tensile/Tensile.py
+index 961ea88f..123f8a7a 100644
+--- a/Tensile/Tensile.py
++++ b/Tensile/Tensile.py
+@@ -38,6 +38,7 @@ from . import LibraryIO
+ from . import LibraryLogic
+ from . import __version__
+ from datetime import datetime
++from shutil import which
+ 
+ 
+ 
###############################################################################
+@@ -127,7 +128,7 @@ def addCommonArguments(argParser):
+         action="store", help="select which library format to use")
+     argParser.add_argument("--client-build-path", default=None)
+     argParser.add_argument("--client-lock", default=None)
+-    argParser.add_argument("--prebuilt-client", default=None)
++    argParser.add_argument("--prebuilt-client", 
default=which("tensile_client"))
+ 
+     argParser.add_argument("--global-parameters", nargs="+", 
type=splitExtraParameters, default=[])
+ 
+-- 
+2.39.1
+

diff --git a/dev-util/Tensile/metadata.xml b/dev-util/Tensile/metadata.xml
index 97a4d2e3c600..32364cb13b06 100644
--- a/dev-util/Tensile/metadata.xml
+++ b/dev-util/Tensile/metadata.xml
@@ -8,4 +8,7 @@
   <upstream>
     <remote-id type="github">ROCmSoftwarePlatform/Tensile</remote-id>
   </upstream>
+  <use>
+    <flag name="client">Build and install tensile_client executable to run 
benchmarks and tune GPU GEMM</flag>
+  </use>
 </pkgmetadata>

Reply via email to