- char *str_instance_name, *str_rank, *str_pname, *str_tfname;
- int err = asprintf(&str_instance_name, "%s", job->smpi_app_name.c_str());
- xbt_assert(err != -1, "asprintf error");
- err = asprintf(&str_rank, "%d", i);
- xbt_assert(err != -1, "asprintf error");
- err = asprintf(&str_pname, "%d_%d", job->unique_job_number, i);
- xbt_assert(err != -1, "asprintf error");
- err = asprintf(&str_tfname, "%s", job->traces_filenames[i].c_str());
- xbt_assert(err != -1, "asprintf error");
-
- char** argv = xbt_new(char*, 5);
- argv[0] = xbt_strdup("1"); // log only?
- argv[1] = str_instance_name; // application instance
- argv[2] = str_rank; // rank
- argv[3] = str_tfname; // smpi trace file for this rank
- argv[4] = xbt_strdup("0"); // ?
-
- s_smpi_replay_process_args* args = new s_smpi_replay_process_args;
- args->job = job;
- args->semaphore = nullptr;
- args->rank = i;
-
- if (i == 0)
- args->semaphore = job_semaphore;
-
- MSG_process_create_with_arguments(str_pname, smpi_replay_process, (void*)args, hosts[job->allocation[i]], 5, argv);
- free(str_pname);
+ char* str_pname = bprintf("rank_%d_%d", job->unique_job_number, i);
+ simgrid::s4u::Actor::create(str_pname, hosts[job->allocation[i]], smpi_replay_process, job, barrier, i);
+ xbt_free(str_pname);