diff options
author | Adam Paszke <adam.paszke@gmail.com> | 2017-03-22 18:33:03 +0300 |
---|---|---|
committer | Adam Paszke <adam.paszke@gmail.com> | 2017-03-22 18:33:03 +0300 |
commit | e403cc6f250c95e97445693055831781cb59af0c (patch) | |
tree | 49beac53de31c80e73da895adb886107c97299ba | |
parent | acb15e2d64bfc9e61d436eb207363ec66a81a1d6 (diff) |
Narrow V when returning only some right singular vectors
-rw-r--r-- | lib/THC/generic/THCTensorMathMagma.cu | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/THC/generic/THCTensorMathMagma.cu b/lib/THC/generic/THCTensorMathMagma.cu index 4074aa8..e245c36 100644 --- a/lib/THC/generic/THCTensorMathMagma.cu +++ b/lib/THC/generic/THCTensorMathMagma.cu @@ -293,6 +293,7 @@ THC_API void THCTensor_(gesvd2)(THCState *state, THCTensor *ru_, THCTensor *rs_, int n = a->size[1]; int k = m < n ? m : n; int j = (jobu == MagmaAllVec) ? m : k; + int jv = (jobvt == MagmaAllVec) ? n : k; real *a_data = th_magma_malloc_pinned<real>(m * n); THCTensor_(copyTensor2d)(state, a_data, a); @@ -326,6 +327,8 @@ THC_API void THCTensor_(gesvd2)(THCState *state, THCTensor *ru_, THCTensor *rs_, THCTensor_(copyArray2d)(state, rv_, rv_data, n, n); THCTensor_(transpose)(state, rv_, NULL, 0, 1); + if (jobvt != MagmaAllVec) + THCTensor_(narrow)(state, rv_, rv_, 1, 0, jv); THCTensor_(copyArray2d)(state, ru_, ru_data, m, j); THCTensor_(copyArray1d)(state, rs_, rs_data, k); THCTensor_(copyArray2d)(state, ra_, a_data, m, n); |