DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
MPIRequestersBase.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (c) 2017-2025 The Regents of the University of Michigan and DFT-FE
4// authors.
5//
6// This file is part of the DFT-FE code.
7//
8// The DFT-FE code is free software; you can use it, redistribute
9// it, and/or modify it under the terms of the GNU Lesser General
10// Public License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12// The full text of the license can be found in the file LICENSE at
13// the top level of the DFT-FE distribution.
14//
15// ---------------------------------------------------------------------
16//
17
18/*
19 * @author Bikash Kanungo
20 */
21
22#ifndef dftfeMPIRequestersBase_h
23#define dftfeMPIRequestersBase_h
24#include <TypeConfig.h>
25#include <vector>
26namespace dftfe
27{
28 namespace utils
29 {
30 namespace mpi
31 {
33 {
34 /*
35 *
36 * @brief A pure virtual class to evaluate the list of rank Ids that the
37 * current processor needs to send data.
38 *
39 * In a typical case of distributed data (a vector or array), a
40 * processor needs to communicate part of its part of the data to a
41 * requesting processor. It is useful for the current processor to know
42 * apriori which processors it has to send its part of the distributed
43 * data. This base class provides an interface to indentify the Ids of
44 * the processors (also known as ranks) that it has to send data to. In
45 * MPI parlance, the other processors to which this processor needs to
46 * send data are termed as requesting processors/ranks.
47 *
48 * The actual process of identifying the list of requesting processors
49 * is implemented in the derived classes. There are various different
50 * algorithms with varying computational/communication complexity. Some
51 * use cases are trivial, for example, (a) a serial case where
52 * there are no requesting processors, (b) an all-to-all communication
53 * case where all the other processors are requesting from the
54 * current proccesor.
55 *
56 */
57
58 public:
59 virtual ~MPIRequestersBase() = default;
60 virtual std::vector<size_type>
62 };
63
64 } // end of namespace mpi
65 } // end of namespace utils
66} // end of namespace dftfe
67#endif // dftfeMPIRequestersBase_h
Definition MPIRequestersBase.h:33
virtual std::vector< size_type > getRequestingRankIds()=0
Definition MPICommunicatorP2P.h:46
Definition Cell.h:36
Definition pseudoPotentialToDftfeConverter.cc:34