Example #1
0
    def __init__(self, args):
        if sys.version_info < (3, 0, 0):  # not supported in Python 2.7
            exit()
        assert charm.numPes() >= 4
        self.done = -1
        workers = Group(Worker)
        controllers = Array(Controller, charm.numPes())
        receivers = Array(CallbackReceiver,
                          charm.numPes(),
                          args=[self.thisProxy])
        workers.work(receivers[1].getResult)
        self.wait('self.done == 1')
        self.done = -1

        controllers[1].start(workers, receivers[2].getResult)
        self.wait('self.done == 2')
        self.done = -1

        controllers[2].start(workers, receivers.getResultBroadcast)
        self.wait('self.done == ' + str(charm.numPes()))
        self.done = -1

        f = Future()
        controllers[3].start(workers, f)
        assert f.get() == (charm.numPes() * (charm.numPes() - 1)) // 2

        exit()
Example #2
0
def main(args):
    assert charm.numPes() % 2 == 0
    g = Group(Test)
    gsec = g[::2]  # make a section with even numbered elements

    f = Future(2)
    g.work(f, charm.numPes())
    gsec.work(f, charm.numPes() // 2, gsec)
    f.get()
    g.verify(awaitable=True).get()
    exit()
Example #3
0
def main(args):
    a = Array(Test, charm.numPes())
    sleepTimes = [random.uniform(0.5, 1.5) for i in range(charm.numPes())]
    # for some reason, work() runs on PE 0 before sending the broadcast msgs out
    # to the other PEs, so I set wait time to 0 on PE 0
    sleepTimes[0] = 0.0
    t0 = time.time()
    a.work(sleepTimes, awaitable=True).get()  # wait for broadcast to complete
    wait_time = time.time() - t0
    assert (wait_time >= max(sleepTimes))
    print(wait_time, max(sleepTimes))

    g = Group(Test)
    sleepTimes = [random.uniform(0.5, 1.5) for i in range(charm.numPes())]
    sleepTimes[0] = 0.0
    t0 = time.time()
    g.work(sleepTimes, awaitable=True).get()  # wait for broadcast to complete
    wait_time = time.time() - t0
    assert (wait_time >= max(sleepTimes))
    print(wait_time, max(sleepTimes))

    exit()
Example #4
0
def main(args):
    # create Group of MyChare objects (there will be one object on each core)
    my_group = Group(MyChare)
    # invoke 'work' method of every element, passing number 3 as message
    my_group.work(3)
Example #5
0
def hello(args):
    my_group = Group(MyChare)
    my_group.work(3)