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

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