@@ -614,12 +614,12 @@ function CuSparseMatrixCOO{Tv}(csc::CuSparseMatrixCSC{Tv}; index::SparseChar='O'
614
614
coo = sort_coo (coo, ' R' )
615
615
end
616
616
617
- # ## BSR to COO and viceversa
617
+ # ## BSR to COO and vice-versa
618
618
619
619
CuSparseMatrixBSR (coo:: CuSparseMatrixCOO , blockdim) = CuSparseMatrixBSR (CuSparseMatrixCSR (coo), blockdim) # no direct conversion
620
620
CuSparseMatrixCOO (bsr:: CuSparseMatrixBSR ) = CuSparseMatrixCOO (CuSparseMatrixCSR (bsr)) # no direct conversion
621
621
622
- # ## BSR to CSC and viceversa
622
+ # ## BSR to CSC and vice-versa
623
623
624
624
CuSparseMatrixBSR (csc:: CuSparseMatrixCSC , blockdim) = CuSparseMatrixBSR (CuSparseMatrixCSR (csc), blockdim) # no direct conversion
625
625
CuSparseMatrixCSC (bsr:: CuSparseMatrixBSR ) = CuSparseMatrixCSC (CuSparseMatrixCSR (bsr)) # no direct conversion
668
668
function CuSparseMatrixCOO (A:: CuMatrix{T} ; index:: SparseChar = ' O' ) where {T}
669
669
densetosparse (A, :coo , index)
670
670
end
671
+
672
+ # # CuSparseVector to CuSparseMatrices and vice-versa
673
+ function CuSparseVector (A:: CuSparseMatrixCSC{T} ) where T
674
+ m, n = size (A)
675
+ (n == 1 ) || error (" A doesn't have one column and can't be converted to a CuSparseVector." )
676
+ CuSparseVector {T} (A. rowVal, A. nzVal, m)
677
+ end
678
+
679
+ # no direct conversion
680
+ function CuSparseVector (A:: CuSparseMatrixCSR{T} ) where T
681
+ m, n = size (A)
682
+ (n == 1 ) || error (" A doesn't have one column and can't be converted to a CuSparseVector." )
683
+ B = CuSparseMatrixCSC {T} (A)
684
+ CuSparseVector (B)
685
+ end
686
+
687
+ function CuSparseVector (A:: CuSparseMatrixCOO{T} ) where T
688
+ m, n = size (A)
689
+ (n == 1 ) || error (" A doesn't have one column and can't be converted to a CuSparseVector." )
690
+ CuSparseVector {T} (A. rowInd, A. nzVal, m)
691
+ end
692
+
693
+ function CuSparseMatrixCSC (x:: CuSparseVector{T} ) where T
694
+ n = length (x)
695
+ colPtr = CuVector {Int32} ([1 ; nnz (x)+ 1 ])
696
+ CuSparseMatrixCSC {T} (colPtr, x. iPtr, nonzeros (x), (n,1 ))
697
+ end
698
+
699
+ # no direct conversion
700
+ function CuSparseMatrixCSR (x:: CuSparseVector{T} ) where T
701
+ A = CuSparseMatrixCSC (x)
702
+ CuSparseMatrixCSR {T} (A)
703
+ end
704
+
705
+ function CuSparseMatrixCOO (x:: CuSparseVector{T} ) where T
706
+ n = length (x)
707
+ nnzx = nnz (x)
708
+ colInd = CuVector {Int32} (undef, nnzx)
709
+ fill! (colInd, one (Int32))
710
+ CuSparseMatrixCOO {T} (x. iPtr, colInd, nonzeros (x), (n,1 ), nnzx)
711
+ end
0 commit comments