

"torch.svd()" returns V, whereas "torch.linalg.svd()" returns
       Vh, that is, V^{\text{H}}.

If "compute_uv" is False, "torch.svd()" returns zero-filled
   tensors for U and Vh, whereas "torch.linalg.svd()" returns
   empty tensors.



Note:
 The singular values are returned in descending order. If "input"
 is a batch of matrices, then the singular values of each matrix
 in the batch are returned in descending order.

Note:
 The *S* tensor can only be used to compute gradients if
 "compute_uv" is *True*.

Note:
 When "some" is *False*, the gradients on *U[..., :, min(m, n):]*
 and *V[..., :, min(m, n):]* will be ignored in the backward pass,
 as those vectors can be arbitrary bases of the corresponding
 subspaces.

Note:
 The implementation of "torch.linalg.svd()" on CPU uses LAPACK's
 routine *?gesdd* (a divide-and-conquer algorithm) instead of
 *?gesvd* for speed. Analogously, on GPU, it uses cuSOLVER's
