def main(): parser = argparse.ArgumentParser(parents=opentuner.argparsers()) args = parser.parse_args() manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('x', -200, 200)) interface = DefaultMeasurementInterface(args=args, manipulator=manipulator, project_name='examples', program_name='api_test', program_version='0.1') api = TuningRunManager(interface, args) for x in xrange(500): desired_result = api.get_next_desired_result() if desired_result is None: # The search space for this example is very small, so sometimes # the techniques have trouble finding a config that hasn't already # been tested. Change this to a continue to make it try again. break cfg = desired_result.configuration.data result = Result(time=test_func(cfg)) api.report_result(desired_result, result) best_cfg = api.get_best_configuration() api.finish() print 'best x found was', best_cfg['x']
def main(): parser = argparse.ArgumentParser(parents=opentuner.argparsers()) args = parser.parse_args() manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('x', -200, 200)) interface = DefaultMeasurementInterface(args=args, manipulator=manipulator, project_name='examples', program_name='api_test', program_version='0.1') api = TuningRunManager(interface, args) for x in range(500): desired_result = api.get_next_desired_result() if desired_result is None: # The search space for this example is very small, so sometimes # the techniques have trouble finding a config that hasn't already # been tested. Change this to a continue to make it try again. break cfg = desired_result.configuration.data result = Result(time=test_func(cfg)) api.report_result(desired_result, result) best_cfg = api.get_best_configuration() api.finish() print('best x found was', best_cfg['x'])
def solve(self, job): logging.debug('Starting opentuner') failed_jobs_threshold = self.jobs_limit * _FAILED_JOBS_COEF manipulator = ConfigurationManipulator() for var in job.optimization_job.task_variables: if var.HasField('continuous_variable'): cont_var = var.continuous_variable param = FloatParameter(var.name, cont_var.l, cont_var.r) else: int_var = var.integer_variable param = IntegerParameter(var.name, int_var.l, int_var.r) manipulator.add_parameter(param) parser = argparse.ArgumentParser(parents=opentuner.argparsers()) args = parser.parse_args([]) args.parallelism = 4 args.no_dups = True interface = DefaultMeasurementInterface(args=args, manipulator=manipulator, project_name=job.job_id) api = TuningRunManager(interface, args) jobs = [] current_value = None failed_jobs = 0 while failed_jobs < failed_jobs_threshold and not self._check_for_termination( job): remaining_jobs = [] for job_id, desired_result in jobs: res = self._get_evaluation_job_result(job_id) if res is not None: if current_value is None or current_value > res + _THRESHOLD_EPS: failed_jobs = 0 else: failed_jobs += 1 result = Result(time=res) api.report_result(desired_result, result) else: remaining_jobs.append((job_id, desired_result)) jobs = remaining_jobs while len(jobs) < self.jobs_limit: desired_result = api.get_next_desired_result() if desired_result is None: break job_id = self._start_evaluation_job( job, desired_result.configuration.data) if job_id is None: api.report_result(desired_result, Result(time=math.inf)) else: jobs.append((job_id, desired_result)) if not jobs: break r = api.get_best_result() if r is not None: current_value = r.time logging.debug('Opentuner current state: %s %s', r.time, api.get_best_configuration()) time.sleep(5) res = api.get_best_result().time vars = api.get_best_configuration() api.finish() return res, vars
def tuning_loop(): report_delay = 5 last_time = time.time() start_time = last_time parser = argparse.ArgumentParser(parents=opentuner.argparsers()) parser.add_argument("--processes", type=int, help="Number of Python threads available.") parser.add_argument( "--no-wait", action="store_true", help="Do not wait for requested results to generate more requests.") args = parser.parse_args() pool = ThreadPool(args.processes) manipulator = ConfigurationManipulator() for name in legup_parameters.parameters: parameter_type = legup_parameters.parameter_type(name) values = legup_parameters.parameter_values(name) if parameter_type == int: manipulator.add_parameter( IntegerParameter(name, values[0], values[1])) elif parameter_type == bool: manipulator.add_parameter(BooleanParameter(name)) elif parameter_type == Enum: manipulator.add_parameter(EnumParameter(name, values)) else: print("ERROR: No such parameter type \"{0}\"".format(name)) interface = DefaultMeasurementInterface(args=args, manipulator=manipulator, project_name='HLS-FPGAs', program_name='legup-tuner', program_version='0.0.1') manager = TuningRunManager(interface, args) current_time = time.time() computing_results = [] computed_results = [] desired_results = manager.get_desired_results() while current_time - start_time < args.stop_after: if args.no_wait: if len(desired_results) != 0 or len(computing_results) != 0: for desired_result in desired_results: computing_results.append([ desired_result, pool.apply_async(get_wallclock_time, (desired_result.configuration.data, )) ]) for result in computing_results: if result[1].ready() and result[0] not in computed_results: cost = result[1].get() manager.report_result(result[0], Result(time=cost)) computed_results.append(result) for result in computed_results: if result in computing_results: computing_results.remove(result) computed_results = [] else: if len(desired_results) != 0: cfgs = [dr.configuration.data for dr in desired_results] results = pool.map_async(get_wallclock_time, cfgs).get(timeout=None) for dr, result in zip(desired_results, results): manager.report_result(dr, Result(time=result)) desired_results = manager.get_desired_results() current_time = time.time() if (current_time - last_time) >= report_delay: log_intermediate(current_time - start_time, manager) last_time = current_time current_time = time.time() log_intermediate(current_time - start_time, manager) save_final_configuration(manager.get_best_configuration()) manager.finish()
def tuning_loop(): report_delay = 200 last_time = time.time() start_time = last_time parser = argparse.ArgumentParser(parents = opentuner.argparsers()) parser.add_argument("--processes", type = int, help = "Number of Python threads available.") parser.add_argument("--no-wait", action = "store_true", help = "Do not wait for requested results to generate more requests.") args = parser.parse_args() pool = ThreadPool(args.processes) manipulator = ConfigurationManipulator() for name in legup_parameters.parameters: parameter_type = legup_parameters.parameter_type(name) values = legup_parameters.parameter_values(name) if parameter_type == int: manipulator.add_parameter(IntegerParameter(name, values[0], values[1])) elif parameter_type == bool: manipulator.add_parameter(BooleanParameter(name)) elif parameter_type == Enum: manipulator.add_parameter(EnumParameter(name, values)) else: print("ERROR: No such parameter type \"{0}\"".format(name)) interface = DefaultMeasurementInterface(args = args, manipulator = manipulator, project_name = 'HLS-FPGAs', program_name = 'legup-tuner', program_version = '0.0.1') manager = TuningRunManager(interface, args) current_time = time.time() computing_results = [] computed_results = [] desired_results = manager.get_desired_results() while current_time - start_time < args.stop_after: if args.no_wait: if len(desired_results) != 0 or len(computing_results) != 0: for desired_result in desired_results: computing_results.append([desired_result, pool.apply_async(get_wallclock_time, (desired_result.configuration.data, ))]) for result in computing_results: if result[1].ready() and result[0] not in computed_results: cost = result[1].get() manager.report_result(result[0], Result(time = cost)) computed_results.append(result) for result in computed_results: if result in computing_results: computing_results.remove(result) computed_results = [] else: if len(desired_results) != 0: cfgs = [dr.configuration.data for dr in desired_results] results = pool.map_async(get_wallclock_time, cfgs).get(timeout = None) for dr, result in zip(desired_results, results): manager.report_result(dr, Result(time = result)) desired_results = manager.get_desired_results() current_time = time.time() if (current_time - last_time) >= report_delay: log_intermediate(current_time - start_time, manager) last_time = current_time current_time = time.time() log_intermediate(current_time - start_time, manager) save_final_configuration(manager.get_best_configuration()) manager.finish()
def tuning_loop(): report_delay = 30 last_time = time.time() start_time = last_time iterations = 5 parser = argparse.ArgumentParser(parents = opentuner.argparsers()) parser.add_argument("--processes", type = int, help = "Number of Python threads available.") parser.add_argument("--no-wait", action = "store_true", help = "Do not wait for requested results to generate more requests.") parser.add_argument("--application", type = str, help = "Application name.") parser.add_argument("--verilog-file", type = str, help = "Verilog file for the application.") args = parser.parse_args() pool = ThreadPool(args.processes) manipulator = ConfigurationManipulator() global application global verilog_file global application_path global container_path global host_path global image_name global script_name global tuning_init application = args.application verilog_file = args.verilog_file application_path = "/root/legup_src/legup-4.0/examples/chstone/{0}".format(application) container_path = "/root/legup_src/legup-4.0/examples/chstone/{0}/tuner".format(application) host_path = "/home/bruelp/legup-tuner/post_place_and_route/py" image_name = "legup_quartus" script_name = "measure.sh" print(application, container_path, application_path) for name in legup_parameters.parameters: parameter_type = legup_parameters.parameter_type(name) values = legup_parameters.parameter_values(name) if parameter_type == int: manipulator.add_parameter(IntegerParameter(name, values[0], values[1])) elif parameter_type == bool: manipulator.add_parameter(BooleanParameter(name)) elif parameter_type == Enum: manipulator.add_parameter(EnumParameter(name, values)) else: print("ERROR: No such parameter type \"{0}\"".format(name)) interface = DefaultMeasurementInterface(args = args, manipulator = manipulator, project_name = 'HLS-FPGAs', program_name = 'legup-tuner', program_version = '0.0.1') manager = TuningRunManager(interface, args) current_time = time.time() computing_results = [] computed_results = [] desired_results = manager.get_desired_results() while current_time - start_time < args.stop_after: if args.no_wait: if len(desired_results) != 0 or len(computing_results) != 0: for desired_result in desired_results: computing_results.append([desired_result, pool.apply_async(get_wallclock_time, (desired_result.configuration.data, ))]) for result in computing_results: if result[1].ready() and result[0] not in computed_results: cost = result[1].get() manager.report_result(result[0], Result(time = cost)) computed_results.append(result) for result in computed_results: if result in computing_results: computing_results.remove(result) computed_results = [] else: if len(desired_results) != 0: cfgs = [dr.configuration.data for dr in desired_results] results = pool.map_async(get_wallclock_time, cfgs).get(timeout = None) for dr, result in zip(desired_results, results): manager.report_result(dr, Result(time = result['value'], cycles = result['cycles'], fmax = result['fmax'], LU = result['lu'], pins = result['pins'], regs = result['regs'], block = result['block'], ram = result['ram'], dsp = result['dsp'])) desired_results = manager.get_desired_results() current_time = time.time() if (current_time - last_time) >= report_delay: log_intermediate(current_time - start_time, manager) last_time = current_time current_time = time.time() log_intermediate(current_time - start_time, manager) save_final_configuration(manager.get_best_configuration()) manager.finish()
def tuning_loop(): report_delay = 30 last_time = time.time() start_time = last_time iterations = 5 parser = argparse.ArgumentParser(parents=opentuner.argparsers()) parser.add_argument("--processes", type=int, help="Number of Python threads available.") parser.add_argument( "--no-wait", action="store_true", help="Do not wait for requested results to generate more requests.") parser.add_argument("--application", type=str, help="Application name.") parser.add_argument("--verilog-file", type=str, help="Verilog file for the application.") args = parser.parse_args() pool = ThreadPool(args.processes) manipulator = ConfigurationManipulator() global application global verilog_file global application_path global container_path global host_path global image_name global script_name global tuning_init application = args.application verilog_file = args.verilog_file application_path = "/root/legup_src/legup-4.0/examples/chstone/{0}".format( application) container_path = "/root/legup_src/legup-4.0/examples/chstone/{0}/tuner".format( application) host_path = "/home/bruelp/legup-tuner/post_place_and_route/py" image_name = "legup_quartus" script_name = "measure.sh" print(application, container_path, application_path) for name in legup_parameters.parameters: parameter_type = legup_parameters.parameter_type(name) values = legup_parameters.parameter_values(name) if parameter_type == int: manipulator.add_parameter( IntegerParameter(name, values[0], values[1])) elif parameter_type == bool: manipulator.add_parameter(BooleanParameter(name)) elif parameter_type == Enum: manipulator.add_parameter(EnumParameter(name, values)) else: print("ERROR: No such parameter type \"{0}\"".format(name)) interface = DefaultMeasurementInterface(args=args, manipulator=manipulator, project_name='HLS-FPGAs', program_name='legup-tuner', program_version='0.0.1') manager = TuningRunManager(interface, args) current_time = time.time() computing_results = [] computed_results = [] desired_results = manager.get_desired_results() while current_time - start_time < args.stop_after: if args.no_wait: if len(desired_results) != 0 or len(computing_results) != 0: for desired_result in desired_results: computing_results.append([ desired_result, pool.apply_async(get_wallclock_time, (desired_result.configuration.data, )) ]) for result in computing_results: if result[1].ready() and result[0] not in computed_results: cost = result[1].get() manager.report_result(result[0], Result(time=cost)) computed_results.append(result) for result in computed_results: if result in computing_results: computing_results.remove(result) computed_results = [] else: if len(desired_results) != 0: cfgs = [dr.configuration.data for dr in desired_results] results = pool.map_async(get_wallclock_time, cfgs).get(timeout=None) for dr, result in zip(desired_results, results): manager.report_result( dr, Result(time=result['value'], cycles=result['cycles'], fmax=result['fmax'], LU=result['lu'], pins=result['pins'], regs=result['regs'], block=result['block'], ram=result['ram'], dsp=result['dsp'])) desired_results = manager.get_desired_results() current_time = time.time() if (current_time - last_time) >= report_delay: log_intermediate(current_time - start_time, manager) last_time = current_time current_time = time.time() log_intermediate(current_time - start_time, manager) save_final_configuration(manager.get_best_configuration()) manager.finish()