]> AND Private Git Repository - loba.git/blob - options.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
fe0df828d79247c0cf68d282213dec4d4b02b55a
[loba.git] / options.h
1 #ifndef OPTIONS_H
2 #define OPTIONS_H
3
4 #include <string>
5 #include "cost_func.h"
6 #include "named_object_list.h"
7
8 // These classes may use include options.h, so make forward declarations
9 class deployment_generator;
10 class process;
11
12 // Global parameters, shared by all the processes
13 namespace opt {
14
15     // Constants
16     extern const double load_ratio_threshold;
17
18     // Global options
19     extern std::string program_name;
20     extern int help_requested;
21     extern bool version_requested;
22
23     // Simulation parameters
24     extern unsigned log_rate;
25
26     // Platform and deployment
27     extern std::string platform_file;
28     extern std::string deployment_file;
29
30     // Automatic deployment
31     namespace auto_depl {
32         extern bool        enabled;
33         extern std::string topology;
34         extern unsigned    nhosts;
35         extern double      load;
36     }
37
38     // Load balancing algorithm
39     extern std::string loba_algo;
40     extern bool bookkeeping;
41
42     // Application parameters
43     extern cost_func comp_cost;
44     extern cost_func comm_cost;
45     extern double min_iter_duration;
46
47     // Parameters for the end of the simulation
48     extern unsigned lb_maxiter;
49     extern unsigned comp_maxiter;
50     extern double time_limit;
51     extern bool exit_on_close;
52
53     // Named parameters lists
54     extern struct loba_algorithms_type:
55         public named_object_list2<process, int, char** > {
56             loba_algorithms_type();
57     } loba_algorithms;
58
59     extern struct topologies_type:
60         public named_object_list<deployment_generator> {
61             topologies_type();
62     } topologies;
63
64     // Utility functions
65     bool parse_args(int* argc, char* argv[]);
66     void print();
67     void usage();
68
69 } // namespace opt
70
71 #endif // !OPTIONS_H
72
73 // Local variables:
74 // mode: c++
75 // End: