@@ -349,23 +349,23 @@ end
349
349
350
350
# # CSR to COO and vice-versa
351
351
352
+ # TODO : we can do similar for CSC conversions, but that requires the columns to be sorted
353
+
352
354
function CuSparseMatrixCSR (coo:: CuSparseMatrixCOO{Tv} , ind:: SparseChar = ' O' ) where {Tv}
353
355
m,n = size (coo)
354
- nnz = coo. nnz
355
- csrRowPtr = CUDA. zeros (Cint, nnz)
356
- cusparseXcoo2csr (handle (), coo. rowInd, nnz, m, csrRowPtr, ind)
357
- CuSparseMatrixCSR {Tv} (csrRowPtr, coo. colInd, coo. nzVal, size (coo))
356
+ csrRowPtr = CuVector {Cint} (undef, m+ 1 )
357
+ cusparseXcoo2csr (handle (), coo. rowInd, nnz (coo), m, csrRowPtr, ind)
358
+ CuSparseMatrixCSR {Tv} (csrRowPtr, coo. colInd, nonzeros (coo), size (coo))
358
359
end
359
360
360
361
function CuSparseMatrixCOO (csr:: CuSparseMatrixCSR{Tv} , ind:: SparseChar = ' O' ) where {Tv}
361
362
m,n = size (csr)
362
- nnz = csr. nnz
363
- cooRowInd = CUDA. zeros (Cint, nnz)
364
- cusparseXcsr2coo (handle (), csr. rowPtr, nnz, m, cooRowInd, ind)
365
- CuSparseMatrixCOO {Tv} (cooRowInd, csr. colVal, csr. nzVal, size (csr), nnz)
363
+ cooRowInd = CuVector {Cint} (undef, nnz (csr))
364
+ cusparseXcsr2coo (handle (), csr. rowPtr, nnz (csr), m, cooRowInd, ind)
365
+ CuSparseMatrixCOO {Tv} (cooRowInd, csr. colVal, nonzeros (csr), size (csr), nnz (csr))
366
366
end
367
367
368
- # ## CSC/BST to COO and viceversa
368
+ # ## CSC/BSR to COO and viceversa
369
369
370
370
CuSparseMatrixCSC (coo:: CuSparseMatrixCOO ) = CuSparseMatrixCSC (CuSparseMatrixCSR (coo)) # no direct conversion
371
371
CuSparseMatrixCOO (csc:: CuSparseMatrixCSC ) = CuSparseMatrixCOO (CuSparseMatrixCSR (csc)) # no direct conversion
0 commit comments