X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/325b135f0ee33c6c0242a14e2f58a54fb571b032..80a1fe1a200a4309c36598571b1f4ccb76a8788f:/options.h?ds=inline diff --git a/options.h b/options.h index 70c9f5d..0c69e11 100644 --- a/options.h +++ b/options.h @@ -1,30 +1,78 @@ #ifndef OPTIONS_H #define OPTIONS_H +#include <csignal> // std::sig_atomic_t +#include <string> #include "cost_func.h" +#include "named_object_list.h" + +// These classes may use include options.h, so make forward declarations +class deployment_generator; +class process; // Global parameters, shared by all the processes namespace opt { - extern const char* program_name; - - extern const char* platform_file; - extern const char* application_file; + // Constants + extern const double load_ratio_threshold; + // Global options + extern std::string program_name; extern int help_requested; extern bool version_requested; + extern int option_x; // hidden option, for debugging purpose - extern unsigned log_rate; + // Simulation parameters + extern int log_rate; + extern volatile std::sig_atomic_t exit_request; - extern unsigned maxiter; - extern bool exit_on_close; + // Platform and deployment + extern std::string platform_file; + extern std::string deployment_file; + + // Automatic deployment + namespace auto_depl { + extern bool enabled; + extern std::string topology; + extern unsigned nhosts; + extern double load; + extern bool random_distribution; + extern unsigned long random_seed; + } + // Load balancing algorithm + extern std::string loba_algo; extern bool bookkeeping; + extern double min_transfer_amount; + extern double max_transfer_amount; + extern double min_lb_iter_duration; + // Application parameters extern cost_func comp_cost; extern cost_func comm_cost; + extern double min_comp_iter_duration; + extern unsigned comp_iter_delay; + extern double comp_time_delay; + + // Parameters for the end of the simulation + extern unsigned lb_maxiter; + extern unsigned comp_maxiter; + extern double time_limit; + extern bool exit_on_close; + + // Named parameters lists + extern struct loba_algorithms_type: + public named_object_list2<process, int, char** > { + loba_algorithms_type(); + } loba_algorithms; + + extern struct topologies_type: + public named_object_list<deployment_generator> { + topologies_type(); + } topologies; - int parse_args(int* argc, char* argv[]); + // Utility functions + bool parse_args(int* argc, char* argv[]); void print(); void usage();