oneapi::mkl::sparse::set_csr_data¶
Takes a matrix handle and the user-provided Compressed Sparse Row (CSR) matrix arrays and fills the internal CSR data structure of the matrix handle.
Description¶
The oneapi::mkl::sparse::set_csr_data
routine takes a sparse::matrix_handle_t
for a sparse matrix of
dimensions num_rows
-by- num_cols
represented in the CSR format,
and fills the internal state of the matrix handle with the user provided arrays in CSR format. Please
familiarize yourself with the user/library contract
surrounding use of the sparse::matrix_handle_t
object.
Note
Refer to Sparse BLAS Supported Data and Integer Types for a list of supported <DATA_TYPE>
and <INT_TYPE>
data and integer types and refer to Error Handling for a detailed description of
the possible exceptions thrown.
API¶
Syntax¶
Note
Currently, complex types are not supported.
Using SYCL buffers:
namespace oneapi::mkl:sparse {
void set_csr_data (
sycl::queue &queue,
oneapi::mkl::sparse::matrix_handle_t handle,
const INT_TYPE num_rows,
const INT_TYPE num_cols,
oneapi::mkl::index_base index,
sycl::buffer<INT_TYPE, 1> &rowptr,
sycl::buffer<INT_TYPE, 1> &colinds,
sycl::buffer<DATA_TYPE, 1> &values);
//deprecated in 2023.0
void set_csr_data (
oneapi::mkl::sparse::matrix_handle_t handle,
const INT_TYPE num_rows,
const INT_TYPE num_cols,
oneapi::mkl::index_base index,
sycl::buffer<INT_TYPE, 1> &rowptr,
sycl::buffer<INT_TYPE, 1> &colinds,
sycl::buffer<DATA_TYPE, 1> &values);
}
Using USM pointers:
namespace oneapi::mkl:sparse {
sycl::event set_csr_data (
sycl::queue &queue,
oneapi::mkl::sparse::matrix_handle_t handle,
const INT_TYPE num_rows,
const INT_TYPE num_cols,
oneapi::mkl::index_base index,
INT_TYPE *rowptr,
INT_TYPE *colinds,
DATA_TYPE *values,
const std::vector<sycl::event> &dependencies = {} );
// deprecated in 2023.0
void set_csr_data (
oneapi::mkl::sparse::matrix_handle_t handle,
const INT_TYPE num_rows,
const INT_TYPE num_cols,
oneapi::mkl::index_base index,
INT_TYPE *rowptr,
INT_TYPE *colinds,
DATA_TYPE *values);
}
Include Files¶
oneapi/mkl/spblas.hpp
Input Parameters¶
- queue
Specifies the SYCL command queue which will be used for SYCL kernels execution.
- handle
Handle to object containing sparse matrix and other internal data for subsequent Sparse BLAS operations.
- num_rows
Number of rows of the input matrix.
- num_cols
Number of columns of the input matrix.
- index
Indicates how input arrays are indexed.
oneapi::mkl::index_base::zero
Zero-based (C-style) indexing: indices start at 0.
oneapi::mkl::index_base::one
One-based (Fortran-style) indexing: indices start at 1.
- rowptr
SYCL memory object containing an array of length
num_rows+1
. Could be a SYCL buffer or a device-accessible USM pointer. Refer to Sparse Storage Formats for a detailed description ofrowptr
.- colinds
SYCL memory object which stores an array containing the column indices in
index
-based numbering. Could be a SYCL buffer or a device-accessible USM pointer. Refer to Sparse Storage Formats for a detailed description ofcolind
.- values
SYCL memory object which stores an array containing the non-zero elements of the input matrix. Could be a SYCL buffer or a device-accessible USM pointer. Refer to Sparse Storage Formats for a detailed description of
values
.- dependencies
USM API only. A vector of type
const std::vector<sycl::event> &
containing the list of events that theoneapi::mkl::sparse::set_csr_data
routine depends on.
Summary of Input CSR Arrays¶
A summary of the CSR input arrays, sizes, and types (see Sparse BLAS Supported Data and Integer Types) is
contained in the following table. We use the term number of non-zeros
or for short, nnz
, to
refer to the count of elements of the matrix and sparsity pattern represented by the CSR matrix
format as described in Sparse Storage Formats.
For sycl::buffer inputs, the arrays are of type sycl::buffer<T>
.
For USM inputs, the arrays must be device-accessible and of type T *
. The recommended USM memory
type is described in the following table. In general, using USM device memory will provide
a better performance than USM shared, which in turn will give better performance than USM host, but
all are supported as they are all device-accessible.
array |
length (elements) |
T |
USM Memory Type |
---|---|---|---|
rowptr |
|
INT_TYPE |
device accessible (USM device or USM shared or USM host) |
colinds |
|
|
device accessible (USM device or USM shared or USM host) |
values |
|
|
device accessible (USM device or USM shared or USM host) |
Output Parameters¶
- handle
Handle to object containing sparse matrix and other internal data for subsequent DPC++ Sparse BLAS operations.
- sycl::event
USM API only. A
sycl::event
that can be used to track the completion of asynchronous events that were enqueued during the API call that continue the chain of events from the input dependencies.