import pygion from pygion import task, Future, Region, WD import numpy # Define a custom struct type. pygion.ffi.cdef(r''' typedef struct mystruct { int x; double y; int8_t z; } mystruct; ''') mystruct_np = numpy.dtype([('x', numpy.intc), ('y', numpy.double), ('z', numpy.byte)], align=True) mystruct = pygion.Type(mystruct_np, 'mystruct') @task(privileges=[WD]) def region_with_struct(R): R.myvalue[0] = (123, 3.14, 65) print(R.myvalue[0]) @task def main(): myvalue_root = pygion.ffi.new('mystruct *') myvalue = myvalue_root[0] myvalue.x = 123 myvalue.y = 3.14 myvalue.z = 65
import os import subprocess import pygion from pygion import index_launch, print_once, task, Fspace, Future, IndexLaunch, Ipartition, Ispace, ID, N, Partition, R, Reduce, Region, RW root_dir = os.path.dirname(__file__) pennant_header = subprocess.check_output([ "gcc", "-DLEGION_USE_PYTHON_CFFI", "-E", "-P", os.path.join(root_dir, "pennant_config.h") ]).decode("utf-8") ffi = pygion.ffi ffi.cdef(pennant_header) mesh_colorings = pygion.Type( np.dtype([('bytes', np.void, ffi.sizeof('mesh_colorings'))]), 'mesh_colorings') mesh_partitions = pygion.Type( np.dtype([('bytes', np.void, ffi.sizeof('mesh_partitions'))]), 'mesh_partitions') config = pygion.Type(np.dtype([('bytes', np.void, ffi.sizeof('config'))]), 'config') def create_partition(is_disjoint, region, c_partition, color_space): ipart = Ipartition(c_partition.index_partition, region.ispace, color_space) return Partition(region, ipart)
import numpy as np import os import subprocess import pygion from pygion import disjoint_complete, index_launch, print_once, task, Domain, Fspace, Future, Ispace, IndexLaunch, ID, Partition, N, R, Reduce, Region, RW, Trace, WD root_dir = os.path.dirname(__file__) circuit_header = subprocess.check_output([ "gcc", "-D", "__attribute__(x)=", "-E", "-P", os.path.join(root_dir, "circuit_config.h") ]).decode("utf-8") ffi = pygion.ffi ffi.cdef(circuit_header) Config = pygion.Type(np.dtype([('bytes', np.void, ffi.sizeof('Config'))]), 'Config') WIRE_SEGMENTS = 10 def parse_args(argv): parser = argparse.ArgumentParser(argv[0]) parser.add_argument('-l', dest='num_loops', type=int, default=5) parser.add_argument('-p', dest='num_pieces', type=int, default=4) parser.add_argument('-pps', dest='pieces_per_superpiece', type=int, default=1) parser.add_argument('-npp', dest='nodes_per_piece', type=int, default=4) parser.add_argument('-wpp', dest='wires_per_piece', type=int, default=8) parser.add_argument('-pct', dest='pct_wire_in_piece', type=int, default=80)