@@ -193,10 +193,11 @@ function trtri!(uplo::Char, diag::Char, A::StridedCuMatrix{T}) where {T <: BlasF
193
193
end
194
194
195
195
# Xlarft!
196
- function larft! (direct:: Char , v:: StridedCuMatrix{T} , tau:: StridedCuVector{T} , t:: StridedCuMatrix{T} ) where {T <: BlasFloat }
196
+ function larft! (direct:: Char , storev :: Char , v:: StridedCuMatrix{T} , tau:: StridedCuVector{T} , t:: StridedCuMatrix{T} ) where {T <: BlasFloat }
197
197
n, k = size (v)
198
198
ktau = length (tau)
199
199
mt, nt = size (t)
200
+ (storev != ' C' ) && throw (ArgumentError (" Only storev = 'C' is supported." ))
200
201
(n < k) && throw (ArgumentError (" The number of elementary reflectors ($k ) must be lower or equal to the order of block reflector H ($n )." ))
201
202
(ktau != k) && throw (ArgumentError (" The length of tau ($ktau ) is not equal to the number of elementary reflectors ($k )." ))
202
203
(mt != k || nt != k) && throw (ArgumentError (" The size of the triangular factor of the block reflector is ($mt , $nt ) and must be ($k , $k )." ))
@@ -207,12 +208,12 @@ function larft!(direct::Char, v::StridedCuMatrix{T}, tau::StridedCuVector{T}, t:
207
208
function bufferSize ()
208
209
out_cpu = Ref {Csize_t} (0 )
209
210
out_gpu = Ref {Csize_t} (0 )
210
- cusolverDnXlarft_bufferSize (dense_handle (), params, direct, ' C ' , n, k, T,
211
+ cusolverDnXlarft_bufferSize (dense_handle (), params, direct, storev , n, k, T,
211
212
v, ldv, T, tau, T, t, ldt, T, out_gpu, out_cpu)
212
213
out_gpu[], out_cpu[]
213
214
end
214
215
with_workspaces (bufferSize ()... ) do buffer_gpu, buffer_cpu
215
- cusolverDnXlarft (dense_handle (), params, direct, ' C ' , n, k, T, v, ldv, T, tau, T, t,
216
+ cusolverDnXlarft (dense_handle (), params, direct, storev , n, k, T, v, ldv, T, tau, T, t,
216
217
ldt, T, buffer_gpu, sizeof (buffer_gpu), buffer_cpu, sizeof (buffer_cpu))
217
218
end
218
219
0 commit comments