- if (argc != nullptr && argv != nullptr) {
- simgrid::s4u::ActorPtr proc = simgrid::s4u::Actor::self();
- proc->get_impl()->context_->set_cleanup(&SIMIX_process_cleanup);
- // cheinrich: I'm not sure what the impact of the SMPI_switch_data_segment on this call is. I moved
- // this up here so that I can set the privatized region before the switch.
- ActorExt* process = smpi_process_remote(proc);
- //if we are in MPI_Init and argc handling has already been done.
- if (process->initialized())
- return;
-
- process->state_ = SmpiProcessState::INITIALIZING;
-
- char* instance_id = (*argv)[1];
- try {
- int rank = std::stoi(std::string((*argv)[2]));
- smpi_deployment_register_process(instance_id, rank, proc);
- } catch (std::invalid_argument& ia) {
- throw std::invalid_argument(std::string("Invalid rank: ") + (*argv)[2]);
- }