From 6cc3f3fcfa870c0d93650ddbc138c97b40cacc6a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 23 Mar 2018 21:26:04 +0100 Subject: [PATCH] doc: give example of Utilities::MPI::Partitioner --- doc/doxygen/images/partitioner.png | Bin 0 -> 29910 bytes include/deal.II/base/partitioner.h | 8 + tests/mpi/parallel_partitioner_03b.cc | 144 ++++++++++++++++++ .../parallel_partitioner_03b.mpirun=4.output | 56 +++++++ 4 files changed, 208 insertions(+) create mode 100644 doc/doxygen/images/partitioner.png create mode 100644 tests/mpi/parallel_partitioner_03b.cc create mode 100644 tests/mpi/parallel_partitioner_03b.mpirun=4.output diff --git a/doc/doxygen/images/partitioner.png b/doc/doxygen/images/partitioner.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c3534e63eb36904efa6d5490cf6c407d33d277 GIT binary patch literal 29910 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 +#include +#include +#include +#include + + +void test () +{ + unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD); + unsigned int numproc = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD); + + if (myid==0) deallog << "numproc=" << numproc << std::endl; + + const unsigned int set = 20; + AssertIndexRange (numproc, set-2); + const unsigned int local_size = set - myid; + unsigned int global_size = 0; + unsigned int my_start = 0; + for (unsigned int i=0; ighost_indices = {1, 2, 13, set-2, set-1, set, set+1, 2*set, + 2*set+1, 2*set+3 + }; + local_relevant.add_indices (ghost_indices.begin(), ghost_indices.end()); + } + else if (myid==1) + { + std::vectorghost_indices = {1, 2, 13, set-2, set-1, set, set+1, 2*set, + 2*set+1, 2*set+3, 3*set + }; + local_relevant.add_indices (ghost_indices.begin(), ghost_indices.end()); + } + else if (myid==2) + { + std::vector ghost_indices = { set-2, set-1, set, set+1, 2*set, + 2*set+1, 2*set+3 + }; + local_relevant.add_indices (ghost_indices.begin(), ghost_indices.end()); + + } + else + { + std::vectorghost_indices = {1, 2, 13, 2*set+3 + }; + local_relevant.add_indices (ghost_indices.begin(), ghost_indices.end()); + } + + Utilities::MPI::Partitioner v(local_owned, local_relevant, MPI_COMM_WORLD); + + // write the info on ghost processors and import indices to file + { + std::ofstream file((std::string("dat.") + Utilities::int_to_string(myid)).c_str()); + file << "**** proc " << myid << std::endl; + file << "owned:" << std::endl; + local_owned.print(file); + file <<"relevant:" << std::endl; + local_relevant.print(file); + file << "ghost targets: "; + for (unsigned int i=0; i