def main(self): """Main entry point of benchbuild run.""" exp = [self._experiment] project_names = self._project_names group_names = self._group_names experiments.discover() projects.discover() all_exps = experiment.ExperimentRegistry.experiments if self._description: CFG["experiment_description"] = self._description CFG["slurm"]["logs"] = os.path.abspath( os.path.join(str(CFG['build_dir']), str(CFG['slurm']['logs']))) CFG["build_dir"] = str(CFG["slurm"]["node_dir"]) exps = dict(filter(lambda pair: pair[0] in set(exp), all_exps.items())) unknown_exps = list( filter(lambda name: name not in all_exps.keys(), set(exp))) if unknown_exps: print('Could not find ', str(unknown_exps), ' in the experiment registry.') sys.exit(1) prjs = project.populate(project_names, group_names) for exp_cls in exps.values(): exp = exp_cls(projects=prjs) print("Experiment: ", exp.name) CFG["slurm"]["node_dir"] = os.path.abspath( os.path.join(str(CFG["slurm"]["node_dir"]), str(exp.id))) self.__go__(prjs, exp)
def main(self): experiments.discover() all_exps = exp.ExperimentRegistry.experiments for exp_cls in all_exps.values(): print(exp_cls.NAME) docstring = exp_cls.__doc__ or "-- no docstring --" print((" " + docstring))
def test_discovery(caplog): caplog.set_level(logging.DEBUG, logger='benchbuild') CFG["plugins"]["experiments"] = [ "benchbuild.non.existing", "benchbuild.reports.raw" ] discover() assert caplog.record_tuples == [ ('benchbuild.experiments', logging.ERROR, "Could not find 'benchbuild.non.existing'"), ('benchbuild.experiments', logging.ERROR, "ImportError: No module named 'benchbuild.non'"), ]
def main(self, *projects): """Main entry point of benchbuild run.""" experiment_names = self.experiment_names group_names = self.group_names experiments.discover() all_exps = experiment.ExperimentRegistry.experiments if self.test_full: exps = all_exps else: exps = dict( filter(lambda pair: pair[0] in set(experiment_names), all_exps.items())) unknown_exps = list( filter(lambda name: name not in all_exps.keys(), set(experiment_names))) if unknown_exps: print('Could not find ', str(unknown_exps), ' in the experiment registry.') prjs = project.populate(projects, group_names) if not exps: print("Could not find any experiment. Exiting.") return -2 plan = list(self.__generate_plan(exps, prjs)) num_actions = actions.num_steps(plan) actions.print_steps(plan) if self.pretend: exit(0) if self.show_progress: pg_bar = type(self).setup_progress(CFG, num_actions) pg_bar.start() start = time.perf_counter() if self.nmbr_of_processes is 1: failed = execute_plan(plan) else: failed = execute_plan_parallel(exps, prjs, self.nmbr_of_processes) end = time.perf_counter() if self.show_progress: pg_bar.done() print_summary(num_actions, failed, end - start) return len(failed)
def main(self, *args): Experiments.discover() Reports.discover() reports = ReportRegistry.reports for exp_name in self.experiment_names: if exp_name not in reports: print("'{0}' is not a known report.".format(exp_name)) continue for report_cls in reports[exp_name]: report = report_cls(exp_name, self._experiment_ids, self._outfile) report.generate() exit(0)
def main(self, *projects): """Main entry point of benchbuild run.""" experiment_names = self.experiment_names group_names = self.group_names experiments.discover() all_exps = experiment.ExperimentRegistry.experiments if self.test_full: exps = all_exps else: exps = dict( filter(lambda pair: pair[0] in set(experiment_names), all_exps.items())) unknown_exps = list( filter(lambda name: name not in all_exps.keys(), set(experiment_names))) if unknown_exps: print('Could not find ', str(unknown_exps), ' in the experiment registry.') prjs = project.populate(projects, group_names) if not exps: print("Could not find any experiment. Exiting.") return -2 plan = list(self.__generate_plan(exps, prjs)) num_actions = actions.num_steps(plan) actions.print_steps(plan) if self.pretend: exit(0) if self.show_progress: pg_bar = type(self).setup_progress(CFG, num_actions) pg_bar.start() start = time.perf_counter() failed = tasks.execute_plan(plan) end = time.perf_counter() if self.show_progress: pg_bar.done() print_summary(num_actions, failed, end - start) return len(failed)
def main(self, *args): del args # Unused e.discover() r.discover() all_reports = r.ReportRegistry.reports def generate_reports(reports, experiments=None): if not reports: print("No reports found. Sorry.") for rcls in reports: if experiments: for exp in experiments: report = rcls(exp, self._experiment_ids, self._outfile, schema.Session()) else: report = rcls(None, self._experiment_ids, self._outfile, schema.Session()) report.generate() if self.report_names: reports = [ all_reports[name] for name in all_reports if name in self.report_names ] generate_reports(reports, self.experiment_names) exit(0) if self.experiment_names: reports = [ all_reports[name] for name in all_reports if set(all_reports[name].SUPPORTED_EXPERIMENTS) & set(self.experiment_names) ] generate_reports(reports, self.experiment_names) exit(0)
def main(self): """Main entry point of benchbuild run.""" experiments.discover() projects.discover() exp_registry = experiment.ExperimentRegistry project_names = self._project_names exp_name = self._experiment if self._description: CFG["experiment_description"] = self._description CFG["slurm"]["logs"] = os.path.abspath(os.path.join(CFG[ 'build_dir'].value(), CFG['slurm']['logs'].value())) CFG["slurm"]["node_dir"] = os.path.abspath(os.path.join(CFG["slurm"][ "node_dir"].value(), CFG["experiment_id"].value())) CFG["build_dir"] = CFG["slurm"]["node_dir"].value() print("Experiment: " + exp_name) if exp_name in exp_registry.experiments: self.__go__(project_names, exp_name) else: from logging import error error("Could not find {} in the experiment registry.", exp_name)
def main(self): """Main entry point of benchbuild run.""" project_names = self._project_names group_name = self._group_name experiments.discover() registry = experiment.ExperimentRegistry exps = registry.experiments if self._list_experiments: for exp_name in registry.experiments: exp_cls = exps[exp_name] print(exp_cls.NAME) docstring = exp_cls.__doc__ or "-- no docstring --" print((" " + docstring)) exit(0) if self._list: for exp_name in self._experiment_names: exp_cls = exps[exp_name] exp = exp_cls(self._project_names, self._group_name) print_projects(exp) exit(0) if self.show_config: print(repr(CFG)) exit(0) if self.store_config: config_path = ".benchbuild.json" CFG.store(config_path) print("Storing config in {0}".format(os.path.abspath(config_path))) exit(0) if self._project_names: builddir = os.path.abspath(str(CFG["build_dir"])) if not os.path.exists(builddir): response = True if sys.stdin.isatty(): response = ui.query_yes_no( "The build directory {dirname} does not exist yet." "Should I create it?".format(dirname=builddir), "no") if response: mkdir("-p", builddir) print("Created directory {0}.".format(builddir)) actns = [] for exp_name in self._experiment_names: if exp_name in exps: exp_cls = exps[exp_name] exp = exp_cls(project_names, group_name) eactn = Experiment(exp, exp.actions()) actns.append(eactn) else: from logging import error error("Could not find {} in the experiment registry.", exp_name) num_actions = sum([len(x) for x in actns]) print("Number of actions to execute: {}".format(num_actions)) for a in actns: print(a) print() if not self.pretend: for a in actns: a()
def main(self): """Main entry point of benchbuild run.""" from benchbuild.utils.cmd import mkdir # pylint: disable=E0401 project_names = self._project_names group_name = self._group_name experiments.discover() registry = experiment.ExperimentRegistry exps = registry.experiments if self._list_experiments: for exp_name in registry.experiments: exp_cls = exps[exp_name] print(exp_cls.NAME) docstring = exp_cls.__doc__ or "-- no docstring --" print((" " + docstring)) exit(0) if self._list: for exp_name in self._experiment_names: exp_cls = exps[exp_name] exp = exp_cls(self._project_names, self._group_name) print_projects(exp) exit(0) if self.show_config: print(repr(CFG)) exit(0) if self.store_config: config_path = ".benchbuild.json" CFG.store(config_path) print("Storing config in {0}".format(os.path.abspath(config_path))) exit(0) if self._project_names: builddir = os.path.abspath(str(CFG["build_dir"])) if not os.path.exists(builddir): response = True if sys.stdin.isatty(): response = ui.query_yes_no( "The build directory {dirname} does not exist yet." "Should I create it?".format(dirname=builddir), "no") if response: mkdir("-p", builddir) print("Created directory {0}.".format(builddir)) actns = [] for exp_name in self._experiment_names: if exp_name in exps: exp_cls = exps[exp_name] exp = exp_cls(project_names, group_name) eactn = Experiment(exp, exp.actions()) actns.append(eactn) else: from logging import error error("Could not find {} in the experiment registry.", exp_name) num_actions = sum([len(x) for x in actns]) print("Number of actions to execute: {}".format(num_actions)) for a in actns: print(a) print() if not self.pretend: for a in actns: a()