commit:     fab1eab11ad3bebaae0cee85a6ffa4d904bb6416
Author:     YiyangWu <xgreenlandforwyy <AT> gmail <DOT> com>
AuthorDate: Fri Jan 14 13:39:35 2022 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Wed Jan 26 13:47:44 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fab1eab1

sci-libs/rocSOLVER: Next generation LAPACK implementation for ROCm

It is the lapack package of ROCm GPGPU frame work, dependency of hipBLAS
and many other GPU accelerated frameworks (e.g. tensorflow)

Closes: https://github.com/gentoo/gentoo/pull/23789

Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Yiyang Wu <xgreenlandforwyy <AT> gmail.com>
Signed-off-by: Benda Xu <heroxbd <AT> gentoo.org>

 sci-libs/rocSOLVER/Manifest                        |  1 +
 .../files/rocSOLVER-4.2.0-add-stdint-header.patch  | 12 ++++
 .../files/rocSOLVER-4.3.0-link-blas.patch          | 21 ++++++
 sci-libs/rocSOLVER/metadata.xml                    | 19 ++++++
 sci-libs/rocSOLVER/rocSOLVER-4.3.0.ebuild          | 75 ++++++++++++++++++++++
 5 files changed, 128 insertions(+)

diff --git a/sci-libs/rocSOLVER/Manifest b/sci-libs/rocSOLVER/Manifest
new file mode 100644
index 000000000000..e0d75a8c6951
--- /dev/null
+++ b/sci-libs/rocSOLVER/Manifest
@@ -0,0 +1 @@
+DIST rocSOLVER-4.3.0.tar.gz 454249 BLAKE2B 
727ae416d85c5a19983257d2a0b01836013c1d69cddf3334b2c1b808b96b401db938b46b7ecf1e7faf26ff555374d1d3abed74abbe7be47110a36b44019469ee
 SHA512 
2910e1cfad4d17a2877e2ae572d80179b84903c632652571c01bd12856c92c22e073ea1005ed9aac04244b4c502a7e0c18d96445e57658ae8eb5b320bada549b

diff --git a/sci-libs/rocSOLVER/files/rocSOLVER-4.2.0-add-stdint-header.patch 
b/sci-libs/rocSOLVER/files/rocSOLVER-4.2.0-add-stdint-header.patch
new file mode 100644
index 000000000000..4afff8f467ea
--- /dev/null
+++ b/sci-libs/rocSOLVER/files/rocSOLVER-4.2.0-add-stdint-header.patch
@@ -0,0 +1,12 @@
+fix compilation error rocsolver-extra-types.h:11:9: error: unknown type name 
'uint32_t'
+--- a/library/include/rocsolver-extra-types.h
++++ b/library/include/rocsolver-extra-types.h
+@@ -5,6 +5,8 @@
+ #ifndef ROCSOLVER_EXTRAS_H_
+ #define ROCSOLVER_EXTRAS_H_
+ 
++#include "stdint.h"
++
+ /*! \brief Used to specify the logging layer mode using a bitwise combination
+  *of rocblas_layer_mode values.
+  
********************************************************************************/

diff --git a/sci-libs/rocSOLVER/files/rocSOLVER-4.3.0-link-blas.patch 
b/sci-libs/rocSOLVER/files/rocSOLVER-4.3.0-link-blas.patch
new file mode 100644
index 000000000000..407582831142
--- /dev/null
+++ b/sci-libs/rocSOLVER/files/rocSOLVER-4.3.0-link-blas.patch
@@ -0,0 +1,21 @@
+Should link blas otherwise ld return error adding symbols: DSO missing from 
command line
+--- orig/clients/benchmarks/CMakeLists.txt
++++ rocSOLVER-rocm-4.3.0/clients/benchmarks/CMakeLists.txt
+@@ -17,6 +17,7 @@ target_include_directories( rocsolver-be
+     )
+ 
+ target_link_libraries( rocsolver-bench PRIVATE
++  blas
+   cblas
+   lapack
+   Threads::Threads
+--- orig/clients/gtest/CMakeLists.txt
++++ rocSOLVER-rocm-4.3.0/clients/gtest/CMakeLists.txt
+@@ -87,6 +87,7 @@ target_include_directories( rocsolver-te
+     )
+ 
+ target_link_libraries( rocsolver-test PRIVATE
++  blas
+   cblas
+   lapack
+   GTest::GTest

diff --git a/sci-libs/rocSOLVER/metadata.xml b/sci-libs/rocSOLVER/metadata.xml
new file mode 100644
index 000000000000..344dd1337031
--- /dev/null
+++ b/sci-libs/rocSOLVER/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="project">
+    <email>[email protected]</email>
+  </maintainer>
+  <maintainer type="person">
+    <email>[email protected]</email>
+    <name>Wilfried Holzke</name>
+  </maintainer>
+  <maintainer type="person">
+    <email>[email protected]</email>
+    <name>Yiyang Wu</name>
+  </maintainer>
+    <use>
+        <flag name="test">Perform rocsolver-test to compare the result between 
rocSOLVER and system LAPACK.</flag>
+        <flag name="benchmark">Build and install rocsolver-bench.</flag>
+    </use>
+</pkgmetadata>

diff --git a/sci-libs/rocSOLVER/rocSOLVER-4.3.0.ebuild 
b/sci-libs/rocSOLVER/rocSOLVER-4.3.0.ebuild
new file mode 100644
index 000000000000..c017b7ad31a0
--- /dev/null
+++ b/sci-libs/rocSOLVER/rocSOLVER-4.3.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake
+
+DESCRIPTION="Implementation of a subset of LAPACK functionality on the ROCm 
platform"
+HOMEPAGE="https://github.com/ROCmSoftwarePlatform/rocSOLVER";
+SRC_URI="https://github.com/ROCmSoftwarePlatform/rocSOLVER/archive/rocm-${PV}.tar.gz
 -> rocSOLVER-${PV}.tar.gz"
+
+LICENSE="BSD"
+KEYWORDS="~amd64"
+SLOT="0/$(ver_cut 1-2)"
+
+IUSE="test benchmark"
+
+RDEPEND="dev-util/hip:${SLOT}
+       sci-libs/rocBLAS:${SLOT}
+       benchmark? ( virtual/blas )"
+DEPEND="${RDEPEND}"
+BDEPEND="test? ( dev-cpp/gtest
+       virtual/blas )"
+
+PATCHES=(
+       "${FILESDIR}/rocSOLVER-4.2.0-add-stdint-header.patch"
+       "${FILESDIR}/rocSOLVER-4.3.0-link-blas.patch"
+)
+
+RESTRICT="!test? ( test )"
+
+S=${WORKDIR}/${PN}-rocm-${PV}
+
+src_prepare() {
+       sed -e "s: PREFIX rocsolver:# PREFIX rocsolver:" -i 
library/src/CMakeLists.txt
+       sed -e 
"s:\$<INSTALL_INTERFACE\:include>:\$<INSTALL_INTERFACE\:include/rocsolver>:" -i 
library/src/CMakeLists.txt
+       sed -e "s:rocm_install_symlink_subdir( rocsolver 
):#rocm_install_symlink_subdir( rocsolver ):" -i library/src/CMakeLists.txt
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       # Grant access to the device
+       addwrite /dev/kfd
+       addpredict /dev/dri/
+
+       local mycmakeargs=(
+               -Wno-dev
+               -DCMAKE_SKIP_RPATH=ON
+               -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/"
+               -DCMAKE_INSTALL_INCLUDEDIR="${EPREFIX}/usr/include/rocsolver"
+               -DBUILD_CLIENTS_SAMPLES=NO
+               -DBUILD_CLIENTS_TESTS=$(usex test ON OFF)
+               -DBUILD_CLIENTS_BENCHMARKS=$(usex benchmark ON OFF)
+               ${AMDGPU_TARGETS+-DAMDGPU_TARGETS="${AMDGPU_TARGETS}"}
+       )
+
+       CXX="hipcc" cmake_src_configure
+}
+
+src_test() {
+       addwrite /dev/kfd
+       addwrite /dev/dri/
+       cd "${BUILD_DIR}/clients/staging" || die
+       LD_LIBRARY_PATH="${BUILD_DIR}/library/src" ./rocsolver-test || die
+}
+
+src_install() {
+       cmake_src_install
+
+       if use benchmark; then
+               cd "${BUILD_DIR}" || die
+               dobin clients/staging/rocsolver-bench
+       fi
+}

Reply via email to