SHA256
1
0
forked from ROCm/rocblas

4 Commits
main ... fixes

Author SHA256 Message Date
7ec4e270f7 Restructure spec file
Move bcond_with* settings to the top.

Signed-off-by: Egbert Eich <eich@suse.com>
2025-06-24 17:46:20 +02:00
f6563a357b Use distro specific macros to hide some distribution differences
Signed-off-by: Egbert Eich <eich@suse.com>
2025-06-24 17:44:29 +02:00
72752f85de Fix build and runtime dependencies of test package
Signed-off-by: Egbert Eich <eich@suse.com>
2025-06-24 15:57:23 +02:00
9e34eda30d Build and package core library and arch dependent tensile modules separately to parallelize the build
Signed-off-by: Egbert Eich <eich@suse.com>
2025-06-24 15:50:27 +02:00
2 changed files with 48 additions and 74 deletions

View File

@@ -1,3 +0,0 @@
# librocblas4-arch-.* are no shared libraries but modules loaded onto the GPU.
addFilter("rocblas-arch-.*: W: shared-lib-without-dependency-information")
addFilter("rocblas-arch-.*: E: shlib-fixed-dependency.")

View File

@@ -1,21 +1,21 @@
%if 0%{?suse_version}
%global rocblas_name librocblas4
%else
%global rocblas_name rocblas
%endif
%global upstreamname rocBLAS
%global rocm_release 6.4
%global rocm_patch 0
%global rocm_version %{rocm_release}.%{rocm_patch}
%if 0%{?suse_version}
# On SUSE build the .so module only - tensile modules are built in a separate package
%bcond_with tensile_package
%{rocm_set_libpackage_name rocblas -s 4}
%define build_tensile_separately 1
%if 0%{?suse_version}
# OBS replaces @BUILD_FLAVOR@ by each value of 'package'
# in the file _multibuild resulting in a separate build.
%global flavor @BUILD_FLAVOR@%{?nil}
%if "%{?flavor}" != ""
%define _flavor %{flavor}
%define __flavor %(a=%flavor; a=${a/_minus/-}; a=${a/_plus/+}; echo ${a/_/:})
%endif
%define use_flavors 1
%else
%define build_tensile_separately 0
%define use_flavors 0
%endif
%global toolchain rocm
@@ -37,7 +37,7 @@
%endif
%bcond_with test
%if %{with test} && %{without tensile_package}
%if %{with test} && 0%{!?_flavor:1}
%global build_test ON
%global __brp_check_rpaths %{nil}
%else
@@ -90,12 +90,6 @@
# OracleLinux 9 has a problem with it's strip not recognizing *.co's
%global __strip %rocmllvm_bindir/llvm-strip
%if %{with ninja}
%global cmake_generator -G Ninja
%else
%global cmake_generator %{nil}
%endif
%global cmake_config \\\
-DCMAKE_CXX_COMPILER=hipcc \\\
-DCMAKE_C_COMPILER=hipcc \\\
@@ -126,11 +120,15 @@
%bcond_with generic
%global rocm_gpu_list_generic "gfx9-generic;gfx9-4-generic;gfx10-1-generic;gfx10-3-generic;gfx11-generic;gfx12-generic"
%if 0%{!?_flavor:1} || "%{?_flavor}" == "all"
%if %{with generic}
%global gpu_list %{rocm_gpu_list_generic}
%else
%global gpu_list %{rocm_gpu_list_default}
%endif
%else
%global gpu_list %_flavor
%endif
# gfx950 is an experimental target
# Enabling will short circuit the normal build.
@@ -141,7 +139,7 @@
# $ module purge
%bcond_with gfx950
%if %{with gfx950} && %{with tensile_package}
%if %{with gfx950} && 0%{?_flavor:1}
ExclusiveArch: do_not_build
%endif
@@ -154,19 +152,24 @@ License: MIT AND BSD-3-Clause
Source0: %{url}/archive/refs/tags/rocm-%{rocm_version}.tar.gz#/%{upstreamname}-%{rocm_version}.tar.gz
Source1: rocblas.rpmlintrc
Source2: _multibuild
Patch2: 0001-fixup-install-of-tensile-output.patch
Patch3: Modify-CMakeLists.txt-files-to-allow-to-build-modules-independently.patch
Patch4: 0001-offload-compress-option.patch
Patch6: 0001-option-to-disable-roctracer-logging.patch
%if 0%{build_tensile_separately}
Requires: rocblas-tensile = %version
%if 0%{use_flavors}
%(for i in `sed -ne "/package/s@ *<package>\([^<]*\)</package>@\1@p" %{S:2}`;\
do echo "Requires: rocblas-tensile-$i = %version";\
done)
%if %{with check}
# If %check is enabled, we need to serialize the builds which will introduce
# a circular dependency. The flag below causes OBS to ignore this.
#
#!BuildIgnore: %name
BuildRequires: rocblas-tensile = %version
%(for i in `sed -ne "/package/s@ *<package>\([^<]*\)</package>@\1@p" %{S:2}`;\
do echo "BuildRequires: rocblas-tensile-$i = %version";\
done)
%endif
%endif
BuildRequires: cmake
@@ -181,32 +184,19 @@ BuildRequires: rocm-rpm-macros-modules
%if %{with tensile}
%if 0%{?suse_version}
BuildRequires: %{python_module tensile-devel}
%if %{suse_version} < 1699
BuildRequires: %{python_module joblib}
BuildRequires: python3-tensile-devel
BuildRequires: python3-joblib
%else # suse_version 1699
BuildRequires: python311-tensile-devel
%endif # suse_version < 1699
# OBS vm times out without console output
%global tensile_verbose 2
%{?with_msgpack:BuildRequires: msgpack-cxx-devel}
%else # ?suse_version
BuildRequires: python3dist(tensile)
%if 0%{?rhel}
%global tensile_verbose 2
%else
%{?with_msgpack:BuildRequires: msgpack-devel}
%global tensile_verbose 1
%global tensile_library_format msgpack
%endif
%endif # suse_version
%if %{with msgpack}
%global tensile_library_format msgpack
%else
%global tensile_library_format yaml
%endif
%else
%global tensile_verbose %{nil}
%global tensile_library_format %{nil}
%endif # tensile
%rocm_set_tensile
%if %{with compress}
BuildRequires: pkgconfig(libzstd)
@@ -234,15 +224,7 @@ BuildRequires: gtest-devel
%endif
%if %{with ninja}
%if 0%{?fedora} || 0%{?rhel}
BuildRequires: ninja-build
%endif
%if 0%{?suse_version}
BuildRequires: ninja
%define __builder ninja
%endif
%endif
%rocm_set_ninja
Provides: rocblas = %{version}-%{release}
@@ -266,12 +248,12 @@ Provides: rocblas-devel = %{version}-%{release}
%description devel
%{summary}
%package -n rocblas-tensile
Summary: ROCBlas Tensile Modules
%package -n rocblas-tensile-%{?_flavor}
Summary: ROCBlas Tensile Module for %{?__flavor} Architecture
Requires: %{name} = %version
%description -n rocblas-tensile
BLAS architecture modules for all AMDGPU architectures
%description -n rocblas-tensile-%{?_flavor}
BLAS architecture modules for %{?__flavor} AMDGPU architectures
%if %{with test}
%package test
@@ -302,7 +284,7 @@ Conflicts: %{name}-devel
%description gfx950-devel
%{summary}
%if %{with test} && %{without tensile_package}
%if %{with test} && 0%{!?_flavor:1}
%package gfx950-test
Summary: The gfx950 rocBLAS test package
Requires: %{name}-gfx950%{?_isa} = %{version}-%{release}
@@ -373,7 +355,7 @@ module load rocm/gfx950
%else
%if %{build_tensile_separately} && %{without tensile_package}
%if %use_flavors && 0%{!?_flavor:1}
export TENSILE_SKIP_LIBRARY=true
%endif
@@ -384,13 +366,13 @@ export TENSILE_SKIP_LIBRARY=true
%endif
%cmake_build %{?with_tensile_package:TENSILE_LIBRARY_TARGET}
%cmake_build %{?_flavor:TENSILE_LIBRARY_TARGET}
%if %{with gfx950}
module purge
%endif
%install
%if %{with tensile_package}
%if 0%{?_flavor:1}
DESTDIR=%{buildroot} /usr/bin/cmake -P build/library/src/TensileInstall/cmake_install.cmake
%else
%cmake_install
@@ -401,16 +383,11 @@ fi
%endif
%check
%if %{without tensile_package}
%if 0%{!?flavor:1}
%if %{with test}
%if %{with check}
%if 0%{?suse_version}
export LD_LIBRARY_PATH=%{__builddir}/library/src:$LD_LIBRARY_PATH
%{__builddir}/clients/staging/rocblas-test --gtest_brief=1
%else
export LD_LIBRARY_PATH=%{_vpath_builddir}/library/src:$LD_LIBRARY_PATH
%{_vpath_builddir}/clients/staging/rocblas-test --gtest_brief=1
%endif
export LD_LIBRARY_PATH=%{rocm_builddir}/library/src:$LD_LIBRARY_PATH
%{rocm_builddir}/clients/staging/rocblas-test --gtest_brief=1
%endif
%endif
%endif
@@ -434,12 +411,12 @@ export LD_LIBRARY_PATH=%{_vpath_builddir}/library/src:$LD_LIBRARY_PATH
%else
%if %{without tensile_package}
%if 0%{!?_flavor:1}
%files
%license LICENSE.md
%{_libdir}/librocblas.so.4{,.*}
%if %{with tensile}
%if ! %{build_tensile_separately}
%if ! %{?use_flavors}
%dir %{_libdir}/rocblas
%dir %{_libdir}/rocblas/library
%{_libdir}/rocblas/library/Kernels*
@@ -460,17 +437,17 @@ export LD_LIBRARY_PATH=%{_vpath_builddir}/library/src:$LD_LIBRARY_PATH
%{_bindir}/rocblas*
%endif
%else # ?tensile_package
%else # ?_flavor
%if %{with tensile}
%files -n rocblas-tensile
%files -n rocblas-tensile-%{?_flavor}
%dir %{_libdir}/rocblas
%dir %{_libdir}/rocblas/library
%{_libdir}/rocblas/library/Kernels*
%{_libdir}/rocblas/library/Tensile*
%endif
%endif # ?tensile_package
%endif # ?_flavor
%endif # gfx950
%changelog
@@ -478,9 +455,9 @@ export LD_LIBRARY_PATH=%{_vpath_builddir}/library/src:$LD_LIBRARY_PATH
- Build and package core library and arch dependent
tensile modules separately to parallelize the build.
- Fix build and runtime dependencies of test package.
- Use distro specific macros to hide some distribution differences.
- Restructure spec file (move bcond_with* settings to
the top).
- Add rpmlintrc for SUSE.
* Wed Jun 11 2025 Tom Rix <Tom.Rix@amd.com> - 6.4.0-8
- Remove suse check for using ldconfig