Sparse conversion functions

Contents

Sparse conversion functions#

This module contains all sparse conversion routines.

The sparse conversion routines describe operations performed on a matrix in sparse format to obtain a matrix in a different sparse format.

hipsparseXnnz()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXdense2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t descr;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
10
11    // Dense matrix in column order
12    //     1 2 0 3 0
13    // A = 0 4 5 0 0
14    //     6 0 0 7 8
15    std::vector<float> hdense_A = {
16        1.0f, 0.0f, 6.0f, 2.0f, 4.0f, 0.0f, 0.0f, 5.0f, 0.0f, 3.0f, 0.0f, 7.0f, 0.0f, 0.0f, 8.0f};
17
18    int                  m   = 3;
19    int                  n   = 5;
20    hipsparseDirection_t dir = HIPSPARSE_DIRECTION_ROW;
21
22    float* ddense_A = nullptr;
23    HIP_CHECK(hipMalloc((void**)&ddense_A, sizeof(float) * m * n));
24    HIP_CHECK(hipMemcpy(ddense_A, hdense_A.data(), sizeof(float) * m * n, hipMemcpyHostToDevice));
25
26    // Allocate memory for the nnz_per_row_columns array
27    int* dnnz_per_row;
28    HIP_CHECK(hipMalloc((void**)&dnnz_per_row, sizeof(int) * m));
29
30    int nnz_A;
31    HIPSPARSE_CHECK(hipsparseSnnz(handle, dir, m, n, descr, ddense_A, m, dnnz_per_row, &nnz_A));
32
33    // Allocate sparse CSR matrix
34    int*   dcsrRowPtr = nullptr;
35    int*   dcsrColInd = nullptr;
36    float* dcsrVal    = nullptr;
37    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
38    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz_A));
39    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz_A));
40
41    HIPSPARSE_CHECK(hipsparseSdense2csr(
42        handle, m, n, descr, ddense_A, m, dnnz_per_row, dcsrVal, dcsrRowPtr, dcsrColInd));
43
44    HIP_CHECK(hipFree(dcsrRowPtr));
45    HIP_CHECK(hipFree(dcsrColInd));
46    HIP_CHECK(hipFree(dcsrVal));
47    HIP_CHECK(hipFree(dnnz_per_row));
48    HIP_CHECK(hipFree(ddense_A));
49
50    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
51    HIPSPARSE_CHECK(hipsparseDestroy(handle));
52
53    return 0;
54}

hipsparseXpruneDense2csr_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneDense2csr_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneDense2csrNnz()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneDense2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t descr;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
10
11    // Dense matrix in column order
12    //     1 2 0 3 0
13    // A = 0 4 5 0 0
14    //     6 0 0 7 8
15    std::vector<float> hdense_A = {
16        1.0f, 0.0f, 6.0f, 2.0f, 4.0f, 0.0f, 0.0f, 5.0f, 0.0f, 3.0f, 0.0f, 7.0f, 0.0f, 0.0f, 8.0f};
17
18    int   m         = 3;
19    int   n         = 5;
20    int   lda       = m;
21    float threshold = 4.0f;
22
23    float* ddense_A = nullptr;
24    HIP_CHECK(hipMalloc((void**)&ddense_A, sizeof(float) * lda * n));
25    HIP_CHECK(hipMemcpy(ddense_A, hdense_A.data(), sizeof(float) * lda * n, hipMemcpyHostToDevice));
26
27    // Allocate sparse CSR matrix
28    int* dcsrRowPtr = nullptr;
29    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
30
31    size_t bufferSize;
32    HIPSPARSE_CHECK(hipsparseSpruneDense2csr_bufferSize(
33        handle, m, n, ddense_A, lda, &threshold, descr, nullptr, dcsrRowPtr, nullptr, &bufferSize));
34
35    void* dbuffer = nullptr;
36    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
37
38    int nnz_A;
39    HIPSPARSE_CHECK(hipsparseSpruneDense2csrNnz(
40        handle, m, n, ddense_A, lda, &threshold, descr, dcsrRowPtr, &nnz_A, dbuffer));
41
42    int*   dcsrColInd = nullptr;
43    float* dcsrVal    = nullptr;
44    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz_A));
45    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz_A));
46
47    HIPSPARSE_CHECK(hipsparseSpruneDense2csr(
48        handle, m, n, ddense_A, lda, &threshold, descr, dcsrVal, dcsrRowPtr, dcsrColInd, dbuffer));
49
50    HIP_CHECK(hipFree(dcsrRowPtr));
51    HIP_CHECK(hipFree(dcsrColInd));
52    HIP_CHECK(hipFree(dcsrVal));
53    HIP_CHECK(hipFree(ddense_A));
54    HIP_CHECK(hipFree(dbuffer));
55
56    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
57    HIPSPARSE_CHECK(hipsparseDestroy(handle));
58
59    return 0;
60}

hipsparseXpruneDense2csrByPercentage_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneDense2csrByPercentage_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneDense2csrNnzByPercentage()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneDense2csrByPercentage()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t descr;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
10
11    // Dense matrix in column order
12    //     1 2 0 3 0
13    // A = 0 4 5 0 0
14    //     6 0 0 7 8
15    std::vector<float> hdense_A = {
16        1.0f, 0.0f, 6.0f, 2.0f, 4.0f, 0.0f, 0.0f, 5.0f, 0.0f, 3.0f, 0.0f, 7.0f, 0.0f, 0.0f, 8.0f};
17
18    int   m          = 3;
19    int   n          = 5;
20    int   lda        = m;
21    float percentage = 70.0f;
22
23    float* ddense_A = nullptr;
24    HIP_CHECK(hipMalloc((void**)&ddense_A, sizeof(float) * lda * n));
25    HIP_CHECK(hipMemcpy(ddense_A, hdense_A.data(), sizeof(float) * lda * n, hipMemcpyHostToDevice));
26
27    // Allocate sparse CSR matrix
28    int* dcsrRowPtr = nullptr;
29    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
30
31    pruneInfo_t info;
32    HIPSPARSE_CHECK(hipsparseCreatePruneInfo(&info));
33
34    size_t bufferSize;
35    HIPSPARSE_CHECK(hipsparseSpruneDense2csrByPercentage_bufferSize(handle,
36                                                                    m,
37                                                                    n,
38                                                                    ddense_A,
39                                                                    lda,
40                                                                    percentage,
41                                                                    descr,
42                                                                    nullptr,
43                                                                    dcsrRowPtr,
44                                                                    nullptr,
45                                                                    info,
46                                                                    &bufferSize));
47
48    void* dbuffer = nullptr;
49    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
50
51    int nnz_A;
52    HIPSPARSE_CHECK(hipsparseSpruneDense2csrNnzByPercentage(
53        handle, m, n, ddense_A, lda, percentage, descr, dcsrRowPtr, &nnz_A, info, dbuffer));
54
55    int*   dcsrColInd = nullptr;
56    float* dcsrVal    = nullptr;
57    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz_A));
58    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz_A));
59
60    HIPSPARSE_CHECK(hipsparseSpruneDense2csrByPercentage(handle,
61                                                         m,
62                                                         n,
63                                                         ddense_A,
64                                                         lda,
65                                                         percentage,
66                                                         descr,
67                                                         dcsrVal,
68                                                         dcsrRowPtr,
69                                                         dcsrColInd,
70                                                         info,
71                                                         dbuffer));
72
73    HIP_CHECK(hipFree(dcsrRowPtr));
74    HIP_CHECK(hipFree(dcsrColInd));
75    HIP_CHECK(hipFree(dcsrVal));
76    HIP_CHECK(hipFree(ddense_A));
77    HIP_CHECK(hipFree(dbuffer));
78
79    HIPSPARSE_CHECK(hipsparseDestroyPruneInfo(info));
80    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
81    HIPSPARSE_CHECK(hipsparseDestroy(handle));
82
83    return 0;
84}

hipsparseXdense2csc()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsr2dense()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t descr;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
10
11    // Sparse matrix in CSR format
12    //     1 2 0 3 0
13    // A = 0 4 5 0 0
14    //     6 0 0 7 8
15    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
16    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 0, 3, 4};
17    std::vector<float> hcsrVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
18
19    int m   = 3;
20    int n   = 5;
21    int ld  = 3;
22    int nnz = 8;
23
24    int*   dcsrRowPtr = nullptr;
25    int*   dcsrColInd = nullptr;
26    float* dcsrVal    = nullptr;
27    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
28    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
29    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
30
31    HIP_CHECK(
32        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
33    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
34    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
35
36    float* ddense_A = nullptr;
37    HIP_CHECK(hipMalloc((void**)&ddense_A, sizeof(float) * ld * n));
38
39    HIPSPARSE_CHECK(
40        hipsparseScsr2dense(handle, m, n, descr, dcsrVal, dcsrRowPtr, dcsrColInd, ddense_A, ld));
41
42    HIP_CHECK(hipFree(dcsrRowPtr));
43    HIP_CHECK(hipFree(dcsrColInd));
44    HIP_CHECK(hipFree(dcsrVal));
45    HIP_CHECK(hipFree(ddense_A));
46
47    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
48    HIPSPARSE_CHECK(hipsparseDestroy(handle));
49
50    return 0;
51}

hipsparseXcsc2dense()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsr2bsrNnz()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsr2bsr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t csr_descr;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&csr_descr));
10
11    hipsparseMatDescr_t bsr_descr;
12    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&bsr_descr));
13
14    // Sparse matrix in CSR format
15    //     1 2 0 3 0
16    // A = 0 4 5 0 0
17    //     6 0 0 7 8
18    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
19    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 0, 3, 4};
20    std::vector<float> hcsrVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
21
22    int                  m        = 3;
23    int                  n        = 5;
24    int                  nnz      = 8;
25    int                  blockDim = 3;
26    hipsparseDirection_t dir      = HIPSPARSE_DIRECTION_ROW;
27
28    int mb = (m + blockDim - 1) / blockDim;
29    int nb = (n + blockDim - 1) / blockDim;
30
31    int*   dcsrRowPtr = nullptr;
32    int*   dcsrColInd = nullptr;
33    float* dcsrVal    = nullptr;
34    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
35    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
36    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
37
38    HIP_CHECK(
39        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
40    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
41    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
42
43    int* dbsrRowPtr = nullptr;
44    HIP_CHECK(hipMalloc((void**)&dbsrRowPtr, sizeof(int) * (mb + 1)));
45
46    int nnzb;
47    HIPSPARSE_CHECK(hipsparseXcsr2bsrNnz(handle,
48                                         dir,
49                                         m,
50                                         n,
51                                         csr_descr,
52                                         dcsrRowPtr,
53                                         dcsrColInd,
54                                         blockDim,
55                                         bsr_descr,
56                                         dbsrRowPtr,
57                                         &nnzb));
58
59    int*   dbsrColInd = nullptr;
60    float* dbsrVal    = nullptr;
61    HIP_CHECK(hipMalloc((void**)&dbsrColInd, sizeof(int) * nnzb));
62    HIP_CHECK(hipMalloc((void**)&dbsrVal, sizeof(float) * blockDim * blockDim * nnzb));
63
64    HIPSPARSE_CHECK(hipsparseScsr2bsr(handle,
65                                      dir,
66                                      m,
67                                      n,
68                                      csr_descr,
69                                      dcsrVal,
70                                      dcsrRowPtr,
71                                      dcsrColInd,
72                                      blockDim,
73                                      bsr_descr,
74                                      dbsrVal,
75                                      dbsrRowPtr,
76                                      dbsrColInd));
77
78    HIP_CHECK(hipFree(dcsrRowPtr));
79    HIP_CHECK(hipFree(dcsrColInd));
80    HIP_CHECK(hipFree(dcsrVal));
81
82    HIP_CHECK(hipFree(dbsrRowPtr));
83    HIP_CHECK(hipFree(dbsrColInd));
84    HIP_CHECK(hipFree(dbsrVal));
85
86    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(csr_descr));
87    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(bsr_descr));
88    HIPSPARSE_CHECK(hipsparseDestroy(handle));
89
90    return 0;
91}

hipsparseXnnz_compress()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t descr_A;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr_A));
10
11    //     1 2 0 3 0
12    // A = 0 4 5 0 0
13    //     6 0 0 7 8
14    float tol = 4.2f;
15
16    int m     = 3;
17    int n     = 5;
18    int nnz_A = 8;
19
20    std::vector<int>   hcsrRowPtr_A = {0, 3, 5, 8};
21    std::vector<float> hcsrVal_A    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
22
23    int*   dcsrRowPtr_A = nullptr;
24    float* dcsrVal_A    = nullptr;
25    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr_A, sizeof(int) * (m + 1)));
26    HIP_CHECK(hipMalloc((void**)&dcsrVal_A, sizeof(float) * nnz_A));
27
28    HIP_CHECK(
29        hipMemcpy(dcsrRowPtr_A, hcsrRowPtr_A.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
30    HIP_CHECK(hipMemcpy(dcsrVal_A, hcsrVal_A.data(), sizeof(float) * nnz_A, hipMemcpyHostToDevice));
31
32    // Allocate memory for the nnz_per_row array
33    int* dnnz_per_row;
34    HIP_CHECK(hipMalloc((void**)&dnnz_per_row, sizeof(int) * m));
35
36    // Call snnz_compress() which fills in nnz_per_row array and finds the number
37    // of entries that will be in the compressed CSR matrix
38    int nnz_C;
39    HIPSPARSE_CHECK(hipsparseSnnz_compress(
40        handle, m, descr_A, dcsrVal_A, dcsrRowPtr_A, dnnz_per_row, &nnz_C, tol));
41
42    HIP_CHECK(hipFree(dcsrRowPtr_A));
43    HIP_CHECK(hipFree(dcsrVal_A));
44    HIP_CHECK(hipFree(dnnz_per_row));
45
46    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr_A));
47    HIPSPARSE_CHECK(hipsparseDestroy(handle));
48
49    return 0;
50}

hipsparseXcsr2coo()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in COO format
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcooRowInd = {0, 0, 0, 1, 1, 2, 2, 2};
12    std::vector<int>   hcooColInd = {0, 1, 3, 1, 2, 0, 3, 4};
13    std::vector<float> hcooVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
14
15    int                  m    = 3;
16    int                  n    = 5;
17    int                  nnz  = 8;
18    hipsparseIndexBase_t base = HIPSPARSE_INDEX_BASE_ZERO;
19
20    int* dcooRowInd = nullptr;
21    int* dcooColInd = nullptr;
22    HIP_CHECK(hipMalloc((void**)&dcooRowInd, sizeof(int) * nnz));
23    HIP_CHECK(hipMalloc((void**)&dcooColInd, sizeof(int) * nnz));
24
25    HIP_CHECK(hipMemcpy(dcooRowInd, hcooRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
26    HIP_CHECK(hipMemcpy(dcooColInd, hcooColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
27
28    int* dcsrRowPtr = nullptr;
29    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
30
31    HIPSPARSE_CHECK(hipsparseXcoo2csr(handle, dcooRowInd, nnz, m, dcsrRowPtr, base));
32
33    HIP_CHECK(hipFree(dcooRowInd));
34    HIP_CHECK(hipFree(dcooColInd));
35
36    HIP_CHECK(hipFree(dcsrRowPtr));
37
38    HIPSPARSE_CHECK(hipsparseDestroy(handle));
39
40    return 0;
41}

hipsparseXcsr2csc()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in CSR format
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
12    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 0, 3, 4};
13    std::vector<float> hcsrVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
14
15    int                  m      = 3;
16    int                  n      = 5;
17    int                  nnz    = 8;
18    hipsparseIndexBase_t base   = HIPSPARSE_INDEX_BASE_ZERO;
19    hipsparseAction_t    action = HIPSPARSE_ACTION_NUMERIC;
20
21    int*   dcsrRowPtr = nullptr;
22    int*   dcsrColInd = nullptr;
23    float* dcsrVal    = nullptr;
24    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
25    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
26    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
27
28    HIP_CHECK(
29        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
30    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
31    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
32
33    int*   dcscRowInd = nullptr;
34    int*   dcscColPtr = nullptr;
35    float* dcsc_val   = nullptr;
36    HIP_CHECK(hipMalloc((void**)&dcscRowInd, sizeof(int) * nnz));
37    HIP_CHECK(hipMalloc((void**)&dcscColPtr, sizeof(int) * (n + 1)));
38    HIP_CHECK(hipMalloc((void**)&dcsc_val, sizeof(float) * nnz));
39
40    HIPSPARSE_CHECK(hipsparseScsr2csc(handle,
41                                      m,
42                                      n,
43                                      nnz,
44                                      dcsrVal,
45                                      dcsrRowPtr,
46                                      dcsrColInd,
47                                      dcsc_val,
48                                      dcscRowInd,
49                                      dcscColPtr,
50                                      action,
51                                      base));
52
53    HIP_CHECK(hipFree(dcsrRowPtr));
54    HIP_CHECK(hipFree(dcsrColInd));
55    HIP_CHECK(hipFree(dcsrVal));
56
57    HIP_CHECK(hipFree(dcscRowInd));
58    HIP_CHECK(hipFree(dcscColPtr));
59    HIP_CHECK(hipFree(dcsc_val));
60
61    HIPSPARSE_CHECK(hipsparseDestroy(handle));
62
63    return 0;
64}

hipsparseXcsr2cscEx2_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsr2cscEx2()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in CSR format
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
12    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 0, 3, 4};
13    std::vector<float> hcsrVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
14
15    int                   m      = 3;
16    int                   n      = 5;
17    int                   nnz    = 8;
18    hipsparseIndexBase_t  base   = HIPSPARSE_INDEX_BASE_ZERO;
19    hipsparseAction_t     action = HIPSPARSE_ACTION_NUMERIC;
20    hipsparseCsr2CscAlg_t alg    = HIPSPARSE_CSR2CSC_ALG_DEFAULT;
21
22    int*   dcsrRowPtr = nullptr;
23    int*   dcsrColInd = nullptr;
24    float* dcsrVal    = nullptr;
25    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
26    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
27    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
28
29    HIP_CHECK(
30        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
31    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
32    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
33
34    int*   dcscRowInd = nullptr;
35    int*   dcscColPtr = nullptr;
36    float* dcsc_val   = nullptr;
37    HIP_CHECK(hipMalloc((void**)&dcscRowInd, sizeof(int) * nnz));
38    HIP_CHECK(hipMalloc((void**)&dcscColPtr, sizeof(int) * (n + 1)));
39    HIP_CHECK(hipMalloc((void**)&dcsc_val, sizeof(float) * nnz));
40
41    size_t bufferSize;
42    HIPSPARSE_CHECK(hipsparseCsr2cscEx2_bufferSize(handle,
43                                                   m,
44                                                   n,
45                                                   nnz,
46                                                   dcsrVal,
47                                                   dcsrRowPtr,
48                                                   dcsrColInd,
49                                                   dcsc_val,
50                                                   dcscColPtr,
51                                                   dcscRowInd,
52                                                   HIP_R_32F,
53                                                   action,
54                                                   base,
55                                                   alg,
56                                                   &bufferSize));
57
58    void* dbuffer = nullptr;
59    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
60
61    HIPSPARSE_CHECK(hipsparseCsr2cscEx2(handle,
62                                        m,
63                                        n,
64                                        nnz,
65                                        dcsrVal,
66                                        dcsrRowPtr,
67                                        dcsrColInd,
68                                        dcsc_val,
69                                        dcscColPtr,
70                                        dcscRowInd,
71                                        HIP_R_32F,
72                                        action,
73                                        base,
74                                        alg,
75                                        dbuffer));
76
77    HIP_CHECK(hipFree(dcsrRowPtr));
78    HIP_CHECK(hipFree(dcsrColInd));
79    HIP_CHECK(hipFree(dcsrVal));
80
81    HIP_CHECK(hipFree(dcscRowInd));
82    HIP_CHECK(hipFree(dcscColPtr));
83    HIP_CHECK(hipFree(dcsc_val));
84
85    HIP_CHECK(hipFree(dbuffer));
86
87    HIPSPARSE_CHECK(hipsparseDestroy(handle));
88
89    return 0;
90}

hipsparseXcsr2hyb()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    hipsparseMatDescr_t descr;
 8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
 9
10    // Sparse matrix in CSR format
11    //     1 2 0 3 0
12    // A = 0 4 5 0 0
13    //     6 0 0 7 8
14    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
15    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 0, 3, 4};
16    std::vector<float> hcsrVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
17
18    int                     m             = 3;
19    int                     n             = 5;
20    int                     nnz           = 8;
21    int                     userEllWidth  = 2;
22    hipsparseHybPartition_t partitionType = HIPSPARSE_HYB_PARTITION_AUTO;
23
24    int*   dcsrRowPtr = nullptr;
25    int*   dcsrColInd = nullptr;
26    float* dcsrVal    = nullptr;
27    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
28    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
29    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
30
31    HIP_CHECK(
32        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
33    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
34    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
35
36    hipsparseHybMat_t hyb;
37    HIPSPARSE_CHECK(hipsparseCreateHybMat(&hyb));
38
39    HIPSPARSE_CHECK(hipsparseScsr2hyb(
40        handle, m, n, descr, dcsrVal, dcsrRowPtr, dcsrColInd, hyb, userEllWidth, partitionType));
41
42    HIP_CHECK(hipFree(dcsrRowPtr));
43    HIP_CHECK(hipFree(dcsrColInd));
44    HIP_CHECK(hipFree(dcsrVal));
45
46    HIPSPARSE_CHECK(hipsparseDestroyHybMat(hyb));
47    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
48
49    HIPSPARSE_CHECK(hipsparseDestroy(handle));
50
51    return 0;
52}

hipsparseXgebsr2gebsc_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXgebsr2gebsc()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

  1int main(int argc, char* argv[])
  2{
  3    // hipSPARSE handle
  4    hipsparseHandle_t handle;
  5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
  6
  7    // Sparse matrix in BSR format
  8    //     1 2 | 0 3 | 0 0
  9    //     0 4 | 5 0 | 0 1
 10    // A = 6 0 | 0 7 | 8 0
 11    //     ---------------
 12    //     0 0 | 3 0 | 2 2
 13    //     1 0 | 0 0 | 4 3
 14    //     7 2 | 0 0 | 1 4
 15    std::vector<int>   hbsrRowPtr = {0, 3, 6};
 16    std::vector<int>   hbsrColInd = {0, 1, 2, 0, 1, 2};
 17    std::vector<float> hbsrVal
 18        = {1.0f, 2.0f, 0.0f, 4.0f, 6.0f, 0.0f, 0.0f, 3.0f, 5.0f, 0.0f, 0.0f, 7.0f,
 19           0.0f, 0.0f, 0.0f, 1.0f, 8.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 7.0f, 2.0f,
 20           3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 2.0f, 4.0f, 3.0f, 1.0f, 4.0f};
 21
 22    int                  m           = 6;
 23    int                  n           = 6;
 24    int                  rowBlockDim = 3;
 25    int                  colBlockDim = 2;
 26    int                  nnzb        = 6;
 27    hipsparseDirection_t dir         = HIPSPARSE_DIRECTION_ROW;
 28    hipsparseAction_t    action      = HIPSPARSE_ACTION_NUMERIC;
 29    hipsparseIndexBase_t base        = HIPSPARSE_INDEX_BASE_ZERO;
 30
 31    int mb = (m + rowBlockDim - 1) / rowBlockDim;
 32    int nb = (n + colBlockDim - 1) / colBlockDim;
 33
 34    int*   dbsrRowPtr = nullptr;
 35    int*   dbsrColInd = nullptr;
 36    float* dbsrVal    = nullptr;
 37    HIP_CHECK(hipMalloc((void**)&dbsrRowPtr, sizeof(int) * (mb + 1)));
 38    HIP_CHECK(hipMalloc((void**)&dbsrColInd, sizeof(int) * nnzb));
 39    HIP_CHECK(hipMalloc((void**)&dbsrVal, sizeof(float) * rowBlockDim * colBlockDim * nnzb));
 40
 41    HIP_CHECK(
 42        hipMemcpy(dbsrRowPtr, hbsrRowPtr.data(), sizeof(int) * (mb + 1), hipMemcpyHostToDevice));
 43    HIP_CHECK(hipMemcpy(dbsrColInd, hbsrColInd.data(), sizeof(int) * nnzb, hipMemcpyHostToDevice));
 44    HIP_CHECK(hipMemcpy(dbsrVal,
 45                        hbsrVal.data(),
 46                        sizeof(float) * rowBlockDim * colBlockDim * nnzb,
 47                        hipMemcpyHostToDevice));
 48
 49    int*   dbscRowInd = nullptr;
 50    int*   dbscColPtr = nullptr;
 51    float* dbscVal    = nullptr;
 52    HIP_CHECK(hipMalloc((void**)&dbscRowInd, sizeof(int) * nnzb));
 53    HIP_CHECK(hipMalloc((void**)&dbscColPtr, sizeof(int) * (nb + 1)));
 54    HIP_CHECK(hipMalloc((void**)&dbscVal, sizeof(float) * rowBlockDim * colBlockDim * nnzb));
 55
 56    size_t bufferSize;
 57    HIPSPARSE_CHECK(hipsparseSgebsr2gebsc_bufferSize(handle,
 58                                                     mb,
 59                                                     nb,
 60                                                     nnzb,
 61                                                     dbsrVal,
 62                                                     dbsrRowPtr,
 63                                                     dbsrColInd,
 64                                                     rowBlockDim,
 65                                                     colBlockDim,
 66                                                     &bufferSize));
 67
 68    void* dbuffer = nullptr;
 69    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
 70
 71    HIPSPARSE_CHECK(hipsparseSgebsr2gebsc(handle,
 72                                          mb,
 73                                          nb,
 74                                          nnzb,
 75                                          dbsrVal,
 76                                          dbsrRowPtr,
 77                                          dbsrColInd,
 78                                          rowBlockDim,
 79                                          colBlockDim,
 80                                          dbscVal,
 81                                          dbscRowInd,
 82                                          dbscColPtr,
 83                                          action,
 84                                          base,
 85                                          dbuffer));
 86
 87    HIP_CHECK(hipFree(dbsrRowPtr));
 88    HIP_CHECK(hipFree(dbsrColInd));
 89    HIP_CHECK(hipFree(dbsrVal));
 90
 91    HIP_CHECK(hipFree(dbscRowInd));
 92    HIP_CHECK(hipFree(dbscColPtr));
 93    HIP_CHECK(hipFree(dbscVal));
 94
 95    HIP_CHECK(hipFree(dbuffer));
 96
 97    HIPSPARSE_CHECK(hipsparseDestroy(handle));
 98
 99    return 0;
100}

hipsparseXcsr2gebsr_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsr2gebsrNnz()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

  1int main(int argc, char* argv[])
  2{
  3    // hipSPARSE handle
  4    hipsparseHandle_t handle;
  5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
  6
  7    hipsparseMatDescr_t csr_descr;
  8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&csr_descr));
  9
 10    hipsparseMatDescr_t bsr_descr;
 11    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&bsr_descr));
 12
 13    // Sparse matrix in CSR format
 14    //     1 2 0 3 0 0
 15    //     0 4 5 0 0 1
 16    // A = 6 0 0 7 8 0
 17    //     0 0 3 0 2 2
 18    //     1 0 0 0 4 3
 19    //     7 2 0 0 1 4
 20    std::vector<int>   hcsrRowPtr = {0, 3, 6, 9, 12, 15, 19};
 21    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 5, 0, 3, 4, 2, 4, 5, 0, 4, 5, 0, 1, 4, 5};
 22    std::vector<float> hcsrVal    = {1.0f,
 23                                  2.0f,
 24                                  3.0f,
 25                                  4.0f,
 26                                  5.0f,
 27                                  1.0f,
 28                                  6.0f,
 29                                  7.0f,
 30                                  8.0f,
 31                                  3.0f,
 32                                  2.0f,
 33                                  2.0f,
 34                                  1.0f,
 35                                  4.0f,
 36                                  3.0f,
 37                                  7.0f,
 38                                  2.0f,
 39                                  1.0f,
 40                                  4.0f};
 41
 42    int                  m           = 6;
 43    int                  n           = 6;
 44    int                  nnz         = 19;
 45    int                  rowBlockDim = 3;
 46    int                  colBlockDim = 2;
 47    hipsparseDirection_t dir         = HIPSPARSE_DIRECTION_ROW;
 48    hipsparseIndexBase_t base        = HIPSPARSE_INDEX_BASE_ZERO;
 49
 50    int mb = (m + rowBlockDim - 1) / rowBlockDim;
 51    int nb = (n + colBlockDim - 1) / colBlockDim;
 52
 53    int*   dcsrRowPtr = nullptr;
 54    int*   dcsrColInd = nullptr;
 55    float* dcsrVal    = nullptr;
 56    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
 57    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
 58    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
 59
 60    HIP_CHECK(
 61        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
 62    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
 63    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
 64
 65    int* dbsrRowPtr = nullptr;
 66    HIP_CHECK(hipMalloc((void**)&dbsrRowPtr, sizeof(int) * (mb + 1)));
 67
 68    size_t bufferSize;
 69    HIPSPARSE_CHECK(hipsparseScsr2gebsr_bufferSize(handle,
 70                                                   dir,
 71                                                   m,
 72                                                   n,
 73                                                   csr_descr,
 74                                                   dcsrVal,
 75                                                   dcsrRowPtr,
 76                                                   dcsrColInd,
 77                                                   rowBlockDim,
 78                                                   colBlockDim,
 79                                                   &bufferSize));
 80
 81    void* dbuffer = nullptr;
 82    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
 83
 84    int nnzb;
 85    HIPSPARSE_CHECK(hipsparseXcsr2gebsrNnz(handle,
 86                                           dir,
 87                                           m,
 88                                           n,
 89                                           csr_descr,
 90                                           dcsrRowPtr,
 91                                           dcsrColInd,
 92                                           bsr_descr,
 93                                           dbsrRowPtr,
 94                                           rowBlockDim,
 95                                           colBlockDim,
 96                                           &nnzb,
 97                                           dbuffer));
 98
 99    int*   dbsrColInd = nullptr;
100    float* dbsrVal    = nullptr;
101    HIP_CHECK(hipMalloc((void**)&dbsrColInd, sizeof(int) * nnzb));
102    HIP_CHECK(hipMalloc((void**)&dbsrVal, sizeof(float) * rowBlockDim * colBlockDim * nnzb));
103
104    HIPSPARSE_CHECK(hipsparseScsr2gebsr(handle,
105                                        dir,
106                                        m,
107                                        n,
108                                        csr_descr,
109                                        dcsrVal,
110                                        dcsrRowPtr,
111                                        dcsrColInd,
112                                        bsr_descr,
113                                        dbsrVal,
114                                        dbsrRowPtr,
115                                        dbsrColInd,
116                                        rowBlockDim,
117                                        colBlockDim,
118                                        dbuffer));
119
120    HIP_CHECK(hipFree(dcsrRowPtr));
121    HIP_CHECK(hipFree(dcsrColInd));
122    HIP_CHECK(hipFree(dcsrVal));
123
124    HIP_CHECK(hipFree(dbsrRowPtr));
125    HIP_CHECK(hipFree(dbsrColInd));
126    HIP_CHECK(hipFree(dbsrVal));
127
128    HIP_CHECK(hipFree(dbuffer));
129
130    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(csr_descr));
131    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(bsr_descr));
132    HIPSPARSE_CHECK(hipsparseDestroy(handle));
133
134    return 0;
135}

hipsparseXcsr2gebsr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

  1int main(int argc, char* argv[])
  2{
  3    // hipSPARSE handle
  4    hipsparseHandle_t handle;
  5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
  6
  7    hipsparseMatDescr_t csr_descr;
  8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&csr_descr));
  9
 10    hipsparseMatDescr_t bsr_descr;
 11    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&bsr_descr));
 12
 13    // Sparse matrix in CSR format
 14    //     1 2 0 3 0 0
 15    //     0 4 5 0 0 1
 16    // A = 6 0 0 7 8 0
 17    //     0 0 3 0 2 2
 18    //     1 0 0 0 4 3
 19    //     7 2 0 0 1 4
 20    std::vector<int>   hcsrRowPtr = {0, 3, 6, 9, 12, 15, 19};
 21    std::vector<int>   hcsrColInd = {0, 1, 3, 1, 2, 5, 0, 3, 4, 2, 4, 5, 0, 4, 5, 0, 1, 4, 5};
 22    std::vector<float> hcsrVal    = {1.0f,
 23                                  2.0f,
 24                                  3.0f,
 25                                  4.0f,
 26                                  5.0f,
 27                                  1.0f,
 28                                  6.0f,
 29                                  7.0f,
 30                                  8.0f,
 31                                  3.0f,
 32                                  2.0f,
 33                                  2.0f,
 34                                  1.0f,
 35                                  4.0f,
 36                                  3.0f,
 37                                  7.0f,
 38                                  2.0f,
 39                                  1.0f,
 40                                  4.0f};
 41
 42    int                  m           = 6;
 43    int                  n           = 6;
 44    int                  nnz         = 19;
 45    int                  rowBlockDim = 3;
 46    int                  colBlockDim = 2;
 47    hipsparseDirection_t dir         = HIPSPARSE_DIRECTION_ROW;
 48    hipsparseIndexBase_t base        = HIPSPARSE_INDEX_BASE_ZERO;
 49
 50    int mb = (m + rowBlockDim - 1) / rowBlockDim;
 51    int nb = (n + colBlockDim - 1) / colBlockDim;
 52
 53    int*   dcsrRowPtr = nullptr;
 54    int*   dcsrColInd = nullptr;
 55    float* dcsrVal    = nullptr;
 56    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
 57    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
 58    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
 59
 60    HIP_CHECK(
 61        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
 62    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
 63    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
 64
 65    int* dbsrRowPtr = nullptr;
 66    HIP_CHECK(hipMalloc((void**)&dbsrRowPtr, sizeof(int) * (mb + 1)));
 67
 68    size_t bufferSize;
 69    HIPSPARSE_CHECK(hipsparseScsr2gebsr_bufferSize(handle,
 70                                                   dir,
 71                                                   m,
 72                                                   n,
 73                                                   csr_descr,
 74                                                   dcsrVal,
 75                                                   dcsrRowPtr,
 76                                                   dcsrColInd,
 77                                                   rowBlockDim,
 78                                                   colBlockDim,
 79                                                   &bufferSize));
 80
 81    void* dbuffer = nullptr;
 82    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
 83
 84    int nnzb;
 85    HIPSPARSE_CHECK(hipsparseXcsr2gebsrNnz(handle,
 86                                           dir,
 87                                           m,
 88                                           n,
 89                                           csr_descr,
 90                                           dcsrRowPtr,
 91                                           dcsrColInd,
 92                                           bsr_descr,
 93                                           dbsrRowPtr,
 94                                           rowBlockDim,
 95                                           colBlockDim,
 96                                           &nnzb,
 97                                           dbuffer));
 98
 99    int*   dbsrColInd = nullptr;
100    float* dbsrVal    = nullptr;
101    HIP_CHECK(hipMalloc((void**)&dbsrColInd, sizeof(int) * nnzb));
102    HIP_CHECK(hipMalloc((void**)&dbsrVal, sizeof(float) * rowBlockDim * colBlockDim * nnzb));
103
104    HIPSPARSE_CHECK(hipsparseScsr2gebsr(handle,
105                                        dir,
106                                        m,
107                                        n,
108                                        csr_descr,
109                                        dcsrVal,
110                                        dcsrRowPtr,
111                                        dcsrColInd,
112                                        bsr_descr,
113                                        dbsrVal,
114                                        dbsrRowPtr,
115                                        dbsrColInd,
116                                        rowBlockDim,
117                                        colBlockDim,
118                                        dbuffer));
119
120    HIP_CHECK(hipFree(dcsrRowPtr));
121    HIP_CHECK(hipFree(dcsrColInd));
122    HIP_CHECK(hipFree(dcsrVal));
123
124    HIP_CHECK(hipFree(dbsrRowPtr));
125    HIP_CHECK(hipFree(dbsrColInd));
126    HIP_CHECK(hipFree(dbsrVal));
127
128    HIP_CHECK(hipFree(dbuffer));
129
130    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(csr_descr));
131    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(bsr_descr));
132    HIPSPARSE_CHECK(hipsparseDestroy(handle));
133
134    return 0;
135}

hipsparseXbsr2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

  1int main(int argc, char* argv[])
  2{
  3    // hipSPARSE handle
  4    hipsparseHandle_t handle;
  5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
  6
  7    hipsparseMatDescr_t csr_descr;
  8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&csr_descr));
  9
 10    hipsparseMatDescr_t bsr_descr;
 11    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&bsr_descr));
 12
 13    // Sparse matrix in BSR format
 14    //     1 2 | 0 3 | 0 0
 15    //     0 4 | 5 0 | 0 1
 16    //     ---------------
 17    // A = 6 0 | 0 7 | 8 0
 18    //     0 0 | 3 0 | 2 2
 19    //     ---------------
 20    //     1 0 | 0 0 | 4 3
 21    //     7 2 | 0 0 | 1 4
 22    std::vector<int>   hbsrRowPtr = {0, 3, 6, 8};
 23    std::vector<int>   hbsrColInd = {0, 1, 2, 0, 1, 2, 0, 2};
 24    std::vector<float> hbsrVal = {1.0f, 2.0f, 0.0f, 4.0f, 0.0f, 3.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f,
 25                                  1.0f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 7.0f, 3.0f, 0.0f, 8.0f, 0.0f,
 26                                  2.0f, 2.0f, 1.0f, 0.0f, 7.0f, 2.0f, 4.0f, 3.0f, 1.0f, 4.0f};
 27
 28    int                  m        = 6;
 29    int                  n        = 6;
 30    int                  nnz      = 32;
 31    int                  mb       = 3;
 32    int                  nb       = 3;
 33    int                  nnzb     = 8;
 34    int                  blockDim = 2;
 35    hipsparseDirection_t dir      = HIPSPARSE_DIRECTION_ROW;
 36
 37    int*   dbsrRowPtr = nullptr;
 38    int*   dbsrColInd = nullptr;
 39    float* dbsrVal    = nullptr;
 40    HIP_CHECK(hipMalloc((void**)&dbsrRowPtr, sizeof(int) * (mb + 1)));
 41    HIP_CHECK(hipMalloc((void**)&dbsrColInd, sizeof(int) * nnzb));
 42    HIP_CHECK(hipMalloc((void**)&dbsrVal, sizeof(float) * blockDim * blockDim * nnzb));
 43
 44    HIP_CHECK(
 45        hipMemcpy(dbsrRowPtr, hbsrRowPtr.data(), sizeof(int) * (mb + 1), hipMemcpyHostToDevice));
 46    HIP_CHECK(hipMemcpy(dbsrColInd, hbsrColInd.data(), sizeof(int) * nnzb, hipMemcpyHostToDevice));
 47    HIP_CHECK(hipMemcpy(dbsrVal,
 48                        hbsrVal.data(),
 49                        sizeof(float) * blockDim * blockDim * nnzb,
 50                        hipMemcpyHostToDevice));
 51
 52    int*   dcsrRowPtr = nullptr;
 53    int*   dcsrColInd = nullptr;
 54    float* dcsrVal    = nullptr;
 55    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
 56    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
 57    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
 58
 59    HIPSPARSE_CHECK(hipsparseSbsr2csr(handle,
 60                                      dir,
 61                                      mb,
 62                                      nb,
 63                                      bsr_descr,
 64                                      dbsrVal,
 65                                      dbsrRowPtr,
 66                                      dbsrColInd,
 67                                      blockDim,
 68                                      csr_descr,
 69                                      dcsrVal,
 70                                      dcsrRowPtr,
 71                                      dcsrColInd));
 72
 73    std::vector<int>   hcsrRowPtr(m + 1);
 74    std::vector<int>   hcsrColInd(nnz);
 75    std::vector<float> hcsrVal(nnz);
 76
 77    // Copy back to the host
 78    HIP_CHECK(
 79        hipMemcpy(hcsrRowPtr.data(), dcsrRowPtr, sizeof(int) * (m + 1), hipMemcpyDeviceToHost));
 80    HIP_CHECK(hipMemcpy(hcsrColInd.data(), dcsrColInd, sizeof(int) * nnz, hipMemcpyDeviceToHost));
 81    HIP_CHECK(hipMemcpy(hcsrVal.data(), dcsrVal, sizeof(float) * nnz, hipMemcpyDeviceToHost));
 82
 83    std::cout << "C" << std::endl;
 84    for(int i = 0; i < m; i++)
 85    {
 86        int start = hcsrRowPtr[i];
 87        int end   = hcsrRowPtr[i + 1];
 88
 89        std::vector<float> temp(n, 0.0f);
 90        for(int j = start; j < end; j++)
 91        {
 92            temp[hcsrColInd[j]] = hcsrVal[j];
 93        }
 94
 95        for(int j = 0; j < n; j++)
 96        {
 97            std::cout << temp[j] << " ";
 98        }
 99        std::cout << std::endl;
100    }
101    std::cout << std::endl;
102
103    HIP_CHECK(hipFree(dbsrRowPtr));
104    HIP_CHECK(hipFree(dbsrColInd));
105    HIP_CHECK(hipFree(dbsrVal));
106
107    HIP_CHECK(hipFree(dcsrRowPtr));
108    HIP_CHECK(hipFree(dcsrColInd));
109    HIP_CHECK(hipFree(dcsrVal));
110
111    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(csr_descr));
112    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(bsr_descr));
113    HIPSPARSE_CHECK(hipsparseDestroy(handle));
114
115    return 0;
116}

hipsparseXgebsr2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    hipsparseMatDescr_t csr_descr;
 8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&csr_descr));
 9
10    hipsparseMatDescr_t bsr_descr;
11    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&bsr_descr));
12
13    // Sparse matrix in GEBSR format
14    //     1 2 | 0 3 | 0 0
15    //     0 4 | 5 0 | 0 1
16    // A = 6 0 | 0 7 | 8 0
17    //     ---------------
18    //     0 0 | 3 0 | 2 2
19    //     1 0 | 0 0 | 4 3
20    //     7 2 | 0 0 | 1 4
21    std::vector<int>   hbsrRowPtr = {0, 3, 6};
22    std::vector<int>   hbsrColInd = {0, 1, 2, 0, 1, 2};
23    std::vector<float> hbsrVal
24        = {1.0f, 2.0f, 0.0f, 4.0f, 6.0f, 0.0f, 0.0f, 3.0f, 5.0f, 0.0f, 0.0f, 7.0f,
25           0.0f, 0.0f, 0.0f, 1.0f, 8.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 7.0f, 2.0f,
26           3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 2.0f, 4.0f, 3.0f, 1.0f, 4.0f};
27
28    int                  m           = 6;
29    int                  n           = 6;
30    int                  nnz         = 36;
31    int                  mb          = 2;
32    int                  nb          = 3;
33    int                  nnzb        = 6;
34    int                  rowBlockDim = 3;
35    int                  colBlockDim = 2;
36    hipsparseDirection_t dir         = HIPSPARSE_DIRECTION_ROW;
37
38    int*   dbsrRowPtr = nullptr;
39    int*   dbsrColInd = nullptr;
40    float* dbsrVal    = nullptr;
41    HIP_CHECK(hipMalloc((void**)&dbsrRowPtr, sizeof(int) * (mb + 1)));
42    HIP_CHECK(hipMalloc((void**)&dbsrColInd, sizeof(int) * nnzb));
43    HIP_CHECK(hipMalloc((void**)&dbsrVal, sizeof(float) * rowBlockDim * colBlockDim * nnzb));
44
45    HIP_CHECK(
46        hipMemcpy(dbsrRowPtr, hbsrRowPtr.data(), sizeof(int) * (mb + 1), hipMemcpyHostToDevice));
47    HIP_CHECK(hipMemcpy(dbsrColInd, hbsrColInd.data(), sizeof(int) * nnzb, hipMemcpyHostToDevice));
48    HIP_CHECK(hipMemcpy(dbsrVal,
49                        hbsrVal.data(),
50                        sizeof(float) * rowBlockDim * colBlockDim * nnzb,
51                        hipMemcpyHostToDevice));
52
53    int*   dcsrRowPtr = nullptr;
54    int*   dcsrColInd = nullptr;
55    float* dcsrVal    = nullptr;
56    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
57    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
58    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
59
60    HIPSPARSE_CHECK(hipsparseSgebsr2csr(handle,
61                                        dir,
62                                        mb,
63                                        nb,
64                                        bsr_descr,
65                                        dbsrVal,
66                                        dbsrRowPtr,
67                                        dbsrColInd,
68                                        rowBlockDim,
69                                        colBlockDim,
70                                        csr_descr,
71                                        dcsrVal,
72                                        dcsrRowPtr,
73                                        dcsrColInd));
74
75    HIP_CHECK(hipFree(dbsrRowPtr));
76    HIP_CHECK(hipFree(dbsrColInd));
77    HIP_CHECK(hipFree(dbsrVal));
78
79    HIP_CHECK(hipFree(dcsrRowPtr));
80    HIP_CHECK(hipFree(dcsrColInd));
81    HIP_CHECK(hipFree(dcsrVal));
82
83    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(csr_descr));
84    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(bsr_descr));
85    HIPSPARSE_CHECK(hipsparseDestroy(handle));
86
87    return 0;
88}

hipsparseXcsr2csr_compress()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Matrix descriptor
 8    hipsparseMatDescr_t descr;
 9    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
10
11    // Sparse matrix in CSR format
12    //     1 2 0 3 0
13    // A = 0 4 5 0 0
14    //     6 0 0 7 8
15    std::vector<int>   hcsrRowPtrA = {0, 3, 5, 8};
16    std::vector<int>   hcsrColIndA = {0, 1, 3, 1, 2, 0, 3, 4};
17    std::vector<float> hcsrValA    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
18
19    int m    = 3;
20    int n    = 5;
21    int nnzA = 8;
22
23    float tol = 5.9f;
24
25    int*   dcsrRowPtrA = nullptr;
26    int*   dcsrColIndA = nullptr;
27    float* dcsrValA    = nullptr;
28    HIP_CHECK(hipMalloc((void**)&dcsrRowPtrA, sizeof(int) * (m + 1)));
29    HIP_CHECK(hipMalloc((void**)&dcsrColIndA, sizeof(int) * nnzA));
30    HIP_CHECK(hipMalloc((void**)&dcsrValA, sizeof(float) * nnzA));
31
32    HIP_CHECK(
33        hipMemcpy(dcsrRowPtrA, hcsrRowPtrA.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
34    HIP_CHECK(
35        hipMemcpy(dcsrColIndA, hcsrColIndA.data(), sizeof(int) * nnzA, hipMemcpyHostToDevice));
36    HIP_CHECK(hipMemcpy(dcsrValA, hcsrValA.data(), sizeof(float) * nnzA, hipMemcpyHostToDevice));
37
38    // Allocate memory for the nnz_per_row array
39    int* dnnz_per_row;
40    HIP_CHECK(hipMalloc((void**)&dnnz_per_row, sizeof(int) * m));
41
42    // Call snnz_compress() which fills in nnz_per_row array and finds the number
43    // of entries that will be in the compressed CSR matrix
44    int nnzC;
45    HIPSPARSE_CHECK(
46        hipsparseSnnz_compress(handle, m, descr, dcsrValA, dcsrRowPtrA, dnnz_per_row, &nnzC, tol));
47
48    int*   dcsrRowPtrC = nullptr;
49    int*   dcsrColIndC = nullptr;
50    float* dcsrValC    = nullptr;
51    HIP_CHECK(hipMalloc((void**)&dcsrRowPtrC, sizeof(int) * (m + 1)));
52    HIP_CHECK(hipMalloc((void**)&dcsrColIndC, sizeof(int) * nnzC));
53    HIP_CHECK(hipMalloc((void**)&dcsrValC, sizeof(float) * nnzC));
54
55    HIPSPARSE_CHECK(hipsparseScsr2csr_compress(handle,
56                                               m,
57                                               n,
58                                               descr,
59                                               dcsrValA,
60                                               dcsrColIndA,
61                                               dcsrRowPtrA,
62                                               nnzA,
63                                               dnnz_per_row,
64                                               dcsrValC,
65                                               dcsrColIndC,
66                                               dcsrRowPtrC,
67                                               tol));
68
69    HIP_CHECK(hipFree(dcsrRowPtrA));
70    HIP_CHECK(hipFree(dcsrColIndA));
71    HIP_CHECK(hipFree(dcsrValA));
72
73    HIP_CHECK(hipFree(dcsrRowPtrC));
74    HIP_CHECK(hipFree(dcsrColIndC));
75    HIP_CHECK(hipFree(dcsrValC));
76
77    HIP_CHECK(hipFree(dnnz_per_row));
78
79    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
80    HIPSPARSE_CHECK(hipsparseDestroy(handle));
81
82    return 0;
83}

hipsparseXpruneCsr2csr_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csr_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csrNnz()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csrByPercentage_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csrByPercentage_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csrNnzByPercentage()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXpruneCsr2csrByPercentage()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXhyb2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcoo2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in COO format
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcooRowInd = {0, 0, 0, 1, 1, 2, 2, 2};
12    std::vector<int>   hcooColInd = {0, 1, 3, 1, 2, 0, 3, 4};
13    std::vector<float> hcooVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
14
15    int                  m    = 3;
16    int                  n    = 5;
17    int                  nnz  = 8;
18    hipsparseIndexBase_t base = HIPSPARSE_INDEX_BASE_ZERO;
19
20    int* dcooRowInd = nullptr;
21    int* dcooColInd = nullptr;
22    HIP_CHECK(hipMalloc((void**)&dcooRowInd, sizeof(int) * nnz));
23    HIP_CHECK(hipMalloc((void**)&dcooColInd, sizeof(int) * nnz));
24
25    HIP_CHECK(hipMemcpy(dcooRowInd, hcooRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
26    HIP_CHECK(hipMemcpy(dcooColInd, hcooColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
27
28    int* dcsrRowPtr = nullptr;
29    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
30
31    HIPSPARSE_CHECK(hipsparseXcoo2csr(handle, dcooRowInd, nnz, m, dcsrRowPtr, base));
32
33    HIP_CHECK(hipFree(dcooRowInd));
34    HIP_CHECK(hipFree(dcooColInd));
35
36    HIP_CHECK(hipFree(dcsrRowPtr));
37
38    HIPSPARSE_CHECK(hipsparseDestroy(handle));
39
40    return 0;
41}

hipsparseCreateIdentityPermutation()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    int n = 10;
 8
 9    int* dperm = nullptr;
10    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * n));
11
12    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, n, dperm));
13
14    HIPSPARSE_CHECK(hipsparseDestroy(handle));
15
16    return 0;
17}

hipsparseXcsrsort_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    hipsparseMatDescr_t descr;
 8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
 9
10    // Sparse matrix in CSR format (columns unsorted)
11    //     1 2 0 3 0
12    // A = 0 4 5 0 0
13    //     6 0 0 7 8
14    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
15    std::vector<int>   hcsrColInd = {3, 1, 0, 2, 1, 0, 4, 3};
16    std::vector<float> hcsrVal    = {3.0f, 2.0f, 1.0f, 5.0f, 4.0f, 6.0f, 8.0f, 7.0f};
17
18    int m   = 3;
19    int n   = 5;
20    int nnz = 8;
21
22    int*   dcsrRowPtr = nullptr;
23    int*   dcsrColInd = nullptr;
24    float* dcsrVal    = nullptr;
25    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
26    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
27    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
28
29    HIP_CHECK(
30        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
31    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
32    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
33
34    size_t bufferSize;
35    HIPSPARSE_CHECK(
36        hipsparseXcsrsort_bufferSizeExt(handle, m, n, nnz, dcsrRowPtr, dcsrColInd, &bufferSize));
37
38    void* dbuffer = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
40
41    int* dperm = nullptr;
42    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
43    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
44
45    HIPSPARSE_CHECK(
46        hipsparseXcsrsort(handle, m, n, nnz, descr, dcsrRowPtr, dcsrColInd, dperm, dbuffer));
47
48    float* dcsrValSorted = nullptr;
49    HIP_CHECK(hipMalloc((void**)&dcsrValSorted, sizeof(float) * nnz));
50    HIPSPARSE_CHECK(
51        hipsparseSgthr(handle, nnz, dcsrVal, dcsrValSorted, dperm, HIPSPARSE_INDEX_BASE_ZERO));
52
53    HIP_CHECK(hipFree(dcsrRowPtr));
54    HIP_CHECK(hipFree(dcsrColInd));
55    HIP_CHECK(hipFree(dcsrVal));
56    HIP_CHECK(hipFree(dcsrValSorted));
57
58    HIP_CHECK(hipFree(dbuffer));
59    HIP_CHECK(hipFree(dperm));
60
61    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
62    HIPSPARSE_CHECK(hipsparseDestroy(handle));
63
64    return 0;
65}

hipsparseXcsrsort()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    hipsparseMatDescr_t descr;
 8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
 9
10    // Sparse matrix in CSR format (columns unsorted)
11    //     1 2 0 3 0
12    // A = 0 4 5 0 0
13    //     6 0 0 7 8
14    std::vector<int>   hcsrRowPtr = {0, 3, 5, 8};
15    std::vector<int>   hcsrColInd = {3, 1, 0, 2, 1, 0, 4, 3};
16    std::vector<float> hcsrVal    = {3.0f, 2.0f, 1.0f, 5.0f, 4.0f, 6.0f, 8.0f, 7.0f};
17
18    int m   = 3;
19    int n   = 5;
20    int nnz = 8;
21
22    int*   dcsrRowPtr = nullptr;
23    int*   dcsrColInd = nullptr;
24    float* dcsrVal    = nullptr;
25    HIP_CHECK(hipMalloc((void**)&dcsrRowPtr, sizeof(int) * (m + 1)));
26    HIP_CHECK(hipMalloc((void**)&dcsrColInd, sizeof(int) * nnz));
27    HIP_CHECK(hipMalloc((void**)&dcsrVal, sizeof(float) * nnz));
28
29    HIP_CHECK(
30        hipMemcpy(dcsrRowPtr, hcsrRowPtr.data(), sizeof(int) * (m + 1), hipMemcpyHostToDevice));
31    HIP_CHECK(hipMemcpy(dcsrColInd, hcsrColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
32    HIP_CHECK(hipMemcpy(dcsrVal, hcsrVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
33
34    size_t bufferSize;
35    HIPSPARSE_CHECK(
36        hipsparseXcsrsort_bufferSizeExt(handle, m, n, nnz, dcsrRowPtr, dcsrColInd, &bufferSize));
37
38    void* dbuffer = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
40
41    int* dperm = nullptr;
42    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
43    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
44
45    HIPSPARSE_CHECK(
46        hipsparseXcsrsort(handle, m, n, nnz, descr, dcsrRowPtr, dcsrColInd, dperm, dbuffer));
47
48    float* dcsrValSorted = nullptr;
49    HIP_CHECK(hipMalloc((void**)&dcsrValSorted, sizeof(float) * nnz));
50    HIPSPARSE_CHECK(
51        hipsparseSgthr(handle, nnz, dcsrVal, dcsrValSorted, dperm, HIPSPARSE_INDEX_BASE_ZERO));
52
53    HIP_CHECK(hipFree(dcsrRowPtr));
54    HIP_CHECK(hipFree(dcsrColInd));
55    HIP_CHECK(hipFree(dcsrVal));
56    HIP_CHECK(hipFree(dcsrValSorted));
57
58    HIP_CHECK(hipFree(dbuffer));
59    HIP_CHECK(hipFree(dperm));
60
61    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
62    HIPSPARSE_CHECK(hipsparseDestroy(handle));
63
64    return 0;
65}

hipsparseXcscsort_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    hipsparseMatDescr_t descr;
 8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
 9
10    // Sparse matrix in CSC format (unsorted row indices)
11    //     1 2 0 3 0
12    // A = 0 4 5 0 0
13    //     6 0 0 7 8
14    std::vector<int>   hcscRowInd = {2, 0, 1, 0, 1, 2, 0, 2};
15    std::vector<int>   hcscColPtr = {0, 2, 4, 5, 7, 8};
16    std::vector<float> hcscVal    = {6.0f, 1.0f, 4.0f, 2.0f, 5.0f, 7.0f, 3.0f, 8.0f};
17
18    int m   = 3;
19    int n   = 5;
20    int nnz = 8;
21
22    int*   dcscRowInd = nullptr;
23    int*   dcscColPtr = nullptr;
24    float* dcscVal    = nullptr;
25    HIP_CHECK(hipMalloc((void**)&dcscRowInd, sizeof(int) * nnz));
26    HIP_CHECK(hipMalloc((void**)&dcscColPtr, sizeof(int) * (n + 1)));
27    HIP_CHECK(hipMalloc((void**)&dcscVal, sizeof(float) * nnz));
28
29    HIP_CHECK(hipMemcpy(dcscRowInd, hcscRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
30    HIP_CHECK(
31        hipMemcpy(dcscColPtr, hcscColPtr.data(), sizeof(int) * (n + 1), hipMemcpyHostToDevice));
32    HIP_CHECK(hipMemcpy(dcscVal, hcscVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
33
34    size_t bufferSize;
35    HIPSPARSE_CHECK(
36        hipsparseXcscsort_bufferSizeExt(handle, m, n, nnz, dcscColPtr, dcscRowInd, &bufferSize));
37
38    void* dbuffer = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
40
41    int* dperm = nullptr;
42    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
43    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
44
45    HIPSPARSE_CHECK(
46        hipsparseXcscsort(handle, m, n, nnz, descr, dcscColPtr, dcscRowInd, dperm, dbuffer));
47
48    float* dcscValSorted = nullptr;
49    HIP_CHECK(hipMalloc((void**)&dcscValSorted, sizeof(float) * nnz));
50    HIPSPARSE_CHECK(
51        hipsparseSgthr(handle, nnz, dcscVal, dcscValSorted, dperm, HIPSPARSE_INDEX_BASE_ZERO));
52
53    HIP_CHECK(hipFree(dcscRowInd));
54    HIP_CHECK(hipFree(dcscColPtr));
55    HIP_CHECK(hipFree(dcscVal));
56    HIP_CHECK(hipFree(dcscValSorted));
57
58    HIP_CHECK(hipFree(dbuffer));
59    HIP_CHECK(hipFree(dperm));
60
61    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
62    HIPSPARSE_CHECK(hipsparseDestroy(handle));
63
64    return 0;
65}

hipsparseXcscsort()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    hipsparseMatDescr_t descr;
 8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descr));
 9
10    // Sparse matrix in CSC format (unsorted row indices)
11    //     1 2 0 3 0
12    // A = 0 4 5 0 0
13    //     6 0 0 7 8
14    std::vector<int>   hcscRowInd = {2, 0, 1, 0, 1, 2, 0, 2};
15    std::vector<int>   hcscColPtr = {0, 2, 4, 5, 7, 8};
16    std::vector<float> hcscVal    = {6.0f, 1.0f, 4.0f, 2.0f, 5.0f, 7.0f, 3.0f, 8.0f};
17
18    int m   = 3;
19    int n   = 5;
20    int nnz = 8;
21
22    int*   dcscRowInd = nullptr;
23    int*   dcscColPtr = nullptr;
24    float* dcscVal    = nullptr;
25    HIP_CHECK(hipMalloc((void**)&dcscRowInd, sizeof(int) * nnz));
26    HIP_CHECK(hipMalloc((void**)&dcscColPtr, sizeof(int) * (n + 1)));
27    HIP_CHECK(hipMalloc((void**)&dcscVal, sizeof(float) * nnz));
28
29    HIP_CHECK(hipMemcpy(dcscRowInd, hcscRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
30    HIP_CHECK(
31        hipMemcpy(dcscColPtr, hcscColPtr.data(), sizeof(int) * (n + 1), hipMemcpyHostToDevice));
32    HIP_CHECK(hipMemcpy(dcscVal, hcscVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
33
34    size_t bufferSize;
35    HIPSPARSE_CHECK(
36        hipsparseXcscsort_bufferSizeExt(handle, m, n, nnz, dcscColPtr, dcscRowInd, &bufferSize));
37
38    void* dbuffer = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
40
41    int* dperm = nullptr;
42    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
43    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
44
45    HIPSPARSE_CHECK(
46        hipsparseXcscsort(handle, m, n, nnz, descr, dcscColPtr, dcscRowInd, dperm, dbuffer));
47
48    float* dcscValSorted = nullptr;
49    HIP_CHECK(hipMalloc((void**)&dcscValSorted, sizeof(float) * nnz));
50    HIPSPARSE_CHECK(
51        hipsparseSgthr(handle, nnz, dcscVal, dcscValSorted, dperm, HIPSPARSE_INDEX_BASE_ZERO));
52
53    HIP_CHECK(hipFree(dcscRowInd));
54    HIP_CHECK(hipFree(dcscColPtr));
55    HIP_CHECK(hipFree(dcscVal));
56    HIP_CHECK(hipFree(dcscValSorted));
57
58    HIP_CHECK(hipFree(dbuffer));
59    HIP_CHECK(hipFree(dperm));
60
61    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descr));
62    HIPSPARSE_CHECK(hipsparseDestroy(handle));
63
64    return 0;
65}

hipsparseXcoosort_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in COO format (with unsorted row indices)
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcooRowInd = {0, 2, 0, 1, 1, 0, 2, 2};
12    std::vector<int>   hcooColInd = {0, 0, 1, 1, 2, 3, 3, 4};
13    std::vector<float> hcooVal    = {1.0f, 6.0f, 2.0f, 4.0f, 5.0f, 3.0f, 7.0f, 8.0f};
14
15    int                  m    = 3;
16    int                  n    = 5;
17    int                  nnz  = 8;
18    hipsparseIndexBase_t base = HIPSPARSE_INDEX_BASE_ZERO;
19
20    int*   dcooRowInd = nullptr;
21    int*   dcooColInd = nullptr;
22    float* dcooVal    = nullptr;
23    HIP_CHECK(hipMalloc((void**)&dcooRowInd, sizeof(int) * nnz));
24    HIP_CHECK(hipMalloc((void**)&dcooColInd, sizeof(int) * nnz));
25    HIP_CHECK(hipMalloc((void**)&dcooVal, sizeof(float) * nnz));
26
27    HIP_CHECK(hipMemcpy(dcooRowInd, hcooRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
28    HIP_CHECK(hipMemcpy(dcooColInd, hcooColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
29    HIP_CHECK(hipMemcpy(dcooVal, hcooVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
30
31    size_t bufferSize;
32    HIPSPARSE_CHECK(
33        hipsparseXcoosort_bufferSizeExt(handle, m, n, nnz, dcooRowInd, dcooColInd, &bufferSize));
34
35    void* dbuffer = nullptr;
36    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
37
38    int* dperm = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
40    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
41
42    HIPSPARSE_CHECK(
43        hipsparseXcoosortByRow(handle, m, n, nnz, dcooRowInd, dcooColInd, dperm, dbuffer));
44
45    float* dcooValSorted = nullptr;
46    HIP_CHECK(hipMalloc((void**)&dcooValSorted, sizeof(float) * nnz));
47    HIPSPARSE_CHECK(hipsparseSgthr(handle, nnz, dcooVal, dcooValSorted, dperm, base));
48
49    HIP_CHECK(hipFree(dcooRowInd));
50    HIP_CHECK(hipFree(dcooColInd));
51    HIP_CHECK(hipFree(dcooVal));
52    HIP_CHECK(hipFree(dcooValSorted));
53    HIP_CHECK(hipFree(dperm));
54
55    HIP_CHECK(hipFree(dbuffer));
56
57    HIPSPARSE_CHECK(hipsparseDestroy(handle));
58
59    return 0;
60}

hipsparseXcoosortByRow()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in COO format (with unsorted row indices)
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcooRowInd = {0, 2, 0, 1, 1, 0, 2, 2};
12    std::vector<int>   hcooColInd = {0, 0, 1, 1, 2, 3, 3, 4};
13    std::vector<float> hcooVal    = {1.0f, 6.0f, 2.0f, 4.0f, 5.0f, 3.0f, 7.0f, 8.0f};
14
15    int                  m    = 3;
16    int                  n    = 5;
17    int                  nnz  = 8;
18    hipsparseIndexBase_t base = HIPSPARSE_INDEX_BASE_ZERO;
19
20    int*   dcooRowInd = nullptr;
21    int*   dcooColInd = nullptr;
22    float* dcooVal    = nullptr;
23    HIP_CHECK(hipMalloc((void**)&dcooRowInd, sizeof(int) * nnz));
24    HIP_CHECK(hipMalloc((void**)&dcooColInd, sizeof(int) * nnz));
25    HIP_CHECK(hipMalloc((void**)&dcooVal, sizeof(float) * nnz));
26
27    HIP_CHECK(hipMemcpy(dcooRowInd, hcooRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
28    HIP_CHECK(hipMemcpy(dcooColInd, hcooColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
29    HIP_CHECK(hipMemcpy(dcooVal, hcooVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
30
31    size_t bufferSize;
32    HIPSPARSE_CHECK(
33        hipsparseXcoosort_bufferSizeExt(handle, m, n, nnz, dcooRowInd, dcooColInd, &bufferSize));
34
35    void* dbuffer = nullptr;
36    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
37
38    int* dperm = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
40    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
41
42    HIPSPARSE_CHECK(
43        hipsparseXcoosortByRow(handle, m, n, nnz, dcooRowInd, dcooColInd, dperm, dbuffer));
44
45    float* dcooValSorted = nullptr;
46    HIP_CHECK(hipMalloc((void**)&dcooValSorted, sizeof(float) * nnz));
47    HIPSPARSE_CHECK(hipsparseSgthr(handle, nnz, dcooVal, dcooValSorted, dperm, base));
48
49    HIP_CHECK(hipFree(dcooRowInd));
50    HIP_CHECK(hipFree(dcooColInd));
51    HIP_CHECK(hipFree(dcooVal));
52    HIP_CHECK(hipFree(dcooValSorted));
53    HIP_CHECK(hipFree(dperm));
54
55    HIP_CHECK(hipFree(dbuffer));
56
57    HIPSPARSE_CHECK(hipsparseDestroy(handle));
58
59    return 0;
60}

hipsparseXcoosortByColumn()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

 1int main(int argc, char* argv[])
 2{
 3    // hipSPARSE handle
 4    hipsparseHandle_t handle;
 5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
 6
 7    // Sparse matrix in COO format (with unsorted column indices)
 8    //     1 2 0 3 0
 9    // A = 0 4 5 0 0
10    //     6 0 0 7 8
11    std::vector<int>   hcooRowInd = {0, 0, 0, 1, 1, 2, 2, 2};
12    std::vector<int>   hcooColInd = {0, 1, 3, 1, 2, 0, 3, 4};
13    std::vector<float> hcooVal    = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
14
15    int                  m    = 3;
16    int                  n    = 5;
17    int                  nnz  = 8;
18    hipsparseIndexBase_t base = HIPSPARSE_INDEX_BASE_ZERO;
19
20    int*   dcooRowInd = nullptr;
21    int*   dcooColInd = nullptr;
22    float* dcooVal    = nullptr;
23    HIP_CHECK(hipMalloc((void**)&dcooRowInd, sizeof(int) * nnz));
24    HIP_CHECK(hipMalloc((void**)&dcooColInd, sizeof(int) * nnz));
25    HIP_CHECK(hipMalloc((void**)&dcooVal, sizeof(float) * nnz));
26
27    HIP_CHECK(hipMemcpy(dcooRowInd, hcooRowInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
28    HIP_CHECK(hipMemcpy(dcooColInd, hcooColInd.data(), sizeof(int) * nnz, hipMemcpyHostToDevice));
29    HIP_CHECK(hipMemcpy(dcooVal, hcooVal.data(), sizeof(float) * nnz, hipMemcpyHostToDevice));
30
31    size_t bufferSize;
32    HIPSPARSE_CHECK(
33        hipsparseXcoosort_bufferSizeExt(handle, m, n, nnz, dcooRowInd, dcooColInd, &bufferSize));
34
35    void* dbuffer = nullptr;
36    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
37
38    int* dperm = nullptr;
39    HIP_CHECK(hipMalloc((void**)&dperm, sizeof(int) * nnz));
40    HIPSPARSE_CHECK(hipsparseCreateIdentityPermutation(handle, nnz, dperm));
41
42    HIPSPARSE_CHECK(
43        hipsparseXcoosortByColumn(handle, m, n, nnz, dcooRowInd, dcooColInd, dperm, dbuffer));
44
45    float* dcooValSorted = nullptr;
46    HIP_CHECK(hipMalloc((void**)&dcooValSorted, sizeof(float) * nnz));
47    HIPSPARSE_CHECK(hipsparseSgthr(handle, nnz, dcooVal, dcooValSorted, dperm, base));
48
49    HIP_CHECK(hipFree(dcooRowInd));
50    HIP_CHECK(hipFree(dcooColInd));
51    HIP_CHECK(hipFree(dcooVal));
52
53    HIP_CHECK(hipFree(dcooValSorted));
54    HIP_CHECK(hipFree(dperm));
55
56    HIP_CHECK(hipFree(dbuffer));
57
58    HIPSPARSE_CHECK(hipsparseDestroy(handle));
59
60    return 0;
61}

hipsparseXgebsr2gebsr_bufferSize()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXgebsr2gebsrNnz()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

  1int main(int argc, char* argv[])
  2{
  3    // hipSPARSE handle
  4    hipsparseHandle_t handle;
  5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
  6
  7    hipsparseMatDescr_t descrA;
  8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descrA));
  9
 10    hipsparseMatDescr_t descrC;
 11    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descrC));
 12
 13    // Sparse matrix in BSR format
 14    //     1 2 | 0 3 | 0 0
 15    //     0 4 | 5 0 | 0 1
 16    // A = 6 0 | 0 7 | 8 0
 17    //     ---------------
 18    //     0 0 | 3 0 | 2 2
 19    //     1 0 | 0 0 | 4 3
 20    //     7 2 | 0 0 | 1 4
 21    std::vector<int>   hbsrRowPtrA = {0, 3, 6};
 22    std::vector<int>   hbsrColIndA = {0, 1, 2, 0, 1, 2};
 23    std::vector<float> hbsrValA
 24        = {1.0f, 2.0f, 0.0f, 4.0f, 6.0f, 0.0f, 0.0f, 3.0f, 5.0f, 0.0f, 0.0f, 7.0f,
 25           0.0f, 0.0f, 0.0f, 1.0f, 8.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 7.0f, 2.0f,
 26           3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 2.0f, 4.0f, 3.0f, 1.0f, 4.0f};
 27
 28    int                  m            = 6;
 29    int                  n            = 6;
 30    int                  rowBlockDimA = 3;
 31    int                  colBlockDimA = 2;
 32    int                  rowBlockDimC = 2;
 33    int                  colBlockDimC = 2;
 34    hipsparseDirection_t dirA         = HIPSPARSE_DIRECTION_ROW;
 35
 36    int mbA   = (m + rowBlockDimA - 1) / rowBlockDimA;
 37    int nbA   = (n + colBlockDimA - 1) / colBlockDimA;
 38    int nnzbA = 6;
 39
 40    int mbC = (m + rowBlockDimC - 1) / rowBlockDimC;
 41    int nbC = (n + colBlockDimC - 1) / colBlockDimC;
 42
 43    int*   dbsrRowPtrA = nullptr;
 44    int*   dbsrColIndA = nullptr;
 45    float* dbsrValA    = nullptr;
 46
 47    HIP_CHECK(hipMalloc((void**)&dbsrRowPtrA, sizeof(int) * (mbA + 1)));
 48    HIP_CHECK(hipMalloc((void**)&dbsrColIndA, sizeof(int) * nnzbA));
 49    HIP_CHECK(hipMalloc((void**)&dbsrValA, sizeof(float) * rowBlockDimA * colBlockDimA * nnzbA));
 50
 51    HIP_CHECK(
 52        hipMemcpy(dbsrRowPtrA, hbsrRowPtrA.data(), sizeof(int) * (mbA + 1), hipMemcpyHostToDevice));
 53    HIP_CHECK(
 54        hipMemcpy(dbsrColIndA, hbsrColIndA.data(), sizeof(int) * nnzbA, hipMemcpyHostToDevice));
 55    HIP_CHECK(hipMemcpy(dbsrValA,
 56                        hbsrValA.data(),
 57                        sizeof(float) * rowBlockDimA * colBlockDimA * nnzbA,
 58                        hipMemcpyHostToDevice));
 59
 60    int* dbsrRowPtrC = nullptr;
 61    HIP_CHECK(hipMalloc((void**)&dbsrRowPtrC, sizeof(int) * (mbC + 1)));
 62
 63    int bufferSize;
 64    HIPSPARSE_CHECK(hipsparseSgebsr2gebsr_bufferSize(handle,
 65                                                     dirA,
 66                                                     mbA,
 67                                                     nbA,
 68                                                     nnzbA,
 69                                                     descrA,
 70                                                     dbsrValA,
 71                                                     dbsrRowPtrA,
 72                                                     dbsrColIndA,
 73                                                     rowBlockDimA,
 74                                                     colBlockDimA,
 75                                                     rowBlockDimC,
 76                                                     colBlockDimC,
 77                                                     &bufferSize));
 78
 79    void* dbuffer = nullptr;
 80    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
 81
 82    int nnzbC;
 83    HIPSPARSE_CHECK(hipsparseXgebsr2gebsrNnz(handle,
 84                                             dirA,
 85                                             mbA,
 86                                             nbA,
 87                                             nnzbA,
 88                                             descrA,
 89                                             dbsrRowPtrA,
 90                                             dbsrColIndA,
 91                                             rowBlockDimA,
 92                                             colBlockDimA,
 93                                             descrC,
 94                                             dbsrRowPtrC,
 95                                             rowBlockDimC,
 96                                             colBlockDimC,
 97                                             &nnzbC,
 98                                             dbuffer));
 99
100    HIP_CHECK(hipDeviceSynchronize());
101
102    int*   dbsrColIndC = nullptr;
103    float* dbsrValC    = nullptr;
104    HIP_CHECK(hipMalloc((void**)&dbsrColIndC, sizeof(int) * nnzbC));
105    HIP_CHECK(hipMalloc((void**)&dbsrValC, sizeof(float) * rowBlockDimC * colBlockDimC * nnzbC));
106
107    HIPSPARSE_CHECK(hipsparseSgebsr2gebsr(handle,
108                                          dirA,
109                                          mbA,
110                                          nbA,
111                                          nnzbA,
112                                          descrA,
113                                          dbsrValA,
114                                          dbsrRowPtrA,
115                                          dbsrColIndA,
116                                          rowBlockDimA,
117                                          colBlockDimA,
118                                          descrC,
119                                          dbsrValC,
120                                          dbsrRowPtrC,
121                                          dbsrColIndC,
122                                          rowBlockDimC,
123                                          colBlockDimC,
124                                          dbuffer));
125
126    HIP_CHECK(hipFree(dbsrRowPtrA));
127    HIP_CHECK(hipFree(dbsrColIndA));
128    HIP_CHECK(hipFree(dbsrValA));
129
130    HIP_CHECK(hipFree(dbsrRowPtrC));
131    HIP_CHECK(hipFree(dbsrColIndC));
132    HIP_CHECK(hipFree(dbsrValC));
133
134    HIP_CHECK(hipFree(dbuffer));
135
136    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descrA));
137    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descrC));
138    HIPSPARSE_CHECK(hipsparseDestroy(handle));
139
140    return 0;
141}

hipsparseXgebsr2gebsr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

  1int main(int argc, char* argv[])
  2{
  3    // hipSPARSE handle
  4    hipsparseHandle_t handle;
  5    HIPSPARSE_CHECK(hipsparseCreate(&handle));
  6
  7    hipsparseMatDescr_t descrA;
  8    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descrA));
  9
 10    hipsparseMatDescr_t descrC;
 11    HIPSPARSE_CHECK(hipsparseCreateMatDescr(&descrC));
 12
 13    // Sparse matrix in BSR format
 14    //     1 2 | 0 3 | 0 0
 15    //     0 4 | 5 0 | 0 1
 16    // A = 6 0 | 0 7 | 8 0
 17    //     ---------------
 18    //     0 0 | 3 0 | 2 2
 19    //     1 0 | 0 0 | 4 3
 20    //     7 2 | 0 0 | 1 4
 21    std::vector<int>   hbsrRowPtrA = {0, 3, 6};
 22    std::vector<int>   hbsrColIndA = {0, 1, 2, 0, 1, 2};
 23    std::vector<float> hbsrValA
 24        = {1.0f, 2.0f, 0.0f, 4.0f, 6.0f, 0.0f, 0.0f, 3.0f, 5.0f, 0.0f, 0.0f, 7.0f,
 25           0.0f, 0.0f, 0.0f, 1.0f, 8.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 7.0f, 2.0f,
 26           3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 2.0f, 4.0f, 3.0f, 1.0f, 4.0f};
 27
 28    int                  m            = 6;
 29    int                  n            = 6;
 30    int                  rowBlockDimA = 3;
 31    int                  colBlockDimA = 2;
 32    int                  rowBlockDimC = 2;
 33    int                  colBlockDimC = 2;
 34    hipsparseDirection_t dirA         = HIPSPARSE_DIRECTION_ROW;
 35
 36    int mbA   = (m + rowBlockDimA - 1) / rowBlockDimA;
 37    int nbA   = (n + colBlockDimA - 1) / colBlockDimA;
 38    int nnzbA = 6;
 39
 40    int mbC = (m + rowBlockDimC - 1) / rowBlockDimC;
 41    int nbC = (n + colBlockDimC - 1) / colBlockDimC;
 42
 43    int*   dbsrRowPtrA = nullptr;
 44    int*   dbsrColIndA = nullptr;
 45    float* dbsrValA    = nullptr;
 46
 47    HIP_CHECK(hipMalloc((void**)&dbsrRowPtrA, sizeof(int) * (mbA + 1)));
 48    HIP_CHECK(hipMalloc((void**)&dbsrColIndA, sizeof(int) * nnzbA));
 49    HIP_CHECK(hipMalloc((void**)&dbsrValA, sizeof(float) * rowBlockDimA * colBlockDimA * nnzbA));
 50
 51    HIP_CHECK(
 52        hipMemcpy(dbsrRowPtrA, hbsrRowPtrA.data(), sizeof(int) * (mbA + 1), hipMemcpyHostToDevice));
 53    HIP_CHECK(
 54        hipMemcpy(dbsrColIndA, hbsrColIndA.data(), sizeof(int) * nnzbA, hipMemcpyHostToDevice));
 55    HIP_CHECK(hipMemcpy(dbsrValA,
 56                        hbsrValA.data(),
 57                        sizeof(float) * rowBlockDimA * colBlockDimA * nnzbA,
 58                        hipMemcpyHostToDevice));
 59
 60    int* dbsrRowPtrC = nullptr;
 61    HIP_CHECK(hipMalloc((void**)&dbsrRowPtrC, sizeof(int) * (mbC + 1)));
 62
 63    int bufferSize;
 64    HIPSPARSE_CHECK(hipsparseSgebsr2gebsr_bufferSize(handle,
 65                                                     dirA,
 66                                                     mbA,
 67                                                     nbA,
 68                                                     nnzbA,
 69                                                     descrA,
 70                                                     dbsrValA,
 71                                                     dbsrRowPtrA,
 72                                                     dbsrColIndA,
 73                                                     rowBlockDimA,
 74                                                     colBlockDimA,
 75                                                     rowBlockDimC,
 76                                                     colBlockDimC,
 77                                                     &bufferSize));
 78
 79    void* dbuffer = nullptr;
 80    HIP_CHECK(hipMalloc((void**)&dbuffer, bufferSize));
 81
 82    int nnzbC;
 83    HIPSPARSE_CHECK(hipsparseXgebsr2gebsrNnz(handle,
 84                                             dirA,
 85                                             mbA,
 86                                             nbA,
 87                                             nnzbA,
 88                                             descrA,
 89                                             dbsrRowPtrA,
 90                                             dbsrColIndA,
 91                                             rowBlockDimA,
 92                                             colBlockDimA,
 93                                             descrC,
 94                                             dbsrRowPtrC,
 95                                             rowBlockDimC,
 96                                             colBlockDimC,
 97                                             &nnzbC,
 98                                             dbuffer));
 99
100    HIP_CHECK(hipDeviceSynchronize());
101
102    int*   dbsrColIndC = nullptr;
103    float* dbsrValC    = nullptr;
104    HIP_CHECK(hipMalloc((void**)&dbsrColIndC, sizeof(int) * nnzbC));
105    HIP_CHECK(hipMalloc((void**)&dbsrValC, sizeof(float) * rowBlockDimC * colBlockDimC * nnzbC));
106
107    HIPSPARSE_CHECK(hipsparseSgebsr2gebsr(handle,
108                                          dirA,
109                                          mbA,
110                                          nbA,
111                                          nnzbA,
112                                          descrA,
113                                          dbsrValA,
114                                          dbsrRowPtrA,
115                                          dbsrColIndA,
116                                          rowBlockDimA,
117                                          colBlockDimA,
118                                          descrC,
119                                          dbsrValC,
120                                          dbsrRowPtrC,
121                                          dbsrColIndC,
122                                          rowBlockDimC,
123                                          colBlockDimC,
124                                          dbuffer));
125
126    HIP_CHECK(hipFree(dbsrRowPtrA));
127    HIP_CHECK(hipFree(dbsrColIndA));
128    HIP_CHECK(hipFree(dbsrValA));
129
130    HIP_CHECK(hipFree(dbsrRowPtrC));
131    HIP_CHECK(hipFree(dbsrColIndC));
132    HIP_CHECK(hipFree(dbsrValC));
133
134    HIP_CHECK(hipFree(dbuffer));
135
136    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descrA));
137    HIPSPARSE_CHECK(hipsparseDestroyMatDescr(descrC));
138    HIPSPARSE_CHECK(hipsparseDestroy(handle));
139
140    return 0;
141}

hipsparseXcsru2csr_bufferSizeExt()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsru2csr()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

hipsparseXcsr2csru()#

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml

Warning

doxygenfunction: Cannot find file: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipsparse/checkouts/7.13.0-preview/projects/hipsparse/docs/doxygen/xml/index.xml