Esempio n. 1
0
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()
Esempio n. 2
0
File: main.py Progetto: poeliu/Pinso
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')
Esempio n. 3
0
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()
Esempio n. 4
0
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()
Esempio n. 5
0
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()
Esempio n. 6
0
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()
Esempio n. 7
0
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()
Esempio n. 8
0
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()
Esempio n. 9
0
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()
Esempio n. 10
0
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()
Esempio n. 11
0
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()
Esempio n. 12
0
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
Esempio n. 13
0
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()
Esempio n. 14
0
def idiom_observer(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())
    profiler = idiom_pintool.Profiler()
    profiler.knobs["enable_observer_new"] = True
    if hasattr(module, "setup_profiler"):
        module.setup_profiler(profiler)
    test = testing.InteractiveTest([target_path], sout=output_path)
    test.set_prefix(get_prefix(pin, profiler))
    testcase = idiom_testing.ProfileTestCase(test, "runout", 3, profiler)
    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(profiler, testcase)
        if success:
            common.echo(suite, "succeeded!")
        else:
            common.echo(suite, "failed!")
        return success
Esempio n. 15
0
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
Esempio n. 16
0
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()
Esempio n. 17
0
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()
Esempio n. 18
0
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()
Esempio n. 19
0
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')
Esempio n. 20
0
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()
Esempio n. 21
0
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()
Esempio n. 22
0
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()
Esempio n. 23
0
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()
Esempio n. 24
0
File: main.py Progetto: poeliu/Pinso
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')
Esempio n. 25
0
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()
Esempio n. 26
0
def __command_chess(argv):
    pin = pintool.Pin(config.pin_home())
    controller = systematic_pintool.Controller()
    controller.knob_defaults['enable_chess_scheduler'] = 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 = systematic_testing.ChessTestCase(test,
                                                options.mode,
                                                options.threshold,
                                                controller)
    testcase.run()
    testcase.log_stat()