Esempio n. 1
0
        private static void RunCudaTest(SparseMatrix A, SparseMatrix B)
        {
            // NOTE: for real symmetric matrices, there's no need to transpose the storage, so
            //       we call the solver constructor with 3rd argument transpose = false.

            using (var stream = new CudaStream())
                using (var solver = new CudaCholesky(stream, B, false))
                {
                    TestRandomSymmetric(solver, B, "CUDA Cholesky");

                    ReportGpuTime(solver.FactorizationTime);
                }

            using (var stream = new CudaStream())
                using (var solver = new CudaQR(stream, A))
                {
                    TestRandom(solver, A, "CUDA QR");

                    ReportGpuTime(solver.FactorizationTime);
                }

            using (var stream = new CudaStream())
                using (var solver = new CudaQR(stream, B, false))
                {
                    TestRandomSymmetric(solver, B, "CUDA QR");

                    ReportGpuTime(solver.FactorizationTime);
                }
        }
Esempio n. 2
0
        private static void RunCudaTest(SparseMatrix A, SparseMatrix B)
        {
            // NOTE: for Hermitian matrices, the storage has to be transposed, which is
            //       done by the solver (unless 3rd argument transpose = false).

            using (var stream = new CudaStream())
                using (var solver = new CudaCholesky(stream, B))
                {
                    TestRandomSymmetric(solver, B, "CUDA Cholesky");

                    ReportGpuTime(solver.FactorizationTime);
                }

            using (var stream = new CudaStream())
                using (var solver = new CudaQR(stream, A))
                {
                    TestRandom(solver, A, "CUDA QR");

                    ReportGpuTime(solver.FactorizationTime);
                }

            using (var stream = new CudaStream())
                using (var solver = new CudaQR(stream, B))
                {
                    TestRandomSymmetric(solver, B, "CUDA QR");

                    ReportGpuTime(solver.FactorizationTime);
                }
        }