/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include "mc/mc.h"
-#include "simgrid/s4u/Mailbox.hpp"
-#include "simgrid/s4u/Host.hpp"
-#include "src/msg/msg_private.hpp"
-#include "src/simix/smx_private.hpp"
-#include "src/surf/surf_interface.hpp"
#include "SmpiHost.hpp"
-#include "xbt/config.hpp"
-#include "private.h"
+#include "mc/mc.h"
#include "private.hpp"
+#include "simgrid/s4u/Host.hpp"
+#include "simgrid/s4u/Mailbox.hpp"
#include "smpi_coll.hpp"
#include "smpi_comm.hpp"
#include "smpi_group.hpp"
#include "smpi_info.hpp"
#include "smpi_process.hpp"
+#include "src/msg/msg_private.hpp"
+#include "src/simix/smx_private.hpp"
+#include "src/surf/surf_interface.hpp"
+#include "xbt/config.hpp"
#include <cfloat> /* DBL_MAX */
#include <dlfcn.h>
void smpi_global_init()
{
- MPI_Group group;
-
if (not MC_is_active()) {
global_timer = xbt_os_timer_new();
xbt_os_walltimer_start(global_timer);
}
//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
+ MPI_Group group;
if (smpirun) {
group = new simgrid::smpi::Group(process_count);
MPI_COMM_WORLD = new simgrid::smpi::Comm(group, nullptr);
void smpi_global_destroy()
{
- int count = smpi_process_count();
-
smpi_bench_destroy();
smpi_shared_destroy();
if (MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED){
}else{
smpi_deployment_cleanup_instances();
}
- for (int i = 0; i < count; i++) {
+ for (int i = 0, count = smpi_process_count(); i < count; i++) {
if(process_data[i]->comm_self()!=MPI_COMM_NULL){
simgrid::smpi::Comm::destroy(process_data[i]->comm_self());
}
"You may want to use sampling functions or trace replay to reduce this.");
}
}
- int count = smpi_process_count();
int ret = 0;
- for (int i = 0; i < count; i++) {
+ for (int i = 0, count = smpi_process_count(); i < count; i++) {
if(process_data[i]->return_value()!=0){
ret=process_data[i]->return_value();//return first non 0 value
break;
TRACE_smpi_alloc();
simgrid::surf::surfExitCallbacks.connect(TRACE_smpi_release);
if(smpi_privatize_global_variables == SMPI_PRIVATIZE_MMAP)
- smpi_initialize_global_memory_segments();
+ smpi_backup_global_memory_segment();
}
void SMPI_finalize(){