# ######################################################################## # Copyright (C) 2025-2026 Advanced Micro Devices, Inc. All rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # ######################################################################## # Data types are defined as either aliases to Python-recognized ctypes, # or enums defined with c_int base clases and attributes. Datatypes: - hipsparseIndexType_t: bases: [ c_int ] attr: u16: 1 i32: 2 i64: 3 - hipDataType: bases: [ c_int ] attr: f32_r: 0 f64_r: 1 f16_r: 2 i8_r: 3 f32_c: 4 f64_c: 5 u8_r: 8 i32_r: 10 u32_r: 12 bf16_r: 14 - { single: f32_r, double: f64_r } - { single complex: f32_c, double complex: f64_c } - hipsparseOperation_t: bases: [ c_int ] attr: HIPSPARSE_OPERATION_NON_TRANSPOSE: 0 HIPSPARSE_OPERATION_TRANSPOSE: 1 HIPSPARSE_OPERATION_CONJUGATE_TRANSPOSE: 2 - hipsparseIndexBase_t: bases: [ c_int ] attr: HIPSPARSE_INDEX_BASE_ZERO: 0 HIPSPARSE_INDEX_BASE_ONE: 1 - hipsparseDiagType_t: bases: [ c_int ] attr: HIPSPARSE_DIAG_TYPE_NON_UNIT: 0 HIPSPARSE_DIAG_TYPE_UNIT: 1 - hipsparseFillMode_t: bases: [ c_int ] attr: HIPSPARSE_FILL_MODE_LOWER: 0 HIPSPARSE_FILL_MODE_UPPER: 1 - hipsparseAction_t: bases: [ c_int ] attr: HIPSPARSE_ACTION_SYMBOLIC: 0 HIPSPARSE_ACTION_NUMERIC: 1 - hipsparseHybPartition_t: bases: [ c_int ] attr: HIPSPARSE_HYB_PARTITION_AUTO: 0 HIPSPARSE_HYB_PARTITION_USER: 1 HIPSPARSE_HYB_PARTITION_MAX: 2 - hipsparseSolvePolicy_t: bases: [ c_int ] attr: HIPSPARSE_SOLVE_POLICY_NO_LEVEL: 0 HIPSPARSE_SOLVE_POLICY_USE_LEVEL: 1 - hipsparseDirection_t: bases: [ c_int ] attr: HIPSPARSE_DIRECTION_ROW: 0 HIPSPARSE_DIRECTION_COLUMN: 1 - hipsparseOrder_t: bases: [c_int ] attr: HIPSPARSE_ORDER_COL: 1 HIPSPARSE_ORDER_ROW: 2 - hipsparseFormat_t: bases: [c_int ] attr: HIPSPARSE_FORMAT_CSR: 1 HIPSPARSE_FORMAT_CSC: 2 HIPSPARSE_FORMAT_COO: 3 HIPSPARSE_FORMAT_COO_AOS: 4 HIPSPARSE_FORMAT_BLOCKED_ELL: 5 - hipsparseCsr2CscAlg_t: bases: [c_int ] attr: HIPSPARSE_CSR2CSC_ALG_DEFAULT: 0 HIPSPARSE_CSR2CSC_ALG1: 1 HIPSPARSE_CSR2CSC_ALG2: 2 - hipsparseDenseToSparseAlg_t: bases: [c_int ] attr: HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT: 0 - hipsparseSparseToDenseAlg_t: bases: [c_int ] attr: HIPSPARSE_SPARSETODENSE_ALG_DEFAULT: 0 - hipsparseSDDMMAlg_t: bases: [c_int ] attr: HIPSPARSE_SDDMM_ALG_DEFAULT: 0 - hipsparseSpGEMMAlg_t: bases: [c_int ] attr: HIPSPARSE_SPGEMM_DEFAULT: 0 - hipsparseSpMVAlg_t: bases: [c_int ] attr: HIPSPARSE_SPMV_ALG_DEFAULT: 0 HIPSPARSE_SPMV_COO_ALG1: 1 HIPSPARSE_SPMV_CSR_ALG1: 2 HIPSPARSE_SPMV_CSR_ALG2: 3 HIPSPARSE_SPMV_COO_ALG2: 4 HIPSPARSE_SPMV_SELL_ALG1: 5 HIPSPARSE_SPMV_BSR_ALG1: 6 HIPSPARSE_SPMV_CSR_ALG3: 7 - hipsparseSpSVAlg_t: bases: [c_int ] attr: HIPSPARSE_SPSV_ALG_DEFAULT: 0 - hipsparseSpSMAlg_t: bases: [c_int ] attr: HIPSPARSE_SPSM_ALG_DEFAULT: 0 - hipsparseSpMMAlg_t: bases: [c_int ] attr: HIPSPARSE_SPMM_ALG_DEFAULT: 0 HIPSPARSE_SPMM_COO_ALG1: 1 HIPSPARSE_SPMM_COO_ALG2: 2 HIPSPARSE_SPMM_COO_ALG3: 3 HIPSPARSE_SPMM_COO_ALG4: 5 HIPSPARSE_SPMM_CSR_ALG1: 4 HIPSPARSE_SPMM_CSR_ALG2: 6 HIPSPARSE_SPMM_CSR_ALG3: 12 HIPSPARSE_SPMM_BLOCKED_ELL_ALG1: 13 HIPSPARSE_SPMM_BSR_ALG1: 14 - hipsparseSPGEMMAlg_t: bases: [c_int ] attr: HIPSPARSE_SPGEMM_DEFAULT: 0 HIPSPARSE_SPGEMM_CSR_ALG_DETERMINISTIC: 1 HIPSPARSE_SPGEMM_CSR_ALG_NONDETERMINISTIC: 2 HIPSPARSE_SPGEMM_ALG1: 3 HIPSPARSE_SPGEMM_ALG2: 4 HIPSPARSE_SPGEMM_ALG3: 5 indextype i32: &i32 - index_type_I: i32 index_type_J: i32 indextype i64i32 mixture: &i64i32 - index_type_I: i64 index_type_J: i32 indextype i64: &i64 - index_type_I: i64 index_type_J: i64 indextype i32 and i64: &i32_i64 - index_type_I: i32 index_type_J: i32 - index_type_I: i64 index_type_J: i64 indextype i32 i64i32 mixture and i64: &i32i32_i64i32_i64i64 - index_type_I: i32 index_type_J: i32 - index_type_I: i64 index_type_J: i32 - index_type_I: i64 index_type_J: i64 Real precisions: &real_precisions - &int8_int8_int32_xyt_precision { x_type: i8_r, y_type: i8_r, compute_type: i32_r } - &int8_int8_float32_xyt_precision { x_type: i8_r, y_type: i8_r, compute_type: f32_r } - &float16_float16_float32_xyt_precision { x_type: f16_r, y_type: f16_r, compute_type: f32_r } - &bfloat16_bfloat16_float32_xyt_precision { x_type: bf16_r, y_type: bf16_r, compute_type: f32_r } - &int8_int8_int32_int32_axyt_precision { a_type: i8_r, x_type: i8_r, y_type: i32_r, compute_type: i32_r } - &int8_int8_float32_float32_axyt_precision { a_type: i8_r, x_type: i8_r, y_type: f32_r, compute_type: f32_r } - &float16_float16_float32_float32_axyt_precision { a_type: f16_r, x_type: f16_r, y_type: f32_r, compute_type: f32_r } - &float16_float16_float16_float32_axyt_precision { a_type: f16_r, x_type: f16_r, y_type: f16_r, compute_type: f32_r } - &bfloat16_bfloat16_float32_float32_axyt_precision { a_type: bf16_r, x_type: bf16_r, y_type: f32_r, compute_type: f32_r } - &bfloat16_bfloat16_bfloat16_float32_axyt_precision { a_type: bf16_r, x_type: bf16_r, y_type: bf16_r, compute_type: f32_r } - &int8_int8_int32_int32_abct_precision { a_type: i8_r, b_type: i8_r, c_type: i32_r, compute_type: i32_r } - &int8_int8_float32_float32_abct_precision { a_type: i8_r, b_type: i8_r, c_type: f32_r, compute_type: f32_r } - &float16_float16_float32_float32_abct_precision { a_type: f16_r, b_type: f16_r, c_type: f32_r, compute_type: f32_r } - &int8_precision { a_type: i8_r, b_type: i8_r, c_type: i8_r, x_type: i8_r, y_type: i8_r, compute_type: i8_r } - &half_precision { a_type: f16_r, b_type: f16_r, c_type: f16_r, x_type: f16_r, y_type: f16_r, compute_type: f16_r } - &bfloat16_precision { a_type: bf16_r, b_type: bf16_r, c_type: bf16_r, x_type: bf16_r, y_type: bf16_r, compute_type: bf16_r } - &single_precision { a_type: f32_r, b_type: f32_r, c_type: f32_r, x_type: f32_r, y_type: f32_r, compute_type: f32_r } - &double_precision { a_type: f64_r, b_type: f64_r, c_type: f64_r, x_type: f64_r, y_type: f64_r, compute_type: f64_r } - &float32_float64_float64_float64 { a_type: f32_r, x_type: f64_r, y_type: f64_r, compute_type: f64_r } - &float16_float32_axpby_precision { x_type: f16_r, y_type: f16_r, compute_type: f32_r } - &bfloat16_float32_axpby_precision { x_type: bf16_r, y_type: bf16_r, compute_type: f32_r } Complex precisions: &complex_precisions - &float32_cmplx32_cmplx32_cmplx32_axyt_precision { a_type: f32_r, x_type: f32_c, y_type: f32_c, compute_type: f32_c } - &float64_cmplx64_cmplx64_cmplx64_axyt_precision { a_type: f64_r, x_type: f64_c, y_type: f64_c, compute_type: f64_c } - &single_precision_complex { a_type: f32_c, b_type: f32_c, c_type: f32_c, x_type: f32_c, y_type: f32_c, compute_type: f32_c } - &double_precision_complex { a_type: f64_c, b_type: f64_c, c_type: f64_c, x_type: f64_c, y_type: f64_c, compute_type: f64_c } - &cmplx32_cmplx64_cmplx64_cmplx64 { a_type: f32_c, x_type: f64_c, y_type: f64_c, compute_type: f64_c } C precisions real: &single_only_precisions - *single_precision C precisions real: &double_only_precisions - *double_precision C precisions real: &single_double_precisions - *single_precision - *double_precision C precisions complex: &single_only_precisions_complex - *single_precision_complex C precisions complex: &double_only_precisions_complex - *double_precision_complex C precisions complex: &single_double_precisions_complex - *single_precision_complex - *double_precision_complex C precisions complex and real: &single_double_precisions_complex_real - *single_precision - *double_precision - *single_precision_complex - *double_precision_complex C precisions complex and real: &single_only_precisions_complex_real - *single_precision - *single_precision_complex C precisions complex and real: &double_only_precisions_complex_real - *double_precision - *double_precision_complex C spvv mixed precisions: &spvv_mixed_precisions - *int8_int8_int32_xyt_precision - *int8_int8_float32_xyt_precision - *float16_float16_float32_xyt_precision - *bfloat16_bfloat16_float32_xyt_precision C precisions scatter: &scatter_precisions - *int8_precision - *half_precision - *bfloat16_precision - *single_precision - *double_precision - *single_precision_complex - *double_precision_complex C precisions axpby mixed: &axpby_mixed_precisions - *float16_float32_axpby_precision - *bfloat16_float32_axpby_precision C precisions axpby all: &axpby_all_precisions - *single_precision - *double_precision - *single_precision_complex - *double_precision_complex - *float16_float32_axpby_precision - *bfloat16_float32_axpby_precision # Precisions supported by hipsparseGather (uniform precision only: X == Y). # Includes int8, fp16, bf16, fp32, fp64, complex32, and complex64. C precisions gather: &gather_precisions - *int8_precision - *half_precision - *bfloat16_precision - *single_precision - *double_precision - *single_precision_complex - *double_precision_complex SpMV mixed precisions: &spmv_mixed_precisions - *int8_int8_int32_int32_axyt_precision - *int8_int8_float32_float32_axyt_precision - *float16_float16_float32_float32_axyt_precision - *float16_float16_float16_float32_axyt_precision - *bfloat16_bfloat16_float32_float32_axyt_precision - *bfloat16_bfloat16_bfloat16_float32_axyt_precision - *float32_float64_float64_float64 - *cmplx32_cmplx64_cmplx64_cmplx64 - *float32_cmplx32_cmplx32_cmplx32_axyt_precision - *float64_cmplx64_cmplx64_cmplx64_axyt_precision # The Arguments struct passed directly to C++. See hipsparse_arguments.hpp. # The order of the entries is significant, so it can't simply be a dictionary. # The types on the RHS are eval'd for Python-recognized types including ctypes # and datatypes defined in Datatypes above. T*n represents array of length n. Arguments: - M: c_int - N: c_int - K: c_int - nnz: c_int - block_dim: c_int - row_block_dimA: c_int - col_block_dimA: c_int - row_block_dimB: c_int - col_block_dimB: c_int - lda: c_int - ldb: c_int - ldc: c_int - batch_count: c_int - index_type_I: hipsparseIndexType_t - index_type_J: hipsparseIndexType_t - a_type: hipDataType - x_type: hipDataType - y_type: hipDataType - compute_type: hipDataType - alpha: c_double - alphai: c_double - beta: c_double - betai: c_double - threshold: c_double - percentage: c_double - c: c_double - s: c_double - transA: hipsparseOperation_t - transB: hipsparseOperation_t - baseA: hipsparseIndexBase_t - baseB: hipsparseIndexBase_t - baseC: hipsparseIndexBase_t - baseD: hipsparseIndexBase_t - action: hipsparseAction_t - part: hipsparseHybPartition_t - diag_type: hipsparseDiagType_t - fill_mode: hipsparseFillMode_t - solve_policy: hipsparseSolvePolicy_t - dirA: hipsparseDirection_t - orderA: hipsparseOrder_t - orderB: hipsparseOrder_t - orderC: hipsparseOrder_t - formatA: hipsparseFormat_t - formatB: hipsparseFormat_t - csr2csc_alg: hipsparseCsr2CscAlg_t - dense2sparse_alg: hipsparseDenseToSparseAlg_t - sparse2dense_alg: hipsparseSparseToDenseAlg_t - sddmm_alg: hipsparseSDDMMAlg_t - spgemm_alg: hipsparseSpGEMMAlg_t - spmm_alg: hipsparseSpMMAlg_t - spmv_alg: hipsparseSpMVAlg_t - spsm_alg: hipsparseSpSMAlg_t - spsv_alg: hipsparseSpSVAlg_t - numericboost: c_int - boosttol: c_double - boostval: c_double - boostvali: c_double - slice_size: c_int - ell_width: c_int - permute: c_int - gtsv_alg: c_int - gpsv_alg: c_int - unit_check: c_int - timing: c_int - iters: c_int - graph_test: c_bool - call_preprocess: c_bool - filename: c_char*192 - function: c_char*64 - category: c_char*32 # These named dictionary lists [ {dict1}, {dict2}, etc. ] supply subsets of # test arguments in a structured way. The dictionaries are applied to the test # one at a time, to generate combinations. If one of this table's entries is # a dictionary of size one, it means that the argument named by its key takes # on values paired with argument named by its value. For example: # # - function: precision # # when used with the code: # # function: # func1: prec1 # func2: prec2 # func3: prec3 # # causes (function, precision) to take on the values (func1, prec1), # (func2, prec2), (func3, prec3), etc. Dictionary lists to expand: - arguments - M_N - M_N_K - transA_transB - alpha_beta - alpha_alphai - beta_betai - alphai_betai - boostval_boostvali - indextype - precision - function: precision # In case an array argument needs to be passed directly to C as an array, # it needs to be listed here to avoid being expanded into multiple test # cases with each of its elements. Lists to not expand: - e.g., an array argument not to be expanded # Defaults Defaults: M: -1 N: -1 K: -1 nnz: -1 block_dim: 2 row_block_dimA: 2 col_block_dimA: 2 row_block_dimB: 2 col_block_dimB: 2 lda: 1 ldb: 1 ldc: 1 batch_count: -1 index_type_I: i32 index_type_J: i32 a_type: f32_r x_type: f32_r y_type: f32_r compute_type: f32_r x_type: f32_r y_type: f32_r alpha: 1.0 alphai: 0.0 beta: 0.0 betai: 0.0 threshold: 1.0 percentage: 0.0 c: 1.0 s: 1.0 transA: HIPSPARSE_OPERATION_NON_TRANSPOSE transB: HIPSPARSE_OPERATION_NON_TRANSPOSE baseA: HIPSPARSE_INDEX_BASE_ZERO baseB: HIPSPARSE_INDEX_BASE_ZERO baseC: HIPSPARSE_INDEX_BASE_ZERO baseD: HIPSPARSE_INDEX_BASE_ZERO action: HIPSPARSE_ACTION_NUMERIC part: HIPSPARSE_HYB_PARTITION_AUTO diag_type: HIPSPARSE_DIAG_TYPE_NON_UNIT fill_mode: HIPSPARSE_FILL_MODE_LOWER solve_policy: HIPSPARSE_SOLVE_POLICY_USE_LEVEL dirA: HIPSPARSE_DIRECTION_ROW orderA: HIPSPARSE_ORDER_COL orderB: HIPSPARSE_ORDER_COL orderC: HIPSPARSE_ORDER_COL formatA: HIPSPARSE_FORMAT_CSR formatB: HIPSPARSE_FORMAT_CSR csr2csc_alg: HIPSPARSE_CSR2CSC_ALG_DEFAULT dense2sparse_alg: HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT sparse2dense_alg: HIPSPARSE_SPARSETODENSE_ALG_DEFAULT sddmm_alg: HIPSPARSE_SDDMM_ALG_DEFAULT spgemm_alg: HIPSPARSE_SPGEMM_DEFAULT spmm_alg: HIPSPARSE_SPMM_ALG_DEFAULT spmv_alg: HIPSPARSE_SPMV_ALG_DEFAULT spsm_alg: HIPSPARSE_SPSM_ALG_DEFAULT spsv_alg: HIPSPARSE_SPSV_ALG_DEFAULT numericboost: 0 boosttol: 0.0 boostval: 1.0 boostvali: 0.0 slice_size: 2 ell_width: 0 permute: 0 gtsv_alg: 0 gpsv_alg: 0 unit_check: 1 timing: 0 iters: 10 graph_test: false call_preprocess: false filename: '*' function: '*' category: '*'