This function computes the Singular value decomposition of matrix \(A\). Current implementation takes one-sided Jacobi algorithm to solve. One-sided Jacobi is an iterative convergence algorithm, and each graph call will perform one “column-sweep” on a batch of input matrixs. To achieve desired precision, you need to store the output of one graph call and feed them as input to the graph again. Such “output-input” needs to be executed multiple times and the number of repetitions depends on precision requirements. Due to “one-way” through character of current implementation, it will need PL data-movers to servers as the mechanism to loop back last iteration’s output into next iteration’s input. We will release such PL data-movers in the future.
where \(A\) is a matrix of size \(m \times n\), \(U\) is orthogonal matrix of size \(m \times m\), \(M\) is rectangular diagonal matrix of size \(m \times n\), \(V*\) is orthogonal matrix of size \(n \times n\)