Example #1
0
        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);
        }