X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/81e177c8a5ad9bbba3a3dc10203269159ca2970f..41882c654e7e6c14ae1849bafb8a8e8b0204fca0:/examples/smpi/replay_multiple_manual_deploy/replay_multiple_manual.cpp diff --git a/examples/smpi/replay_multiple_manual_deploy/replay_multiple_manual.cpp b/examples/smpi/replay_multiple_manual_deploy/replay_multiple_manual.cpp index 23c53d07b4..191b8572a6 100644 --- a/examples/smpi/replay_multiple_manual_deploy/replay_multiple_manual.cpp +++ b/examples/smpi/replay_multiple_manual_deploy/replay_multiple_manual.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2018. The SimGrid Team. +/* Copyright (c) 2009-2020. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -14,7 +14,7 @@ This is done to avoid SMPI actors to start at actor_id=0. 3. For each job: 1. Sleep until job's starting time is reached (if needed) - 2. Launch the replay of the corresponding time-indepent trace. + 2. Launch the replay of the corresponding time-independent trace. 3. Create inter-process noise, by spawning useless actors. 4. Wait for completion (via s4u::Engine's run method) */ @@ -56,30 +56,16 @@ static bool job_comparator(const Job* j1, const Job* j2) static void smpi_replay_process(Job* job, simgrid::s4u::BarrierPtr barrier, int rank) { - // Prepare data for smpi_replay_run - int argc = 5; - char** argv = xbt_new(char*, argc); - argv[0] = xbt_strdup("1"); // log only? - argv[1] = xbt_strdup(job->smpi_app_name.c_str()); // application instance - argv[2] = bprintf("%d", rank); // rank - argv[3] = xbt_strdup(job->traces_filenames[rank].c_str()); // smpi trace file for this rank - argv[4] = xbt_strdup("0"); // ? - XBT_INFO("Replaying rank %d of job %d (smpi_app '%s')", rank, job->unique_job_number, job->smpi_app_name.c_str()); - smpi_replay_run(&argc, &argv); + smpi_replay_run(job->smpi_app_name.c_str(), rank, 0, job->traces_filenames[rank].c_str()); XBT_INFO("Finished replaying rank %d of job %d (smpi_app '%s')", rank, job->unique_job_number, job->smpi_app_name.c_str()); barrier->wait(); - - // Memory clean-up — leaks can come from argc/argv modifications from smpi_replay_run - for (int i = 0; i < argc; ++i) - xbt_free(argv[i]); - xbt_free(argv); } // Sleeps for a given amount of time -static int sleeper_process(int* param) +static int sleeper_process(const int* param) { XBT_DEBUG("Sleeping for %d seconds", *param); simgrid::s4u::this_actor::sleep_for(*param); @@ -120,7 +106,7 @@ static int job_executor_process(Job* job) } // Executes a workload of SMPI processes -static int workload_executor_process(std::vector* workload) +static int workload_executor_process(const std::vector* workload) { for (Job* job : *workload) { // Let's wait until the job's waiting time if needed @@ -143,7 +129,7 @@ static int workload_executor_process(std::vector* workload) char* str_pname = bprintf("job_%04d", job->unique_job_number); XBT_INFO("Launching the job executor of job %d (app '%s')", job->unique_job_number, job->smpi_app_name.c_str()); simgrid::s4u::Actor::create(str_pname, hosts[job->allocation[0]], job_executor_process, job); - free(str_pname); + xbt_free(str_pname); } return 0;