smpi_global->hosts = NULL;
smpi_global->host_count = 0;
- // running hosts
- smpi_global->running_hosts_count = 0;
-
// mallocators
smpi_global->request_mallocator =
xbt_mallocator_new(SMPI_REQUEST_MALLOCATOR_SIZE, smpi_request_new,
smpi_message_free, smpi_message_reset);
// queues
- smpi_global->pending_send_request_queues = xbt_new(xbt_fifo_t, size);
- smpi_global->pending_recv_request_queues = xbt_new(xbt_fifo_t, size);
smpi_global->received_message_queues = xbt_new(xbt_fifo_t, size);
// sender/receiver processes
- smpi_global->sender_processes = xbt_new(smx_process_t, size);
- smpi_global->receiver_processes = xbt_new(smx_process_t, size);
+ smpi_global->main_processes = xbt_new(smx_process_t, size);
// timers
smpi_global->timer = xbt_os_timer_new();
smpi_global->do_once_mutex = SIMIX_mutex_init();
for (i = 0; i < size; i++) {
- smpi_global->pending_send_request_queues[i] = xbt_fifo_new();
- smpi_global->pending_recv_request_queues[i] = xbt_fifo_new();
smpi_global->received_message_queues[i] = xbt_fifo_new();
}
smpi_do_once_duration_node_t curr, next;
// processes
- xbt_free(smpi_global->sender_processes);
- xbt_free(smpi_global->receiver_processes);
+ xbt_free(smpi_global->main_processes);
// mallocators
xbt_mallocator_free(smpi_global->request_mallocator);
SIMIX_mutex_destroy(smpi_global->do_once_mutex);
for (i = 0; i < size; i++) {
- xbt_fifo_free(smpi_global->pending_send_request_queues[i]);
- xbt_fifo_free(smpi_global->pending_recv_request_queues[i]);
xbt_fifo_free(smpi_global->received_message_queues[i]);
}
- xbt_free(smpi_global->pending_send_request_queues);
- xbt_free(smpi_global->pending_recv_request_queues);
xbt_free(smpi_global->received_message_queues);
xbt_free(smpi_global);
-
smpi_global = NULL;
+
+ /* free smpi_mpi_global */
+ SIMIX_mutex_destroy(smpi_mpi_global->mpi_comm_world->barrier_mutex);
+ SIMIX_cond_destroy(smpi_mpi_global->mpi_comm_world->barrier_cond);
+ xbt_free(smpi_mpi_global->mpi_comm_world);
+
+ xbt_free(smpi_mpi_global->mpi_byte);
+ xbt_free(smpi_mpi_global->mpi_int);
+ xbt_free(smpi_mpi_global->mpi_double);
+
+ xbt_free(smpi_mpi_global->mpi_land);
+ xbt_free(smpi_mpi_global->mpi_sum);
+
+ xbt_free(smpi_mpi_global);
+
}
int smpi_host_index()