#include <string>
#include "cost_func.h"
+#include "deployment.h"
+#include "named_object_list.h"
+#include "process.h"
// Global parameters, shared by all the processes
namespace opt {
- extern std::string program_name;
-
- extern std::string platform_file;
- extern std::string deployment_file;
+ // Constants
+ extern const double load_ratio_threshold;
+ // Global options
+ extern std::string program_name;
extern int help_requested;
extern bool version_requested;
+ // Simulation parameters
extern unsigned log_rate;
+ // 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 double load;
}
- extern std::string topology;
- extern double init_load;
-
- extern unsigned maxiter;
- extern bool exit_on_close;
-
+ // Load balancing algorithm
+ extern std::string loba_algo;
extern bool bookkeeping;
+ // Application parameters
extern cost_func comp_cost;
extern cost_func comm_cost;
+ extern unsigned comp_maxiter;
+ extern unsigned lb_maxiter;
+ 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();