From fd2e5d81ac1d0d259118d856c70d1b939c959a55 Mon Sep 17 00:00:00 2001 From: Gregor Olenik Date: Thu, 26 Oct 2023 14:06:03 +0200 Subject: [PATCH 001/125] base on sparse communicator branch --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7635b335..48033155e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ if(NOT OGL_ALLOW_REFERENCE_ONLY) endif() set(GINKGO_CHECKOUT_VERSION - "4292ffdee" + "sparse-communicator" CACHE STRING "Use specific version of ginkgo") include(CheckIncludeFileCXX) From c9d2c0342345cf7bc0e82448b21b28d22e865cac Mon Sep 17 00:00:00 2001 From: Gregor Olenik Date: Fri, 27 Oct 2023 13:41:53 +0200 Subject: [PATCH 002/125] adapt to new Ginkgo version --- .../CsrMatrixWrapper/CsrMatrixWrapper.H | 227 +++++++++--------- DevicePersistent/Vector/Vector.H | 70 +++--- Preconditioner/Preconditioner.H | 4 +- Solver/BiCGStab/GKOBiCGStab.H | 4 +- Solver/CG/GKOCG.H | 7 +- Solver/GMRES/GKOGMRES.H | 6 +- common/.common.H.swo | Bin 0 -> 24576 bytes common/common.C | 14 +- lduLduBase/lduLduBase.H | 4 +- 9 files changed, 170 insertions(+), 166 deletions(-) create mode 100644 common/.common.H.swo diff --git a/DevicePersistent/CsrMatrixWrapper/CsrMatrixWrapper.H b/DevicePersistent/CsrMatrixWrapper/CsrMatrixWrapper.H index e575ac058..2eafe3661 100644 --- a/DevicePersistent/CsrMatrixWrapper/CsrMatrixWrapper.H +++ b/DevicePersistent/CsrMatrixWrapper/CsrMatrixWrapper.H @@ -185,14 +185,14 @@ struct MatrixInitFunctor { auto comm = exec_.get_gko_mpi_host_comm(); - TIME_WITH_FIELDNAME( - verbose_, update_build_repartitioner, field_name_, - auto repartitioner = gko::share( - gko::experimental::distributed::repartitioner< - label, label>::create(*comm.get(), - partition_.get_host_partition(), - partition_.get_device_partition(), - false));) + // TIME_WITH_FIELDNAME( + // verbose_, update_build_repartitioner, field_name_, + // auto repartitioner = gko::share( + // gko::experimental::distributed::repartitioner< + // label, label>::create(*comm.get(), + // partition_.get_host_partition(), + // partition_.get_device_partition(), + // false));) auto local_nnz = local_scatter_map_pers.get_array()->get_num_elems(); @@ -223,16 +223,16 @@ struct MatrixInitFunctor { recv_offs_pers.get_array()->get_num_elems()); - TIME_WITH_FIELDNAME( - verbose_, update_repartitioned_existing, field_name_, - repartitioner->update_existing( - *row_idxs_.get_array(), *non_local_row_idxs_.get_array(), - *coeffs.get(), *non_local_coeffs.get(), - *sorting_idx_pers.get_array().get(), send_sizes, - send_offsets, recv_sizes, recv_offsets, - *local_scatter_map_pers.get_array().get(), - *non_local_scatter_map_pers.get_array().get(), local_values, - non_local_values);) + // TIME_WITH_FIELDNAME( + // verbose_, update_repartitioned_existing, field_name_, + // repartitioner->update_existing( + // *row_idxs_.get_array(), *non_local_row_idxs_.get_array(), + // *coeffs.get(), *non_local_coeffs.get(), + // *sorting_idx_pers.get_array().get(), send_sizes, + // send_offsets, recv_sizes, recv_offsets, + // *local_scatter_map_pers.get_array().get(), + // *non_local_scatter_map_pers.get_array().get(), local_values, + // non_local_values);) auto value_view = val_array::view(device_exec, local_nnz, value_ptr); @@ -359,8 +359,9 @@ struct MatrixInitFunctor { auto comm = exec_.get_gko_mpi_host_comm(); auto dist_A = generate_dist_mtx_with_inner_type( exec_.get_ref_exec(), exec_.get_gko_mpi_host_comm()); - dist_A->read_distributed(A_data, non_local_A_data, - partition_.get_host_partition().get()); + // TODO FIXME implement me + // dist_A->read_distributed(A_data, non_local_A_data, + // partition_.get_host_partition().get()); if (partition_.get_ranks_per_gpu() == 1) { auto device_mat = generate_dist_mtx_with_inner_type( @@ -370,99 +371,99 @@ struct MatrixInitFunctor { } // TODO test if this needs to be persistent - auto repartitioner = gko::share( - gko::experimental::distributed::repartitioner::create( - *comm.get(), partition_.get_host_partition(), - partition_.get_device_partition(), false)); - auto to_mat = gko::share( - dist_mtx::create(exec, repartitioner->get_to_communicator())); - - auto [local_scatter_map, non_local_scatter_map, sorting_idx, send_sizes, - send_offsets, recv_sizes, recv_offsets] = - repartitioner->gather(dist_A.get(), to_mat.get()); - - // TODO add field name - PersistentArray