XBT_INFO("After finalize %d %d", rank, test[0]);
}
-static void alltoall_mpi(int argc, char* argv[])
+static void alltoall_mpi()
{
- MPI_Init(&argc, &argv);
+ MPI_Init();
int rank;
int size;
e.register_function("worker", worker);
// launch two MPI applications as well, one using master_mpi function as main on 2 nodes
SMPI_app_instance_register("master_mpi", master_mpi, 2);
- // the second performing an alltoall on 4 nodes
- SMPI_app_instance_register("alltoall_mpi", alltoall_mpi, 4);
e.load_deployment(argv[2]);
+ // the second performing an alltoall on 4 nodes, started directly, not from the deployment file
+ SMPI_app_instance_start("alltoall_mpi", alltoall_mpi,
+ {e.host_by_name_or_null("Ginette"), e.host_by_name_or_null("Bourassa"),
+ e.host_by_name_or_null("Jupiter"), e.host_by_name_or_null("Fafard")});
+
+ // Start a third MPI application, from a S4U actor after a delay of 10 sec
+ simgrid::s4u::Actor::create("launcher", e.host_by_name_or_null("Ginette"), [&e]() {
+ simgrid::s4u::this_actor::sleep_for(10);
+ XBT_INFO("Start another alltoall_mpi instance");
+ SMPI_app_instance_start("alltoall_mpi", alltoall_mpi,
+ {e.host_by_name_or_null("Ginette"), e.host_by_name_or_null("Bourassa"),
+ e.host_by_name_or_null("Jupiter"), e.host_by_name_or_null("Fafard")});
+ SMPI_app_instance_join("alltoall_mpi");
+ XBT_INFO("This other alltoall_mpi instance terminated.");
+ });
e.run();