X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6847a26d9973030337f6ef9f18464b1f04ce7452..a1c473c81c3e8a464c4250ab0dfccf2ca59ea63c:/src/smpi/internals/smpi_bench.cpp diff --git a/src/smpi/internals/smpi_bench.cpp b/src/smpi/internals/smpi_bench.cpp index 17e2f24ce1..f7101a3e4c 100644 --- a/src/smpi/internals/smpi_bench.cpp +++ b/src/smpi/internals/smpi_bench.cpp @@ -30,7 +30,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_bench, smpi, "Logging specific to SMPI (ben double smpi_cpu_threshold = -1; double smpi_host_speed; -shared_malloc_type smpi_cfg_shared_malloc = shmalloc_global; +SharedMallocType smpi_cfg_shared_malloc = SharedMallocType::GLOBAL; double smpi_total_benched_time = 0; extern "C" XBT_PUBLIC void smpi_execute_flops_(double* flops); @@ -48,7 +48,7 @@ void smpi_execute_(double *duration) void smpi_execute_flops(double flops) { xbt_assert(flops >= 0, "You're trying to execute a negative amount of flops (%f)!", flops); XBT_DEBUG("Handle real computation time: %f flops", flops); - smx_activity_t action = simcall_execution_start("computation", flops, 1, 0, smpi_process()->process()->get_host()); + smx_activity_t action = simcall_execution_start("computation", flops, 1, 0, smpi_process()->get_actor()->get_host()); simcall_set_category (action, TRACE_internal_smpi_get_category()); simcall_execution_wait(action); smpi_switch_data_segment(simgrid::s4u::Actor::self()); @@ -82,7 +82,7 @@ void smpi_execute_benched(double duration) void smpi_bench_begin() { - if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) { + if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) { smpi_switch_data_segment(simgrid::s4u::Actor::self()); } @@ -90,7 +90,7 @@ void smpi_bench_begin() return; #if HAVE_PAPI - if (not xbt_cfg_get_string("smpi/papi-events").empty()) { + if (not simgrid::config::get_value("smpi/papi-events").empty()) { int event_set = smpi_process()->papi_event_set(); // PAPI_start sets everything to 0! See man(3) PAPI_start if (PAPI_LOW_LEVEL_INITED == PAPI_is_initialized()) { @@ -119,7 +119,7 @@ void smpi_bench_end() * An MPI function has been called and now is the right time to update * our PAPI counters for this process. */ - if (xbt_cfg_get_string("smpi/papi-events")[0] != '\0') { + if (not simgrid::config::get_value("smpi/papi-events").empty()) { papi_counter_t& counter_data = smpi_process()->papi_counters(); int event_set = smpi_process()->papi_event_set(); std::vector event_values = std::vector(counter_data.size()); @@ -142,8 +142,8 @@ void smpi_bench_end() xbt_die("Aborting."); } - if (xbt_cfg_get_string("smpi/comp-adjustment-file")[0] != '\0') { // Maybe we need to artificially speed up or slow - // down our computation based on our statistical analysis. + // Maybe we need to artificially speed up or slow down our computation based on our statistical analysis. + if (simgrid::config::get_value("smpi/comp-adjustment-file")[0] != '\0') { smpi_trace_call_location_t* loc = smpi_process()->call_location(); std::string key = loc->get_composed_key(); @@ -154,19 +154,19 @@ void smpi_bench_end() } // Simulate the benchmarked computation unless disabled via command-line argument - if (xbt_cfg_get_boolean("smpi/simulate-computation")) { + if (simgrid::config::get_value("smpi/simulate-computation")) { smpi_execute(xbt_os_timer_elapsed(timer)/speedup); } #if HAVE_PAPI - if (xbt_cfg_get_string("smpi/papi-events")[0] != '\0' && TRACE_smpi_is_enabled()) { + if (not simgrid::config::get_value("smpi/papi-events").empty() && TRACE_smpi_is_enabled()) { container_t container = - new simgrid::instr::Container(std::string("rank-") + std::to_string(simgrid::s4u::this_actor::get_pid)); + simgrid::instr::Container::by_name(std::string("rank-") + std::to_string(simgrid::s4u::this_actor::get_pid())); papi_counter_t& counter_data = smpi_process()->papi_counters(); for (auto const& pair : counter_data) { - new simgrid::instr::SetVariableEvent( - surf_get_clock(), container, PJ_type_get(/* countername */ pair.first.c_str(), container->type), pair.second); + simgrid::instr::VariableType* variable = static_cast(container->type_->by_name(pair.first)); + variable->set_event(SIMIX_get_clock(), pair.second); } } #endif @@ -180,7 +180,7 @@ static unsigned int private_sleep(double secs) smpi_bench_end(); XBT_DEBUG("Sleep for: %lf secs", secs); - int rank = MPI_COMM_WORLD->rank(); + int rank = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_sleeping_in(rank, secs); simcall_process_sleep(secs); @@ -294,9 +294,6 @@ public: bool need_more_benchs() const; }; -} - -std::unordered_map> samples; bool LocalData::need_more_benchs() const { @@ -308,6 +305,9 @@ bool LocalData::need_more_benchs() const return res; } +std::unordered_map> samples; +} + void smpi_sample_1(int global, const char *file, int line, int iters, double threshold) { SampleLocation loc(global, file, line); @@ -443,6 +443,17 @@ void smpi_bench_destroy() samples.clear(); } +int smpi_getopt_long_only (int argc, char *const *argv, const char *options, + const struct option * long_options, int *opt_index) +{ + if (smpi_process()) + optind = smpi_process()->get_optind(); + int ret = getopt_long_only (argc, argv, options, long_options, opt_index); + if (smpi_process()) + smpi_process()->set_optind(optind); + return ret; +} + int smpi_getopt_long (int argc, char *const *argv, const char *options, const struct option * long_options, int *opt_index) {