public void MatrixSvd() { var a = _cpu.CreateZeroMatrix(2, 2).AsIndexable(); a[0, 0] = 4; a[0, 1] = 7; a[1, 0] = 2; a[1, 1] = 6; var svd = a.Svd(); var cpuU = svd.U.AsIndexable(); var cpuVT = svd.VT.AsIndexable(); var cpuS = svd.S.AsIndexable(); IIndexableMatrix gpuU, gpuVT; IIndexableVector gpuS; using (var gpuA = _cuda.CreateMatrix(a)) { var gpuSvd = gpuA.Svd(); gpuU = gpuSvd.U.AsIndexable(); gpuVT = gpuSvd.VT.AsIndexable(); gpuS = gpuSvd.S.AsIndexable(); } FloatingPointHelper.AssertEqual(cpuU, gpuU); FloatingPointHelper.AssertEqual(cpuVT, gpuVT); FloatingPointHelper.AssertEqual(cpuS, gpuS); }