MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / svdInPlace

Function svdInPlace

src/backend/cuda/svd.cpp:70–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68
69template<typename T, typename Tr>
70void svdInPlace(Array<Tr> &s, Array<T> &u, Array<T> &vt, Array<T> &in) {
71 dim4 iDims = in.dims();
72 int M = iDims[0];
73 int N = iDims[1];
74
75 int lwork = 0;
76
77 CUSOLVER_CHECK(gesvd_buf_func<T>(solverDnHandle(), M, N, &lwork));
78
79 auto lWorkspace = memAlloc<T>(lwork);
80 auto rWorkspace = memAlloc<Tr>(5 * std::min(M, N));
81
82 auto info = memAlloc<int>(1);
83
84 gesvd_func<T, Tr>(solverDnHandle(), 'A', 'A', M, N, in.get(), M, s.get(),
85 u.get(), M, vt.get(), N, lWorkspace.get(), lwork,
86 rWorkspace.get(), info.get());
87}
88
89template<typename T, typename Tr>
90void svd(Array<Tr> &s, Array<T> &u, Array<T> &vt, const Array<T> &in) {

Callers 1

svdFunction · 0.70

Calls 4

solverDnHandleFunction · 0.85
minFunction · 0.70
dimsMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected