Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

2075 lines
100 KiB
C++

/*! \file */
/* ************************************************************************
* Copyright (C) 2020-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.
*
* ************************************************************************ */
/*! \file
* \brief rocsparse.hpp exposes C++ templated Sparse Linear Algebra interface
* with only the precision templated.
*/
#pragma once
#ifndef ROCSPARSE_HPP
#define ROCSPARSE_HPP
#include "rocsparse.h"
#include "rocsparse_traits.hpp"
#ifndef GOOGLE_TEST
#define REAL_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<float> rocsparse_##NAME_<float> = rocsparse_s##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<double> rocsparse_##NAME_<double> = rocsparse_d##NAME_
#define COMPLEX_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_float_complex> \
rocsparse_##NAME_<rocsparse_float_complex> = rocsparse_c##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_double_complex> \
rocsparse_##NAME_<rocsparse_double_complex> = rocsparse_z##NAME_
#define REAL_COMPLEX_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<float> rocsparse_##NAME_<float> = rocsparse_s##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<double> rocsparse_##NAME_<double> = rocsparse_d##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_float_complex> \
rocsparse_##NAME_<rocsparse_float_complex> = rocsparse_c##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_double_complex> \
rocsparse_##NAME_<rocsparse_double_complex> = rocsparse_z##NAME_
#else
#ifdef ROCSPARSE_DEBUGGING
#include "rocsparse_clients_test_hip_debug_wrappers.hpp"
#define REAL_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<float> \
rocsparse_##NAME_<float> = rocsparse_wrap_s##NAME_##_t::apply; \
template <> \
inline rocsparse_##NAME_##_fn<double> \
rocsparse_##NAME_<double> = rocsparse_wrap_d##NAME_##_t::apply
#define COMPLEX_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_float_complex> \
rocsparse_##NAME_<rocsparse_float_complex> = rocsparse_wrap_c##NAME_##_t::apply; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_double_complex> \
rocsparse_##NAME_<rocsparse_double_complex> = rocsparse_wrap_z##NAME_##_t::apply
#define REAL_COMPLEX_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<float> \
rocsparse_##NAME_<float> = rocsparse_wrap_s##NAME_##_t::apply; \
template <> \
inline rocsparse_##NAME_##_fn<double> \
rocsparse_##NAME_<double> = rocsparse_wrap_d##NAME_##_t::apply; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_float_complex> \
rocsparse_##NAME_<rocsparse_float_complex> = rocsparse_wrap_c##NAME_##_t::apply; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_double_complex> \
rocsparse_##NAME_<rocsparse_double_complex> = rocsparse_wrap_z##NAME_##_t::apply
#else
#define REAL_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<float> rocsparse_##NAME_<float> = rocsparse_s##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<double> rocsparse_##NAME_<double> = rocsparse_d##NAME_
#define COMPLEX_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_float_complex> \
rocsparse_##NAME_<rocsparse_float_complex> = rocsparse_c##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_double_complex> \
rocsparse_##NAME_<rocsparse_double_complex> = rocsparse_z##NAME_
#define REAL_COMPLEX_TEMPLATE(NAME_, ...) \
template <typename T> \
using rocsparse_##NAME_##_fn = rocsparse_status (*)(__VA_ARGS__); \
template <typename T> \
inline rocsparse_##NAME_##_fn<T> rocsparse_##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<float> rocsparse_##NAME_<float> = rocsparse_s##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<double> rocsparse_##NAME_<double> = rocsparse_d##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_float_complex> \
rocsparse_##NAME_<rocsparse_float_complex> = rocsparse_c##NAME_; \
template <> \
inline rocsparse_##NAME_##_fn<rocsparse_double_complex> \
rocsparse_##NAME_<rocsparse_double_complex> = rocsparse_z##NAME_
#endif
#endif
/*
* ===========================================================================
* utility SPARSE
* ===========================================================================
*/
// check_matrix_csr
REAL_COMPLEX_TEMPLATE(check_matrix_csr_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(check_matrix_csr,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
rocsparse_data_status* data_status,
void* temp_buffer);
// check_matrix_coo
REAL_COMPLEX_TEMPLATE(check_matrix_coo_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* coo_val,
const rocsparse_int* coo_row_ind,
const rocsparse_int* coo_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(check_matrix_coo,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* coo_val,
const rocsparse_int* coo_row_ind,
const rocsparse_int* coo_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
rocsparse_data_status* data_status,
void* temp_buffer);
// check_matrix_gebsr
REAL_COMPLEX_TEMPLATE(check_matrix_gebsr_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(check_matrix_gebsr,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
rocsparse_data_status* data_status,
void* temp_buffer);
// check_matrix_gebsc
REAL_COMPLEX_TEMPLATE(check_matrix_gebsc_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const T* bsc_val,
const rocsparse_int* bsc_col_ptr,
const rocsparse_int* bsc_row_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(check_matrix_gebsc,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const T* bsc_val,
const rocsparse_int* bsc_col_ptr,
const rocsparse_int* bsc_row_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
rocsparse_data_status* data_status,
void* temp_buffer);
// check_matrix_csc
REAL_COMPLEX_TEMPLATE(check_matrix_csc_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* csc_val,
const rocsparse_int* csc_col_ptr,
const rocsparse_int* csc_row_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(check_matrix_csc,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* csc_val,
const rocsparse_int* csc_col_ptr,
const rocsparse_int* csc_row_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
rocsparse_data_status* data_status,
void* temp_buffer);
// check_matrix_ell
REAL_COMPLEX_TEMPLATE(check_matrix_ell_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int ell_width,
const T* ell_val,
const rocsparse_int* ell_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(check_matrix_ell,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int ell_width,
const T* ell_val,
const rocsparse_int* ell_col_ind,
rocsparse_index_base idx_base,
rocsparse_matrix_type matrix_type,
rocsparse_fill_mode uplo,
rocsparse_storage_mode storage,
rocsparse_data_status* data_status,
void* temp_buffer);
/*
* ===========================================================================
* level 1 SPARSE
* ===========================================================================
*/
// axpyi
REAL_COMPLEX_TEMPLATE(axpyi,
rocsparse_handle handle,
rocsparse_int nnz,
const T* alpha,
const T* x_vec,
const rocsparse_int* x_ind,
T* y,
rocsparse_index_base idx_base);
// doti
REAL_COMPLEX_TEMPLATE(doti,
rocsparse_handle handle,
rocsparse_int nnz,
const T* x_val,
const rocsparse_int* x_ind,
const T* y,
T* result,
rocsparse_index_base idx_base);
// dotci
COMPLEX_TEMPLATE(dotci,
rocsparse_handle handle,
rocsparse_int nnz,
const T* x_val,
const rocsparse_int* x_ind,
const T* y,
T* result,
rocsparse_index_base idx_base);
// gthr
REAL_COMPLEX_TEMPLATE(gthr,
rocsparse_handle handle,
rocsparse_int nnz,
const T* y,
T* x_val,
const rocsparse_int* x_ind,
rocsparse_index_base idx_base);
// gthrz
REAL_COMPLEX_TEMPLATE(gthrz,
rocsparse_handle handle,
rocsparse_int nnz,
T* y,
T* x_val,
const rocsparse_int* x_ind,
rocsparse_index_base idx_base);
// roti
REAL_TEMPLATE(roti,
rocsparse_handle,
rocsparse_int,
T*,
const rocsparse_int*,
T*,
const T*,
const T*,
rocsparse_index_base);
// sctr
REAL_COMPLEX_TEMPLATE(sctr,
rocsparse_handle handle,
rocsparse_int nnz,
const T* x_val,
const rocsparse_int* x_ind,
T* y,
rocsparse_index_base idx_base);
/*
* ===========================================================================
* level 2 SPARSE
* ===========================================================================
*/
// bsrmv_analysis
REAL_COMPLEX_TEMPLATE(bsrmv_analysis,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info);
// bsrmv
REAL_COMPLEX_TEMPLATE(bsrmv,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
const T* x,
const T* beta,
T* y);
// bsrxmv
REAL_COMPLEX_TEMPLATE(bsrxmv,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int size_of_mask,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_mask_ptr,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_end_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
const T* x,
const T* beta,
T* y);
// bsrsv
REAL_COMPLEX_TEMPLATE(bsrsv_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(bsrsv_analysis,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(bsrsv_solve,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int mb,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
const T* x,
T* y,
rocsparse_solve_policy policy,
void* temp_buffer);
// coomv
REAL_COMPLEX_TEMPLATE(coomv,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* coo_val,
const rocsparse_int* coo_row_ind,
const rocsparse_int* coo_col_ind,
const T* x,
const T* beta,
T* y);
// csrmv
REAL_COMPLEX_TEMPLATE(csrmv_analysis,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info);
REAL_COMPLEX_TEMPLATE(csrmv,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
const T* x,
const T* beta,
T* y);
// csrsv
REAL_COMPLEX_TEMPLATE(csrsv_buffer_size,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(csrsv_analysis,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csrsv_solve,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
const T* x,
T* y,
rocsparse_solve_policy policy,
void* temp_buffer);
// csritsv
REAL_COMPLEX_TEMPLATE(csritsv_buffer_size,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(csritsv_analysis,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csritsv_solve,
rocsparse_handle handle,
rocsparse_int* nmaxiter,
const floating_data_t<T>* host_tol,
floating_data_t<T>* host_history,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
const T* x,
T* y,
rocsparse_solve_policy policy,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csritsv_solve_ex,
rocsparse_handle handle,
rocsparse_int* nmaxiter,
rocsparse_int nfreeiter,
const floating_data_t<T>* host_tol,
floating_data_t<T>* host_history,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
const T* x,
T* y,
rocsparse_solve_policy policy,
void* temp_buffer);
// ellmv
REAL_COMPLEX_TEMPLATE(ellmv,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int n,
const T* alpha,
const rocsparse_mat_descr descr,
const T* ell_val,
const rocsparse_int* ell_col_ind,
rocsparse_int ell_width,
const T* x,
const T* beta,
T* y);
// hybmv
REAL_COMPLEX_TEMPLATE(hybmv,
rocsparse_handle handle,
rocsparse_operation trans,
const T* alpha,
const rocsparse_mat_descr descr,
const rocsparse_hyb_mat hyb,
const T* x,
const T* beta,
T* y);
// gebsrmv
REAL_COMPLEX_TEMPLATE(gebsrmv,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const T* x,
const T* beta,
T* y);
// gemvi
REAL_COMPLEX_TEMPLATE(gemvi_buffer_size,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(gemvi,
rocsparse_handle handle,
rocsparse_operation trans,
rocsparse_int m,
rocsparse_int n,
const T* alpha,
const T* A,
rocsparse_int lda,
rocsparse_int nnz,
const T* x_val,
const rocsparse_int* x_ind,
const T* beta,
T* y,
rocsparse_index_base idx_base,
void* temp_buffer);
/*
* ===========================================================================
* level 3 SPARSE
* ===========================================================================
*/
// bsrmm
REAL_COMPLEX_TEMPLATE(bsrmm,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int mb,
rocsparse_int n,
rocsparse_int kb,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
const T* B,
rocsparse_int ldb,
const T* beta,
T* C,
rocsparse_int ldc);
// gebsrmm
REAL_COMPLEX_TEMPLATE(gebsrmm,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int mb,
rocsparse_int n,
rocsparse_int kb,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const T* B,
rocsparse_int ldb,
const T* beta,
T* C,
rocsparse_int ldc);
// csrmm
REAL_COMPLEX_TEMPLATE(csrmm,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int n,
rocsparse_int k,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const T* B,
rocsparse_int ldb,
const T* beta,
T* C,
rocsparse_int ldc);
// csrsm
REAL_COMPLEX_TEMPLATE(csrsm_buffer_size,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int nrhs,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const T* B,
rocsparse_int ldb,
rocsparse_mat_info info,
rocsparse_solve_policy policy,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(csrsm_analysis,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int nrhs,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const T* B,
rocsparse_int ldb,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csrsm_solve,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int nrhs,
rocsparse_int nnz,
const T* alpha,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
T* B,
rocsparse_int ldb,
rocsparse_mat_info info,
rocsparse_solve_policy policy,
void* temp_buffer);
// bsrsm
REAL_COMPLEX_TEMPLATE(bsrsm_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_X,
rocsparse_int mb,
rocsparse_int nrhs,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(bsrsm_analysis,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_X,
rocsparse_int mb,
rocsparse_int nrhs,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(bsrsm_solve,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_X,
rocsparse_int mb,
rocsparse_int nrhs,
rocsparse_int nnzb,
const T* alpha,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int bsr_dim,
rocsparse_mat_info info,
const T* B,
rocsparse_int ldb,
T* X,
rocsparse_int ldx,
rocsparse_solve_policy policy,
void* temp_buffer);
// gemmi
REAL_COMPLEX_TEMPLATE(gemmi,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int n,
rocsparse_int k,
rocsparse_int nnz,
const T* alpha,
const T* A,
rocsparse_int lda,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const T* beta,
T* C,
rocsparse_int ldc);
/*
* ===========================================================================
* extra SPARSE
* ===========================================================================
*/
// bsrgeam
REAL_COMPLEX_TEMPLATE(bsrgeam,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int block_dim,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnzb_A,
const T* bsr_val_A,
const rocsparse_int* bsr_row_ptr_A,
const rocsparse_int* bsr_col_ind_A,
const T* beta,
const rocsparse_mat_descr descr_B,
rocsparse_int nnzb_B,
const T* bsr_val_B,
const rocsparse_int* bsr_row_ptr_B,
const rocsparse_int* bsr_col_ind_B,
const rocsparse_mat_descr descr_C,
T* bsr_val_C,
const rocsparse_int* bsr_row_ptr_C,
rocsparse_int* bsr_col_ind_C);
// bsrgemm
REAL_COMPLEX_TEMPLATE(bsrgemm_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int kb,
rocsparse_int block_dim,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnzb_A,
const rocsparse_int* bsr_row_ptr_A,
const rocsparse_int* bsr_col_ind_A,
const rocsparse_mat_descr descr_B,
rocsparse_int nnzb_B,
const rocsparse_int* bsr_row_ptr_B,
const rocsparse_int* bsr_col_ind_B,
const T* beta,
const rocsparse_mat_descr descr_D,
rocsparse_int nnzb_D,
const rocsparse_int* bsr_row_ptr_D,
const rocsparse_int* bsr_col_ind_D,
rocsparse_mat_info info_C,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(bsrgemm,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int kb,
rocsparse_int block_dim,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnzb_A,
const T* bsr_val_A,
const rocsparse_int* bsr_row_ptr_A,
const rocsparse_int* bsr_col_ind_A,
const rocsparse_mat_descr descr_B,
rocsparse_int nnzb_B,
const T* bsr_val_B,
const rocsparse_int* bsr_row_ptr_B,
const rocsparse_int* bsr_col_ind_B,
const T* beta,
const rocsparse_mat_descr descr_D,
rocsparse_int nnzb_D,
const T* bsr_val_D,
const rocsparse_int* bsr_row_ptr_D,
const rocsparse_int* bsr_col_ind_D,
const rocsparse_mat_descr descr_C,
T* bsr_val_C,
const rocsparse_int* bsr_row_ptr_C,
rocsparse_int* bsr_col_ind_C,
const rocsparse_mat_info info_C,
void* temp_buffer);
// csrgeam
REAL_COMPLEX_TEMPLATE(csrgeam,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnz_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const T* beta,
const rocsparse_mat_descr descr_B,
rocsparse_int nnz_B,
const T* csr_val_B,
const rocsparse_int* csr_row_ptr_B,
const rocsparse_int* csr_col_ind_B,
const rocsparse_mat_descr descr_C,
T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
rocsparse_int* csr_col_ind_C);
// csrgemm
REAL_COMPLEX_TEMPLATE(csrgemm_buffer_size,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int n,
rocsparse_int k,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnz_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const rocsparse_mat_descr descr_B,
rocsparse_int nnz_B,
const rocsparse_int* csr_row_ptr_B,
const rocsparse_int* csr_col_ind_B,
const T* beta,
const rocsparse_mat_descr descr_D,
rocsparse_int nnz_D,
const rocsparse_int* csr_row_ptr_D,
const rocsparse_int* csr_col_ind_D,
rocsparse_mat_info info_C,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(csrgemm,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int n,
rocsparse_int k,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnz_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const rocsparse_mat_descr descr_B,
rocsparse_int nnz_B,
const T* csr_val_B,
const rocsparse_int* csr_row_ptr_B,
const rocsparse_int* csr_col_ind_B,
const T* beta,
const rocsparse_mat_descr descr_D,
rocsparse_int nnz_D,
const T* csr_val_D,
const rocsparse_int* csr_row_ptr_D,
const rocsparse_int* csr_col_ind_D,
const rocsparse_mat_descr descr_C,
T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
rocsparse_int* csr_col_ind_C,
const rocsparse_mat_info info_C,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csrgemm_numeric,
rocsparse_handle handle,
rocsparse_operation trans_A,
rocsparse_operation trans_B,
rocsparse_int m,
rocsparse_int n,
rocsparse_int k,
const T* alpha,
const rocsparse_mat_descr descr_A,
rocsparse_int nnz_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const rocsparse_mat_descr descr_B,
rocsparse_int nnz_B,
const T* csr_val_B,
const rocsparse_int* csr_row_ptr_B,
const rocsparse_int* csr_col_ind_B,
const T* beta,
const rocsparse_mat_descr descr_D,
rocsparse_int nnz_D,
const T* csr_val_D,
const rocsparse_int* csr_row_ptr_D,
const rocsparse_int* csr_col_ind_D,
const rocsparse_mat_descr descr_C,
rocsparse_int nnz_C,
T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
const rocsparse_int* csr_col_ind_C,
const rocsparse_mat_info info_C,
void* temp_buffer);
/*
* ===========================================================================
* precond SPARSE
* ===========================================================================
*/
// bsric0
REAL_COMPLEX_TEMPLATE(bsric0_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(bsric0_analysis,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(bsric0,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
rocsparse_mat_info info,
rocsparse_solve_policy policy,
void* temp_buffer);
// bsrilu0
REAL_COMPLEX_TEMPLATE(bsrilu0_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(bsrilu0_numeric_boost,
rocsparse_handle handle,
rocsparse_mat_info info,
int enable_boost,
const floating_data_t<T>* boost_tol,
const T* boost_val);
REAL_COMPLEX_TEMPLATE(bsrilu0_analysis,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(bsrilu0,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr,
T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
rocsparse_mat_info info,
rocsparse_solve_policy policy,
void* temp_buffer);
// csric0
REAL_COMPLEX_TEMPLATE(csric0_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(csric0_analysis,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csric0,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
rocsparse_solve_policy policy,
void* temp_buffer);
// csritilu0_compute_ex
REAL_COMPLEX_TEMPLATE(csritilu0_compute_ex,
rocsparse_handle handle,
rocsparse_itilu0_alg alg,
rocsparse_int options,
rocsparse_int* nmaxiter,
rocsparse_int nfreeiter,
floating_data_t<T> tol_correction,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_int* ptr,
const rocsparse_int* ind,
const T* val,
T* ilu0,
rocsparse_index_base base,
size_t buffer_size_,
void* buffer);
// csritilu0_compute
REAL_COMPLEX_TEMPLATE(csritilu0_compute,
rocsparse_handle handle,
rocsparse_itilu0_alg alg,
rocsparse_int options,
rocsparse_int* nmaxiter,
floating_data_t<T> tol_correction,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_int* ptr,
const rocsparse_int* ind,
const T* val,
T* ilu0,
rocsparse_index_base base,
size_t buffer_size_,
void* buffer);
// csritilu0_update
REAL_COMPLEX_TEMPLATE(csritilu0_history,
rocsparse_handle handle,
rocsparse_itilu0_alg alg,
rocsparse_int* niter,
floating_data_t<T>* data,
size_t buffer_size_,
void* buffer);
// csrilu0
REAL_COMPLEX_TEMPLATE(csrilu0_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(csrilu0_numeric_boost,
rocsparse_handle handle,
rocsparse_mat_info info,
int enable_boost,
const floating_data_t<T>* boost_tol,
const T* boost_val);
REAL_COMPLEX_TEMPLATE(csrilu0_analysis,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
rocsparse_analysis_policy analysis,
rocsparse_solve_policy solve,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(csrilu0,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
rocsparse_solve_policy policy,
void* temp_buffer);
REAL_COMPLEX_TEMPLATE(gtsv_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* dl,
const T* d,
const T* du,
const T* B,
rocsparse_int ldb,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(gtsv,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* dl,
const T* d,
const T* du,
T* B,
rocsparse_int ldb,
void* temp_buffer);
// gtsv_no_pivot
REAL_COMPLEX_TEMPLATE(gtsv_no_pivot_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* dl,
const T* d,
const T* du,
const T* B,
rocsparse_int ldb,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(gtsv_no_pivot,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* dl,
const T* d,
const T* du,
T* B,
rocsparse_int ldb,
void* temp_buffer);
// gtsv_no_pivot_strided_batch
REAL_COMPLEX_TEMPLATE(gtsv_no_pivot_strided_batch_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
const T* dl,
const T* d,
const T* du,
const T* x,
rocsparse_int batch_count,
rocsparse_int batch_stride,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(gtsv_no_pivot_strided_batch,
rocsparse_handle handle,
rocsparse_int m,
const T* dl,
const T* d,
const T* du,
T* x,
rocsparse_int batch_count,
rocsparse_int batch_stride,
void* temp_buffer);
// gtsv_interleaved_batch
REAL_COMPLEX_TEMPLATE(gtsv_interleaved_batch_buffer_size,
rocsparse_handle handle,
rocsparse_gtsv_interleaved_alg alg,
rocsparse_int m,
const T* dl,
const T* d,
const T* du,
const T* x,
rocsparse_int batch_count,
rocsparse_int batch_stride,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(gtsv_interleaved_batch,
rocsparse_handle handle,
rocsparse_gtsv_interleaved_alg alg,
rocsparse_int m,
T* dl,
T* d,
T* du,
T* x,
rocsparse_int batch_count,
rocsparse_int batch_stride,
void* temp_buffer);
// gpsv_interleaved_batch
REAL_COMPLEX_TEMPLATE(gpsv_interleaved_batch_buffer_size,
rocsparse_handle handle,
rocsparse_gpsv_interleaved_alg alg,
rocsparse_int m,
const T* ds,
const T* dl,
const T* d,
const T* du,
const T* dw,
const T* x,
rocsparse_int batch_count,
rocsparse_int batch_stride,
size_t* buffer_size);
REAL_COMPLEX_TEMPLATE(gpsv_interleaved_batch,
rocsparse_handle handle,
rocsparse_gpsv_interleaved_alg alg,
rocsparse_int m,
T* ds,
T* dl,
T* d,
T* du,
T* dw,
T* x,
rocsparse_int batch_count,
rocsparse_int batch_stride,
void* temp_buffer);
/*
* ===========================================================================
* conversion SPARSE
* ===========================================================================
*/
// nnz
REAL_COMPLEX_TEMPLATE(nnz,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* A,
rocsparse_int lda,
rocsparse_int* nnz_per_row_columns,
rocsparse_int* nnz_total_dev_host_ptr);
// nnz_compress
REAL_COMPLEX_TEMPLATE(nnz_compress,
rocsparse_handle handle,
rocsparse_int m,
const rocsparse_mat_descr descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
rocsparse_int* nnz_per_row,
rocsparse_int* nnz_C,
T tol);
// dense2csr
REAL_COMPLEX_TEMPLATE(dense2csr,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* A,
rocsparse_int lda,
const rocsparse_int* nnz_per_rows,
T* csr_val,
rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind);
// dense2coo
REAL_COMPLEX_TEMPLATE(dense2coo,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* A,
rocsparse_int lda,
const rocsparse_int* nnz_per_rows,
T* coo_val,
rocsparse_int* coo_row_ind,
rocsparse_int* coo_col_ind);
// prune_dense2csr_buffer_size
REAL_TEMPLATE(prune_dense2csr_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* A,
rocsparse_int lda,
const T* threshold,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
size_t* buffer_size);
// prune_dense2csr_nnz
REAL_TEMPLATE(prune_dense2csr_nnz,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* A,
rocsparse_int lda,
const T* threshold,
const rocsparse_mat_descr descr,
rocsparse_int* csr_row_ptr,
rocsparse_int* nnz_total_dev_host_ptr,
void* temp_buffer);
// prune_dense2csr
REAL_TEMPLATE(prune_dense2csr,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* A,
rocsparse_int lda,
const T* threshold,
const rocsparse_mat_descr descr,
T* csr_val,
const rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind,
void* temp_buffer);
// prune_dense2csr_by_percentage_buffer_size
REAL_TEMPLATE(prune_dense2csr_by_percentage_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* A,
rocsparse_int lda,
T percentage,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
size_t* buffer_size);
// prune_dense2csr_nnz_by_percentage
REAL_TEMPLATE(prune_dense2csr_nnz_by_percentage,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* A,
rocsparse_int lda,
T percentage,
const rocsparse_mat_descr descr,
rocsparse_int* csr_row_ptr,
rocsparse_int* nnz_total_dev_host_ptr,
rocsparse_mat_info info,
void* temp_buffer);
// prune_dense2csr_by_percentage
REAL_TEMPLATE(prune_dense2csr_by_percentage,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const T* A,
rocsparse_int lda,
T percentage,
const rocsparse_mat_descr descr,
T* csr_val,
const rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind,
rocsparse_mat_info info,
void* temp_buffer);
// dense2csc
REAL_COMPLEX_TEMPLATE(dense2csc,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* A,
rocsparse_int lda,
const rocsparse_int* nnz_per_columns,
T* csc_val,
rocsparse_int* csc_col_ptr,
rocsparse_int* csc_row_ind);
// csr2dense
REAL_COMPLEX_TEMPLATE(csr2dense,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
T* A,
rocsparse_int lda);
// csc2dense
REAL_COMPLEX_TEMPLATE(csc2dense,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* csc_val,
const rocsparse_int* csc_col_ptr,
const rocsparse_int* csc_row_ind,
T* A,
rocsparse_int lda);
// coo2dense
REAL_COMPLEX_TEMPLATE(coo2dense,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* coo_val,
const rocsparse_int* coo_row_ind,
const rocsparse_int* coo_col_ind,
T* A,
rocsparse_int lda);
// csr2csc
REAL_COMPLEX_TEMPLATE(csr2csc,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
T* csc_val,
rocsparse_int* csc_row_ind,
rocsparse_int* csc_col_ptr,
rocsparse_action copy_values,
rocsparse_index_base idx_base,
void* temp_buffer);
// gebsr2gebsc
REAL_COMPLEX_TEMPLATE(gebsr2gebsc_buffer_size,
rocsparse_handle handle,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
size_t* p_buffer_size);
REAL_COMPLEX_TEMPLATE(gebsr2gebsc,
rocsparse_handle handle,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
T* bsc_val,
rocsparse_int* bsc_row_ind,
rocsparse_int* bsc_col_ptr,
rocsparse_action copy_values,
rocsparse_index_base idx_base,
void* temp_buffer);
// csr2ell
REAL_COMPLEX_TEMPLATE(csr2ell,
rocsparse_handle handle,
rocsparse_int m,
const rocsparse_mat_descr csr_descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const rocsparse_mat_descr ell_descr,
rocsparse_int ell_width,
T* ell_val,
rocsparse_int* ell_col_ind);
// csr2hyb
REAL_COMPLEX_TEMPLATE(csr2hyb,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_hyb_mat hyb,
rocsparse_int user_ell_width,
rocsparse_hyb_partition partition_type);
// csr2bsr
REAL_COMPLEX_TEMPLATE(csr2bsr,
rocsparse_handle handle,
rocsparse_direction direction,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr csr_descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_int block_dim,
const rocsparse_mat_descr bsr_descr,
T* bsr_val,
rocsparse_int* bsr_row_ptr,
rocsparse_int* bsr_col_ind);
// bsrpad_value
REAL_COMPLEX_TEMPLATE(bsrpad_value,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int mb,
rocsparse_int nnzb,
rocsparse_int block_dim,
T value,
const rocsparse_mat_descr bsr_descr,
T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind);
// csr2gebsr_buffer_size
REAL_COMPLEX_TEMPLATE(csr2gebsr_buffer_size,
rocsparse_handle handle,
rocsparse_direction direction,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr csr_descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
size_t* p_buffer_size);
// csr2gebsr
REAL_COMPLEX_TEMPLATE(csr2gebsr,
rocsparse_handle handle,
rocsparse_direction direction,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr csr_descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const rocsparse_mat_descr bsr_descr,
T* bsr_val,
rocsparse_int* bsr_row_ptr,
rocsparse_int* bsr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
void* p_buffer);
// ell2csr
REAL_COMPLEX_TEMPLATE(ell2csr,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr ell_descr,
rocsparse_int ell_width,
const T* ell_val,
const rocsparse_int* ell_col_ind,
const rocsparse_mat_descr csr_descr,
T* csr_val,
const rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind);
// hyb2csr
REAL_COMPLEX_TEMPLATE(hyb2csr,
rocsparse_handle handle,
const rocsparse_mat_descr descr,
const rocsparse_hyb_mat hyb,
T* csr_val,
rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind,
void* temp_buffer);
// bsr2csr
REAL_COMPLEX_TEMPLATE(bsr2csr,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
const rocsparse_mat_descr bsr_descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int block_dim,
const rocsparse_mat_descr csr_descr,
T* csr_val,
rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind);
// gebsr2csr
REAL_COMPLEX_TEMPLATE(gebsr2csr,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
const rocsparse_mat_descr bsr_descr,
const T* bsr_val,
const rocsparse_int* bsr_row_ptr,
const rocsparse_int* bsr_col_ind,
rocsparse_int row_block_dim,
rocsparse_int col_block_dim,
const rocsparse_mat_descr csr_descr,
T* csr_val,
rocsparse_int* csr_row_ptr,
rocsparse_int* csr_col_ind);
// gebsr2csr_buffer_size
REAL_COMPLEX_TEMPLATE(gebsr2gebsr_buffer_size,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr_A,
const T* bsr_val_A,
const rocsparse_int* bsr_row_ptr_A,
const rocsparse_int* bsr_col_ind_A,
rocsparse_int row_block_dim_A,
rocsparse_int col_block_dim_A,
rocsparse_int row_block_dim_C,
rocsparse_int col_block_dim_C,
size_t* buffer_size);
// gebsr2gebsr
REAL_COMPLEX_TEMPLATE(gebsr2gebsr,
rocsparse_handle handle,
rocsparse_direction dir,
rocsparse_int mb,
rocsparse_int nb,
rocsparse_int nnzb,
const rocsparse_mat_descr descr_A,
const T* bsr_val_A,
const rocsparse_int* bsr_row_ptr_A,
const rocsparse_int* bsr_col_ind_A,
rocsparse_int row_block_dim_A,
rocsparse_int col_block_dim_A,
const rocsparse_mat_descr descr_C,
T* bsr_val_C,
rocsparse_int* bsr_row_ptr_C,
rocsparse_int* bsr_col_ind_C,
rocsparse_int row_block_dim_C,
rocsparse_int col_block_dim_C,
void* temp_buffer);
// csr2csr_compress
REAL_COMPLEX_TEMPLATE(csr2csr_compress,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
const rocsparse_mat_descr descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
rocsparse_int nnz_A,
const rocsparse_int* nnz_per_row,
T* csr_val_C,
rocsparse_int* csr_row_ptr_C,
rocsparse_int* csr_col_ind_C,
T tol);
// prune_csr2csr_buffer_size
REAL_TEMPLATE(prune_csr2csr_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz_A,
const rocsparse_mat_descr csr_descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const T* threshold,
const rocsparse_mat_descr csr_descr_C,
const T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
const rocsparse_int* csr_col_ind_C,
size_t* buffer_size);
// prune_csr2csr_nnz
REAL_TEMPLATE(prune_csr2csr_nnz,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz_A,
const rocsparse_mat_descr csr_descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const T* threshold,
const rocsparse_mat_descr csr_descr_C,
rocsparse_int* csr_row_ptr_C,
rocsparse_int* nnz_total_dev_host_ptr,
void* buffer);
// prune_csr2csr
REAL_TEMPLATE(prune_csr2csr,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz_A,
const rocsparse_mat_descr csr_descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
const T* threshold,
const rocsparse_mat_descr csr_descr_C,
T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
rocsparse_int* csr_col_ind_C,
void* buffer);
// prune_csr2csr_by_percentage_buffer_size
REAL_TEMPLATE(prune_csr2csr_by_percentage_buffer_size,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz_A,
const rocsparse_mat_descr csr_descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
T percentage,
const rocsparse_mat_descr csr_descr_C,
const T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
const rocsparse_int* csr_col_ind_C,
rocsparse_mat_info info,
size_t* buffer_size);
// prune_csr2csr_nnz_by_percentage
REAL_TEMPLATE(prune_csr2csr_nnz_by_percentage,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz_A,
const rocsparse_mat_descr csr_descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
T percentage,
const rocsparse_mat_descr csr_descr_C,
rocsparse_int* csr_row_ptr_C,
rocsparse_int* nnz_total_dev_host_ptr,
rocsparse_mat_info info,
void* buffer);
// prune_csr2csr_by_percentage
REAL_TEMPLATE(prune_csr2csr_by_percentage,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int n,
rocsparse_int nnz_A,
const rocsparse_mat_descr csr_descr_A,
const T* csr_val_A,
const rocsparse_int* csr_row_ptr_A,
const rocsparse_int* csr_col_ind_A,
T percentage,
const rocsparse_mat_descr csr_descr_C,
T* csr_val_C,
const rocsparse_int* csr_row_ptr_C,
rocsparse_int* csr_col_ind_C,
rocsparse_mat_info info,
void* buffer);
/*
* ===========================================================================
* reordering SPARSE
* ===========================================================================
*/
// csrcolor
REAL_COMPLEX_TEMPLATE(csrcolor,
rocsparse_handle handle,
rocsparse_int m,
rocsparse_int nnz,
const rocsparse_mat_descr descr,
const T* csr_val,
const rocsparse_int* csr_row_ptr,
const rocsparse_int* csr_col_ind,
const floating_data_t<T>* fraction_to_color,
rocsparse_int* ncolors,
rocsparse_int* coloring,
rocsparse_int* reordering,
rocsparse_mat_info info);
#endif // ROCSPARSE_HPP