Developer Reference for Intel® oneAPI Math Kernel Library for C
mkl_sparse_?_create_bsr
Creates a handle for a matrix in BSR format.
Syntax
sparse_status_t mkl_sparse_s_create_bsr ( sparse_matrix_t *p_A,
const sparse_index_base_t indexing,
const sparse_layout_t block_layout,
const MKL_INT rows,
const MKL_INT cols,
const MKL_INT block_size,
MKL_INT *rows_start,
MKL_INT *rows_end,
MKL_INT *col_indx,
float *values );
sparse_status_t mkl_sparse_d_create_bsr ( sparse_matrix_t *p_A,
const sparse_index_base_t indexing,
const sparse_layout_t block_layout,
const MKL_INT rows,
const MKL_INT cols,
const MKL_INT block_size,
MKL_INT *rows_start,
MKL_INT *rows_end,
MKL_INT *col_indx,
double *values );
sparse_status_t mkl_sparse_c_create_bsr ( sparse_matrix_t *p_A,
const sparse_index_base_t indexing,
const sparse_layout_t block_layout,
const MKL_INT rows,
const MKL_INT cols,
const MKL_INT block_size,
MKL_INT *rows_start,
MKL_INT *rows_end,
MKL_INT *col_indx,
MKL_Complex8 *values );
sparse_status_t mkl_sparse_z_create_bsr ( sparse_matrix_t *p_A,
const sparse_index_base_t indexing,
const sparse_layout_t block_layout,
const MKL_INT rows,
const MKL_INT cols,
const MKL_INT block_size,
MKL_INT *rows_start,
MKL_INT *rows_end,
MKL_INT *col_indx,
MKL_Complex16 *values );
Include Files
mkl_spblas.h
Description
The mkl_sparse_?_create_bsr routine creates a handle for an \(m\) -by- \(k\) matrix \(A\) in Block Compressed Sparse Row (BSR) format and fills it with user provided data arrays.
Input Parameters
indexing
Indicates how input arrays are indexed:
SPARSE_INDEX_BASE_ZERO |
Zero-based (C-style) indexing: indices start at 0. |
SPARSE_INDEX_BASE_ONE |
One-based (Fortran-style) indexing: indices start at 1. |
block_layout
Specifies layout of blocks:
SPARSE_LAYOUT_COLUMN_MAJOR |
Storage of elements uses column major layout. |
SPARSE_LAYOUT_ROW_MAJOR |
Storage of elements uses row major layout. |
rows
Number of block rows of matrix A .
cols
Number of block columns of matrix A .
block_size
Size of square blocks in matrix A .
rows_start
Array of length \(rows\) for 4-array format and \(rows + 1\) for 3-array format.
This array contains offset indices, such that rows_start[i] - ind is the first index of block row \(i\) in the arrays values and col_indx.
Here, ind takes a value of \(0\) for zero-based indexing and \(1\) for one-based indexing. Refer to pointerB array description in BSR Format for more details.
rows_end
Array of length \(rows\) for 4-array format and potentially empty for 3-array format.
This array contains offset indices, such that rows_end[i] - ind is one past the last index of block row \(i\) in the arrays values and col_indx.
Here, ind takes a value of \(0\) for zero-based indexing and \(1\) for one-based indexing. Refer to pointerE array description in BSR Format for more details.
col_indx
For one-based indexing, array containing the column indices plus one for each non-zero block of the matrix \(A\) . For zero-based indexing, array containing the column indices for each non-zero block of the matrix \(A\).
Its length is at least the number of blocks stored, which can be computed as rows_end[rows - 1] - ind.
Here, ind takes a value of \(0\) for zero-based indexing and \(1\) for one-based indexing.
values
Array containing stored elements (non-zeros or explicit zeros) of the matrix \(A\) grouped by blocks according the block layout. Its length is equal to length of the col_indx array multiplied by block_size * block_size. Refer to the values array description in BSR Format for more details.
Output Parameters
- p_A
-
Pointer to handle containing internal data.
Return Values
The function returns a value indicating whether the operation was successful or not, and why.
SPARSE_STATUS_SUCCESS |
The operation was successful. |
SPARSE_STATUS_NOT_INITIALIZED |
The routine encountered an empty handle or matrix array. |
SPARSE_STATUS_ALLOC_FAILED |
Internal memory allocation failed. |
SPARSE_STATUS_INVALID_VALUE |
The input parameters contain an invalid value. |
SPARSE_STATUS_EXECUTION_FAILED |
Execution failed. |
SPARSE_STATUS_INTERNAL_ERROR |
An error in algorithm implementation occurred. |
SPARSE_STATUS_NOT_SUPPORTED |
The requested operation is not supported. |