diff --git a/example/wiki/sparse/KokkosSparse_wiki_gauss_seidel.cpp b/example/wiki/sparse/KokkosSparse_wiki_gauss_seidel.cpp index 0ecf5c1828..dbf486bc50 100644 --- a/example/wiki/sparse/KokkosSparse_wiki_gauss_seidel.cpp +++ b/example/wiki/sparse/KokkosSparse_wiki_gauss_seidel.cpp @@ -60,13 +60,11 @@ int main() { Handle handle; handle.create_gs_handle(KokkosSparse::GS_DEFAULT); // Set up Gauss-Seidel for the graph (matrix sparsity pattern) - KokkosSparse::Experimental::gauss_seidel_symbolic(&handle, numRows, numRows, A.graph.row_map, A.graph.entries, - false); + KokkosSparse::gauss_seidel_symbolic(&handle, numRows, numRows, A.graph.row_map, A.graph.entries, false); // Set up Gauss-Seidel for the matrix values (numeric) // Another matrix with the same sparsity pattern could re-use the handle and // symbolic phase, and only call numeric. - KokkosSparse::Experimental::gauss_seidel_numeric(&handle, numRows, numRows, A.graph.row_map, A.graph.entries, - A.values, false); + KokkosSparse::gauss_seidel_numeric(&handle, numRows, numRows, A.graph.row_map, A.graph.entries, A.values, false); // Now, preconditioner is ready to use. Set up an unknown vector // (uninitialized) and randomized right-hand-side vector. Vector x(Kokkos::view_alloc(Kokkos::WithoutInitializing, "x"), numRows); @@ -87,8 +85,8 @@ int main() { // * to zero out x (it was uninitialized) // * that b has changed since the previous apply (since there was no // previous apply) - KokkosSparse::Experimental::forward_sweep_gauss_seidel_apply( - &handle, numRows, numRows, A.graph.row_map, A.graph.entries, A.values, x, b, firstIter, firstIter, one, 1); + KokkosSparse::forward_sweep_gauss_seidel_apply(&handle, numRows, numRows, A.graph.row_map, A.graph.entries, + A.values, x, b, firstIter, firstIter, one, 1); firstIter = false; // Now, compute the new residual norm using SPMV Kokkos::deep_copy(res, b); diff --git a/perf_test/sparse/KokkosSparse_gs.cpp b/perf_test/sparse/KokkosSparse_gs.cpp index 0ed984a8f8..8d0ef1768b 100644 --- a/perf_test/sparse/KokkosSparse_gs.cpp +++ b/perf_test/sparse/KokkosSparse_gs.cpp @@ -243,8 +243,8 @@ void runGS(const GS_Parameters& params) { for (int i = 0; i < params.nstreams; i++) { auto blk_A = DiagBlks[i]; auto blk_nrows = blk_A.numRows(); - KokkosSparse::Experimental::gauss_seidel_symbolic(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, - blk_A.graph.entries, params.graph_symmetric); + KokkosSparse::gauss_seidel_symbolic(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, + blk_A.graph.entries, params.graph_symmetric); } symbolicLaunchTimeTotal = timer.seconds(); timer.reset(); @@ -256,8 +256,8 @@ void runGS(const GS_Parameters& params) { for (int i = 0; i < params.nstreams; i++) { auto blk_A = DiagBlks[i]; auto blk_nrows = blk_A.numRows(); - KokkosSparse::Experimental::gauss_seidel_numeric(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, - blk_A.graph.entries, blk_A.values, params.graph_symmetric); + KokkosSparse::gauss_seidel_numeric(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, + blk_A.graph.entries, blk_A.values, params.graph_symmetric); } numericLaunchTimeTotal = timer.seconds(); timer.reset(); @@ -272,19 +272,19 @@ void runGS(const GS_Parameters& params) { // Last two parameters are damping factor (should be 1) and sweeps switch (params.direction) { case GS_SYMMETRIC: - KokkosSparse::Experimental::symmetric_gauss_seidel_apply(instances[i], &kh[i], blk_nrows, blk_nrows, - blk_A.graph.row_map, blk_A.graph.entries, blk_A.values, - x[i], b[i], true, true, 1.0, params.sweeps); + KokkosSparse::symmetric_gauss_seidel_apply(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, + blk_A.graph.entries, blk_A.values, x[i], b[i], true, true, 1.0, + params.sweeps); break; case GS_FORWARD: - KokkosSparse::Experimental::forward_sweep_gauss_seidel_apply( - instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, blk_A.graph.entries, blk_A.values, x[i], - b[i], true, true, 1.0, params.sweeps); + KokkosSparse::forward_sweep_gauss_seidel_apply(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, + blk_A.graph.entries, blk_A.values, x[i], b[i], true, true, 1.0, + params.sweeps); break; case GS_BACKWARD: - KokkosSparse::Experimental::backward_sweep_gauss_seidel_apply( - instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, blk_A.graph.entries, blk_A.values, x[i], - b[i], true, true, 1.0, params.sweeps); + KokkosSparse::backward_sweep_gauss_seidel_apply(instances[i], &kh[i], blk_nrows, blk_nrows, blk_A.graph.row_map, + blk_A.graph.entries, blk_A.values, x[i], b[i], true, true, 1.0, + params.sweeps); break; } } diff --git a/perf_test/sparse/KokkosSparse_pcg.hpp b/perf_test/sparse/KokkosSparse_pcg.hpp index 12234d5773..ad5a2ed509 100644 --- a/perf_test/sparse/KokkosSparse_pcg.hpp +++ b/perf_test/sparse/KokkosSparse_pcg.hpp @@ -120,17 +120,18 @@ void block_pcgsolve(KernelHandle_t &kh, const crsMatrix_t &point_crsMat, const c // timer.reset(); // block_kh.set_verbose(true); - block_gauss_seidel_numeric(&block_kh, _block_crsMat.numRows(), _block_crsMat.numCols(), block_size, - _block_crsMat.graph.row_map, _block_crsMat.graph.entries, _block_crsMat.values); + KokkosSparse::block_gauss_seidel_numeric(&block_kh, _block_crsMat.numRows(), _block_crsMat.numCols(), block_size, + _block_crsMat.graph.row_map, _block_crsMat.graph.entries, + _block_crsMat.values); precond_init_time += timer.seconds(); z = y_vector_t("pcg::z", count_total); Space().fence(); timer.reset(); - symmetric_block_gauss_seidel_apply(&block_kh, _block_crsMat.numRows(), _block_crsMat.numCols(), block_size, - _block_crsMat.graph.row_map, _block_crsMat.graph.entries, _block_crsMat.values, - z, r, true, true, 1.0, apply_count); + KokkosSparse::symmetric_block_gauss_seidel_apply( + &block_kh, _block_crsMat.numRows(), _block_crsMat.numCols(), block_size, _block_crsMat.graph.row_map, + _block_crsMat.graph.entries, _block_crsMat.values, z, r, true, true, 1.0, apply_count); // symmetric_gauss_seidel_apply // (&kh, count_total, count_total, point_crsMat.graph.row_map, @@ -185,9 +186,9 @@ void block_pcgsolve(KernelHandle_t &kh, const crsMatrix_t &point_crsMat, const c if (use_sgs) { Space().fence(); timer.reset(); - symmetric_block_gauss_seidel_apply(&block_kh, _block_crsMat.numRows(), _block_crsMat.numCols(), block_size, - _block_crsMat.graph.row_map, _block_crsMat.graph.entries, _block_crsMat.values, - z, r, true, true, 1.0, apply_count); + KokkosSparse::symmetric_block_gauss_seidel_apply( + &block_kh, _block_crsMat.numRows(), _block_crsMat.numCols(), block_size, _block_crsMat.graph.row_map, + _block_crsMat.graph.entries, _block_crsMat.values, z, r, true, true, 1.0, apply_count); // symmetric_gauss_seidel_apply( // &kh, @@ -318,7 +319,8 @@ void pcgsolve(KernelHandle_t &kh, const crsMatrix_t &crsMat, const y_vector_t &y timer.reset(); z = y_vector_t("pcg::z", count_total); if (use_par_sgs) { - gauss_seidel_numeric(&kh, count_total, count_total, crsMat.graph.row_map, crsMat.graph.entries, crsMat.values); + KokkosSparse::gauss_seidel_numeric(&kh, count_total, count_total, crsMat.graph.row_map, crsMat.graph.entries, + crsMat.values); Space().fence(); @@ -326,8 +328,9 @@ void pcgsolve(KernelHandle_t &kh, const crsMatrix_t &crsMat, const y_vector_t &y Space().fence(); timer.reset(); - symmetric_gauss_seidel_apply(&kh, count_total, count_total, crsMat.graph.row_map, crsMat.graph.entries, - crsMat.values, z, r, true, true, 1.0, apply_count); + KokkosSparse::symmetric_gauss_seidel_apply(&kh, count_total, count_total, crsMat.graph.row_map, + crsMat.graph.entries, crsMat.values, z, r, true, true, 1.0, + apply_count); Space().fence(); } else if (use_sequential_sgs) { @@ -402,8 +405,9 @@ void pcgsolve(KernelHandle_t &kh, const crsMatrix_t &crsMat, const y_vector_t &y Space().fence(); timer.reset(); if (use_par_sgs) { - symmetric_gauss_seidel_apply(&kh, count_total, count_total, crsMat.graph.row_map, crsMat.graph.entries, - crsMat.values, z, r, true, true, 1.0, apply_count); + KokkosSparse::symmetric_gauss_seidel_apply(&kh, count_total, count_total, crsMat.graph.row_map, + crsMat.graph.entries, crsMat.values, z, r, true, true, 1.0, + apply_count); } else if (use_sequential_sgs) { // z = LHS (aka x), r RHS (aka y or b) Kokkos::deep_copy(z, 0.0); diff --git a/sparse/src/KokkosSparse_gauss_seidel.hpp b/sparse/src/KokkosSparse_gauss_seidel.hpp index 647252e191..5f498f49cb 100644 --- a/sparse/src/KokkosSparse_gauss_seidel.hpp +++ b/sparse/src/KokkosSparse_gauss_seidel.hpp @@ -23,8 +23,6 @@ namespace KokkosSparse { -namespace Experimental { - /// /// @brief Gauss-Seidel preconditioner setup (first phase, based on sparsity /// pattern only) @@ -1160,6 +1158,256 @@ void backward_sweep_block_gauss_seidel_apply(KernelHandle *handle, typename Kern backward_sweep_gauss_seidel_apply(handle, num_rows, num_cols, row_map, entries, values, x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, update_y_vector, omega, numIter); } + +#if !defined(DOXY) +namespace Experimental { + +template +[[deprecated( + "gauss_seidel_symbolic was promoted out of Experimental, please use KokkosSparse::gauss_seidel_symbolic " + "instead.")]] void +gauss_seidel_symbolic(const ExecutionSpace &space, KernelHandle *handle, + typename KernelHandle::const_nnz_lno_t num_rows, typename KernelHandle::const_nnz_lno_t num_cols, + lno_row_view_t_ row_map, lno_nnz_view_t_ entries, bool is_graph_symmetric = true) { + KokkosSparse::gauss_seidel_symbolic(space, handle, num_rows, num_cols, row_map, entries, is_graph_symmetric); +} + +template +[[deprecated( + "gauss_seidel_symbolic was promoted out of Experimental, please use KokkosSparse::gauss_seidel_symbolic " + "instead.")]] void +gauss_seidel_symbolic(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, lno_nnz_view_t_ entries, + bool is_graph_symmetric = true) { + KokkosSparse::gauss_seidel_symbolic(handle, num_rows, num_cols, row_map, entries, is_graph_symmetric); +} + +template +[[deprecated( + "block_gauss_seidel_symbolic was promoted out of Experimental, please use " + "KokkosSparse::block_gauss_seidel_symbolic instead.")]] void +block_gauss_seidel_symbolic(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, + typename KernelHandle::const_nnz_lno_t block_size, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, bool is_graph_symmetric = true) { + KokkosSparse::block_gauss_seidel_symbolic(handle, num_rows, num_cols, block_size, row_map, entries, + is_graph_symmetric); +} + +template +[[deprecated( + "gauss_seidel_numeric was promoted out of Experimental, please use KokkosSparse::gauss_seidel_numeric " + "instead.")]] void +gauss_seidel_numeric(const ExecutionSpace &space, KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, lno_nnz_view_t_ entries, + scalar_nnz_view_t_ values, bool is_graph_symmetric = true) { + KokkosSparse::gauss_seidel_numeric(space, handle, num_rows, num_cols, row_map, entries, values, is_graph_symmetric); +} + +template +[[deprecated( + "gauss_seidel_numeric was promoted out of Experimental, please use KokkosSparse::gauss_seidel_numeric " + "instead.")]] void +gauss_seidel_numeric(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, lno_nnz_view_t_ entries, + scalar_nnz_view_t_ values, bool is_graph_symmetric = true) { + KokkosSparse::gauss_seidel_numeric(handle, num_rows, num_cols, row_map, entries, values, is_graph_symmetric); +} + +template +[[deprecated( + "gauss_seidel_numeric was promoted out of Experimental, please use KokkosSparse::gauss_seidel_numeric " + "instead.")]] void +gauss_seidel_numeric(const ExecutionSpace &space, KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, lno_nnz_view_t_ entries, + scalar_nnz_view_t_ values, scalar_nnz_view_t_ given_inverse_diagonal, + bool is_graph_symmetric = true) { + KokkosSparse::gauss_seidel_numeric(space, handle, num_rows, num_cols, row_map, entries, values, + given_inverse_diagonal, is_graph_symmetric); +} + +template +[[deprecated( + "gauss_seidel_numeric was promoted out of Experimental, please use KokkosSparse::gauss_seidel_numeric " + "instead.")]] void +gauss_seidel_numeric(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, lno_nnz_view_t_ entries, + scalar_nnz_view_t_ values, scalar_nnz_view_t_ given_inverse_diagonal, + bool is_graph_symmetric = true) { + KokkosSparse::gauss_seidel_numeric(handle, num_rows, num_cols, row_map, entries, values, given_inverse_diagonal, + is_graph_symmetric); +} + +template +[[deprecated( + "block_gauss_seidel_numeric was promoted out of Experimental, please use KokkosSparse::block_gauss_seidel_numeric " + "instead.")]] void +block_gauss_seidel_numeric(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, + typename KernelHandle::const_nnz_lno_t block_size, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, bool is_graph_symmetric = true) { + KokkosSparse::block_gauss_seidel_numeric(handle, num_rows, num_cols, block_size, row_map, entries, values, + is_graph_symmetric); +} + +template +[[deprecated( + "symmetric_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::symmetric_gauss_seidel_apply instead.")]] void +symmetric_gauss_seidel_apply(const ExecutionSpace &space, KernelHandle *handle, + typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, x_scalar_view_t x_lhs_output_vec, + y_scalar_view_t y_rhs_input_vec, bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::symmetric_gauss_seidel_apply(space, handle, num_rows, num_cols, row_map, entries, values, + x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, update_y_vector, + omega, numIter); +} + +template +[[deprecated( + "symmetric_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::symmetric_gauss_seidel_apply instead.")]] void +symmetric_gauss_seidel_apply(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, x_scalar_view_t x_lhs_output_vec, + y_scalar_view_t y_rhs_input_vec, bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::symmetric_gauss_seidel_apply(handle, num_rows, num_cols, row_map, entries, values, x_lhs_output_vec, + y_rhs_input_vec, init_zero_x_vector, update_y_vector, omega, numIter); +} + +template +[[deprecated( + "symmetric_block_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::symmetric_block_gauss_seidel_apply instead.")]] void +symmetric_block_gauss_seidel_apply(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, + typename KernelHandle::const_nnz_lno_t block_size, + + lno_row_view_t_ row_map, lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, + x_scalar_view_t x_lhs_output_vec, y_scalar_view_t y_rhs_input_vec, + bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::symmetric_block_gauss_seidel_apply(handle, num_rows, num_cols, block_size, row_map, entries, values, + x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, + update_y_vector, omega, numIter); +} + +template +[[deprecated( + "forward_sweep_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::forward_sweep_gauss_seidel_apply instead.")]] void +forward_sweep_gauss_seidel_apply(const ExecutionSpace &space, KernelHandle *handle, + typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, x_scalar_view_t x_lhs_output_vec, + y_scalar_view_t y_rhs_input_vec, bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::forward_sweep_gauss_seidel_apply(space, handle, num_rows, num_cols, row_map, entries, values, + x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, update_y_vector, + omega, numIter); +} + +template +[[deprecated( + "forward_sweep_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::forward_sweep_gauss_seidel_apply instead.")]] void +forward_sweep_gauss_seidel_apply(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, x_scalar_view_t x_lhs_output_vec, + y_scalar_view_t y_rhs_input_vec, bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::forward_sweep_gauss_seidel_apply(handle, num_rows, num_cols, row_map, entries, values, x_lhs_output_vec, + y_rhs_input_vec, init_zero_x_vector, update_y_vector, omega, numIter); +} + +template +[[deprecated( + "forward_sweep_block_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::forward_sweep_block_gauss_seidel_apply instead.")]] void +forward_sweep_block_gauss_seidel_apply(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, + typename KernelHandle::const_nnz_lno_t block_size, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, + x_scalar_view_t x_lhs_output_vec, y_scalar_view_t y_rhs_input_vec, + bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::forward_sweep_block_gauss_seidel_apply(handle, num_rows, num_cols, block_size, row_map, entries, values, + x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, + update_y_vector, omega, numIter); +} + +template +[[deprecated( + "backward_sweep_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::backward_sweep_gauss_seidel_apply instead.")]] void +backward_sweep_gauss_seidel_apply(const ExecutionSpace &space, KernelHandle *handle, + typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, x_scalar_view_t x_lhs_output_vec, + y_scalar_view_t y_rhs_input_vec, bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::backward_sweep_gauss_seidel_apply(space, handle, num_rows, num_cols, row_map, entries, values, + x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, + update_y_vector, omega, numIter); +} + +template +[[deprecated( + "backward_sweep_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::backward_sweep_gauss_seidel_apply instead.")]] void +backward_sweep_gauss_seidel_apply(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, x_scalar_view_t x_lhs_output_vec, + y_scalar_view_t y_rhs_input_vec, bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::backward_sweep_gauss_seidel_apply(handle, num_rows, num_cols, row_map, entries, values, + x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, + update_y_vector, omega, numIter); +} + +template +[[deprecated( + "backward_sweep_block_gauss_seidel_apply was promoted out of Experimental, please use " + "KokkosSparse::backward_sweep_block_gauss_seidel_apply instead.")]] void +backward_sweep_block_gauss_seidel_apply(KernelHandle *handle, typename KernelHandle::const_nnz_lno_t num_rows, + typename KernelHandle::const_nnz_lno_t num_cols, + typename KernelHandle::const_nnz_lno_t block_size, lno_row_view_t_ row_map, + lno_nnz_view_t_ entries, scalar_nnz_view_t_ values, + x_scalar_view_t x_lhs_output_vec, y_scalar_view_t y_rhs_input_vec, + bool init_zero_x_vector, bool update_y_vector, + typename KernelHandle::nnz_scalar_t omega, int numIter) { + KokkosSparse::backward_sweep_block_gauss_seidel_apply(handle, num_rows, num_cols, block_size, row_map, entries, + values, x_lhs_output_vec, y_rhs_input_vec, init_zero_x_vector, + update_y_vector, omega, numIter); +} + } // namespace Experimental +#endif } // namespace KokkosSparse #endif diff --git a/sparse/unit_test/Test_Sparse_block_gauss_seidel.hpp b/sparse/unit_test/Test_Sparse_block_gauss_seidel.hpp index 7c6bddfd4d..d365147c13 100644 --- a/sparse/unit_test/Test_Sparse_block_gauss_seidel.hpp +++ b/sparse/unit_test/Test_Sparse_block_gauss_seidel.hpp @@ -35,8 +35,6 @@ using kokkos_complex_double = Kokkos::complex; using kokkos_complex_float = Kokkos::complex; -namespace KSExp = KokkosSparse::Experimental; - namespace Test { enum GSApplyType { @@ -97,29 +95,29 @@ int run_block_gauss_seidel_1( const int apply_count = 100; if (!skip_symbolic) { - KSExp::block_gauss_seidel_symbolic(&kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, - input_mat.graph.entries, is_symmetric_graph); + KokkosSparse::block_gauss_seidel_symbolic(&kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, + input_mat.graph.entries, is_symmetric_graph); } if (!skip_numeric) { - KSExp::block_gauss_seidel_numeric(&kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, - input_mat.graph.entries, input_mat.values, is_symmetric_graph); + KokkosSparse::block_gauss_seidel_numeric(&kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, + input_mat.graph.entries, input_mat.values, is_symmetric_graph); } switch (apply_type) { case Test::forward_sweep: - KSExp::forward_sweep_block_gauss_seidel_apply( + KokkosSparse::forward_sweep_block_gauss_seidel_apply( &kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, input_mat.graph.entries, input_mat.values, x_vector, y_vector, false, true, omega, apply_count); break; case Test::backward_sweep: - KSExp::backward_sweep_block_gauss_seidel_apply( + KokkosSparse::backward_sweep_block_gauss_seidel_apply( &kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, input_mat.graph.entries, input_mat.values, x_vector, y_vector, false, true, omega, apply_count); break; case Test::symmetric: default: - KSExp::symmetric_block_gauss_seidel_apply( + KokkosSparse::symmetric_block_gauss_seidel_apply( &kh, num_rows_1, num_cols_1, block_size, input_mat.graph.row_map, input_mat.graph.entries, input_mat.values, x_vector, y_vector, false, true, omega, apply_count); break; @@ -331,13 +329,14 @@ void test_block_gauss_seidel_empty() { entries_type entries("Entries", 0); scalar_view_t values("Values", 0); // also, make sure graph symmetrization doesn't crash on zero rows - KSExp::block_gauss_seidel_symbolic(&kh, num_rows, num_rows, block_size, rowmap, entries, false); - KSExp::block_gauss_seidel_numeric(&kh, num_rows, num_rows, block_size, rowmap, entries, values, false); + KokkosSparse::block_gauss_seidel_symbolic(&kh, num_rows, num_rows, block_size, rowmap, entries, false); + KokkosSparse::block_gauss_seidel_numeric(&kh, num_rows, num_rows, block_size, rowmap, entries, values, + false); scalar_view_t x("X", num_rows); scalar_view_t y("Y", num_rows); scalar_t omega(0.9); - KSExp::symmetric_block_gauss_seidel_apply(&kh, num_rows, num_rows, block_size, rowmap, entries, values, - x, y, false, true, omega, 3); + KokkosSparse::symmetric_block_gauss_seidel_apply(&kh, num_rows, num_rows, block_size, rowmap, entries, + values, x, y, false, true, omega, 3); kh.destroy_gs_handle(); } } diff --git a/sparse/unit_test/Test_Sparse_gauss_seidel.hpp b/sparse/unit_test/Test_Sparse_gauss_seidel.hpp index 3704b63fbd..1250e78398 100644 --- a/sparse/unit_test/Test_Sparse_gauss_seidel.hpp +++ b/sparse/unit_test/Test_Sparse_gauss_seidel.hpp @@ -66,26 +66,31 @@ void run_gauss_seidel(Handle &kh, crsMat_t input_mat, vec_t x_vector, vec_t y_ve const size_t num_cols = input_mat.numCols(); const int apply_count = 2; - gauss_seidel_symbolic(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, is_symmetric_graph); - gauss_seidel_numeric(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, input_mat.values, - is_symmetric_graph); + KokkosSparse::gauss_seidel_symbolic(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, + is_symmetric_graph); + KokkosSparse::gauss_seidel_numeric(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, + input_mat.values, is_symmetric_graph); switch (apply_type) { case 0: - symmetric_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, - input_mat.values, x_vector, y_vector, false, true, omega, apply_count); + KokkosSparse::symmetric_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, + input_mat.graph.entries, input_mat.values, x_vector, y_vector, false, + true, omega, apply_count); break; case 1: - forward_sweep_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, - input_mat.values, x_vector, y_vector, false, true, omega, apply_count); + KokkosSparse::forward_sweep_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, + input_mat.graph.entries, input_mat.values, x_vector, y_vector, + false, true, omega, apply_count); break; case 2: - backward_sweep_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, - input_mat.values, x_vector, y_vector, false, true, omega, apply_count); + KokkosSparse::backward_sweep_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, + input_mat.graph.entries, input_mat.values, x_vector, y_vector, + false, true, omega, apply_count); break; default: - symmetric_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, input_mat.graph.entries, - input_mat.values, x_vector, y_vector, false, true, omega, apply_count); + KokkosSparse::symmetric_gauss_seidel_apply(&kh, num_rows, num_cols, input_mat.graph.row_map, + input_mat.graph.entries, input_mat.values, x_vector, y_vector, false, + true, omega, apply_count); break; } } @@ -137,35 +142,35 @@ void run_gauss_seidel_streams(std::vector &instances, std::vector