Beispiel #1
0
int cfio_send_io_done()
{
#ifdef SEND_ADDR
    if (!cfio_rdma_addr_client_test(&addr)) {
        cfio_rdma_client_recv_ack();
        cfio_rdma_client_wait(NULL);
    }
#endif
    cfio_rdma_addr_client_wait(&addr);

    cfio_rdma_addr_client_end_signal(&addr);

#ifdef DEBUG_ADDR
    cfio_rdma_addr_client_show(rank, -1, &addr, itr);
#endif

#ifdef SEND_ADDR
    cfio_rdma_client_send_addr();
#else
    cfio_rdma_client_write_addr();
#endif

#ifdef TRANSFER_ADDR_TIME
    double min_time, max_time, avg_time, temp_time;
    min_time = max_time = avg_time = transfer_addr_time;
    if (0 == rank) {
        int client_amt = cfio_map_get_client_amount();
        int i;
        MPI_Status sta;
        for (i = 1; i < client_amt; ++i) {
            MPI_Recv(&temp_time, 1, MPI_DOUBLE, i, i, MPI_COMM_WORLD, &sta);
            min_time = (min_time > temp_time)? temp_time: min_time;
            max_time = (max_time < temp_time)? temp_time: max_time;
            avg_time += temp_time;
        }
        avg_time /= client_amt;
        printf("client transfer addr: min_time %f, max_time %f, avg_time %f. \n", min_time, max_time, avg_time);
    } else {
        MPI_Send(&transfer_addr_time, 1, MPI_DOUBLE, 0, rank, MPI_COMM_WORLD);
    }
#endif

    ++itr;
    return CFIO_ERROR_NONE;
}
Beispiel #2
0
int cfio_msg_get_max_size(int proc_id)
{   
    int client_num_of_server, max_msg_size, client_amount, server_id; 
    
    if (cfio_map_proc_type(proc_id) == CFIO_MAP_TYPE_CLIENT) {
	server_id = cfio_map_get_server_of_client(proc_id);
	client_num_of_server = cfio_map_get_client_num_of_server(server_id);
    } else if (cfio_map_proc_type(proc_id) == CFIO_MAP_TYPE_SERVER) {
	client_num_of_server = cfio_map_get_client_num_of_server(proc_id);
    }
    client_amount = cfio_map_get_client_amount();

    max_msg_size = MSG_BUF_SIZE;
    max_msg_size = min(max_msg_size, RECV_BUF_SIZE / client_num_of_server / 2);
    max_msg_size = min(max_msg_size, SEND_BUF_SIZE / 2);
    max_msg_size = max(max_msg_size, SEND_MSG_MIN_SIZE / client_amount);
    
    //printf("max_msg_size = %d\n", max_msg_size);

    return max_msg_size;
}