def main(*args): """run ctree utility stuff, currently only the project generator""" if sys.argv: args = sys.argv[1:] parser = argparse.ArgumentParser(prog="ctree", description="ctree is a python SEJITS framework") parser.add_argument('-sp', '--startproject', help='generate a specializer project') parser.add_argument( '-wu', '--wattsupmeter', help="start interactive watts up meter shell", action="store_true" ) parser.add_argument('-p', '--port', help="/dev name to use for wattsup meter port") parser.add_argument('-v', '--verbose', help='show more debug than you like', action="store_true") parser.add_argument('-dc', '--disable_cache', help='disable and delete the persistent cache', action="store_true") parser.add_argument('-ec', '--enable_cache', help='enable the persistent cache', action="store_true") parser.add_argument('-cc', '--clear_cache', help='clear the persistent cache', action="store_true") args = parser.parse_args(args) if args.startproject: specializer_name = args.startproject print("create project specializer %s" % specializer_name) builder = Builder("create", specializer_name, verbose=args.verbose) builder.build(None, None) elif args.wattsupmeter: from ctree.metrics.watts_up_reader import WattsUpReader port = args.port if args.port else WattsUpReader.guess_port() meter = WattsUpReader(port_name=port) meter.interactive_mode() elif args.enable_cache: ctree.CONFIG.set("jit", "CACHE", value="True") write_success = write_to_config('jit', 'CACHE', True) if write_success: print("[SUCCESS] ctree caching enabled.") elif args.disable_cache: wipe_cache() ctree.CONFIG.set("jit", "CACHE", value="False") write_success = write_to_config('jit', 'CACHE', False) args.clear_cache = True if write_success: print("[SUCCESS] ctree caching disabled.") elif args.clear_cache: wipe_cache() else: parser.print_usage()
def __call__(self, A, B): """C = A * B""" from ctypes import c_double, byref C = np.zeros(shape=A.shape, dtype=A.dtype) duration = c_double() meter = WattsUpReader() meter.start_recording() self.c_dgemm(C, A, B, byref(duration)) joules = meter.get_recording()[0].joules seconds = duration.value self.c_dgemm.report(time=seconds, energy=joules) return C, seconds, joules, self.c_dgemm._current_config
class Meter(object): def __init__(self, use_energy=False): self.time_meter = c_double() self.use_energy = use_energy self.energy_meter = WattsUpReader() if self.use_energy else None def start_recording(self): if self.use_energy: self.energy_meter.start_recording() def time_value(self): return self.time_meter.value def energy_value(self): if self.use_energy: return self.energy_meter.get_recording()[0].joules else: return 0.0
def main(*args): """run ctree utility stuff, currently only the project generator""" if sys.argv: args = sys.argv[1:] parser = argparse.ArgumentParser( prog="ctree", description="ctree is a python SEJITS framework") parser.add_argument('-sp', '--startproject', help='generate a specializer project') parser.add_argument('-wu', '--wattsupmeter', help="start interactive watts up meter shell", action="store_true") parser.add_argument('-p', '--port', help="/dev name to use for wattsup meter port") parser.add_argument('-v', '--verbose', help='show more debug than you like', action="store_true") args = parser.parse_args(args) if args.startproject: specializer_name = args.startproject print "create project specializer %s" % specializer_name builder = Builder.Builder("create", specializer_name, verbose=args.verbose) builder.build(None, None) elif args.wattsupmeter: from ctree.metrics.watts_up_reader import WattsUpReader port = args.port if args.port else WattsUpReader.guess_port() meter = WattsUpReader(port_name=port) meter.interactive_mode() else: parser.print_usage()
def __init__(self, use_energy=False): self.time_meter = c_double() self.use_energy = use_energy self.energy_meter = WattsUpReader() if self.use_energy else None