#ifdef SMPI_F2C
smpi_current_rank = index;
#endif
+
data = smpi_process_remote_data(index);
simcall_process_set_data(proc, data);
if (*argc > 2) {
// set the process attached to the mailbox
simcall_rdv_set_receiver(data->mailbox_small, proc);
XBT_DEBUG("<%d> New process in the game: %p", index, proc);
+
+ if(smpi_privatize_global_variables){
+ switch_data_segment(index);
+ }
+
}
if (smpi_process_data() == NULL)
xbt_die("smpi_process_data() returned NULL. You probably gave a NULL parameter to MPI_Init. Although it's required by MPI-2, this is currently not supported by SMPI.");
void smpi_process_destroy(void)
{
int index = smpi_process_index();
+ if(smpi_privatize_global_variables){
+ switch_data_segment(index);
+ }
process_data[index]->state = SMPI_FINALIZED;
XBT_DEBUG("<%d> Process left the game", index);
}
&& ((char*)buff >= start_data_exe)
&& ((char*)buff < start_data_exe + size_data_exe )
){
- XBT_WARN("Privatization : We are copying from a zone inside global memory... Saving data to temp buffer !");
+ XBT_DEBUG("Privatization : We are copying from a zone inside global memory... Saving data to temp buffer !");
switch_data_segment(((smpi_process_data_t)SIMIX_process_get_data(comm->comm.src_proc))->index);
tmpbuff = (void*)xbt_malloc(buff_size);
memcpy(tmpbuff, buff, buff_size);
&& ((char*)comm->comm.dst_buff >= start_data_exe)
&& ((char*)comm->comm.dst_buff < start_data_exe + size_data_exe )
){
- XBT_WARN("Privatization : We are copying to a zone inside global memory - Switch data segment");
+ XBT_DEBUG("Privatization : We are copying to a zone inside global memory - Switch data segment");
switch_data_segment(((smpi_process_data_t)SIMIX_process_get_data(comm->comm.dst_proc))->index);
}