Skip to content

Commit

Permalink
sci-libs/rocBLAS: add 6.3.0
Browse files Browse the repository at this point in the history
Also backport fix for 16-bit floats for 6.1.1

Closes: https://bugs.gentoo.org/944820
Signed-off-by: Sv. Lockal <[email protected]>
Signed-off-by: Sam James <[email protected]>
  • Loading branch information
AngryLoki authored and thesamesam committed Jan 5, 2025
1 parent c9fd543 commit da37b20
Show file tree
Hide file tree
Showing 6 changed files with 176 additions and 2 deletions.
1 change: 1 addition & 0 deletions sci-libs/rocBLAS/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ DIST rocm-rocBLAS-5.1.3.tar.gz 13741546 BLAKE2B af10d8cb69bee44ef5aab2dc350e1d9f
DIST rocm-rocBLAS-5.4.2.tar.gz 15938434 BLAKE2B 14ebafa944fdac443800bb7f9b16f8ecf0f420b168d3c6534f68ad7d14bf058a4cc1673fce8f4b9be53e4a6c1cf05011e01853cd901bce0b59827d2aca4d029f SHA512 e62bb80457c1e89454885499bdce9d60beecd706806724418983c78c65c2ae303550f9670b5a6e71dae6a61c0e42b223ab01b36b8406430731ebcbff54c4a8f4
DIST rocm-rocBLAS-5.7.1.tar.gz 55389700 BLAKE2B 9e58b1d29c8a04aa58ce17fdd9b0c2504934261851619dc5b696a04e8c6a79e7c44d86a6db7a9c76a434d76593de8c191cba6f163cf398d01cfc001e5fa32b5a SHA512 cfc73f6c490595a3c153c2ac2a3cb5926c48c2c19baa07ff3dcdf3a7ccaed82cfdff64ed5a3be64c349cb43d654d4b104d9090e2ec9f2061049d6a4921c07722
DIST rocm-rocBLAS-6.1.1.tar.gz 100103895 BLAKE2B df89a21e47730714b80c62717a86d65ac0d819c2d33b2a3c6252b60b8d7cc9eb5f8f1db27159b0a8dfc87aba7ccad97e2f832bc0044e92d0b69c526d382c745a SHA512 74e847c4ddee16cae7f41e268a815ea03875519c365abe7dfce313a9545df245baa73301b432f64a36cc988281fec7530629a0d72583e9ea287c98ec8a0b3907
DIST rocm-rocBLAS-6.3.0.tar.gz 57907324 BLAKE2B a3cce68e0cc06e8df56e1622889254c75744b0f85c9fe66cb94bbc158f7ce45e40a5798d30e6a10430092490c1e347f19f38b36db767ccb784c5757581b0bccb SHA512 45a524d680f1f0760fd37d49b9bd7c6257731ad5d840d832a8e40c121f7f1045a8d5b57ca8ef0943fdf333c55bccb341b529d2ca24664694203b906e510ecab5
19 changes: 19 additions & 0 deletions sci-libs/rocBLAS/files/rocBLAS-6.3.0-find-cblas.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt
index 4485fee..51eedc9 100644
--- a/clients/CMakeLists.txt
+++ b/clients/CMakeLists.txt
@@ -140,10 +140,12 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS)
set( BLAS_LIBRARY /usr/local/lib/libblis.a )
set( BLIS_INCLUDE_DIR /usr/local/include/blis )
else()
- message( WARNING "Could not find libblis" )
+ message( FATAL_ERROR "Could not find libblis" )
endif()
else()
- set( BLAS_LIBRARY "blas -lcblas" )
+ find_package( CBLAS CONFIG REQUIRED )
+ set( BLAS_LIBRARY ${CBLAS_LIBRARIES} )
+ set( BLAS_INCLUDE_DIR ${CBLAS_INCLUDE_DIRS} )
endif()
else() # WIN32
file(TO_CMAKE_PATH "C:/Program\ Files/AMD/AOCL-Windows/amd-blis/lib/ILP64/AOCL-LibBlis-Win-MT.lib" AOCL_BLAS_LIBRARY)
22 changes: 22 additions & 0 deletions sci-libs/rocBLAS/files/rocBLAS-6.3.0-no-git.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Git should not be a required dependency, as hash is not available for releases.
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -144,17 +144,8 @@ if( BUILD_VERBOSE )
message( STATUS "\t==>CMAKE_SHARED_LINKER_FLAGS_RELEASE: ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}" )
endif( )

-find_package(Git REQUIRED)
-
-# Get the git hash of the rocBLAS branch
-execute_process(
- COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD
- WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
- OUTPUT_VARIABLE GIT_HASH_ROCBLAS
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
#set the rocBLAS commit hash
-set(rocblas_VERSION_COMMIT_ID "${GIT_HASH_ROCBLAS}")
+set(rocblas_VERSION_COMMIT_ID "")

#set the Tensile commit hash
set(tensile_VERSION_COMMIT_ID "${tensile_tag}")
3 changes: 2 additions & 1 deletion sci-libs/rocBLAS/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@
<use>
<flag name="test">Perform rocblas-test to compare the result between rocBLAS and system BLAS.</flag>
<flag name="benchmark">Build and install rocblas-bench.</flag>
<flag name="hipblaslt">Build with hipBLASLt for some non-batched and strided batched problems on gfx12.</flag>
</use>
<upstream>
<remote-id type="github">ROCmSoftwarePlatform/rocBLAS</remote-id>
<remote-id type="github">ROCm/rocBLAS</remote-id>
</upstream>
</pkgmetadata>
6 changes: 5 additions & 1 deletion sci-libs/rocBLAS/rocBLAS-6.1.1-r1.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ BDEPEND="

DEPEND="
>=dev-cpp/msgpack-cxx-6.0.0
=dev-util/hip-6*
dev-util/hip:${SLOT}
test? (
virtual/blas
dev-cpp/gtest
Expand All @@ -57,6 +57,10 @@ PATCHES=(
src_prepare() {
cmake_src_prepare
sed -e "s:,-rpath=.*\":\":" -i clients/CMakeLists.txt || die

# bug 944820: f16c instuctions cause SIGILL on pre-AVX512 CPUs
sed -i -e "s/-mf16c /" clients/benchmarks/CMakeLists.txt \
clients/gtest/CMakeLists.txt clients/samples/CMakeLists.txt library/CMakeLists.txt || die
}

src_configure() {
Expand Down
127 changes: 127 additions & 0 deletions sci-libs/rocBLAS/rocBLAS-6.3.0.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

DOCS_BUILDER="doxygen"
DOCS_DIR="docs/.doxygen"
DOCS_DEPEND="media-gfx/graphviz"
LLVM_COMPAT=( 19 )
ROCM_VERSION=${PV}

inherit cmake docs edo flag-o-matic multiprocessing rocm llvm-r1

DESCRIPTION="AMD's library for BLAS on ROCm"
HOMEPAGE="https://github.com/ROCm/rocBLAS"
SRC_URI="https://github.com/ROCm/rocBLAS/archive/rocm-${PV}.tar.gz -> rocm-${P}.tar.gz"
S="${WORKDIR}/${PN}-rocm-${PV}"

LICENSE="BSD"
SLOT="0/$(ver_cut 1-2)"
KEYWORDS="~amd64"
IUSE="benchmark hipblaslt test video_cards_amdgpu"
RESTRICT="!test? ( test )"
REQUIRED_USE="${ROCM_REQUIRED_USE}"

BDEPEND="
>=dev-build/rocm-cmake-5.3
video_cards_amdgpu? (
dev-util/Tensile:${SLOT}
)
hipblaslt? ( sci-libs/hipBLASLt:${SLOT} )
test? ( dev-cpp/gtest )
"

DEPEND="
>=dev-cpp/msgpack-cxx-6.0.0
dev-util/hip:${SLOT}
test? (
virtual/blas
dev-cpp/gtest
llvm-runtimes/openmp
)
benchmark? (
virtual/blas
llvm-runtimes/openmp
)
"

QA_FLAGS_IGNORED="/usr/lib64/rocblas/library/.*"

PATCHES=(
"${FILESDIR}"/${PN}-5.4.2-add-missing-header.patch
"${FILESDIR}"/${PN}-5.4.2-link-cblas.patch
"${FILESDIR}"/${PN}-6.0.2-expand-isa-compatibility.patch
"${FILESDIR}"/${PN}-6.3.0-no-git.patch
"${FILESDIR}"/${PN}-6.3.0-find-cblas.patch
)

src_prepare() {
cmake_src_prepare
sed -e "s:,-rpath=.*\":\":" -i clients/CMakeLists.txt || die
}

src_configure() {
rocm_use_hipcc

# too many warnings
append-cxxflags -Wno-explicit-specialization-storage-class

local mycmakeargs=(
-DCMAKE_SKIP_RPATH=ON
-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF
-DROCM_SYMLINK_LIBS=OFF
-DAMDGPU_TARGETS="$(get_amdgpu_flags)"
-DBUILD_WITH_TENSILE="$(usex video_cards_amdgpu)"
-DCMAKE_INSTALL_INCLUDEDIR="include/rocblas"
-DBUILD_CLIENTS_SAMPLES=OFF
-DBUILD_CLIENTS_TESTS="$(usex test ON OFF)"
-DBUILD_CLIENTS_BENCHMARKS="$(usex benchmark ON OFF)"
-DBUILD_WITH_PIP=OFF
-DBUILD_WITH_HIPBLASLT="$(usex hipblaslt ON OFF)"
-DLINK_BLIS=OFF
-Wno-dev
)

if usex video_cards_amdgpu; then
mycmakeargs+=(
-DTensile_LOGIC="asm_full"
-DTensile_COMPILER="hipcc"
-DTensile_LIBRARY_FORMAT="msgpack"
-DTensile_CODE_OBJECT_VERSION="default"
-DTensile_ROOT="${EPREFIX}/usr/share/Tensile"
-DTensile_CPU_THREADS="$(makeopts_jobs)"
)
fi

cmake_src_configure
}

src_compile() {
docs_compile
cmake_src_compile
}

src_test() {
check_amdgpu
cd "${BUILD_DIR}"/clients/staging || die
export ROCBLAS_TEST_TIMEOUT=3600 ROCBLAS_TENSILE_LIBPATH="${BUILD_DIR}/Tensile/library"
export LD_LIBRARY_PATH="${BUILD_DIR}/clients:${BUILD_DIR}/library/src"

# `--gtest_filter=*quick*:*pre_checkin*-*known_bug*` is >1h on 7900XTX
edob ./rocblas-test --yaml rocblas_smoke.yaml
}

src_install() {
cmake_src_install

if use benchmark; then
cd "${BUILD_DIR}" || die
dolib.a clients/librocblas_fortran_client.a
dobin clients/staging/rocblas-bench
fi

# Stop llvm-strip from removing .strtab section from *.hsaco files,
# otherwise rocclr/elf/elf.cpp complains with "failed: null sections(STRTAB)" and crashes
dostrip -x "/usr/$(get_libdir)/rocblas/library/"
}

0 comments on commit da37b20

Please sign in to comment.