librsb 1.3.0.3
rsb_blas_sparse.F90 File Reference

Implementation of the Fortran Sparse BLAS interface to librsb (see The Sparse BLAS interface to librsb (blas_sparse.h, rsb_blas_sparse.F90)). More...

Data Types

interface  blas_sparse::uscr_insert_entry
 A Sparse BLAS interface for RSB. More...
interface  blas_sparse::uscr_insert_entries
 inserts multiple entries More...
interface  blas_sparse::uscr_insert_col
 inserts a sparse column More...
interface  blas_sparse::uscr_insert_row
 inserts a sparse row More...
interface  blas_sparse::uscr_insert_clique
 inserts a clique More...
interface  blas_sparse::uscr_insert_block
 inserts a dense block More...
interface  blas_sparse::usmv
 multiplication : c <- beta c + alpha A b More...
interface  blas_sparse::ussv
 triangular solve: b <- alpha A^-1 b More...
interface  blas_sparse::usmm
 multiplication : c <- beta c + alpha A b More...
interface  blas_sparse::ussm
 triangular solve: b <- alpha A^-1 b More...
interface  blas_sparse::rsb_blas_get_mtx

Modules

module  blas_sparse

Macros

#define RSB_HAVE_RSB_KERNELS   1
#define C_RSB_INT_KND_   C_INT

Functions/Subroutines

subroutine blas_sparse::usds (a, istat)
 Destroys a matrix.
subroutine blas_sparse::uscr_end (a, istat)
 Makes an assembled matrix out of a matrix in build state. After this, it is not possible anymore to insert nonzeroes, but computational routines.
subroutine blas_sparse::usgp (a, pname, istat)
 Get a matrix property.
subroutine blas_sparse::ussp (a, pname, istat)
 Set a matrix property. Should be called just after creation, before nonzeroes insertion.
subroutine blas_sparse::suscr_begin (m, n, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::duscr_begin (m, n, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::cuscr_begin (m, n, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::zuscr_begin (m, n, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::suscr_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::duscr_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::cuscr_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::zuscr_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::suscr_variable_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::duscr_variable_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::cuscr_variable_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::zuscr_variable_block_begin (mb, nb, k, l, a, istat)
 Allocates an empty matrix (A) and leaves it in build state.
subroutine blas_sparse::suscr_end (a, istat)
 Makes an assembled matrix out of a matrix in build state. After this, it is not possible anymore to insert nonzeroes, but computational routines.
subroutine blas_sparse::duscr_end (a, istat)
 Makes an assembled matrix out of a matrix in build state. After this, it is not possible anymore to insert nonzeroes, but computational routines.
subroutine blas_sparse::cuscr_end (a, istat)
 Makes an assembled matrix out of a matrix in build state. After this, it is not possible anymore to insert nonzeroes, but computational routines.
subroutine blas_sparse::zuscr_end (a, istat)
 Makes an assembled matrix out of a matrix in build state. After this, it is not possible anymore to insert nonzeroes, but computational routines.
subroutine blas_sparse::suscr_insert_entry (a, val, i, j, istat)
 Inserts an entry in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::duscr_insert_entry (a, val, i, j, istat)
 Inserts an entry in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::cuscr_insert_entry (a, val, i, j, istat)
 Inserts an entry in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::zuscr_insert_entry (a, val, i, j, istat)
 Inserts an entry in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::suscr_insert_entries (a, nnz, val, indx, jndx, istat)
 Inserts entries in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::duscr_insert_entries (a, nnz, val, indx, jndx, istat)
 Inserts entries in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::cuscr_insert_entries (a, nnz, val, indx, jndx, istat)
 Inserts entries in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::zuscr_insert_entries (a, nnz, val, indx, jndx, istat)
 Inserts entries in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::suscr_insert_col (a, j, nnz, val, indx, istat)
 Inserts a whole column in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::duscr_insert_col (a, j, nnz, val, indx, istat)
 Inserts a whole column in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::cuscr_insert_col (a, j, nnz, val, indx, istat)
 Inserts a whole column in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::zuscr_insert_col (a, j, nnz, val, indx, istat)
 Inserts a whole column in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::suscr_insert_row (a, i, nnz, val, indx, istat)
 Inserts a whole row in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::duscr_insert_row (a, i, nnz, val, indx, istat)
 Inserts a whole row in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::cuscr_insert_row (a, i, nnz, val, indx, istat)
 Inserts a whole row in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::zuscr_insert_row (a, i, nnz, val, indx, istat)
 Inserts a whole row in a matrix, assuming it is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::suscr_insert_clique (a, k, l, val, row_stride, col_stride, indx, jndx, istat)
 Inserts a whole clique in a matrix, assuming this is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::duscr_insert_clique (a, k, l, val, row_stride, col_stride, indx, jndx, istat)
 Inserts a whole clique in a matrix, assuming this is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::cuscr_insert_clique (a, k, l, val, row_stride, col_stride, indx, jndx, istat)
 Inserts a whole clique in a matrix, assuming this is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::zuscr_insert_clique (a, k, l, val, row_stride, col_stride, indx, jndx, istat)
 Inserts a whole clique in a matrix, assuming this is in build state. By default, duplicate entries will be summed together.
subroutine blas_sparse::suscr_insert_block (a, val, row_stride, col_stride, i, j, istat)
 Inserts a whole block in a matrix, assuming it is in build state. The block size is assumed to be the one specified when calling the (type) corresponding matrix blocked begin function. If not called a blocked begin function, will assume 1x1 (that is, no) blocking. By default, duplicate entries will be summed together.
subroutine blas_sparse::duscr_insert_block (a, val, row_stride, col_stride, i, j, istat)
 Inserts a whole block in a matrix, assuming it is in build state. The block size is assumed to be the one specified when calling the (type) corresponding matrix blocked begin function. If not called a blocked begin function, will assume 1x1 (that is, no) blocking. By default, duplicate entries will be summed together.
subroutine blas_sparse::cuscr_insert_block (a, val, row_stride, col_stride, i, j, istat)
 Inserts a whole block in a matrix, assuming it is in build state. The block size is assumed to be the one specified when calling the (type) corresponding matrix blocked begin function. If not called a blocked begin function, will assume 1x1 (that is, no) blocking. By default, duplicate entries will be summed together.
subroutine blas_sparse::zuscr_insert_block (a, val, row_stride, col_stride, i, j, istat)
 Inserts a whole block in a matrix, assuming it is in build state. The block size is assumed to be the one specified when calling the (type) corresponding matrix blocked begin function. If not called a blocked begin function, will assume 1x1 (that is, no) blocking. By default, duplicate entries will be summed together.
subroutine blas_sparse::susmv (transa, alpha, a, x, incx, y, incy, istat)
 Multiply by a dense vector. Either of $Y \leftarrow \alpha A   X + Y  ,$
$Y \leftarrow \alpha A^T X + Y,$
$Y \leftarrow \alpha A^H X + Y$, depending on the value of transA.
subroutine blas_sparse::dusmv (transa, alpha, a, x, incx, y, incy, istat)
 Multiply by a dense vector. Either of $Y \leftarrow \alpha A   X + Y  ,$
$Y \leftarrow \alpha A^T X + Y,$
$Y \leftarrow \alpha A^H X + Y$, depending on the value of transA.
subroutine blas_sparse::cusmv (transa, alpha, a, x, incx, y, incy, istat)
 Multiply by a dense vector. Either of $Y \leftarrow \alpha A   X + Y  ,$
$Y \leftarrow \alpha A^T X + Y,$
$Y \leftarrow \alpha A^H X + Y$, depending on the value of transA.
subroutine blas_sparse::zusmv (transa, alpha, a, x, incx, y, incy, istat)
 Multiply by a dense vector. Either of $Y \leftarrow \alpha A   X + Y  ,$
$Y \leftarrow \alpha A^T X + Y,$
$Y \leftarrow \alpha A^H X + Y$, depending on the value of transA.
subroutine blas_sparse::sussv (transt, alpha, t, x, incx, istat)
 Triangular solve, by a dense vector. Either of $X \leftarrow \alpha T^{-1}X,$ $X \leftarrow \alpha T^{-T}X,$ $X \leftarrow \alpha T^{-H}X$, depending on the value of transT.
subroutine blas_sparse::dussv (transt, alpha, t, x, incx, istat)
 Triangular solve, by a dense vector. Either of $X \leftarrow \alpha T^{-1}X,$ $X \leftarrow \alpha T^{-T}X,$ $X \leftarrow \alpha T^{-H}X$, depending on the value of transT.
subroutine blas_sparse::cussv (transt, alpha, t, x, incx, istat)
 Triangular solve, by a dense vector. Either of $X \leftarrow \alpha T^{-1}X,$ $X \leftarrow \alpha T^{-T}X,$ $X \leftarrow \alpha T^{-H}X$, depending on the value of transT.
subroutine blas_sparse::zussv (transt, alpha, t, x, incx, istat)
 Triangular solve, by a dense vector. Either of $X \leftarrow \alpha T^{-1}X,$ $X \leftarrow \alpha T^{-T}X,$ $X \leftarrow \alpha T^{-H}X$, depending on the value of transT.
subroutine blas_sparse::susmm (order, transa, nrhs, alpha, a, b, ldb, c, ldc, istat)
 Multiply by a dense matrix (aka multi-vector). Either of $C \leftarrow \alpha AB+C,$ $C \leftarrow \alpha A^T B+C,$ $C \leftarrow \alpha A^H B+C$, depending on the value of transA.
subroutine blas_sparse::dusmm (order, transa, nrhs, alpha, a, b, ldb, c, ldc, istat)
 Multiply by a dense matrix (aka multi-vector). Either of $C \leftarrow \alpha AB+C,$ $C \leftarrow \alpha A^T B+C,$ $C \leftarrow \alpha A^H B+C$, depending on the value of transA.
subroutine blas_sparse::cusmm (order, transa, nrhs, alpha, a, b, ldb, c, ldc, istat)
 Multiply by a dense matrix (aka multi-vector). Either of $C \leftarrow \alpha AB+C,$ $C \leftarrow \alpha A^T B+C,$ $C \leftarrow \alpha A^H B+C$, depending on the value of transA.
subroutine blas_sparse::zusmm (order, transa, nrhs, alpha, a, b, ldb, c, ldc, istat)
 Multiply by a dense matrix (aka multi-vector). Either of $C \leftarrow \alpha AB+C,$ $C \leftarrow \alpha A^T B+C,$ $C \leftarrow \alpha A^H B+C$, depending on the value of transA.
subroutine blas_sparse::sussm (order, transt, nrhs, alpha, t, b, ldb, istat)
 Triangular solve, by a dense matrix (aka multi-vector). Either of $B \leftarrow \alpha T^{-1} B,$ $B \leftarrow \alpha T^{-T} B,$ $B \leftarrow \alpha T^{-H} B$, depending on the value of transT.
subroutine blas_sparse::dussm (order, transt, nrhs, alpha, t, b, ldb, istat)
 Triangular solve, by a dense matrix (aka multi-vector). Either of $B \leftarrow \alpha T^{-1} B,$ $B \leftarrow \alpha T^{-T} B,$ $B \leftarrow \alpha T^{-H} B$, depending on the value of transT.
subroutine blas_sparse::cussm (order, transt, nrhs, alpha, t, b, ldb, istat)
 Triangular solve, by a dense matrix (aka multi-vector). Either of $B \leftarrow \alpha T^{-1} B,$ $B \leftarrow \alpha T^{-T} B,$ $B \leftarrow \alpha T^{-H} B$, depending on the value of transT.
subroutine blas_sparse::zussm (order, transt, nrhs, alpha, t, b, ldb, istat)
 Triangular solve, by a dense matrix (aka multi-vector). Either of $B \leftarrow \alpha T^{-1} B,$ $B \leftarrow \alpha T^{-T} B,$ $B \leftarrow \alpha T^{-H} B$, depending on the value of transT.

Variables

integer, parameter blas_sparse::blas_sparse_const_success =0
integer, parameter blas_sparse::blas_sparse_const_failure =-1
integer, parameter blas_sparse::blas_sparse_const_not_available =-9999
integer, parameter blas_sparse::blas_rowmajor =101
integer, parameter blas_sparse::blas_colmajor =102
integer, parameter blas_sparse::blas_no_trans =111
integer, parameter blas_sparse::blas_trans =112
integer, parameter blas_sparse::blas_conj_trans =113
integer, parameter blas_sparse::blas_upper =121
integer, parameter blas_sparse::blas_lower =122
integer, parameter blas_sparse::blas_non_unit_diag =131
integer, parameter blas_sparse::blas_unit_diag =132
integer, parameter blas_sparse::blas_left_side =141
integer, parameter blas_sparse::blas_right_side =142
integer, parameter blas_sparse::blas_base =151
integer, parameter blas_sparse::blas_t =152
integer, parameter blas_sparse::blas_rnd =153
integer, parameter blas_sparse::blas_ieee =154
integer, parameter blas_sparse::blas_emin =155
integer, parameter blas_sparse::blas_emax =156
integer, parameter blas_sparse::blas_eps =157
integer, parameter blas_sparse::blas_prec =158
integer, parameter blas_sparse::blas_underflow =159
integer, parameter blas_sparse::blas_overflow =160
integer, parameter blas_sparse::blas_sfmin =161
integer, parameter blas_sparse::blas_one_norm =171
integer, parameter blas_sparse::blas_real_one_norm =172
integer, parameter blas_sparse::blas_two_norm =173
integer, parameter blas_sparse::blas_frobenius_norm =174
integer, parameter blas_sparse::blas_inf_norm =175
integer, parameter blas_sparse::blas_real_inf_norm =176
integer, parameter blas_sparse::blas_max_norm =177
integer, parameter blas_sparse::blas_real_max_norm =178
integer, parameter blas_sparse::blas_increasing_order =181
integer, parameter blas_sparse::blas_decreasing_order =182
integer, parameter blas_sparse::blas_conj =191
integer, parameter blas_sparse::blas_no_conj =192
integer, parameter blas_sparse::blas_jrot_inner =201
integer, parameter blas_sparse::blas_jrot_outer =202
integer, parameter blas_sparse::blas_jrot_sorted =203
integer, parameter blas_sparse::blas_prec_single =211
integer, parameter blas_sparse::blas_prec_double =212
integer, parameter blas_sparse::blas_prec_indigenous =213
integer, parameter blas_sparse::blas_prec_extra =214
integer, parameter blas_sparse::blas_zero_base =221
integer, parameter blas_sparse::blas_one_base =222
integer, parameter blas_sparse::blas_general =231
integer, parameter blas_sparse::blas_symmetric =232
integer, parameter blas_sparse::blas_hermitian =233
integer, parameter blas_sparse::blas_triangular =234
integer, parameter blas_sparse::blas_lower_triangular =235
integer, parameter blas_sparse::blas_upper_triangular =236
integer, parameter blas_sparse::blas_lower_symmetric =237
integer, parameter blas_sparse::blas_upper_symmetric =238
integer, parameter blas_sparse::blas_lower_hermitian =239
integer, parameter blas_sparse::blas_upper_hermitian =240
integer, parameter blas_sparse::blas_complex =241
integer, parameter blas_sparse::blas_real =242
integer, parameter blas_sparse::blas_double_precision =243
integer, parameter blas_sparse::blas_single_precision =244
integer, parameter blas_sparse::blas_num_rows =251
integer, parameter blas_sparse::blas_num_cols =252
integer, parameter blas_sparse::blas_num_nonzeros =253
integer, parameter blas_sparse::blas_invalid_handle =261
integer, parameter blas_sparse::blas_new_handle =262
integer, parameter blas_sparse::blas_open_handle =263
integer, parameter blas_sparse::blas_valid_handle =264
integer, parameter blas_sparse::blas_regular =271
integer, parameter blas_sparse::blas_irregular =272
integer, parameter blas_sparse::blas_block =273
integer, parameter blas_sparse::blas_unassembled =274
integer, parameter blas_sparse::blas_rsb_spmv_autotuning_on =6660
integer, parameter blas_sparse::blas_rsb_spmv_autotuning_off =6661
integer, parameter blas_sparse::blas_rsb_spmv_n_autotuning_on =6662
integer, parameter blas_sparse::blas_rsb_spmv_n_autotuning_off =6663
integer, parameter blas_sparse::blas_rsb_spmv_t_autotuning_on =6664
integer, parameter blas_sparse::blas_rsb_spmv_t_autotuning_off =6665
integer, parameter blas_sparse::blas_rsb_autotune_next_operation =6666
integer, parameter blas_sparse::blas_rsb_rep_rec =9993
integer, parameter blas_sparse::blas_rsb_rep_hwi =9994
integer, parameter blas_sparse::blas_rsb_rep_rsb =9995
integer, parameter blas_sparse::blas_rsb_rep_csr =9996
integer, parameter blas_sparse::blas_rsb_rep_coo =9997
integer, parameter blas_sparse::blas_rsb_duplicates_ovw =9998
integer, parameter blas_sparse::blas_rsb_duplicates_sum =9999
integer, parameter blas_sparse::rsb_blas_idx_kind =4
integer, parameter blas_sparse::rsb_blas_ist_kind =4

Detailed Description

Implementation of the Fortran Sparse BLAS interface to librsb (see The Sparse BLAS interface to librsb (blas_sparse.h, rsb_blas_sparse.F90)).

Macro Definition Documentation

◆ C_RSB_INT_KND_

#define C_RSB_INT_KND_   C_INT

◆ RSB_HAVE_RSB_KERNELS

#define RSB_HAVE_RSB_KERNELS   1