Peano
Loading...
Searching...
No Matches
peano.cpp
Go to the documentation of this file.
1#include "peano.h"
2#include "config.h"
3
7#include "tarch/mpi/Rank.h"
9#include "tarch/tarch.h"
10
11#include "peano4/utils/Loop.h"
14
15#include <list>
16#include <fstream>
17
22#ifdef CompilerHasUTSName
23#include <sys/utsname.h>
24#endif
25
27 static bool wrote = false;
28 if (
30 std::cout << "Peano 4 (C) www.peano-framework.org" << std::endl;
31 std::string buildInfo = "build: ";
32
33 buildInfo += std::to_string(Dimensions);
34 buildInfo += "d";
35
36 #ifdef Parallel
37 buildInfo += ", with mpi (";
38 buildInfo += std::to_string( tarch::mpi::Rank::getInstance().getNumberOfRanks() );
39 buildInfo += " ranks)";
40 #else
41 buildInfo += ", no mpi";
42 #endif
43
44 #if defined(SharedOMP)
45 buildInfo += ", omp";
46 #elif defined(SharedTBB)
47 buildInfo += ", tbb";
48 #elif defined(SharedSYCL)
49 buildInfo += ", sycl threading";
50 #elif defined(SharedCPP)
51 buildInfo += ", C++ threading";
52 #else
53 buildInfo += ", no threading";
54 #endif
55
56 if (tarch::multicore::Core::getInstance().getNumberOfThreads()>1) {
57 buildInfo += " (";
58 buildInfo += std::to_string( tarch::multicore::Core::getInstance().getNumberOfThreads() );
59 buildInfo += " threads)";
60 }
61
62 #if defined(GPUOffloadingOMP)
63 buildInfo += ", omp offloading";
64 #elif defined(GPUOffloadingSYCL)
65 buildInfo += ", sycl";
66 #elif defined(GPUOffloadingCPP)
67 buildInfo += ", C++ offloading";
68 #else
69 buildInfo += ", no gpu support";
70 #endif
71
72 if (tarch::accelerator::Device::getInstance().getNumberOfDevices()>0) {
73 buildInfo += " (";
74 buildInfo += std::to_string( tarch::accelerator::Device::getInstance().getNumberOfDevices() );
75 buildInfo += " gpus)";
76 }
77
78 #if PeanoDebug>0
79 buildInfo += ", debug level=" + std::to_string(PeanoDebug);
80 #endif
81
82 std::cout << buildInfo << std::endl;
83 }
84 wrote = true;
85}
86
88/*
89 Had in in Globals.cpp
90
91 setupLookupTableForTwoPowI();
92 setupLookupTableForThreePowI();
93 setupLookupTableForFourPowI();
94 setupLookupTableForDPowI();
95*/
96
99}
100
101int peano4::initParallelEnvironment([[maybe_unused]] int* argc, [[maybe_unused]] char*** argv) {
102 int result = 0;
103 #ifdef Parallel
104 if ( tarch::mpi::Rank::getInstance().init(argc, argv) ) {
106
107 clock_t timeout = 60;
110 } else {
111 result = -2;
112 }
113 #endif
114
115 #ifdef SharedMemoryParallelisation
116 if ( tarch::multicore::Core::getInstance().isInitialised() ) {
117 } else {
118 result = -3;
119 }
120 #endif
121
123
124 return result;
125}
126
132
149
std::bitset< Dimensions > periodicBC
Definition main.cpp:19
static void shutdownMPIDatatypes()
Definition Node.cpp:44
void shutdown()
The shutdown is invoked by peano4::shutdownSingletons()
Definition Node.cpp:452
static void initMPIDatatypes()
I originally wanted to embed these guys into the singleton's constructor.
Definition Node.cpp:27
static Node & getInstance()
This operation returns the singleton instance.
Definition Node.cpp:108
void init(const tarch::la::Vector< Dimensions, double > &offset, const tarch::la::Vector< Dimensions, double > &width, const std::bitset< Dimensions > &periodicBC=0)
static SpacetreeSet & getInstance()
virtual void shutdown() override
static Device & getInstance()
static BooleanSemaphoreService & getInstance()
Don't use this routine.
void setDeadlockTimeOut(int valueInSeconds)
Set deadlock time out.
Definition Rank.cpp:566
static int getGlobalMasterRank()
Get the global master.
Definition Rank.cpp:415
static Rank & getInstance()
This operation returns the singleton instance.
Definition Rank.cpp:539
void setTimeOutWarning(int valueInSeconds)
Set time out warning.
Definition Rank.cpp:560
void shutdown()
Shuts down the application.
Definition Rank.cpp:395
static Core & getInstance()
Definition Core.cpp:56
void shutdown()
Shutdown parallel environment.
Definition Core.cpp:63
static ServiceRepository & getInstance()
void init()
Maybe the only service that you don't have to init and shutdown.
void setupLookupTableForDLinearised()
Definition Loop.cpp:68
void setupLookupTableForDDelinearised()
Definition Loop.cpp:79
void shutdownSingletons()
The very first thing I have to do is to shut down Node.
Definition peano.cpp:150
void writeCopyrightMessage()
You can invoke this operation manually, but it will also implicitly be triggered by the init routines...
Definition peano.cpp:26
void fillLookupTables()
Fill Lookup Tables.
Definition peano.cpp:87
int initParallelEnvironment(int *argc, char ***argv)
Init Parallel Environment.
Definition peano.cpp:101
void initSingletons(const tarch::la::Vector< Dimensions, double > &offset, const tarch::la::Vector< Dimensions, double > &width, const std::bitset< Dimensions > &periodicBC=0)
Fire up all the singletons.
Definition peano.cpp:133
void shutdownParallelEnvironment()
Shutdown all the parallel environment, i.e.
Definition peano.cpp:127
Simple vector class.
Definition Vector.h:134