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

Private GIT Repository
0abec0f2e5ef0fe78e1c1802b666dbb62375177c
[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 int log_rate;
25     extern bool exit_request;
26
27     // Platform and deployment
28     extern std::string platform_file;
29     extern std::string deployment_file;
30
31     // Automatic deployment
32     namespace auto_depl {
33         extern bool        enabled;
34         extern std::string topology;
35         extern unsigned    nhosts;
36         extern double      load;
37     }
38
39     // Load balancing algorithm
40     extern std::string loba_algo;
41     extern bool bookkeeping;
42     extern double min_transfer_amount;
43     extern double max_transfer_amount;
44     extern double min_lb_iter_duration;
45
46     // Application parameters
47     extern cost_func comp_cost;
48     extern cost_func comm_cost;
49     extern double min_comp_iter_duration;
50     extern unsigned comp_iter_delay;
51     extern double comp_time_delay;
52
53     // Parameters for the end of the simulation
54     extern unsigned lb_maxiter;
55     extern unsigned comp_maxiter;
56     extern double time_limit;
57     extern bool exit_on_close;
58
59     // Named parameters lists
60     extern struct loba_algorithms_type:
61         public named_object_list2<process, int, char** > {
62             loba_algorithms_type();
63     } loba_algorithms;
64
65     extern struct topologies_type:
66         public named_object_list<deployment_generator> {
67             topologies_type();
68     } topologies;
69
70     // Utility functions
71     bool parse_args(int* argc, char* argv[]);
72     void print();
73     void usage();
74
75 } // namespace opt
76
77 #endif // !OPTIONS_H
78
79 // Local variables:
80 // mode: c++
81 // End: