def worker(current_rank, num_ranks, and_lco): target_rank = (current_rank + 1) % num_ranks array = np.empty((128//NUM_TRY, 1024, 1024)) finish_copy = hpx.Future() some_marshalled_action(hpx.THERE(target_rank), array, sync='async', lsync_lco=finish_copy, rsync_lco=and_lco) finish_copy.wait() print("worker {0} sends {1} bytes".format(current_rank, array.nbytes)) return hpx.SUCCESS
def main(): start = hpx.time_now() num_ranks = hpx.get_num_ranks() and_lco = hpx.And(num_ranks) for i in range(num_ranks): worker(hpx.THERE(i), i, num_ranks, rsync_lco=and_lco) and_lco.wait() print(hpx.time_elapsed_ms(start)) hpx.exit()
def create_node(low, high): # this function returns a GlobalMemory object for the created node where = map_bound_to_locality(low, high) rtv = hpx.GlobalMemory.alloc_local_at(1, 1, node_type, hpx.THERE(where)) vals = np.array( [(hpx.NULL().addr, hpx.NULL().addr, low, high, np.array([(0.0, 0.0, 0.0)], dtype=moment_type), hpx.NULL().addr, 0)], dtype=node_type) rtv[0].set(vals) return rtv
def main(): num_ranks = hpx.get_num_ranks() print(num_ranks) array = hpx.GlobalMemory.alloc_cyclic(num_ranks, (64, 1024, 1024), dtype=np.dtype(float)) start = hpx.time_now() and_lco = hpx.And(num_ranks) for i in range(num_ranks): copy_from_array(hpx.THERE(i), array, i, num_ranks, rsync_lco=and_lco) and_lco.wait() print(hpx.time_elapsed_ms(start)) hpx.exit()
def main_action(): num_node = hpx.get_num_ranks() print("program runs on {0} nodes".format(num_node)) step_size = (high - low) / total_cells cell_per_node = total_cells // num_node result_lco = hpx.Reduce(num_node, (1, ), np.dtype(float), result_init, result_op) for i in range(num_node): calculate_integral(hpx.THERE(i), low + i * step_size * cell_per_node, step_size, cell_per_node, result_lco) print(result_lco.get()) print(fint(high) - fint(low)) hpx.exit()
def worker(current_rank, num_ranks): target_rank = (current_rank + 1) % num_ranks array = np.array((128, 1024, 1024)) some_marshalled_action(hpx.THERE(target_rank), array, sync='rsync') print("worker {0} sends {1} bytes".format(current_rank, array.nbytes)) return hpx.SUCCESS