Пример #1
0
    def __init__(self, args):
        self.RENDER = True
        try:
            args.remove('--NO-RENDER')
            self.RENDER = False
        except ValueError:
            pass

        print('\nUsage: wave2d.py [num_iterations] [max_framerate])')
        global NUM_ITERATIONS, MAX_FRAMERATE
        if len(args) > 1:
            NUM_ITERATIONS = int(args[1])
        if len(args) > 2:
            MAX_FRAMERATE = int(args[2])

        print('Running wave2d on', charm.numPes(), 'processors for', NUM_ITERATIONS, 'iterations')
        print('Max framerate is', MAX_FRAMERATE, 'frames per second')

        self.count = 0  # tracks from how many workers I have received a subimage for this iteration
        programStartTime = frameStartTime = time.time()

        # Create new 2D array of worker chares
        array = Array(Wave, (CHARE_ARRAY_WIDTH, CHARE_ARRAY_HEIGHT))
        # tell all the worker chares to start the simulation
        array.work(self.thisProxy)

        if self.RENDER:
            tk = tkinter.Tk()
            self.frame = Image.new('RGB', (IMAGE_WIDTH, IMAGE_HEIGHT))
            img = ImageTk.PhotoImage(self.frame)
            label_image = tkinter.Label(tk, image=img)
            label_image.pack()

        self.frameReady = Future()
        for i in range(NUM_ITERATIONS):
            self.frameReady.get()  # wait for the next frame
            if MAX_FRAMERATE > 0:
                elapsed = time.time() - frameStartTime
                if elapsed < 1/MAX_FRAMERATE:
                    # enforce framerate
                    charm.sleep(1/MAX_FRAMERATE - elapsed)
            if self.RENDER:
                fps = round(1/(time.time() - frameStartTime))
                # draw frames per second value on image
                d = ImageDraw.Draw(self.frame)
                d.text((10,10), str(fps) + ' fps', fill=(0,0,0,255))
                img = ImageTk.PhotoImage(self.frame)
                label_image.configure(image=img)
                label_image.image = img
                tk.update_idletasks()
                tk.update()

            # loop simulation every 1000 iterations
            reset = (i % 1000 == 0)
            frameStartTime = time.time()
            array.resume(reset)  # tell workers to resume
            self.frameReady = Future()

        print('Program Done!, Total time=', time.time() - programStartTime)
        exit()
Пример #2
0
def main(args):
    numChares = charm.numPes() * CHARES_PER_PE
    cells = Array(Cell, numChares, args=[numChares])
    charm.awaitCreation(cells)
    f = Future()
    cells.work(f)
    f.get()
    exit()
Пример #3
0
def main(args):

    my = Mytest()
    tree = my.tree
    driver = my.cal()

    very_start = time()

    f = charm.createFuture()
    f_other = charm.createFuture()
    ro.driver = driver
    step3_array = Array(step3_chare, args=[6, f], dims=6, map=Group(WorkerMap))
    my_array = Array(MyChare, args=[f_other, tree.nsources], dims=2)

    for i in range(0, 6):
        step3_array[i].index_setter(i)
    step3_array.calculate()
    driver.step21()
    driver.step22()

    my_array[0].summation_setter(driver)
    my_array[0].flag_setter("4")

    my_array[1].summation_setter(driver)
    my_array[1].flag_setter("6")

    my_array.work()

    local_result = driver.step5()
    if driver.traversal.from_sep_close_bigger_starts is not None:
        step_6_extra = driver.step6_extra()
        local_result += step_6_extra
    local_result += f.get()

    local_exps = f_other.get()

    local_exps = driver.wrangler.refine_locals(
        driver.traversal.level_start_target_or_target_parent_box_nrs,
        driver.traversal.target_or_target_parent_boxes, local_exps)
    local_result_from_exp = driver.wrangler.eval_locals(
        driver.traversal.level_start_target_box_nrs,
        driver.traversal.target_boxes, local_exps)

    end = time()
    result = driver.wrangler.reorder_potentials(local_result_from_exp +
                                                local_result)
    result = driver.wrangler.finalize_potentials(result)
    print("at the end:" + str(end - very_start))
    assert (result == driver.src_weights.sum()).all()
    exit()
Пример #4
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()
Пример #5
0
def main(args):

    my = Mytest()
    tree = my.tree
    driver = my.cal()

    very_start = time()

    f_step3 = charm.createFuture()
    f_step4 = charm.createFuture()
    f_step5 = charm.createFuture()
    f_step6 = charm.createFuture()

    step3_dr = step3_driver(driver.traversal.target_boxes,driver.traversal.neighbor_source_boxes_starts,
                            driver.traversal.neighbor_source_boxes_lists,
                            driver.src_weights,tree)
    step3_array = Array(MyChare, args=[f_step3,7,step3_dr], dims=7,map=Group(WorkerMap))


    for i in range(0,7):
        step3_array[i].index_setter(i)
        step3_array[i].flag_setter("3")
    step3_array.work()
    driver.step21()
    driver.step22()
    step4_dr = step4_driver(tree.nboxes,driver.traversal.level_start_target_or_target_parent_box_nrs,
                            driver.traversal.target_or_target_parent_boxes,
                            driver.traversal.from_sep_siblings_starts,
                            driver.traversal.from_sep_siblings_lists,
                            driver.mpole_exps)
    step4_array = Array(MyChare, args=[f_step4, 8,step4_dr], dims=8)
    step6_dr = step6_driver( driver.traversal.level_start_target_or_target_parent_box_nrs,
                             driver.traversal.target_or_target_parent_boxes,
                             driver.traversal.from_sep_bigger_starts,
                             driver.traversal.from_sep_bigger_lists,
                             driver.src_weights,tree)
    step6_array = Array(MyChare, args=[f_step6, 8, step6_dr], dims=8)

    for i in range(0,8):
        step4_array[i].index_setter(i)
        step4_array[i].flag_setter("4")
        step6_array[i].index_setter(i)
        step6_array[i].flag_setter("6")
    if driver.traversal.from_sep_close_smaller_starts is not None:
        step5_with_extent_dr = step5_with_extent_driver(driver.traversal.target_boxes,
                                                        driver.traversal.from_sep_close_smaller_starts,
                                                        driver.traversal.from_sep_close_smaller_lists,
                                                        driver.src_weights, tree)
        step5_array = Array(MyChare, args=[f_step5, 8, step5_with_extent_dr], dims=8)
        for i in range(0, 8):
            step5_array[i].index_setter(i)
            step5_array[i].flag_setter("5")
        step5_array.work()
    step4_array.work()
    step6_array.work()


    local_result = driver.separate_step5()
    if driver.traversal.from_sep_close_smaller_starts is not None:
        local_result+=f_step5.get()


    if driver.traversal.from_sep_close_bigger_starts is not None:
        step_6_extra = driver.step6_extra()
        local_result += step_6_extra
    local_result += f_step3.get()
    local_exps = f_step6.get() + f_step4.get()

    local_exps = driver.wrangler.refine_locals(driver.traversal.level_start_target_or_target_parent_box_nrs,
                                  driver.traversal.target_or_target_parent_boxes,
                                  local_exps)
    last_Step = time()
    local_result_from_exp = driver.wrangler.eval_locals(
        driver.traversal.level_start_target_box_nrs,
        driver.traversal.target_boxes,
        local_exps)



    #

    result = driver.wrangler.reorder_potentials(local_result_from_exp + local_result)
    result = driver.wrangler.finalize_potentials(result)
    end = time()
    print("total time:"+str(end - very_start))

    assert (result == driver.src_weights.sum() ).all()

    exit()