DFT-EFE
 
Loading...
Searching...
No Matches
MPIRequestersBase.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2021. *
3 * The Regents of the University of Michigan and DFT-EFE developers. *
4 * *
5 * This file is part of the DFT-EFE code. *
6 * *
7 * DFT-EFE is free software: you can redistribute it and/or modify *
8 * it under the terms of the Lesser GNU General Public License as *
9 * published by the Free Software Foundation, either version 3 of *
10 * the License, or (at your option) any later version. *
11 * *
12 * DFT-EFE is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
15 * See the Lesser GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License at the top level of DFT-EFE distribution. If not, see *
19 * <https://www.gnu.org/licenses/>. *
20 ******************************************************************************/
21
22/*
23 * @author Bikash Kanungo
24 */
25
26#ifndef dftefeMPIRequestersBase_h
27#define dftefeMPIRequestersBase_h
28#include <utils/TypeConfig.h>
29#include <vector>
30namespace dftefe
31{
32 namespace utils
33 {
34 namespace mpi
35 {
37 {
38 /*
39 *
40 * @brief A pure virtual class to evaluate the list of rank Ids that the
41 * current processor needs to send data.
42 *
43 * In a typical case of distributed data (a vector or array), a
44 * processor needs to communicate part of its part of the data to a
45 * requesting processor. It is useful for the current processor to know
46 * apriori which processors it has to send its part of the distributed
47 * data. This base class provides an interface to indentify the Ids of
48 * the processors (also known as ranks) that it has to send data to. In
49 * MPI parlance, the other processors to which this processor needs to
50 * send data are termed as requesting processors/ranks.
51 *
52 * The actual process of identifying the list of requesting processors
53 * is implemented in the derived classes. There are various different
54 * algorithms with varying computational/communication complexity. Some
55 * use cases are trivial, for example, (a) a serial case where
56 * there are no requesting processors, (b) an all-to-all communication
57 * case where all the other processors are requesting from the
58 * current proccesor.
59 *
60 */
61
62 public:
63 virtual ~MPIRequestersBase() = default;
64 virtual std::vector<size_type>
66 };
67
68 } // end of namespace mpi
69 } // end of namespace utils
70} // end of namespace dftefe
71#endif // dftefeMPIRequestersBase_h
Definition: MPIRequestersBase.h:37
virtual std::vector< size_type > getRequestingRankIds()=0
dealii includes
Definition: AtomFieldDataSpherical.cpp:31