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()
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()
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()
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()
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()