Alsvinn  0.5.3
The fast FVM simulator with UQ support
Configuration.hpp
Go to the documentation of this file.
1 /* Copyright (c) 2018 ETH Zurich, Kjetil Olsen Lye
2  * This program is free software: you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation, either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program. If not, see <http://www.gnu.org/licenses/>.
14  */
15 
16 #pragma once
17 #include "alsutils/types.hpp"
18 #include <mpi.h>
19 namespace alsutils {
20 namespace mpi {
21 #ifdef ALSVINN_USE_MPI
22 class Configuration {
23 public:
24  Configuration(MPI_Comm communicator,
25  const std::string& platform = "cpu");
26 
27  MPI_Comm getCommunicator();
28 
29  int getRank() const;
30 
31  int getNumberOfProcesses() const;
32 
33  MPI_Info getInfo();
34  std::string getPlatform() const;
35 
38  alsfvm::shared_ptr<Configuration> makeSubConfiguration(int color,
39  int newRank) const;
40 
41 private:
42  MPI_Comm communicator;
43 
44  int nodeNumber;
45  int numberOfNodes;
46  MPI_Info info;
47  const std::string platform = "cpu";
48 };
49 #else
50 class Configuration {};
51 #endif
52 
53 typedef alsfvm::shared_ptr<Configuration> ConfigurationPtr;
54 } // namespace mpi
55 } // namespace alsutils
Definition: log.hpp:46
alsfvm::shared_ptr< Configuration > ConfigurationPtr
Definition: Configuration.hpp:53
Various utilities for mpi and cuda.
Definition: Factory.hpp:3
Definition: Configuration.hpp:50