rocsparse_cscsort Interface Reference#
hipfort_rocsparse::rocsparse_cscsort Interface Reference
Sort a sparse CSC matrix. More...
Public Member Functions | |
integer(kind(rocsparse_status_success)) function | rocsparse_cscsort_ (handle, m, n, nnz, descr, csc_col_ptr, csc_row_ind, perm, temp_buffer) |
integer(kind(rocsparse_status_success)) function | rocsparse_cscsort_rank_0 (handle, m, n, nnz, descr, csc_col_ptr, csc_row_ind, perm, temp_buffer) |
integer(kind(rocsparse_status_success)) function | rocsparse_cscsort_rank_1 (handle, m, n, nnz, descr, csc_col_ptr, csc_row_ind, perm, temp_buffer) |
Detailed Description
Sort a sparse CSC matrix.
rocsparse_cscsort
sorts a matrix in CSC format. The sorted permutation vector perm
can be used to obtain sorted csc_val
array. In this case, perm
must be initialized as the identity permutation, see rocsparse_create_identity_permutation().
rocsparse_cscsort
requires extra temporary storage buffer that has to be allocated by the user. Storage buffer size can be determined by rocsparse_cscsort_buffer_size().
- Note
perm
can beNULL
if a sorted permutation vector is not required.- This function is non blocking and executed asynchronously with respect to the host. It may return before the actual computation has finished.
- Parameters
-
[in] handle handle to the rocsparse library context queue. [in] m number of rows of the sparse CSC matrix. [in] n number of columns of the sparse CSC matrix. [in] nnz number of non-zero entries of the sparse CSC matrix. [in] descr descriptor of the sparse CSC matrix. Currently, only rocsparse_matrix_type_general
is supported.[in] csc_col_ptr array of n+1
elements that point to the start of every column of the sparse CSC matrix.[in,out] csc_row_ind array of nnz
elements containing the row indices of the sparse CSC matrix.[in,out] perm array of nnz
integers containing the unsorted map indices, can beNULL
.[in] temp_buffer temporary storage buffer allocated by the user, size is returned by rocsparse_cscsort_buffer_size().
- Return values
-
rocsparse_status_success the operation completed successfully. rocsparse_status_invalid_handle the library context was not initialized. rocsparse_status_invalid_size m
,n
ornnz
is invalid.rocsparse_status_invalid_pointer descr
,csc_col_ptr
,csc_row_ind
ortemp_buffer
pointer is invalid.rocsparse_status_internal_error an internal error occurred. rocsparse_status_not_implemented rocsparse_matrix_type
!=rocsparse_matrix_type_general
.
- Example
- The following example sorts a \(3 \times 3\) CSC matrix. / 1 2 3/ A = 4 5 6/ 7 8 9rocsparse_int m = 3;rocsparse_int n = 3;rocsparse_int nnz = 9;csc_col_ptr[m + 1] = {0, 3, 6, 9};/ device memorycsc_row_ind[nnz] = {2, 0, 1, 0, 1, 2, 0, 2, 1};/ device memorycsc_val[nnz] = {7, 1, 4, 2, 5, 8, 3, 9, 6};/ device memory/ Create permutation vector perm as the identity maprocsparse_int* perm;hipMalloc((void**)&perm, sizeof(rocsparse_int) * nnz);rocsparse_create_identity_permutation(handle, nnz, perm);/ Allocate temporary buffersize_t buffer_size;void* temp_buffer;rocsparse_cscsort_buffer_size(handle, m, n, nnz, csc_col_ptr, csc_row_ind, &buffer_size);hipMalloc(&temp_buffer, buffer_size);/ Sort the CSC matrixrocsparse_cscsort(handle, m, n, nnz, descr, csc_col_ptr, csc_row_ind, perm, temp_buffer);/ Gather sorted csc_val arrayfloat* csc_val_sorted;hipMalloc((void**)&csc_val_sorted, sizeof(float) * nnz);rocsparse_sgthr(handle, nnz, csc_val, csc_val_sorted, perm, rocsparse_index_base_zero);/ Clean uphipFree(temp_buffer);hipFree(perm);hipFree(csc_val);@ rocsparse_index_base_zeroDefinition: hipfort_rocsparse_enums.f:40
Member Function/Subroutine Documentation
◆ rocsparse_cscsort_()
integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_cscsort::rocsparse_cscsort_ | ( | type(c_ptr), value | handle, |
integer(c_int), value | m, | ||
integer(c_int), value | n, | ||
integer(c_int), value | nnz, | ||
type(c_ptr), value | descr, | ||
type(c_ptr), value | csc_col_ptr, | ||
type(c_ptr), value | csc_row_ind, | ||
type(c_ptr), value | perm, | ||
type(c_ptr), value | temp_buffer | ||
) |
◆ rocsparse_cscsort_rank_0()
integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_cscsort::rocsparse_cscsort_rank_0 | ( | type(c_ptr) | handle, |
integer(c_int) | m, | ||
integer(c_int) | n, | ||
integer(c_int) | nnz, | ||
type(c_ptr) | descr, | ||
integer(c_int), target | csc_col_ptr, | ||
integer(c_int), target | csc_row_ind, | ||
integer(c_int), target | perm, | ||
type(c_ptr) | temp_buffer | ||
) |
◆ rocsparse_cscsort_rank_1()
integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_cscsort::rocsparse_cscsort_rank_1 | ( | type(c_ptr) | handle, |
integer(c_int) | m, | ||
integer(c_int) | n, | ||
integer(c_int) | nnz, | ||
type(c_ptr) | descr, | ||
integer(c_int), dimension(:), target | csc_col_ptr, | ||
integer(c_int), dimension(:), target | csc_row_ind, | ||
integer(c_int), dimension(:), target | perm, | ||
type(c_ptr) | temp_buffer | ||
) |
The documentation for this interface was generated from the following file: