jsuarez/tools/TestDropbox.py (41 lines of code) (raw):

from sim.lib import MPIUtils def packets(): return [i for i in range(10000)] class Client: def __init__(self, server): self.server = server def step(self): MPIUtils.print(MPIUtils.ALL, 'Client Recv') packets = MPIUtils.recv(self.server, usePar=True) MPIUtils.print(MPIUtils.ALL, 'Client Send') MPIUtils.isend(packets, self.server, tag=MPIUtils.core()) class Server: def __init__(self, clients): self.clients = clients def map(self): MPIUtils.print(MPIUtils.ALL, 'Server Send') for worker in self.clients: MPIUtils.print(MPIUtils.ALL, 'Server Send') for pack in packets(): MPIUtils.isend(pack, worker, tag=worker) def reduce(self): reqs = [] for client in self.clients: MPIUtils.print(MPIUtils.ALL, 'Server Recv') reqs.append(MPIUtils.irecv(client, tag=client)) for req in reqs: req.wait() def test(): if MPIUtils.core() == MPIUtils.MASTER: server = Server([1]) else: client = Client(0) while True: if MPIUtils.core() == MPIUtils.MASTER: server.map() elif MPIUtils.core() == 1: client.step() if MPIUtils.core() == MPIUtils.MASTER: server.reduce() if __name__ == '__main__': test()