X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f9e6853d2c5b7b867211700bc12f0ee57f640b30..a279c221114b93985c6aa249e71cc4141082b310:/src/smpi/smpi_global.c diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 60e550f84d..75815c11fe 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -72,6 +72,7 @@ void smpi_process_init(int *argc, char ***argv) #ifdef SMPI_F2C smpi_current_rank = index; #endif + data = smpi_process_remote_data(index); simcall_process_set_data(proc, data); if (*argc > 2) { @@ -85,6 +86,11 @@ void smpi_process_init(int *argc, char ***argv) // 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."); @@ -93,6 +99,9 @@ void smpi_process_init(int *argc, char ***argv) 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); } @@ -334,7 +343,7 @@ static void smpi_comm_copy_buffer_callback(smx_action_t comm, && ((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); @@ -345,7 +354,7 @@ static void smpi_comm_copy_buffer_callback(smx_action_t comm, && ((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); }