Bridge++  Ver. 2.0.4
bridge_setup.cpp
Go to the documentation of this file.
1 
14 /*
15  Only the master node opens the logfile [22 April 2025 kanamori]
16  */
17 
18 
19 #include "bridge_setup.h"
22 #include "Tools/timer.h"
23 #include "bridge_init_factory.h"
24 
25 #ifdef USE_GROUP_SU3
26 #define Nc 3
27 #else
28 #ifdef USE_GROUP_SU2
29 #define Nc 2
30 #else
31 #ifdef USE_GROUP_SU_N
32 #define Nc 3
33 #endif
34 #endif
35 #endif
36 
37 
38 int bridge_initialize(int *pargc, char ***pargv)
39 {
40  // initialize communicator
41  Communicator::init(pargc, pargv);
42 
43  // initialize thread manager
44  //-
45 
46  // setup factory
47 #if defined(USE_FACTORY) && !defined(USE_FACTORY_AUTOREGISTER)
48  bridge_init_factory();
49 #endif
50 
51 #if defined(DEBUG) && defined(USE_FACTORY)
52  // bridge_report_factory();
53 #endif
54 
55  // show banner
56  vout.general("Bridge++ %s\n\n", BRIDGE_VERSION);
57 
59 
60  return EXIT_SUCCESS;
61 }
62 
63 
64 int bridge_initialize(int *pargc, char ***pargv,
65  const Parameters& params
66  )
67 {
68  bridge_initialize(pargc, pargv);
69 
70  bridge_setup(params);
71 
72  return EXIT_SUCCESS;
73 }
74 
75 
76 int bridge_initialize(int *pargc, char ***pargv,
77  const std::vector<int>& lattice_size,
78  const std::vector<int>& grid_size,
79  const int number_of_threads,
80  const int number_of_colors,
81  const std::string& logfile,
82  const std::string& ildg_logfile,
83  const std::string& verbose_level
84  )
85 {
86  bridge_initialize(pargc, pargv);
87 
88  bridge_setup(lattice_size,
89  grid_size,
90  number_of_threads,
91  number_of_colors,
92  logfile,
93  verbose_level);
94 
95  return EXIT_SUCCESS;
96 }
97 
98 
100 {
102 
104 
106 
107  return EXIT_SUCCESS;
108 }
109 
110 
111 void bridge_setup(const Parameters& params)
112 {
113  std::vector<int> lattice_size;
114  std::vector<int> grid_size = std::vector<int>(); // will be auto-shaped.
115  int number_of_threads = 0; // will be auto-adjusted.
116  int number_of_colors = Nc;
117  std::string logfile = "stdout";
118  std::string ildg_logfile = "stdout";
119  std::string verbose_level = "General";
120 
121  int ret = 0;
122 
123  ret += params.fetch_int_vector("lattice_size", lattice_size);
124  ret += params.fetch_int_vector("grid_size", grid_size);
125  ret += params.fetch_int("number_of_thread", number_of_threads);
126  ret += params.fetch_int("number_of_color", number_of_colors);
127  ret += params.fetch_string("log_filename", logfile);
128  ret += params.fetch_string("verbose_level", verbose_level);
129 
130  bridge_setup(lattice_size,
131  grid_size,
132  number_of_threads,
133  number_of_colors,
134  logfile,
135  verbose_level
136  );
137 }
138 
139 
141  const std::vector<int>& lattice_size,
142  const std::vector<int>& grid_size,
143  const int number_of_threads,
144  const int number_of_colors,
145  const std::string& logfile,
146  const std::string& ildg_logfile,
147  const std::string& verbose_level
148  )
149 {
150  bridge_setup(lattice_size,
151  grid_size,
152  number_of_threads,
153  number_of_colors,
154  logfile,
155  verbose_level
156  );
157 }
158 
160  const std::vector<int>& lattice_size,
161  const std::vector<int>& grid_size_hint,
162  const int number_of_threads,
163  const int number_of_colors,
164  const std::string& logfile,
165  const std::string& verbose_level
166  )
167 {
168  // report
169  vout.general("Main: input parameters\n");
170  vout.general(" lattice_size = %s\n", Parameters::to_string(lattice_size).c_str());
171  vout.general(" grid_size = %s\n", Parameters::to_string(grid_size_hint).c_str());
172  vout.general(" number of thread = %d\n", number_of_threads);
173  vout.general(" number of color = %d\n", number_of_colors);
174  vout.general(" logfile = %s\n", logfile.c_str());
175  vout.general(" vlevel = %s\n", verbose_level.c_str());
176 
177 
178  // setup communicator
179  // grid may be auto-shaped.
180 
181  std::vector<int> grid_size(grid_size_hint);
182 
183  Communicator::setup(lattice_size, grid_size);
184 
185  // store to global parameters
186  CommonParameters::init(lattice_size, grid_size, number_of_colors);
187 
188  // setup thread mananger
189  ThreadManager::init(number_of_threads);
190 
191  // set log parameters
194 
195  if ((logfile.size() > 0) && (logfile != "stdout")) {
196  vout.init(logfile, 0);
197  } else {
198  vout.init("stdout"); // all processes [for backward compatibility]
199  }
200 
201 }
202 
203 
204 #ifdef Nc
205 #undef Nc
206 #endif
bridge_setup.h
Bridge::BridgeIO::init
void init(const std::string &filename)
Definition: bridgeIO.cpp:62
Parameters
Class for parameters.
Definition: parameters.h:46
CommonParameters::init_Vlevel
static void init_Vlevel(Bridge::VerboseLevel vlevel)
initialization for default verbose level.
Definition: commonParameters.cpp:113
Parameters::to_string
static string to_string(const vector< T > &v)
Definition: parameters.h:148
BRIDGE_VERSION
#define BRIDGE_VERSION
Definition: configure.h:17
Communicator::setup
static int setup(int ninstance=1)
setup communicator
Definition: communicator.cpp:43
timer.h
bridge_init_factory.h
ParameterCheck::vl
Bridge::VerboseLevel vl
Definition: parameterCheck.cpp:18
Parameters::fetch_int_vector
int fetch_int_vector(const string &key, vector< int > &value) const
Definition: parameters.cpp:429
ThreadManager::init
static void init(int Nthread)
setup: called in main only once.
Definition: threadManager.cpp:202
bridge_finalize
int bridge_finalize()
Definition: bridge_setup.cpp:99
bridge_initialize
int bridge_initialize(int *pargc, char ***pargv)
Definition: bridge_setup.cpp:38
threadManager.h
Timer::timestamp
static void timestamp()
Definition: timer.cpp:19
ThreadManager::finalize
static void finalize()
finalization.
Definition: threadManager.cpp:239
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
bridge_setup
void bridge_setup(const Parameters &params)
Definition: bridge_setup.cpp:111
Communicator::finalize
static int finalize()
finalize communicator
Definition: communicator.cpp:29
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
commonParameters.h
Communicator::init
static int init(int *pargc, char ***pargv)
initialize communicator
Definition: communicator.cpp:22
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
CommonParameters::init
static void init(const std::vector< int > &lattice_size, const std::vector< int > &grid_size)
initialization (Nc=3 is assumed).
Definition: commonParameters.cpp:72
Parameters::fetch_int
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:346
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:569