** Description changed: - As part of our efforts to have the ROCm v7.2.4 stack in Resolute this - bug has been created. + [ Impact ] + Users running ROCm 7.1.0 on Resolute have an older version of rocSPARSE + (library version 4.1.x) that is missing the following improvements + present in 7.2.4 (library version 4.2.0): - This bug shall be updated to follow the SRU template. For now it serves - as a placeholder. + New routines: + - rocsparse_sptrsv: sparse triangular solve for vectors (SpTRSV). + Previously users had to fall back to less efficient legacy routines. + - rocsparse_sptrsm: sparse triangular solve for dense matrices (SpTRSM). + - Sliced ELL (SELL) sparse matrix format support in rocsparse_spmv, + including new descriptor functions (rocsparse_create_sell_descr, + rocsparse_sell_get, etc.). + - New rocsparse_spmv_alg_csr_nnzsplit algorithm: avoids the analysis + cost of the adaptive algorithm when the computation is run a small + number of times. - MP: https://salsa.debian.org/rocm-team/rocsparse/-/merge_requests/3 - PPA: https://launchpad.net/~b0b0a/+archive/ubuntu/rocsparse-7.2.2 and https://launchpad.net/~b0b0a/+archive/ubuntu/rocsparse-7.2.4 (Upstream 7.2.2 vs 7.2.4 have no changes) - Autopkgtests: https://autopkgtest.ubuntu.com/user/b0b0a/ppa/rocsparse-7.2.2 - Upstream code diff: https://github.com/ROCm/rocsparse/compare/rocm-7.1.1...rocm-7.2.4 - abipkgdiff [librocsparse.so.1.0 vs librocsparse.so.1.0]: - ``` - ================ changes of 'librocsparse.so.1.0'=============== - Functions changes summary: 0 Removed, 1 Changed (284 filtered out), 16 Added functions - Variables changes summary: 0 Removed, 0 Changed, 0 Added variable - 16 Added functions: - [A] 'function rocsparse_status rocsparse_const_sell_get(rocsparse_const_spmat_descr, int64_t*, int64_t*, int64_t*, int64_t*, int64_t*, void**, void**, void**, rocsparse_indextype*, rocsparse_indextype*, rocsparse_index_base*, rocsparse_datatype*)' {rocsparse_const_sell_get} - [A] 'function rocsparse_status rocsparse_create_const_sell_descr(rocsparse_const_spmat_descr*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, void*, void*, rocsparse_indextype, rocsparse_indextype, rocsparse_index_base, rocsparse_datatype)' {rocsparse_create_const_sell_descr} - [A] 'function rocsparse_status rocsparse_create_sell_descr(rocsparse_spmat_descr*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, void*, void*, rocsparse_indextype, rocsparse_indextype, rocsparse_index_base, rocsparse_datatype)' {rocsparse_create_sell_descr} - [A] 'function rocsparse_status rocsparse_create_sptrsm_descr(rocsparse_sptrsm_descr*)' {rocsparse_create_sptrsm_descr} - [A] 'function rocsparse_status rocsparse_create_sptrsv_descr(rocsparse_sptrsv_descr*)' {rocsparse_create_sptrsv_descr} - [A] 'function rocsparse_status rocsparse_destroy_sptrsm_descr(rocsparse_sptrsm_descr)' {rocsparse_destroy_sptrsm_descr} - [A] 'function rocsparse_status rocsparse_destroy_sptrsv_descr(rocsparse_sptrsv_descr)' {rocsparse_destroy_sptrsv_descr} - [A] 'function rocsparse_status rocsparse_sell_get(const rocsparse_spmat_descr, int64_t*, int64_t*, int64_t*, int64_t*, int64_t*, void**, void**, void**, rocsparse_indextype*, rocsparse_indextype*, rocsparse_index_base*, rocsparse_datatype*)' {rocsparse_sell_get} - [A] 'function rocsparse_status rocsparse_sptrsm(rocsparse_handle, rocsparse_sptrsm_descr, rocsparse_const_spmat_descr, rocsparse_const_dnmat_descr, rocsparse_dnmat_descr, rocsparse_sptrsm_stage, size_t, void*, rocsparse_error*)' {rocsparse_sptrsm} - [A] 'function rocsparse_status rocsparse_sptrsm_buffer_size(rocsparse_handle, rocsparse_sptrsm_descr, rocsparse_const_spmat_descr, rocsparse_const_dnmat_descr, rocsparse_const_dnmat_descr, rocsparse_sptrsm_stage, size_t*, rocsparse_error*)' {rocsparse_sptrsm_buffer_size} - [A] 'function rocsparse_status rocsparse_sptrsm_get_output(rocsparse_handle, rocsparse_sptrsm_descr, rocsparse_sptrsm_output, void*, size_t, rocsparse_error*)' {rocsparse_sptrsm_get_output} - [A] 'function rocsparse_status rocsparse_sptrsm_set_input(rocsparse_handle, rocsparse_sptrsm_descr, rocsparse_sptrsm_input, void*, size_t, rocsparse_error*)' {rocsparse_sptrsm_set_input} - [A] 'function rocsparse_status rocsparse_sptrsv(rocsparse_handle, rocsparse_sptrsv_descr, rocsparse_const_spmat_descr, rocsparse_const_dnvec_descr, const rocsparse_dnvec_descr, rocsparse_sptrsv_stage, size_t, void*, rocsparse_error*)' {rocsparse_sptrsv} - [A] 'function rocsparse_status rocsparse_sptrsv_buffer_size(rocsparse_handle, rocsparse_sptrsv_descr, rocsparse_const_spmat_descr, rocsparse_const_dnvec_descr, rocsparse_const_dnvec_descr, rocsparse_sptrsv_stage, size_t*, rocsparse_error*)' {rocsparse_sptrsv_buffer_size} - [A] 'function rocsparse_status rocsparse_sptrsv_get_output(rocsparse_handle, rocsparse_sptrsv_descr, rocsparse_sptrsv_output, void*, size_t, rocsparse_error*)' {rocsparse_sptrsv_get_output} - [A] 'function rocsparse_status rocsparse_sptrsv_set_input(rocsparse_handle, rocsparse_sptrsv_descr, rocsparse_sptrsv_input, void*, size_t, rocsparse_error*)' {rocsparse_sptrsv_set_input} - 1 function with some indirect sub-type change: - [C] 'function rocsparse_status rocsparse_bell_get(const rocsparse_spmat_descr, int64_t*, int64_t*, rocsparse_direction*, int64_t*, int64_t*, void**, void**, rocsparse_indextype*, rocsparse_index_base*, rocsparse_datatype*)' at rocsparse_auxiliary.cpp:3474:1 has some indirect sub-type changes: - parameter 1 of type 'const rocsparse_spmat_descr' has sub-type changes: - in unqualified underlying type 'typedef rocsparse_spmat_descr' at rocsparse-types.h:152:1: - underlying type '_rocsparse_spmat_descr*' changed: - in pointed to type 'struct _rocsparse_spmat_descr' at rocsparse_spmat_descr.hpp:29:1: - type size changed from 1600 to 1728 (in bits) - 2 data member insertions: - 'int64_t sell_slice_size', at offset 1344 (in bits) at rocsparse_spmat_descr.hpp:63:1 - 'int64_t sell_colval_size', at offset 1408 (in bits) at rocsparse_spmat_descr.hpp:64:1 - 5 data member changes (1 filtered): - type of 'rocsparse_mat_info info' changed: - underlying type '_rocsparse_mat_info*' changed: - in pointed to type 'struct _rocsparse_mat_info' at rocsparse_mat_info.hpp:42:1: - type size changed from 2048 to 1600 (in bits) - 22 data member deletions: - 'rocsparse::trm_info_t* bsrsv_lower_info', at offset 256 (in bits) at rocsparse_mat_info.hpp:50:1 - 'rocsparse::trm_info_t* bsrsvt_upper_info', at offset 320 (in bits) at rocsparse_mat_info.hpp:51:1 - 'rocsparse::trm_info_t* bsrsvt_lower_info', at offset 384 (in bits) at rocsparse_mat_info.hpp:52:1 - 'rocsparse::trm_info_t* bsric0_info', at offset 448 (in bits) at rocsparse_mat_info.hpp:53:1 - 'rocsparse::trm_info_t* bsrilu0_info', at offset 512 (in bits) at rocsparse_mat_info.hpp:54:1 - 'rocsparse::trm_info_t* bsrsm_upper_info', at offset 576 (in bits) at rocsparse_mat_info.hpp:55:1 - 'rocsparse::trm_info_t* bsrsm_lower_info', at offset 640 (in bits) at rocsparse_mat_info.hpp:56:1 - 'rocsparse::trm_info_t* bsrsmt_upper_info', at offset 704 (in bits) at rocsparse_mat_info.hpp:57:1 - 'rocsparse::trm_info_t* bsrsmt_lower_info', at offset 768 (in bits) at rocsparse_mat_info.hpp:58:1 - 'rocsparse::trm_info_t* csric0_info', at offset 832 (in bits) at rocsparse_mat_info.hpp:59:1 - 'rocsparse::trm_info_t* csrilu0_info', at offset 896 (in bits) at rocsparse_mat_info.hpp:60:1 - 'rocsparse::trm_info_t* csrsv_upper_info', at offset 960 (in bits) at rocsparse_mat_info.hpp:61:1 - 'rocsparse::trm_info_t* csrsv_lower_info', at offset 1024 (in bits) at rocsparse_mat_info.hpp:62:1 - 'rocsparse::trm_info_t* csrsvt_upper_info', at offset 1088 (in bits) at rocsparse_mat_info.hpp:63:1 - 'rocsparse::trm_info_t* csrsvt_lower_info', at offset 1152 (in bits) at rocsparse_mat_info.hpp:64:1 - 'rocsparse::trm_info_t* csrsm_upper_info', at offset 1216 (in bits) at rocsparse_mat_info.hpp:65:1 - 'rocsparse::trm_info_t* csrsm_lower_info', at offset 1280 (in bits) at rocsparse_mat_info.hpp:66:1 - 'rocsparse::trm_info_t* csrsmt_upper_info', at offset 1344 (in bits) at rocsparse_mat_info.hpp:67:1 - 'rocsparse::trm_info_t* csrsmt_lower_info', at offset 1408 (in bits) at rocsparse_mat_info.hpp:68:1 - 'void* zero_pivot', at offset 1600 (in bits) at rocsparse_mat_info.hpp:73:1 - 'void* singular_pivot', at offset 1664 (in bits) at rocsparse_mat_info.hpp:76:1 - 'double singular_tol', at offset 1728 (in bits) at rocsparse_mat_info.hpp:79:1 - 7 data member changes: - type of 'rocsparse::trm_info_t* bsrsv_upper_info' changed: - entity changed from 'rocsparse::trm_info_t*' to 'struct rocsparse::trm_t' at rocsparse_trm_t.hpp:40:1 - type size changed from 64 to 1024 (in bits) - and name of '_rocsparse_mat_info::bsrsv_upper_info' changed to '_rocsparse_mat_info::m_trm' at rocsparse_mat_info.hpp:49:1 - 'rocsparse_csrgemm_info csrgemm_info' offset changed from 1472 to 1216 (in bits) (by -256 bits) - type of 'rocsparse_csritsv_info csritsv_info' changed: - underlying type '_rocsparse_csritsv_info*' changed: - in pointed to type 'struct _rocsparse_csritsv_info' at rocsparse_csritsv_info.hpp:36:1: - type size changed from 320 to 448 (in bits) - 1 base class insertion: - struct rocsparse::pivot_info_t at rocsparse_pivot_info_t.hpp:31:1 - 5 data member changes: - 'rocsparse_csrmv_info m_csrmv_info' offset changed from 0 to 128 (in bits) (by +128 bits) - 'bool is_submatrix' offset changed from 64 to 192 (in bits) (by +128 bits) - 'int64_t ptr_end_size' offset changed from 128 to 256 (in bits) (by +128 bits) - 'rocsparse_indextype ptr_end_indextype' offset changed from 192 to 320 (in bits) (by +128 bits) - 'void* ptr_end' offset changed from 256 to 384 (in bits) (by +128 bits) - and offset changed from 1536 to 1280 (in bits) (by -256 bits) - 'int boost_enable' offset changed from 1792 to 1344 (in bits) (by -448 bits) - 'size_t boost_tol_size' offset changed from 1856 to 1408 (in bits) (by -448 bits) - 'void* boost_tol' offset changed from 1920 to 1472 (in bits) (by -448 bits) - 'void* boost_val' offset changed from 1984 to 1536 (in bits) (by -448 bits) - 'int64_t batch_count' offset changed from 1344 to 1472 (in bits) (by +128 bits) - 'int64_t batch_stride' offset changed from 1408 to 1536 (in bits) (by +128 bits) - 'int64_t offsets_batch_stride' offset changed from 1472 to 1600 (in bits) (by +128 bits) - 'int64_t columns_values_batch_stride' offset changed from 1536 to 1664 (in bits) (by +128 bits) - ================ end of changes of 'librocsparse.so.1.0'=============== + Performance: + - Significantly improved rocsparse_sddmm (sampled dense-dense matrix + multiplication) for CSR format, especially as the number of columns + in the dense A matrix (or rows in the dense B matrix) increases. - ``` + Bug fixes: + - Fix std::fma casting in host routines: incorrect type deduction could + cause compilation failures for users building from source. + - Fix compiler warnings that could mask real issues. + + This upload brings rocsparse to 7.2.4 as part of the coordinated ROCm + 7.2.4 stack SRU. All changes are upstream releases; no Ubuntu-specific + delta beyond the packaging. + + [ Test Plan ] + 1. Build + Package successfully builds in the bug PPA as well as the Bullwinkle + team rocm-devel PPA via recipe. Bullwinkle team has pushed the + package to Debian experimental and then synced it to stonking. + + 2. Install & basic smoke-test (no GPU required) + sudo apt install librocsparse1 librocsparse-dev + # Verify the library loads: + python3 -c "import ctypes; ctypes.CDLL('librocsparse.so.1'); print('OK')" + + 3. Autopkgtest + All 342140 tests from 395 test suites passed on gfx1151: + [==========] 342140 tests from 395 test suites ran. (2909504 ms total) + [ PASSED ] 342140 tests. + librocsparse1-tests PASS + Tests ran for 1h 2m 55s on 2026-06-01 via ppa:bullwinkle-team/rocm-devel. + + [ Where problems could occur ] + - The 16 new API functions (rocsparse_sptrsv*, rocsparse_sptrsm*, + rocsparse_*sell*) are purely additive. A regression would show as + those routines returning incorrect results or crashing. Symptom: + wrong numerical results in sparse triangular solves. + - The internal _rocsparse_spmat_descr struct gained 2 fields for SELL + support (+128 bits). The internal _rocsparse_mat_info struct was + refactored (22 trm_info_t fields consolidated into one). Both are + opaque handles in the public API, so no direct embedding is possible. + However, any plugin or tool that casts the opaque handle to the + internal struct would be broken. Symptom: crash or wrong results + in tools compiled against 7.1.0 headers. + - The new rocsparse_spmv_alg_csr_nnzsplit algorithm skips the analysis + phase. If selected in code that expects analysis-phase output, it + could silently return uninitialized data. Symptom: wrong results + when mixing algorithm selection with explicit analysis calls. + - Significantly reworked rocsparse_sddmm for CSR: a correctness + regression would show as wrong values in sampled DGEMM results. + Symptom: incorrect output in machine-learning sparse attention + workloads. + + [ Other Info ] + * ABI: SONAME unchanged (librocsparse.so.1). abipkgdiff (full log + https://pastebin.ubuntu.com/p/XSnrHPXh7s/) summary: + - 0 functions removed. + - 16 functions added (all new SpTRSV, SpTRSM, and SELL APIs) — + additive, backwards compatible. + - 1 function with indirect sub-type change (rocsparse_bell_get): + caused by internal struct refactoring of _rocsparse_spmat_descr + (+2 SELL fields) and _rocsparse_mat_info (trm_info_t consolidation). + Both structs are opaque handles; no public API signatures changed. + - 0 variable symbols changed. + * DPKG_GENSYMBOLS_CHECK_LEVEL=4 enforced in debian/rules; newly + exported symbols added to debian/librocsparse1.symbols. + * This update is part of the coordinated ROCm 7.2.4 stack SRU. + * Initial MP to stonking that later ended in debian experimental: + https://salsa.debian.org/rocm-team/rocsparse/-/merge_requests/3 + * PPA: https://launchpad.net/~b0b0a/+archive/ubuntu/rocsparse-2154553 + https://launchpad.net/~b0b0a/+archive/ubuntu/rocsparse-7.2.4 + * Autopkgtests: https://autopkgtest.ubuntu.com/user/b0b0a/ppa/rocsparse-7.2.4 + * Upstream comparison: + https://github.com/ROCm/rocsparse/compare/rocm-7.1.0...rocm-7.2.4
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2154553 Title: SRU: New upstream version 7.2.4 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/rocsparse/+bug/2154553/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
