def __command_native_script(argv): # parse cmdline options usage = 'usage: <script> native_script [options] --- <bench name> <input index>\n\n' usage += benchmark_usage() parser = optparse.OptionParser(usage) register_random_cmdline_options(parser) (opt_argv, prog_argv) = separate_opt_prog(argv) if len(prog_argv) == 1: bench_name = prog_argv[0] input_idx = 'default' elif len(prog_argv) == 2: bench_name = prog_argv[0] input_idx = prog_argv[1] else: parser.print_help() sys.exit(0) if not valid_benchmark(bench_name): logging.err('invalid benchmark name\n') (options, args) = parser.parse_args(opt_argv) # run profile __import__('maple.benchmark.%s' % bench_name) bench = sys.modules['maple.benchmark.%s' % bench_name] test = bench.get_test(input_idx) testcase = idiom_testing.NativeTestCase(test, options.mode, options.threshold) testcase.run()
def __command_rand_delay_script(argv): pin = pintool.Pin(config.pin_home()) profiler = idiom_pintool.RandSchedProfiler() profiler.knob_defaults['delay'] = True # parse cmdline options usage = 'usage: <script> rand_delay_script [options] --- <bench name> <input index>\n\n' usage += benchmark_usage() parser = optparse.OptionParser(usage) register_random_cmdline_options(parser) profiler.register_cmdline_options(parser) (opt_argv, prog_argv) = separate_opt_prog(argv) if len(prog_argv) == 1: bench_name = prog_argv[0] input_idx = 'default' elif len(prog_argv) == 2: bench_name = prog_argv[0] input_idx = prog_argv[1] else: parser.print_help() sys.exit(0) if not valid_benchmark(bench_name): logging.err('invalid benchmark name\n') (options, args) = parser.parse_args(opt_argv) profiler.set_cmdline_options(options, args) # run profile __import__('maple.benchmark.%s' % bench_name) bench = sys.modules['maple.benchmark.%s' % bench_name] test = bench.get_test(input_idx) test.set_prefix(get_prefix(pin, profiler)) testcase = idiom_testing.RandomTestCase(test, options.mode, options.threshold, profiler) testcase.run()
def __command_schedule(argv): pin = pintool.Pin(config.pin_home()) scheduler = delta_pintool.Scheduler() scheduler.knob_defaults['enable_observer'] = True # parse cmdline options usage = 'usage: <script> schedule [options] --- program' parser = optparse.OptionParser(usage) register_profile_cmdline_options(parser) profiler.register_cmdline_options(parser) (opt_argv, prog_argv) = separate_opt_prog(argv) if len(prog_argv) == 0: parser.print_help() sys.exit(0) (options, args) = parser.parse_args(opt_argv) profiler.set_cmdline_options(options, args) ##run profile test = testing.InteractiveTest(prog_argv) test.set_prefix(get_prefix(pin, scheduler)) testcase = idiom_testing.ActiveTestCase(test, options.mode, options.threshold, scheduler) testcase.run() if testcase.is_fatal(): logging.err('fatal error detected\n') else: logging.err('threshold reached\n')
def main(argv): if len(argv) < 1: logging.err(command_usage()) command = argv[0] logging.msg('performing command: %s ...\n' % command, 2) if valid_command(command): eval('__command_%s(argv[1:])' % command) else: logging.err(command_usage())
def __command_chess_race_script(argv): pin = pintool.Pin(config.pin_home()) profiler = race_pintool.PctProfiler() profiler.knob_prefix = 'race_' profiler.knob_defaults['enable_djit'] = True profiler.knob_defaults['ignore_lib'] = True profiler.knob_defaults['track_racy_inst'] = True controller = idiom_pintool.ChessProfiler() controller.knob_prefix = 'chess_' controller.knob_defaults['enable_chess_scheduler'] = True controller.knob_defaults['enable_observer_new'] = True controller.knob_defaults['sched_race'] = True # parse cmdline options usage = 'usage: <script> chess_race_script [options] --- <bench name> <input index>\n\n' usage += benchmark_usage() parser = optparse.OptionParser(usage) register_race_cmdline_options(parser, 'race_') profiler.register_cmdline_options(parser) register_chess_cmdline_options(parser, 'chess_') controller.register_cmdline_options(parser) parser.set_defaults(race_mode='stable') parser.set_defaults(race_threshold=3) (opt_argv, prog_argv) = separate_opt_prog(argv) if len(prog_argv) == 1: bench_name = prog_argv[0] input_idx = 'default' elif len(prog_argv) == 2: bench_name = prog_argv[0] input_idx = prog_argv[1] else: parser.print_help() sys.exit(0) if not valid_benchmark(bench_name): logging.err('invalid benchmark name\n') (options, args) = parser.parse_args(opt_argv) profiler.set_cmdline_options(options, args) controller.set_cmdline_options(options, args) # create race testcase __import__('maple.benchmark.%s' % bench_name) bench = sys.modules['maple.benchmark.%s' % bench_name] race_test = bench.get_test(input_idx) race_test.set_prefix(get_prefix(pin, profiler)) race_testcase = idiom_testing.RaceTestCase(race_test, options.race_mode, options.race_threshold, profiler) # create chess testcase chess_test = bench.get_test(input_idx) chess_test.set_prefix(get_prefix(pin, controller)) chess_testcase = idiom_testing.ChessTestCase(chess_test, options.chess_mode, options.chess_threshold, controller) # run testcase = idiom_testing.ChessRaceTestCase(race_testcase, chess_testcase) testcase.run()
def main(argv): if len(argv) < 1: logging.err(command_usage()) suite = argv[0] logging.msg('performing regression: %s ...\n' % suite, 2) if valid_suite(suite): regression(suite, argv[1:]) else: logging.err(command_usage())
def __command_default_script(argv): pin = pintool.Pin(config.pin_home()) profiler = idiom_pintool.PctProfiler() profiler.knob_prefix = 'profile_' profiler.knob_defaults['enable_observer_new'] = True profiler.knob_defaults['enable_predictor_new'] = True scheduler = idiom_pintool.Scheduler() scheduler.knob_prefix = 'active_' # parse cmdline options usage = 'usage: <script> default_script [options] --- <bench name> <input index>\n\n' usage += benchmark_usage() parser = optparse.OptionParser(usage) register_profile_cmdline_options(parser, 'profile_') profiler.register_cmdline_options(parser) register_active_cmdline_options(parser, 'active_') scheduler.register_cmdline_options(parser) parser.set_defaults(profile_mode='stable') parser.set_defaults(profile_threshold=3) parser.set_defaults(active_mode='finish') (opt_argv, prog_argv) = separate_opt_prog(argv) if len(prog_argv) == 1: bench_name = prog_argv[0] input_idx = 'default' elif len(prog_argv) == 2: bench_name = prog_argv[0] input_idx = prog_argv[1] else: parser.print_help() sys.exit(0) if not valid_benchmark(bench_name): logging.err('invalid benchmark name\n') (options, args) = parser.parse_args(opt_argv) profiler.set_cmdline_options(options, args) scheduler.set_cmdline_options(options, args) # create profile testcase __import__('maple.benchmark.%s' % bench_name) bench = sys.modules['maple.benchmark.%s' % bench_name] profile_test = bench.get_test(input_idx) profile_test.set_prefix(get_prefix(pin, profiler)) profile_testcase = idiom_testing.ProfileTestCase(profile_test, options.profile_mode, options.profile_threshold, profiler) # create active testcase active_test = bench.get_test(input_idx) active_test.set_prefix(get_prefix(pin, scheduler)) active_testcase = idiom_testing.ActiveTestCase(active_test, options.active_mode, options.active_threshold, scheduler) # run idiom testcase idiom_testcase = idiom_testing.IdiomTestCase(profile_testcase, active_testcase) idiom_testcase.run()
def __command_record(argv): pin = pintool.Pin(config.pin_home()) recorder = tracer_pintool.Profiler() usage = 'usage: <script> record [options] --- program' parser = optparse.OptionParser(usage) recorder.register_cmdline_options(parser) (opt_argv, prog_argv) = separate_opt_prog(argv) if len(prog_argv) == 0: parser.print_help() sys.exit(0) (options, args) = parser.parse_args(opt_argv) recorder.set_cmdline_options(options, args) # run recorder test = testing.InteractiveTest(prog_argv) test.set_prefix(get_prefix(pin, recorder)) testcase = testing.DeathTestCase(test, 'runout', '1') testcase.run() if testcase.is_fatal(): logging.err('fatal error detected\n') else: logging.err('threshold reached\n')