void connect_to_server() { /// recv addr and port from server int server_rank = cfio_map_get_server_of_client(rank); char server_ip[NI_MAXHOST]; unsigned short server_port_int; char server_port[11]; MPI_Status sta; MPI_Recv(server_ip, NI_MAXHOST, MPI_CHAR, server_rank, rank, MPI_COMM_WORLD, &sta); MPI_Recv(&server_port_int, 1, MPI_UNSIGNED_SHORT, server_rank, rank + 1, MPI_COMM_WORLD, &sta); sprintf(server_port, "%hu", server_port_int); struct addrinfo *addr; TEST_NZ(getaddrinfo(server_ip, server_port, NULL, &addr)); TEST_Z(ec = rdma_create_event_channel()); TEST_NZ(rdma_create_id(ec, &cm_id, NULL, RDMA_PS_TCP)); TEST_NZ(rdma_resolve_addr(cm_id, NULL, addr->ai_addr, TIMEOUT_IN_MS)); freeaddrinfo(addr); }
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; }