@@ -121,36 +121,27 @@ function CuSparseMatrixCSR{T}(S::Adjoint{T, <:CuSparseMatrixCSC{T}}) where {T <:
121
121
end
122
122
123
123
# by flipping rows and columns, we can use that to get CSC to CSR too
124
- for (fname,elty) in ((:cusparseScsr2csc , :Float32 ),
125
- (:cusparseDcsr2csc , :Float64 ),
126
- (:cusparseCcsr2csc , :ComplexF32 ),
127
- (:cusparseZcsr2csc , :ComplexF64 ))
124
+ for elty in (Float32, Float64, ComplexF32, ComplexF64)
128
125
@eval begin
129
126
function CuSparseMatrixCSC {$elty} (csr:: CuSparseMatrixCSR{$elty} ; inda:: SparseChar = ' O' )
130
127
m,n = size (csr)
131
128
colPtr = CUDA. zeros (Cint, n+ 1 )
132
129
rowVal = CUDA. zeros (Cint, nnz (csr))
133
130
nzVal = CUDA. zeros ($ elty, nnz (csr))
134
- if version () >= v " 10.2"
135
- # TODO : algorithm configuratibility?
136
- function bufferSize ()
137
- out = Ref {Csize_t} (1 )
138
- cusparseCsr2cscEx2_bufferSize (handle (), m, n, nnz (csr), nonzeros (csr),
139
- csr. rowPtr, csr. colVal, nzVal, colPtr, rowVal,
140
- $ elty, CUSPARSE_ACTION_NUMERIC, inda,
141
- CUSPARSE_CSR2CSC_ALG1, out)
142
- return out[]
143
- end
144
- with_workspace (bufferSize) do buffer
145
- cusparseCsr2cscEx2 (handle (), m, n, nnz (csr), nonzeros (csr),
146
- csr. rowPtr, csr. colVal, nzVal, colPtr, rowVal,
147
- $ elty, CUSPARSE_ACTION_NUMERIC, inda,
148
- CUSPARSE_CSR2CSC_ALG1, buffer)
149
- end
150
- else
151
- $ fname (handle (), m, n, nnz (csr), nonzeros (csr),
152
- csr. rowPtr, csr. colVal, nzVal, rowVal,
153
- colPtr, CUSPARSE_ACTION_NUMERIC, inda)
131
+ # TODO : algorithm configuratibility?
132
+ function bufferSize ()
133
+ out = Ref {Csize_t} (1 )
134
+ cusparseCsr2cscEx2_bufferSize (handle (), m, n, nnz (csr), nonzeros (csr),
135
+ csr. rowPtr, csr. colVal, nzVal, colPtr, rowVal,
136
+ $ elty, CUSPARSE_ACTION_NUMERIC, inda,
137
+ CUSPARSE_CSR2CSC_ALG1, out)
138
+ return out[]
139
+ end
140
+ with_workspace (bufferSize) do buffer
141
+ cusparseCsr2cscEx2 (handle (), m, n, nnz (csr), nonzeros (csr),
142
+ csr. rowPtr, csr. colVal, nzVal, colPtr, rowVal,
143
+ $ elty, CUSPARSE_ACTION_NUMERIC, inda,
144
+ CUSPARSE_CSR2CSC_ALG1, buffer)
154
145
end
155
146
CuSparseMatrixCSC (colPtr,rowVal,nzVal,size (csr))
156
147
end
@@ -160,26 +151,20 @@ for (fname,elty) in ((:cusparseScsr2csc, :Float32),
160
151
rowPtr = CUDA. zeros (Cint,m+ 1 )
161
152
colVal = CUDA. zeros (Cint,nnz (csc))
162
153
nzVal = CUDA. zeros ($ elty,nnz (csc))
163
- if version () >= v " 10.2"
164
- # TODO : algorithm configuratibility?
165
- function bufferSize ()
166
- out = Ref {Csize_t} (1 )
167
- cusparseCsr2cscEx2_bufferSize (handle (), n, m, nnz (csc), nonzeros (csc),
168
- csc. colPtr, rowvals (csc), nzVal, rowPtr, colVal,
169
- $ elty, CUSPARSE_ACTION_NUMERIC, inda,
170
- CUSPARSE_CSR2CSC_ALG1, out)
171
- return out[]
172
- end
173
- with_workspace (bufferSize) do buffer
174
- cusparseCsr2cscEx2 (handle (), n, m, nnz (csc), nonzeros (csc),
175
- csc. colPtr, rowvals (csc), nzVal, rowPtr, colVal,
176
- $ elty, CUSPARSE_ACTION_NUMERIC, inda,
177
- CUSPARSE_CSR2CSC_ALG1, buffer)
178
- end
179
- else
180
- $ fname (handle (), n, m, nnz (csc), nonzeros (csc),
181
- csc. colPtr, rowvals (csc), nzVal, colVal,
182
- rowPtr, CUSPARSE_ACTION_NUMERIC, inda)
154
+ # TODO : algorithm configuratibility?
155
+ function bufferSize ()
156
+ out = Ref {Csize_t} (1 )
157
+ cusparseCsr2cscEx2_bufferSize (handle (), n, m, nnz (csc), nonzeros (csc),
158
+ csc. colPtr, rowvals (csc), nzVal, rowPtr, colVal,
159
+ $ elty, CUSPARSE_ACTION_NUMERIC, inda,
160
+ CUSPARSE_CSR2CSC_ALG1, out)
161
+ return out[]
162
+ end
163
+ with_workspace (bufferSize) do buffer
164
+ cusparseCsr2cscEx2 (handle (), n, m, nnz (csc), nonzeros (csc),
165
+ csc. colPtr, rowvals (csc), nzVal, rowPtr, colVal,
166
+ $ elty, CUSPARSE_ACTION_NUMERIC, inda,
167
+ CUSPARSE_CSR2CSC_ALG1, buffer)
183
168
end
184
169
CuSparseMatrixCSR (rowPtr,colVal,nzVal,size (csc))
185
170
end
@@ -197,7 +182,7 @@ for (elty, welty) in ((:Float16, :Float32),
197
182
rowVal = CUDA. zeros (Cint, nnz (csr))
198
183
nzVal = CUDA. zeros ($ elty, nnz (csr))
199
184
# TODO : algorithm configuratibility?
200
- if version () >= v " 10.2 " && $ elty == Float16 # broken for ComplexF16?
185
+ if $ elty == Float16 # broken for ComplexF16?
201
186
function bufferSize ()
202
187
out = Ref {Csize_t} (1 )
203
188
cusparseCsr2cscEx2_bufferSize (handle (), m, n, nnz (csr), nonzeros (csr),
@@ -225,7 +210,7 @@ for (elty, welty) in ((:Float16, :Float32),
225
210
rowPtr = CUDA. zeros (Cint,m+ 1 )
226
211
colVal = CUDA. zeros (Cint,nnz (csc))
227
212
nzVal = CUDA. zeros ($ elty,nnz (csc))
228
- if version () >= v " 10.2 " && $ elty == Float16 # broken for ComplexF16?
213
+ if $ elty == Float16 # broken for ComplexF16?
229
214
# TODO : algorithm configuratibility?
230
215
function bufferSize ()
231
216
out = Ref {Csize_t} (1 )
0 commit comments