int cfio_finalize() { int ret,flag; cfio_msg_t *msg; ret = MPI_Finalized(&flag); if(flag) { error("***You should not call MPI_Finalize before cfio_Finalized*****\n"); return CFIO_ERROR_FINAL_AFTER_MPI; } if(cfio_map_proc_type(rank) == CFIO_MAP_TYPE_CLIENT) { cfio_send_io_done(&msg, rank); } if(cfio_map_proc_type(rank) == CFIO_MAP_TYPE_SERVER) { cfio_server_final(); }else if(cfio_map_proc_type(rank) == CFIO_MAP_TYPE_CLIENT) { cfio_id_final(); cfio_send_final(); } cfio_map_final(); debug(DEBUG_CFIO, "success return."); return CFIO_ERROR_NONE; }
int cfio_server_final() { cfio_io_final(); cfio_id_final(); cfio_recv_final(); times_final(); begin_time = times_cur(); cfio_rdma_server_final(); end_time = times_cur(); // printf("server %d rdma final %f. \n", rank, end_time - begin_time); int i; for (i = 0; i < client_num; ++i) { free(recv_bufs[i]); free(buf_addrs[i]); } free(recv_bufs); free(buf_addrs); return CFIO_ERROR_NONE; }