** 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

Reply via email to