## START: Set by rpmautospec ## (rpmautospec version 0.7.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 5; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %global upstreamname rocALUTION %global rocm_release 6.2 %global rocm_patch 1 %global rocm_version %{rocm_release}.%{rocm_patch} %global toolchain rocm # hipcc does not support some clang flags %global build_cxxflags %(echo %{optflags} | sed -e 's/-fstack-protector-strong/-Xarch_host -fstack-protector-strong/' -e 's/-fcf-protection/-Xarch_host -fcf-protection/') # $gpu will be evaluated in the loops below %global _vpath_builddir %{_vendor}-%{_target_os}-build-${gpu} %bcond_with debug %if %{with debug} %global build_type DEBUG %else %global build_type RELEASE %global debug_package %{nil} %endif %bcond_with test %if %{with test} %global build_test ON %global __brp_check_rpaths %{nil} %else %global build_test OFF %endif Name: rocalution Version: %{rocm_version} %if 0%{?is_opensuse} || 0%{?rhel} && 0%{?rhel} < 10 Release: 1%{?dist} %else Release: %autorelease %endif Summary: Next generation library for iterative sparse solvers for ROCm platform Url: https://github.com/ROCm/%{upstreamname} License: MIT # Only x86_64 works right now: ExclusiveArch: x86_64 Source0: %{url}/archive/rocm-%{version}.tar.gz#/%{upstreamname}-%{version}.tar.gz # combine libs because of circular dependency reported in fedora-review # Patch0: 0001-prepare-rocalution-cmake-for-fedora.patch BuildRequires: cmake BuildRequires: rocblas-devel BuildRequires: rocm-cmake BuildRequires: rocm-comgr-devel BuildRequires: rocm-compilersupport-macros BuildRequires: rocm-hip-devel BuildRequires: rocm-runtime-devel BuildRequires: rocm-rpm-macros BuildRequires: rocprim-devel BuildRequires: rocrand-devel BuildRequires: rocsparse-devel %if %{with test} BuildRequires: gtest-devel %endif Requires: rocm-rpm-macros-modules %description rocALUTION is a sparse linear algebra library that can be used to explore fine-grained parallelism on top of the ROCm platform runtime and toolchains. Based on C++ and HIP, rocALUTION provides a portable, generic, and flexible design that allows seamless integration with other scientific software packages. rocALUTION offers various backends for different (parallel) hardware: Host * OpenMP: Designed for multi-core CPUs * HIP: Designed for ROCm-compatible devices * MPI: Designed for multi-node clusters and multi-GPU setups %package devel Summary: Libraries and headers for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel %{summary} %if %{with test} %package test Summary: Tests for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description test %{summary} %endif %prep %autosetup -p1 -n %{upstreamname}-rocm-%{version} %build for gpu in %{rocm_gpu_list} do module load rocm/$gpu %cmake \ -DCMAKE_CXX_COMPILER=hipcc \ -DCMAKE_C_COMPILER=hipcc \ -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=%rocmllvm_bindir/ld.lld \ -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=%rocmllvm_bindir/ld.lld \ -DCMAKE_LINKER=%rocmllvm_bindir/ld.lld \ -DCMAKE_AR=%rocmllvm_bindir/llvm-ar \ -DCMAKE_RANLIB=%rocmllvm_bindir/llvm-ranlib \ -DCMAKE_SKIP_RPATH=ON \ -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ -DCMAKE_PREFIX_PATH=%{rocmllvm_cmakedir}/.. \ -DROCM_SYMLINK_LIBS=OFF \ -DHIP_PLATFORM=amd \ -DAMDGPU_TARGETS=$ROCM_GPUS \ -DCMAKE_INSTALL_LIBDIR=$ROCM_LIB \ -DCMAKE_INSTALL_BINDIR=$ROCM_BIN \ -DCMAKE_MODULE_PATH=%{_libdir}/cmake/hip \ -DHIP_ROOT_DIR=%{_prefix} \ -DCMAKE_BUILD_TYPE=%{build_type} \ -DBUILD_CLIENTS_TESTS=%{build_test} %cmake_build module purge done %install for gpu in %{rocm_gpu_list} do %cmake_install done echo s@%{buildroot}@@ > br.sed find %{buildroot}%{_libdir} -name '*.so.*.[0-9]' | sed -f br.sed > %{name}.files find %{buildroot}%{_libdir} -name '*.so.[0-9]' | sed -f br.sed >> %{name}.files find %{buildroot}%{_libdir} -name '*.so' | sed -f br.sed > %{name}.devel find %{buildroot}%{_libdir} -name '*.cmake' | sed -f br.sed >> %{name}.devel %if %{with test} find %{buildroot} -name '%{name}*' | sed -f br.sed > %{name}.test %endif if [ -f %{buildroot}%{_prefix}/share/doc/rocalution/LICENSE.md ]; then rm %{buildroot}%{_prefix}/share/doc/rocalution/LICENSE.md fi %files -f %{name}.files %license LICENSE.md %files devel -f %{name}.devel %doc README.md %dir %{_libdir}/cmake/%{name} %dir %{_includedir}/%{name} %{_includedir}/%{name}/* %if %{with test} %files test -f %{name}.test %endif %changelog ## START: Generated by rpmautospec * Thu Nov 21 2024 Tom Rix - 6.2.1-5 - Fix dir ownership * Tue Nov 12 2024 Tom Rix - 6.2.1-4 - Build for TW * Tue Nov 05 2024 Tom Rix - 6.2.1-3 - Help bundled llvm find comgr * Thu Oct 17 2024 Tom Rix - 6.2.1-2 - Rebuild * Wed Sep 25 2024 Tom Rix - 6.2.1-1 - Update to 6.2.1 * Sat Sep 14 2024 Tom Rix - 6.2.0-2 - Generate file lists * Fri Aug 16 2024 Tom Rix - 6.2.0-1 - Update to ROCm 6.2 * Fri Jul 19 2024 Fedora Release Engineering - 6.1.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Sat Jun 22 2024 Tom Rix - 6.1.2-1 - Update to 6.1.2 * Tue Mar 12 2024 Tom Rix - 6.0.2-1 - Update to 6.0.2 * Fri Jan 26 2024 Fedora Release Engineering - 6.0.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Mon Jan 22 2024 Fedora Release Engineering - 6.0.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Thu Jan 04 2024 Tom Rix - 6.0.0-1 - Update to 6.0.0 * Tue Nov 21 2023 Tom Rix - 5.7.1-2 - Add debug info * Sat Nov 18 2023 Tom Rix - 5.7.1-1 - Initial package ## END: Generated by rpmautospec