diff --git a/loopy/auto_test.py b/loopy/auto_test.py index 10bef24f4476528286e43c097cb4a81cba2efb7b..e5f88417df6ca555d6475c21257534f8e995e812 100644 --- a/loopy/auto_test.py +++ b/loopy/auto_test.py @@ -354,7 +354,8 @@ def auto_test_vs_ref( print_ref_code=False, print_code=True, warmup_rounds=2, dump_binary=False, fills_entire_output=None, do_check=True, check_result=None, - max_test_kernel_count=1): + max_test_kernel_count=1, + quiet=False): """Compare results of `ref_knl` to the kernels generated by scheduling *test_knl*. @@ -417,7 +418,7 @@ def auto_test_vs_ref( break ref_compiled = CompiledKernel(ref_ctx, ref_sched_kernel) - if print_ref_code: + if not quiet and print_ref_code: print(75*"-") print("Reference Code:") print(75*"-") @@ -470,7 +471,7 @@ def auto_test_vs_ref( logger.info("%s (ref): run done" % ref_knl.name) ref_evt.wait() - ref_elapsed = 1e-9*(ref_evt.profile.END-ref_evt.profile.SUBMIT) + ref_elapsed_event = 1e-9*(ref_evt.profile.END-ref_evt.profile.START) break @@ -519,16 +520,17 @@ def auto_test_vs_ref( queue, ref_arg_data, parameters) args["out_host"] = False - print(75*"-") - print("Kernel #%d:" % i) - print(75*"-") - if print_code: - print(compiled.get_highlighted_code()) + if not quiet: print(75*"-") - if dump_binary: - print(type(compiled.cl_program)) - print(compiled.cl_program.binaries[0]) + print("Kernel #%d:" % i) print(75*"-") + if print_code: + print(compiled.get_highlighted_code()) + print(75*"-") + if dump_binary: + print(type(compiled.cl_program)) + print(compiled.cl_program.binaries[0]) + print(75*"-") logger.info("%s: run warmup" % (knl.name)) @@ -594,16 +596,15 @@ def auto_test_vs_ref( evt_start.wait() evt_end.wait() - elapsed = (1e-9*events[-1].profile.END - - 1e-9*events[0].profile.SUBMIT) \ + elapsed_event = (1e-9*events[-1].profile.END + - 1e-9*events[0].profile.START) \ / timing_rounds try: - elapsed_evt_2 = "%g" % \ - ((1e-9*evt_end.profile.START + elapsed_event_marker = ((1e-9*evt_end.profile.START - 1e-9*evt_start.profile.START) / timing_rounds) except cl.RuntimeError: - elapsed_evt_2 = "<unavailable>" + elapsed_event_marker = None elapsed_wall = (stop_time-start_time)/timing_rounds @@ -618,28 +619,36 @@ def auto_test_vs_ref( for cnt, lbl in zip(op_count, op_label): rates += " %g %s/s" % (cnt/elapsed_wall, lbl) - print("elapsed: %g s event, %s s marker-event %g s wall " - "(%d rounds)%s" % ( - elapsed, elapsed_evt_2, elapsed_wall, timing_rounds, rates)) + if not quiet: + def format_float_or_none(v): + if v is None: + return "<unavailable>" + else: + return "%g" % v + + print("elapsed: %s s event, %s s marker-event %s s wall " + "(%d rounds)%s" % ( + format_float_or_none(elapsed_event), + format_float_or_none(elapsed_event_marker), + format_float_or_none(elapsed_wall), timing_rounds, rates)) if do_check: ref_rates = "" for cnt, lbl in zip(op_count, op_label): - ref_rates += " %g %s/s" % (cnt/ref_elapsed, lbl) - print("ref: elapsed: %g s event, %g s wall%s" % ( - ref_elapsed, ref_elapsed_wall, ref_rates)) + ref_rates += " %g %s/s" % (cnt/ref_elapsed_event, lbl) + if not quiet: + print("ref: elapsed: %g s event, %g s wall%s" % ( + ref_elapsed_event, ref_elapsed_wall, ref_rates)) # }}} result_dict = {} - result_dict["elapsed"] = elapsed - result_dict["elapsed_evt_2"] = elapsed_evt_2 + result_dict["elapsed_event"] = elapsed_event + result_dict["elapsed_event_marker"] = elapsed_event_marker result_dict["elapsed_wall"] = elapsed_wall result_dict["timing_rounds"] = timing_rounds - result_dict["rates"] = rates - result_dict["ref_elapsed"] = elapsed - result_dict["ref_elapsed_wall"] = elapsed_wall - result_dict["ref_rates"] = ref_rates + result_dict["ref_elapsed_event"] = ref_elapsed_event + result_dict["ref_elapsed_wall"] = ref_elapsed_wall return result_dict