int sampling; /* inside an SMPI_SAMPLE_ block? */
char* instance_id;
bool replaying; /* is the process replaying a trace */
- xbt_bar_t finalization_barrier;
+ msg_bar_t finalization_barrier;
int return_value;
smpi_trace_call_location_t trace_call_loc;
#if HAVE_PAPI
void smpi_process_init(int *argc, char ***argv)
{
+ if (process_data == nullptr){
+ printf("SimGrid was not initialized properly before entering MPI_Init. Aborting, please check compilation process and use smpirun\n");
+ exit(1);
+ }
if (argc != nullptr && argv != nullptr) {
smx_actor_t proc = SIMIX_process_self();
proc->context->set_cleanup(&MSG_process_cleanup_from_SIMIX);
}
MPI_Comm* temp_comm_world;
- xbt_bar_t temp_bar;
+ msg_bar_t temp_bar;
smpi_deployment_register_process(instance_id, rank, index, &temp_comm_world, &temp_bar);
smpi_process_data_t data = smpi_process_remote_data(index);
data->comm_world = temp_comm_world;
int index = smpi_process_index();
// wait for all pending asynchronous comms to finish
- xbt_barrier_wait(process_data[index_to_process_data[index]]->finalization_barrier);
+ MSG_barrier_wait(process_data[index_to_process_data[index]]->finalization_barrier);
}
/** @brief Check if a process is finalized */
xbt_assert(xbt_cfg_get_int("smpi/async-small-thresh") <= xbt_cfg_get_int("smpi/send-is-detached-thresh"));
- if (xbt_cfg_is_default_value("smpi/running-power")) {
+ if (xbt_cfg_is_default_value("smpi/host-speed")) {
XBT_INFO("You did not set the power of the host running the simulation. "
"The timings will certainly not be accurate. "
- "Use the option \"--cfg=smpi/running-power:<flops>\" to set its value."
+ "Use the option \"--cfg=smpi/host-speed:<flops>\" to set its value."
"Check http://simgrid.org/simgrid/latest/doc/options.html#options_smpi_bench for more information.");
}
+
+ xbt_assert(xbt_cfg_get_double("smpi/cpu-threshold") >=0,
+ "The 'smpi/cpu-threshold' option cannot have negative values [anymore]. If you want to discard "
+ "the simulation of any computation, please use 'smpi/simulate-computation:no' instead.");
}
int smpi_enabled() {
group = smpi_group_new(process_count);
MPI_COMM_WORLD = smpi_comm_new(group, nullptr);
MPI_Attr_put(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, reinterpret_cast<void *>(process_count));
- xbt_bar_t bar=xbt_barrier_init(process_count);
+ msg_bar_t bar = MSG_barrier_init(process_count);
for (i = 0; i < process_count; i++) {
smpi_group_set_mapping(group, i, i);
void smpi_global_destroy()
{
int count = smpi_process_count();
- int i;
smpi_bench_destroy();
if (MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED){
while (smpi_group_unuse(smpi_comm_group(MPI_COMM_WORLD)) > 0);
- xbt_barrier_destroy(process_data[0]->finalization_barrier);
+ MSG_barrier_destroy(process_data[0]->finalization_barrier);
}else{
smpi_deployment_cleanup_instances();
}
- for (i = 0; i < count; i++) {
+ for (int i = 0; i < count; i++) {
if(process_data[i]->comm_self!=MPI_COMM_NULL){
smpi_comm_destroy(process_data[i]->comm_self);
}
smpi_coll_cleanup_callback=nullptr;
smpi_cpu_threshold = xbt_cfg_get_double("smpi/cpu-threshold");
- smpi_running_power = xbt_cfg_get_double("smpi/running-power");
+ smpi_host_speed = xbt_cfg_get_double("smpi/host-speed");
smpi_privatize_global_variables = xbt_cfg_get_boolean("smpi/privatize-global-variables");
if (smpi_cpu_threshold < 0)
smpi_cpu_threshold = DBL_MAX;