X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6890b9250584b746be6cf8c444237c8811e499b0..5b95be81cb098d4c0a5151409c41df417908b0dd:/src/smpi/smpi_global.cpp diff --git a/src/smpi/smpi_global.cpp b/src/smpi/smpi_global.cpp index fcb2d5821b..2a9ad70f4e 100644 --- a/src/smpi/smpi_global.cpp +++ b/src/smpi/smpi_global.cpp @@ -22,8 +22,13 @@ #include #include #include +#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_kernel, smpi, "Logging specific to SMPI (kernel)"); +#include +#include /* trim_right / trim_left */ + +std::map location2speedup; typedef struct s_smpi_process_data { double simulated; @@ -420,6 +425,29 @@ void smpi_global_init(void) global_timer = xbt_os_timer_new(); xbt_os_walltimer_start(global_timer); } + + if (xbt_cfg_get_string("smpi/comp-adjustment-file")[0] != '\0') { + std::string filename {xbt_cfg_get_string("smpi/comp-adjustment-file")}; + std::ifstream fstream(filename); + if (!fstream.is_open()) { + xbt_die("Could not open file %s. Does it exist?", filename.c_str()); + } + + std::string line; + typedef boost::tokenizer< boost::escaped_list_separator> Tokenizer; + std::getline(fstream, line); // Skip the header line + while (std::getline(fstream, line)) { + Tokenizer tok(line); + Tokenizer::iterator it = tok.begin(); + Tokenizer::iterator end = std::next(tok.begin()); + + std::string location = *it; + boost::trim(location); + location2speedup.insert(std::pair(location, std::stod(*end))); + } + + } + if (process_count == 0){ process_count = SIMIX_process_count(); smpirun=1; @@ -444,6 +472,7 @@ void smpi_global_init(void) process_data[i]->sampling = 0; process_data[i]->finalization_barrier = NULL; process_data[i]->return_value = 0; + process_data[i]->trace_call_loc = xbt_new(smpi_trace_call_location_t, 1); } //if the process was launched through smpirun script we generate a global mpi_comm_world //if not, we let MPI_COMM_NULL, and the comm world will be private to each mpi instance