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 __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_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 __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_pinbase(argv): pin = pintool.Pin(config.pin_home()) # parse cmdline options usage = 'usage: <script> pinbase [options] --- program' parser = optparse.OptionParser(usage) register_random_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) # run profile test = testing.InteractiveTest(prog_argv) test.set_prefix(get_prefix(pin)) testcase = idiom_testing.NativeTestCase(test, options.mode, options.threshold) testcase.run()
def __command_chess_race(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 [options] --- program' 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) == 0: parser.print_help() sys.exit(0) (options, args) = parser.parse_args(opt_argv) profiler.set_cmdline_options(options, args) controller.set_cmdline_options(options, args) # create race testcase race_test = testing.InteractiveTest(prog_argv) 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 = testing.InteractiveTest(prog_argv) 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 __command_default(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 [options] --- program' 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) == 0: parser.print_help() sys.exit(0) (options, args) = parser.parse_args(opt_argv) profiler.set_cmdline_options(options, args) scheduler.set_cmdline_options(options, args) # create profile testcase profile_test = testing.InteractiveTest(prog_argv) 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 = testing.InteractiveTest(prog_argv) 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 systematic_chess(suite): assert common.is_testcase(suite) clean_currdir() testcase = common.testcase_name(suite) source_path = common.source_path(suite) script_path = common.script_path(suite) target_path = os.path.join(os.getcwd(), 'target') output_path = os.path.join(os.getcwd(), 'stdout') f, p, d = imp.find_module(testcase, [os.path.dirname(script_path)]) module = imp.load_module(testcase, f, p, d) f.close() flags = common.default_flags(suite) if hasattr(module, 'disabled'): common.echo(suite, 'disabled!') return True if hasattr(module, 'setup_flags'): module.setup_flags(flags) if not common.compile(source_path, target_path, flags, True): common.echo(suite, 'failed! compile error') return False pin = pintool.Pin(config.pin_home()) controller = systematic_pintool.Controller() controller.knobs['enable_chess_scheduler'] = True if hasattr(module, 'setup_controller'): module.setup_controller(controller) test = testing.InteractiveTest([target_path], sout=output_path) test.set_prefix(get_prefix(pin, controller)) testcase = systematic_testing.ChessTestCase(test, 'finish', 1, controller) if hasattr(module, 'setup_testcase'): module.setup_testcase(testcase) logging.message_off() testcase.run() logging.message_on() if not hasattr(module, 'verify'): common.echo(suite, 'failed! no verify') return False else: success = module.verify(controller, testcase) if success: common.echo(suite, 'succeeded!') else: common.echo(suite, 'failed!') return success
def __command_active(argv): pin = pintool.Pin(config.pin_home()) scheduler = idiom_pintool.Scheduler() # parse cmdline options usage = 'usage: <script> active [options] --- program' parser = optparse.OptionParser(usage) register_active_cmdline_options(parser) scheduler.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) scheduler.set_cmdline_options(options, args) # run active test test = testing.InteractiveTest(prog_argv) test.set_prefix(get_prefix(pin, scheduler)) testcase = idiom_testing.ActiveTestCase(test, options.mode, options.threshold, scheduler) testcase.run()
def __command_rand_delay(argv): pin = pintool.Pin(config.pin_home()) profiler = idiom_pintool.RandSchedProfiler() profiler.knob_defaults['delay'] = True # parse cmdline options usage = 'usage: <script> rand_delay [options] --- program' 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) == 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, profiler)) testcase = idiom_testing.RandomTestCase(test, options.mode, options.threshold, profiler) 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')
def __command_chess(argv): pin = pintool.Pin(config.pin_home()) controller = idiom_pintool.ChessProfiler() controller.knob_defaults['enable_chess_scheduler'] = True controller.knob_defaults['enable_observer_new'] = True # parse cmdline options usage = 'usage: <script> chess [options] --- program' parser = optparse.OptionParser(usage) register_chess_cmdline_options(parser) controller.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) controller.set_cmdline_options(options, args) # run chess test = testing.InteractiveTest(prog_argv) test.set_prefix(get_prefix(pin, controller)) testcase = idiom_testing.ChessTestCase(test, options.mode, options.threshold, controller) testcase.run()
def __command_djit(argv): pin = pintool.Pin(config.pin_home()) profiler = race_pintool.PctProfiler() profiler.knob_defaults['enable_djit'] = True # parse cmdline options usage = 'usage: <script> djit [options] --- program' parser = optparse.OptionParser(usage) register_race_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 djit race detector test = testing.InteractiveTest(prog_argv) test.set_prefix(get_prefix(pin, profiler)) testcase = race_testing.TestCase(test, options.mode, options.threshold, profiler) testcase.run() testcase.log_stat()