Bitwise reproducibility#
Some routines do not produce deterministic results from run to run. Typically this is the case when HIP atomics are used. This page catalogues the run to run reproducibility of each routine.
Sparse Level 1 Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
Sparse Level 2 Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
The reproducibility of rocsparse_Xbsrmv_ex()
,
rocsparse_Xbsrmv()
, rocsparse_Xbsrxmv()
,
rocsparse_Xcoomv()
, rocsparse_Xcsrmv()
,
rocsparse_Xellmv()
, rocsparse_Xhybmv()
,
and rocsparse_Xgebsrmv()
is more complicated depending on whether A
is transposed or not. See the below chart to determine whether these routines are deterministic.
Routine |
A non-transpose |
A transpose |
||
---|---|---|---|---|
Yes |
No |
Yes |
No |
|
rocsparse_Xbsrmv_ex |
x |
N/A |
N/A |
|
rocsparse_Xbsrmv |
x |
N/A |
N/A |
|
rocsparse_Xbsrxmv |
x |
N/A |
N/A |
|
rocsparse_Xcoomv |
x |
x |
||
rocsparse_Xcsrmv |
x |
x |
||
rocsparse_Xcsrmv (info != NULL) |
x |
x |
||
rocsparse_Xellmv |
x |
x |
||
rocsparse_Xhybmv |
x |
x |
||
rocsparse_Xgebsrmv |
x |
N/A |
N/A |
Sparse Level 3 Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
The reproducibility of rocsparse_Xbsrmm()
,
rocsparse_Xgebsrmm()
, and
rocsparse_Xcsrmm()
is more complicated depending on
whether A is transposed or not. See the below chart to determine whether these routines
are deterministic.
Routine |
A non-transpose |
A transpose |
||
---|---|---|---|---|
Yes |
No |
Yes |
No |
|
rocsparse_Xbsrmm |
x |
N/A |
N/A |
|
rocsparse_Xgebsrmm |
x |
N/A |
N/A |
|
rocsparse_Xcsrmm |
x |
x |
Sparse Extra Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
Preconditioner Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
Conversion Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
Reordering Functions#
Function name |
yes |
no |
---|---|---|
x |
Utility Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
Sparse Generic Functions#
Function name |
yes |
no |
---|---|---|
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
||
x |
The reproducibility of rocsparse_spmv()
is more complicated because this generic routine
supports multiple sparse matrix formats and algorithms. See the below chart to determine whether
a given algorithm is deterministic.
Bit-wise reproducibility of SpMV |
||||
---|---|---|---|---|
Algorithm |
A non-transpose |
A transpose |
||
Yes |
No |
Yes |
No |
|
rocsparse_spmv_alg_csr_stream |
x |
x |
||
rocsparse_spmv_alg_csr_adaptive |
x |
x |
||
rocsparse_spmv_alg_csr_lrb |
x |
x |
||
rocsparse_spmv_alg_csr_stream (CSC FORMAT) |
x |
x |
||
rocsparse_spmv_alg_csr_adaptive (CSC FORMAT) |
x |
x |
||
rocsparse_spmv_alg_csr_lrb (CSC FORMAT) |
x |
x |
||
rocsparse_spmv_alg_coo |
x |
x |
||
rocsparse_spmv_alg_coo_atomic |
x |
x |
||
rocsparse_spmv_alg_ell |
x |
N/A |
N/A |
|
rocsparse_spmv_alg_bsr |
x |
N/A |
N/A |
The reproducibility of rocsparse_spmm()
is more complicated because this generic routine
supports multiple sparse matrix formats and algorithms. See the below chart to determine whether
a given algorithm is deterministic.
Bit-wise reproducibility of SpMM |
||||
---|---|---|---|---|
Algorithm |
A non-transpose |
A transpose |
||
Yes |
No |
Yes |
No |
|
rocsparse_spmm_alg_csr |
x |
x |
||
rocsparse_spmm_alg_csr_row_split |
x |
x |
||
rocsparse_spmm_alg_csr_nnz_split |
x |
x |
||
rocsparse_spmm_alg_csr_merge_path |
x |
x |
||
rocsparse_spmm_alg_csr (CSC FORMAT) |
x |
x |
||
rocsparse_spmm_alg_csr_row_split (CSC FORMAT) |
x |
x |
||
rocsparse_spmm_alg_csr_nnz_split (CSC FORMAT) |
x |
x |
||
rocsparse_spmm_alg_csr_merge_path (CSC FORMAT) |
x |
x |
||
rocsparse_spmm_alg_coo_segmented |
x |
x |
||
rocsparse_spmm_alg_coo_atomic |
x |
x |
||
rocsparse_spmm_alg_coo_segmented_atomic |
x |
x |
||
rocsparse_spmm_alg_bell |
x |
N/A |
N/A |
|
rocsparse_spmm_alg_bsr |
x |
N/A |
N/A |