-/* Copyright (c) 2010-2021. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-2023. The SimGrid Team. All rights reserved. */
/* 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 <array>
#include <cstdio> /* snprintf */
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
+XBT_LOG_NEW_DEFAULT_CATEGORY(smpi_masterworkers, "Messages specific for this example");
static void master(std::vector<std::string> args)
{
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;
xbt_assert(argc > 2,
"Usage: %s platform_file deployment_file\n"
- "\nexample: %s msg_platform.xml msg_deployment.xml\n",
+ "\nexample: %s platform.xml deployment.xml\n",
argv[0], argv[0]);
e.load_platform(argv[1]);
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();
- XBT_INFO("Simulation time %g", e.get_clock());
+ XBT_INFO("Simulation time %g", simgrid::s4u::Engine::get_clock());
SMPI_finalize();
return 0;