async def talk_to_client_async(ep, listener): print("{}\t{}\t{}\t{}".format("Size (bytes)", "Latency (us)", "BW (GB/s)", "Issue (us)", "Progress (us)")) for i in range(msg_log): msg_len = 2**i send_obj = b'0' * msg_len for j in range(warmup_iters): await ep.send_obj(send_obj) await recv(ep, msg_len) start = time.time() for j in range(max_iters): await ep.send_obj(send_obj) await recv(ep, msg_len) end = time.time() lat = end - start print("{}\t\t{:.2f}\t\t{:.2f}".format(msg_len, get_avg_us(lat, max_iters), ((msg_len / (lat / 2)) / 1000000))) ucp.destroy_ep(ep) ucp.stop_listener(listener)
async def serve(ep, lf): print('serving', ep) await ep.recv_future() print("Got on", value.decode()) await ep.send_obj(value * 10) ucp.destroy_ep(ep) ucp.stop_listener(lf) print('stopped serving', value.decode())
async def echo_pair(cuda_info=None): loop = asyncio.get_event_loop() listener = ucp.start_listener(ucp.make_server(cuda_info), is_coroutine=True) t = loop.create_task(listener.coroutine) client = await ucp.get_endpoint(address.encode(), listener.port) try: yield listener, client finally: ucp.stop_listener(listener) ucp.destroy_ep(client)
def test_multiple_listeners(): lf1 = ucp.start_listener(hello, is_coroutine=True) lf2 = ucp.start_listener(hello, is_coroutine=True) assert lf1.port > 0 assert lf2.port > 0 assert lf1.port != lf2.port lf1.coroutine.close() lf2.coroutine.close() ucp.stop_listener(lf1) ucp.stop_listener(lf2)
async def _func_ucp_stop_listener(sessionId): """ Stops the listener running in the background on the current worker. :param sessionId: uuid Unique id for current instance :param r: float a random number to stop the function from being cached """ if "ucp_listener" in worker_state(sessionId): listener = worker_state(sessionId)["ucp_listener"] ucp.stop_listener(listener) else: print("Listener not found with sessionId=" + str(sessionId))
async def talk_to_client(ep, listener): global max_msg_log global args start_string = "in talk_to_client" if args.blind_recv: start_string += " + blind recv" if args.check_data: start_string += " + data validity check" print(start_string) msg_log = max_msg_log send_buffer_region = ucp.BufferRegion() send_buffer_region.alloc_host(1 << msg_log) send_msg = ucp.Message(send_buffer_region) recv_msg = None recv_buffer_region = None recv_req = None if not args.blind_recv: recv_buffer_region = ucp.BufferRegion() recv_buffer_region.alloc_host(1 << msg_log) recv_msg = ucp.Message(recv_buffer_region) if args.check_data: send_msg.set_mem(0, 1 << msg_log) if not args.blind_recv: recv_msg.set_mem(0, 1 << msg_log) send_req = await ep.send(send_msg, 1 << msg_log) if not args.blind_recv: recv_req = await ep.recv(recv_msg, 1 << msg_log) else: recv_req = await ep.recv_future() if args.check_data: errs = 0 errs = recv_req.check_mem(1, 1 << msg_log) print("num errs: " + str(errs)) send_buffer_region.free_host() if not args.blind_recv: recv_buffer_region.free_host() ucp.destroy_ep(ep) print("done with talk_to_client") ucp.stop_listener(listener)
async def serve(ep, lf): print("5. Starting serve") if message: # msg = await ep.recv_future() size = len(client_msg) msg = await ep.recv_obj(size) msg = ucp.get_obj_from_msg(msg) print("6. Server got message", bytes(msg).decode()) # response = "Got: {}".format(server_msg.decode()).encode() await ep.send_obj(box(server_msg), name='serve-send') print('7. Stopping server') ucp.destroy_ep(ep) ucp.stop_listener(lf)
async def talk_to_client(ep): global args global max_msg_log start_string = "in talk_to_client" if args.blind_recv: start_string += " + blind recv" if args.use_fast: start_string += " + using fast ops" print(start_string) msg_log = max_msg_log send_buffer_region = ucp.buffer_region() send_buffer_region.alloc_cuda(1 << msg_log) send_msg = ucp.ucp_msg(send_buffer_region) recv_msg = None recv_buffer_region = None recv_req = None if not args.blind_recv: recv_buffer_region = ucp.buffer_region() recv_buffer_region.alloc_cuda(1 << msg_log) recv_msg = ucp.ucp_msg(recv_buffer_region) if args.use_fast: send_req = await ep.send_fast(send_msg, 1 << msg_log) else: send_req = await ep.send(send_msg, 1 << msg_log) if not args.blind_recv: if args.use_fast: recv_req = await ep.recv_fast(recv_msg, 1 << msg_log) else: recv_req = await ep.recv(recv_msg, 1 << msg_log) else: recv_req = await ep.recv_future() send_buffer_region.free_cuda() if not args.blind_recv: recv_buffer_region.free_cuda() ucp.destroy_ep(ep) print("passed talk_to_client") ucp.stop_listener()
async def talk_to_client(ep, listener): global args global max_msg_log global count start_string = "in talk_to_client using " + args.object_type if args.blind_recv: start_string += " + blind recv" print(start_string) print("about to send") send_string = "hello from ucx server @" + socket.gethostname() if args.validate: send_string = 'a' * (2 ** max_msg_log) send_msg = get_msg(send_string, args.object_type) send_req = await ep.send_obj(send_msg, sys.getsizeof(send_msg)) recv_msg = None print("about to recv") if not args.blind_recv: recv_string = "hello from ucx server @" + socket.gethostname() if args.validate: recv_string = 'b' * (2 ** max_msg_log) recv_msg = get_msg(recv_string, args.object_type) recv_req = await ep.recv_obj(recv_msg, sys.getsizeof(recv_msg)) else: recv_req = await ep.recv_future() recv_msg = ucp.get_obj_from_msg(recv_req) if not args.validate: print_msg("server sent: ", send_msg, args.object_type) print_msg("server received: ", recv_msg, args.object_type) else: assert(recv_msg == get_msg('d' * (2 ** max_msg_log), args.object_type)) ucp.destroy_ep(ep) print('talk_to_client done') count += 1 if 2 == count: ucp.stop_listener(listener) print('past attempt to stop listener')
async def inc(ep, lf): nonlocal arr times = [] tstart = clock() cuda = np.__name__ == 'cupy' for i in range(n_iter): t0 = clock() if recv == 'recv_into': await ep.recv_into(arr, n_bytes) t1 = t2 = clock() else: obj = await ep.recv_obj(n_bytes, cuda=cuda) t1 = clock() arr = np.asarray(obj.get_obj()) t2 = clock() if increment: arr += 1 await ep.send_obj(arr) t3 = clock() times.append( (t1 - t0, t2 - t1, t3 - t2, t3 - tstart) ) tstart = t3 if verbose: import pandas as pd df = pd.DataFrame(times, columns=[recv, 'asarray', 'send', 'total']) print('\n') print(df) await ep.send_obj(np.ones(1)) await ep.recv_future() await asyncio.sleep(2) ep.close() ucp.stop_listener(lf)
async def talk_to_client(ep, listener): print("about to send") base = b"0" * args.n_bytes send_msg = get_msg(base, args.object_type) await ep.send_obj(send_msg) print("about to recv") if not args.blind_recv: recv_req = await ep.recv_obj(args.n_bytes) recv_msg = get_msg(recv_req.get_obj(), args.object_type) else: recv_req = await ep.recv_future() recv_msg = ucp.get_obj_from_msg(recv_req) if not args.validate: print("server sent: ", reprlib.repr(send_msg), type(send_msg)) print("server recv: ", reprlib.repr(recv_msg), type(recv_msg)) else: check(send_msg, recv_msg, args.object_type) ucp.destroy_ep(ep) print("talk_to_client done") ucp.stop_listener(listener)
async def talk_to_client(ep, listener): recv_req = await ep.recv_future() recv_msg = ucp.get_obj_from_msg(recv_req) ucp.destroy_ep(ep) ucp.stop_listener(listener)
async def hello(ep, listener): await asyncio.sleep(0) ep.close() ucp.stop_listener(listener)