CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
27 KiB
27 KiB
Changelog for rocSPARSE
Documentation for rocSPARSE is available at https://rocm.docs.amd.com/projects/rocSPARSE/en/latest/.
(Unreleased) rocSPARSE 5.0.0
Added
- Added Blocked ELL format support to the
rocsparse_dense_to_sparseroutine, including the newrocsparse_bell_set_pointersfunction to set the Blocked ELL array pointers. - Added CSC format support to
rocsparse_spsvandrocsparse_sptrsv. - Added CSC format support to
rocsparse_spsmandrocsparse_sptrsm.
Changed
rocsparse_spmmwith CSR/CSC and the default algorithm (rocsparse_spmm_alg_defaultorrocsparse_spmm_alg_csr) now automatically selects a load-balanced (nnz-split) kernel for strongly skewed matrices (those containing a single very long row for CSR, or column for transposed CSC). Behavior is unchanged for non-skewed matrices and for explicit algorithm choices (rocsparse_spmm_alg_csr_row_split,rocsparse_spmm_alg_csr_nnz_split,rocsparse_spmm_alg_csr_merge_path).
Resolved issues
- Fixed an issue with
rocsparse_spmm, which produced incorrect results for the Blocked ELL sparse format.
Removed
- The deprecated
rocsparse_indextype_u16enum.
Deprecated
- Deprecated the
rocsparse_spildlt0_input_diagenum value. It was used to dump the diagonalDof the ILDLT(0) factorization, which is now stored in-place on the diagonal entries of theLfactor.
rocSPARSE 4.7.0 for ROCm 7.14
Added
- Added the
rocsparse_spildlt0routine for incomplete LDL' factorization with zero fill-in (ILDLT(0)) for symmetric (real) or hermitian (complex) sparse matrices in CSR format, with strided batched computations enabled.
Upcoming changes
- Deprecated the
rocsparse_indextype_u16index type. It is no longer supported and will be removed in a future release. Users should userocsparse_indextype_i32orrocsparse_indextype_i64going forward.
Known issues
- The HIP graph capture/launch path for the factorization routines
bsric0,bsrilu0,csric0andcsrilu0can fail withhipErrorOutOfMemoryathipGraphLaunchon memory-constrained GPUs such as the gfx110X family. The correspondinggraph_testcases are markedknown_bugand excluded from the standard test suites until the fix lands.
rocSPARSE 4.6.0 for ROCm 7.13.0
Added
- Added
rocsparse_handle_createto create a handle associated with a user-provided stream. All internal device memory allocation and initialization are stream-ordered on that stream, so handle creation never blocks the calling thread or other GPU streams. - Added
rocsparse_handle_destroyto destroy a handle created byrocsparse_handle_create, with an optional error descriptor argument. - Added the
rocsparse_create_const_bsr_descrroutine for creating a const sparse BSR matrix descriptor. - Added the
rocsparse_spic0androcsparse_spilu0routines for incomplete factorizations, with strided batched computations enabled. - Added the
rocsparse_sptrsv_descr_createand therocsparse_sptrsv_descr_destroyroutines. - Added the
rocsparse_singularityenumeration. - Added the
rocsparse_sptrsv_output_singularityand therocsparse_sptrsv_output_singularity_positioninrocsparse_sptrsv_output. - Added the strided batched computations for
rocsparse_sptrsv.
Optimized
- Significant performance improvement for
rocsparse_Xgtsv_no_pivot_strided_batch. - Significant performance improvement for
rocsparse_Xgtsv_no_pivot.
Resolved issues
- Fixed incorrect usage of
__syncthreadsinbsrmm,csrmm(row_split), andcsritilu0x - Fixed incorrect usage of
__syncthreadsincsx2dense,dense2csx,prune_dense2csr,csrcolor, andcsrmm(nnz_split) - Fixed
rocsparse_[s|d|c|z]csric0whererocsparse_status_invalid_valuewas being returned when the maximum number of non-zeros in any row is between 513 and 1024. - Fixed compilation when using
--rocsparse_ILP64 - Fixed off-by-one heap-buffer-overflow in temporary buffer allocation for
rocsparse_csrsort,rocsparse_check_matrix_csr, androcsparse_check_matrix_gebsr(and their delegating routinesrocsparse_cscsort,rocsparse_coosort,rocsparse_check_matrix_csc, androcsparse_check_matrix_gebsc) where theshift_offsets_kerneltemp buffer was sized formelements instead ofm+1. - Fixed incorrect usage of
rocsparse_conjinbsric0for complex matrices - Fixed double-free and use-after-free in
rocsparse_copy_mat_infoforcsritsvinfo, where the ownedptr_enddevice buffer was copied shallowly and the pivot/position metadata was copied using the destination's (invalid) index type instead of the source's. - Fixed the
--memstatbuild, where tracked allocation call sites passing typedT**pointers (for examplecsrmvwg_flagsand the HYB index buffers) failed to compile against thevoid**allocation entry points.
Removed
- The deprecated C++14 support, which is no longer supported by the rocPRIM dependency.
rocSPARSE 4.5.0 for ROCm 7.12.0
Added
- Added
--show-skippedand--hide-skippedcommand-line options torocsparse-testto control whether skipped test output is displayed. - For sparse matrix vector product (
rocsparse_spmv), when usingrocsparse_spmv_alg_default, the routine now automatically falls back to a supported algorithm depending on the sparse matrix format and requested operation. For example, CSR format with transposed operations or CSC format with non-transposed operations will fall back to an appropriate algorithm.
Changed
- Use
std::hypotinrocsparse_complex_num<T>::absfunction. - Non-YAML tests (bfloat16, complex_types, atomic_add) are now automatically skipped when running
rocsparse-testwith the--yamlfilter, and skipped test output is hidden by default in this mode.
Resolved issues
- Fix issue in
rocsparse_[s|d|c|z]gebsrmvroutine where incorrect results could sometimes be returned. - Fix issue in
rocsparse_[s|d|c|z]bsrxmvroutine where out-of-bounds memory reads can occur in the single precision bsrxmv kernels whenblock_dimequals5or8.
rocSPARSE 4.4.0 for ROCm 7.11.0
Added
- Added brain half float mixed precision to
rocsparse_spmvwhere A, X, and Y use bfloat16 and the compute type use float. - Added half float mixed precision to
rocsparse_spmvwhere A, X, and Y use float16 and the compute type use float. - Added float16 and bfloat16 output support for level 3 functions (
rocsparse_spmm,rocsparse_spgemm). This enables mixed precision workflows where the output matrix C can use float16 or bfloat16 types. - gfx1150, gfx1152 and gfx1153 enabled.
- Added the
debian,almalinux,rockylinux, andoraclelinuxOS names to install script.
rocSPARSE 4.3.0 for ROCm 7.10.0
Added
- Added
rocsparse_spmv_set_extraandrocsparse_spmv_clear_extrafunctions to enable residual computation within SpMV operations. These functions allow setting additional gamma scalars and z vectors for fused computations of the formy = alpha * op(A) * x + beta * y + sum(gamma_i * z_i), enabling efficient residual calculations liker = b - A * x.
rocSPARSE 4.2.0 for ROCm 7.2.0
Added
- Added sliced ELL format support to the
rocsparse_spmvroutine. - Added the
rocsparse_sptrsvandrocsparse_sptrsmroutines for triangular solve. - Added the
--clients-onlyoption to theinstall.shandrmake.pyscripts to only build the clients for a version of rocSPARSE that is already installed. - Added nnz split algorithm
rocsparse_spmv_alg_csr_nnzsplittorocsparse_spmv. This algorithm might be superior to the existing adaptive algorithmrocsparse_spmv_alg_csr_adaptivewhen running the computation a small number of times because it avoids paying the analysis cost of the adaptive algorithm.
Changed
- Make rocBLAS a requirement when it's requested when building from source. Previously, rocBLAS was not used if it could not be found. To opt out of using rocblas when building from source, use the
--no-rocblasoption with theinstall.shorrmake.pybuild scripts.
Optimized
- Significantly improved the
rocsparse_sddmmroutine when using CSR format, especially as the number of columns in the denseAmatrix (or rows in the denseBmatrix) increase. - Improved the user documentation.
Resolved issues
- Fix the
rmake.pybuild script to properly handleautoand all options when selecting offload targets. - Fix building rocSPARSE with the install script on centOS 9.
- Fix
std::fmacasting in host routines to properly deduce types. This could have previously caused compilation failures when building from source.
rocSPARSE 4.1.0 for ROCm 7.1.0
Added
- Added brain half float mixed precision to
rocsparse_axpbywhere X and Y use bfloat16 and result and the compute type use float. - Added brain half float mixed precision to
rocsparse_spvvwhere X and Y use bfloat16 and result and the compute type use float. - Added brain half float mixed precision to
rocsparse_spmvwhere A and X use bfloat16 and Y and the compute type use float. - Added brain half float mixed precision to
rocsparse_spmmwhere A and B use bfloat16 and C and the compute type use float. - Added brain half float mixed precision to
rocsparse_sddmmwhere A and B use bfloat16 and C and the compute type use float. - Added brain half float mixed precision to
rocsparse_sddmmwhere A and B and C use bfloat16 and the compute type use float. - Added half float mixed precision to
rocsparse_sddmmwhere A and B and C use float16 and the compute type use float. - Added brain half float uniform precision to
rocsparse_scatterandrocsparse_gatherroutines.
Optimized
- Improved the user documentation.
Upcoming changes
- Deprecate trace, debug, and bench logging using environment variable
ROCSPARSE_LAYER.
rocSPARSE 4.0.2 for ROCm 7.0.0
Added
- Adds
SpGEAMgeneric routine for computing sparse matrix addition in CSR format - Adds
v2_SpMVgeneric routine for computing sparse matrix vector multiplication. As opposed to the deprecatedrocsparse_spmvroutine, this routine does not use a fallback algorithm if a non-implemented configuration is encountered and will return an error in such a case. For the deprecated routinerocsparse_spmv, the user can enable warning messages in situations where a fallback algorithm is used by either calling upfront the routinerocsparse_enable_debugor exporting the variableROCSPARSE_DEBUG(with the shell commandexport ROCSPARSE_DEBUG=1). - Adds half float mixed precision to
rocsparse_axpbywhere X and Y use float16 and result and the compute type use float - Adds half float mixed precision to
rocsparse_spvvwhere X and Y use float16 and result and the compute type use float - Adds half float mixed precision to
rocsparse_spmvwhere A and X use float16 and Y and the compute type use float - Adds half float mixed precision to
rocsparse_spmmwhere A and B use float16 and C and the compute type use float - Adds half float mixed precision to
rocsparse_sddmmwhere A and B use float16 and C and the compute type use float - Adds half float uniform precision to
rocsparse_scatterandrocsparse_gatherroutines - Adds half float uniform precision to
rocsparse_sddmmroutine - Added
rocsparse_spmv_alg_csr_rowsplitalgorithm. - Added support for gfx950
- Add ROC-TX instrumentation support in rocSPARSE (not available on Windows or in the static library version on Linux).
- Added the
almalinuxOS name to correct the gfortran dependency
Changed
- Switch to defaulting to C++17 when building rocSPARSE from source. Previously rocSPARSE was using C++14 by default.
Optimized
- Reduced the number of template instantiations in the library to further reduce the shared library binary size and improve compile times
- Allow SpGEMM routines to use more shared memory when available. This can speed up performance for matrices with a large number of intermediate products.
- Use of the
rocsparse_spmv_alg_csr_adaptiveorrocsparse_spmv_alg_csr_defaultalgorithms inrocsparse_spmvto perform transposed sparse matrix multiplication (C=alpha*A^T*x+beta*y) resulted in unnecessary analysis on A and needless slowdown during the analysis phase. This has been fixed by skipping the analysis when performing the transposed sparse matrix multiplication. - Improved the user documentation
Resolved issues
- Fixed an issue in the public headers where
extern "C"was not wrapped by#ifdef __cplusplus, which caused failures when building C programs with rocSPARSE. - Fixed a memory access fault in the
rocsparse_Xbsrilu0routines. - Fixed failures that could occur in
rocsparse_Xbsrsm_solveorrocsparse_spsmwith BSR format when using host pointer mode. - Fixed ASAN compilation failures
- Fixed failure that occurred when using const descriptor
rocsparse_create_const_csr_descrwith the generic routinerocsparse_sparse_to_sparse. Issue was not observed when using non-const descriptorrocsparse_create_csr_descrwithrocsparse_sparse_to_sparse. - Fixed a memory leak in the rocsparse handle
Removed
- The deprecated
rocsparse_spmv_exroutine - The deprecated
rocsparse_sbsrmv_ex,rocsparse_dbsrmv_ex,rocsparse_cbsrmv_ex, androcsparse_zbsrmv_exroutines - The deprecated
rocsparse_sbsrmv_ex_analysis,rocsparse_dbsrmv_ex_analysis,rocsparse_cbsrmv_ex_analysis, androcsparse_zbsrmv_ex_analysisroutines
Upcoming changes
- Deprecated the
rocsparse_spmvroutine. Users should use therocsparse_v2_spmvroutine going forward. - Deprecated
rocsparse_spmv_alg_csr_streamalgorithm. Users should use therocsparse_spmv_alg_csr_rowsplitalgorithm going forward. - Deprecated the
rocsparse_itilu0_alg_sync_split_fusionalgorithm. Users should use one ofrocsparse_itilu0_alg_async_inplace,rocsparse_itilu0_alg_async_split, orrocsparse_itilu0_alg_sync_splitgoing forward.
rocSPARSE 3.4.0 for ROCm 6.4.0
Added
- Added support for
rocsparse_matrix_type_triangularinrocsparse_spsv - Added test filters
smoke,regression, andextendedfor emulation tests. - Added
rocsparse_[s|d|c|z]csritilu0_compute_exroutines for iterative ILU - Added
rocsparse_[s|d|c|z]csritsv_solve_exroutines for iterative triangular solve - Added
GPU_TARGETSto replace the now deprecatedAMDGPU_TARGETSin cmake files - Added BSR format to the SpMM generic routine
rocsparse_spmm
Changed
- By default, build rocsparse shared library using
--offload-compresscompiler option which compresses the fat binary. This significantly reduces the shared library binary size.
Optimized
- Improved the performance of
rocsparse_spmmwhen used with row order forBandCdense matrices and the row split algorithm,rocsparse_spmm_alg_csr_row_split. - Improved the adaptive CSR sparse matrix-vector multiplication algorithm when the sparse matrix has many empty rows at the beginning or at the end of the matrix. This improves the routines
rocsparse_spmvandrocsparse_spmv_exwhen the adaptive algorithmrocsparse_spmv_alg_csr_adaptiveis used. - Improved stream CSR sparse matrix-vector multiplication algorithm when the sparse matrix size (number of rows) decreases. This improves the routines
rocsparse_spmvandrocsparse_spmv_exwhen the stream algorithmrocsparse_spmv_alg_csr_streamis used. - Compared to
rocsparse_[s|d|c|z]csritilu0_compute, the routinesrocsparse_[s|d|c|z]csritilu0_compute_exintroduce a number of free iterations. A free iteration is an iteration that does not compute the evaluation of the stopping criteria, if enabled. This allows the user to tune the algorithm for performance improvements. - Compared to
rocsparse_[s|d|c|z]csritsv_solve, the routinesrocsparse_[s|d|c|z]csritsv_solve_exintroduce a number of free iterations. A free iteration is an iteration that does not compute the evaluation of the stopping criteria. This allows the user to tune the algorithm for performance improvements. - Improved user documentation
Resolved issues
- Fixed an issue in
rocsparse_spgemm,rocsparse_[s|d|c|z]csrgemm, androcsparse_[s|d|c|z]bsrgemmwhere incorrect results could be produced when rocSPARSE was built with optimization levelO0. This was caused by a bug in the hash tables that could allow keys to be inserted twice. - Fixed an issue in the routine
rocsparse_spgemmwhen usingrocsparse_spgemm_stage_symbolicandrocsparse_spgemm_stage_numeric, where the routine would crash whenalphaandbetawere passed as host pointers and wherebeta != 0. - Fixed compilation error resulting from incorrectly using
reinterpret_castto cast away a const qualifier in therocsparse_complex_numconstructor. See https://github.com/ROCm/rocSPARSE/issues/434 for more information.
Upcoming changes
- Deprecated
rocsparse_[s|d|c|z]csritilu0_computeroutines. Users should use the newly addedrocsparse_[s|d|c|z]csritilu0_compute_exroutines going forward. - Deprecated
rocsparse_[s|d|c|z]csritsv_solveroutines. Users should use the newly addedrocsparse_[s|d|c|z]csritsv_solve_exroutines going forward. - Deprecated
AMDGPU_TARGETSusing in cmake files. Users should useGPU_TARGETSgoing forward.
Known issues
- Under certain conditions, rocSPARSE might fail to compile with ASAN on Ubuntu 22.04.
rocSPARSE 3.3.0 for ROCm 6.3.0
Added
- Added the
azurelinuxOS name to correct the gfortran dependency - Add
rocsparse_create_extract_descr,rocsparse_destroy_extract_descr,rocsparse_extract_buffer_size,rocsparse_extract_nnz, androcsparse_extractAPIs to allow extraction of the upper or lower part of sparse CSR or CSC matrices. - Support for the gfx1151, gfx1200, and gfx1201 architectures.
Changed
- Change the default compiler from hipcc to amdclang in install script and cmake files.
- Change address sanitizer build targets so that only gfx908:xnack+, gfx90a:xnack+, gfx940:xnack+, gfx941:xnack+, and gfx942:xnack+ are built when
BUILD_ADDRESS_SANITIZER=ONis configured.
Optimized
- Improved user documentation
Resolved issues
- Fixed the
csrmmmerge path algorithm so that diagonal is clamped to the correct range. - Fixed a race condition in
bsrgemmthat could on rare occasions cause incorrect results. - Fixed an issue in
hyb2csrwhere the CSR row pointer array was not being properly filled whenn=0,coo_nnz=0, orell_nnz=0. - Fixed scaling in
rocsparse_Xhybmvwhen only performingy=beta*y, for example, wherealpha==0iny=alpha*Ax+beta*y. - Fixed
rocsparse_Xgemmifailures when the y grid dimension is too large. This occurred when n >= 65536.
rocSPARSE 3.2.0 for ROCm 6.2.0
Additions
- New Merge-Path algorithm to SpMM, supporting CSR format
- SpSM now supports row order
- rocsparseio I/O functionality has been added to the library
rocsparse_set_identity_permutationhas been added
Changes
- Adjusted rocSPARSE dependencies to related HIP packages
- Binary size has been reduced
- A namespace has been wrapped around internal rocSPARSE functions and kernels
rocsparse_csr_set_pointers,rocsparse_csc_set_pointers, androcsparse_bsr_set_pointersdo now allow the column indices and values arrays to be nullptr ifnnzis 0- gfx803 target has been removed from address sanitizer builds
Optimizations
- Improved user manual
- Improved contribution guidelines
- SpMV adaptive and LRB algorithms have been further optimized on CSR format
- Improved performance of SpMV adaptive with symmetrically stored matrices on CSR format
Fixes
- Compilation errors with
BUILD_ROCSPARSE_ILP64=ONhave been resolved
rocSPARSE 3.1.1 for ROCm 6.1.0
Additions
- New LRB algorithm to SpMV, supporting CSR format
- rocBLAS as now an optional dependency for SDDMM algorithms
- Additional verbose output for
csrgemmandbsrgemm - CMake support for documentation
Optimizations
- Triangular solve with multiple rhs (SpSM, csrsm, ...) now calls SpSV, csrsv, etcetera when nrhs equals 1
- Improved user manual section Installation and Building for Linux and Windows
rocSPARSE 3.0.2 for ROCm 6.0.0
Additions
rocsparse_inverse_permutation- Mixed-precisions for SpVV
- Uniform int8 precision for gather and scatter
Changes
- Added new
rocsparse_spmvroutine - Added new
rocsparse_xbsrmvroutines - When using host pointer mode, you must now call
hipStreamSynchronizefollowingdoti,dotci,spvv, andcsr2ell
Optimizations
dotiroutine- Improved spin-looping algorithms
- Improved documentation
- Improved verbose output during argument checking on API function calls
Deprecations
rocsparse_spmv_exrocsparse_xbsrmv_ex
Removals
- Auto stages from
spmv,spmm,spgemm,spsv,spsm, andspitsv - Formerly deprecated
rocsparse_spmvroutines - Formerly deprecated
rocsparse_xbsrmvroutines - Formerly deprecated
rocsparse_spmm_exroutine
Fixes
- Bug in
rocsparse-benchwhere the SpMV algorithm was not taken into account in CSR format - BSR and GEBSR routines (
bsrmv,bsrsv,bsrmm,bsrgeam,gebsrmv,gebsrmm) didn't always showblock_dim==0as an invalid size - Passing
nnz = 0todotiordotciwasn't always returning a dot product of 0 gpsvminimum size is nowm >= 3
rocSPARSE 2.5.4 for ROCm 5.7.0
Additions
- More mixed-precisions for SpMV, (
matrix: float,vectors: double,calculation: double) and (matrix: rocsparse_float_complex,vectors: rocsparse_double_complex,calculation: rocsparse_double_complex) - Support for gfx940, gfx941, and gfx942
Fixes
- Bug in
csrsmandbsrsm
Known issues
- In
csritlu0, the algorithmrocsparse_itilu0_alg_sync_split_fusionhas some accuracy issues when XNACK is enabled (you can userocsparse_itilu0_alg_sync_splitas an alternative)
rocSPARSE 2.5.2 for ROCm 5.6.0
Fixes
- Memory leak in
csritsv - Bug in
csrsmandbsrsm
rocSPARSE 2.5.1 for ROCm 5.5.0
Additions
bsrgemmandspgemmfor BSR formatbsrgeam- Build support for Navi32
- Experimental hipGraph support for some rocSPARSE routines
csritsv,spitsvcsr iterative triangular solve- Mixed-precisions for SpMV
- Batched SpMM for transpose A in COO format with atomic algorithm
Optimizations
csr2bsrcsr2csr_compresscsr2coogebsr2csrcsr2gebsr
Fixes
- Documentation
- Bug in COO SpMV grid size
- Bug in SpMM grid size when using very large matrices
Known issues
- In
csritlu0, the algorithmrocsparse_itilu0_alg_sync_split_fusionhas some accuracy issues when XNACK is enabled (you can userocsparse_itilu0_alg_sync_splitas an alternative)
rocSPARSE 2.4.0 for ROCm 5.4.0
Additions
rocsparse_spmv_exroutinerocsparse_bsrmv_ex_analysisandrocsparse_bsrmv_exroutinescsritilu0routine- Build support for Navi31 and Navi 33
Optimizations
- Segmented algorithm for COO SpMV by performing analysis
- Improved performance when generating random matrices
bsr2csrroutine
Fixes
- Integer overflow bugs
- Bug in
ellmv
rocSPARSE 2.3.2 for ROCm 5.3.0
Additions
- Transpose A for SpMM COO format
- Matrix checker routines for verifying matrix data
- Atomic algorithm for COO SpMV
bsrpadroutine
Fixes
- Bug in
csrilu0that could cause a deadlock - Bug where asynchronous
memcpywould use wrong stream - Potential size overflows
rocSPARSE 2.2.0 for ROCm 5.2.0
Additions
- Batched SpMM for CSR, CSC, and COO formats
- Packages for test and benchmark executables on all supported operating systems using CPack
- Clients file importers and exporters
Optimizations
- Clients code size reduction
- Clients error handling
- Clients benchmarking for performance tracking
Changes
- Test adjustments due to round-off errors
- Fixing API call compatibility with rocPRIM
rocSPARSE 2.1.0 for ROCm 5.1.0
Additions
gtsv_interleaved_batchgpsv_interleaved_batchSpGEMM_reuse- Allow copying of mat info struct
Optimizations
- Optimization for SDDMM
- Allow unsorted matrices in
csrgemmmultipass algorithm
rocSPARSE 2.0.0 for ROCm 5.0.0
Additions
csrmv,coomv,ellmv, andhybmvfor (conjugate) transposed matricescsrmvfor symmetric matrices- Packages for test and benchmark executables on all supported operating systems using CPack
Changes
spmm_exhas been deprecated and will be removed in the next major release
Optimizations
- Optimization for
gtsv
rocSPARSE 1.22.2 for ROCm 4.5.0
Additions
- Triangular solve for multiple right-hand sides using BSR format
- SpMV for BSRX format
- SpMM in CSR format enhanced to work with transposed A
- Matrix coloring for CSR matrices
- Added batched tridiagonal solve (
gtsv_strided_batch) - SpMM for BLOCKED ELL format
- Generic routines for SpSV and SpSM
- Beta support for Windows 10
- Additional atomic-based algorithms for SpMM in COO format
- Extended version of SpMM
- Additional algorithm for SpMM in CSR format
- Added (conjugate) transpose support for CsrMV and SpMV (CSR) routines
Changes
- Packaging has been split into a runtime package (
rocsparse) and a development package (rocsparse-devel): The development package depends on the runtime package. When installing the runtime package, the package manager will suggest the installation of the development package to aid users transitioning from the previous version's combined package. This suggestion by package manager is for all supported operating systems (except CentOS 7) to aid in the transition. Thesuggestionfeature in the runtime package is introduced as a deprecated feature and will be removed in a future ROCm release.
Fixes
- Bug with
gemvion Navi21 - Bug with adaptive CsrMV
Optimizations
- Optimization for pivot-based
gtsv
rocSPARSE 1.20.2 for ROCm 4.3.0
Additions
- (batched) Tridiagonal solver with and without pivoting
- Dense matrix sparse vector multiplication (gemvi)
- Support for gfx90a
- Sampled dense-dense matrix multiplication (SDDMM)
Optimizations
- client matrix download mechanism
- removed boost dependency in clients
rocSPARSE 1.19.5 for ROCm 4.2.0
Additions
- SpMM (CSR, COO)
- Code coverage analysis
Optimizations
- Install script
- Level 2/3 unit tests
rocsparse-benchno longer depends on boost
rocSPARSE 1.19.4 for ROCm 4.1.0
Additions
gebsrmmgebsrmvgebsrsvcoo2denseanddense2coo- Generic APIs, including
axpby,gather,scatter,rot,spvv,spmv,spgemm,sparsetodense,densetosparse - Support for mixed indexing types in matrix formats
rocSPARSE 1.18.4 for ROCm 4.0.0
Additions
- Changelog
csr2gebsrgebsr2gebscgebsr2gebsr- Treating filename as regular expression for YAML-based testing generation
- Documentation for
gebsr2csr
Optimizations
bsric0
Changes
- gfx1030 has been adjusted to the latest compiler
- Replace old XNACK 'off' compiler flag with new version
- Updated Debian package name
rocSPARSE 1.17.6 for ROCm 3.9
Additions
prune_csr2csr,prune_dense2csr_percentageandprune_csr2csr_percentageaddedbsrilu0 addedcsrilu0_numeric_boostfunctionality added
rocSPARSE 1.16.1 for ROCm 3.8
Additions
bsric0
rocSPARSE 1.14.3 for ROCm 3.7
- No changes for this ROCm release
rocSPARSE 1.14.3 for ROCm 3.6
Additions
- Fortran bindings
- CentOS 6 support
Optimizations
bsrmv
rocSPARSE 1.12.10 for ROCm 3.5
Additions
- Default compiler switched to HIP-Clang
csr2dense,csc2dense,csr2csr_compress,nnz_compress,bsr2csr,csr2bsr,bsrmv, andcsrgeam- Triangular solve for BSR format (
bsrsv) - Options for static build
- Examples
Optimizations
dense2csranddense2csc- Installation process