[pypy-commit] pypy vecopt: added some temporary timing code for the trace execution
plan_rich
noreply at buildbot.pypy.org
Tue Jun 23 12:10:15 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: vecopt
Changeset: r78255:052ab2d7af35
Date: 2015-06-23 12:10 +0200
http://bitbucket.org/pypy/pypy/changeset/052ab2d7af35/
Log: added some temporary timing code for the trace execution
diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -530,6 +530,10 @@
self.status = hash & self.ST_SHIFT_MASK
def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd):
+ # XXX debug purpose only
+ from rpython.jit.metainterp.optimizeopt.vectorize import xxx_clock_stop
+ xxx_clock_stop(jitdriver_sd, fail=True)
+ # XXX debug purpose only end
if self.must_compile(deadframe, metainterp_sd, jitdriver_sd):
self.start_compiling()
try:
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -28,13 +28,26 @@
from rpython.rlib.jit import Counters
from rpython.rtyper.lltypesystem import lltype, rffi
-class NotAVectorizeableLoop(JitException):
- def __str__(self):
- return 'NotAVectorizeableLoop()'
+import time
+XXXBench = {}
+def xxx_clock_start(jitdriver_sd):
+ XXXBench[jitdriver_sd] = time.clock()
+def xxx_clock_stop(jitdriver_sd, fail=False):
+ end = time.clock()
+ if jitdriver_sd not in XXXBench:
+ raise AssertionError("trying to stop clock but timing for jit driver sd has never started")
+ start = XXXBench[jitdriver_sd]
+ name = "<unkown>"
+ if jitdriver_sd.jitdriver:
+ name = jitdriver_sd.jitdriver.name
+ unique_id = jitdriver_sd
+ ns = (end - start) * 10**9
+ debug_start("xxx-clock-stop")
+ debug_print("name: %s id(jdsd): %s exe time: %dns fail? %d vec? %d" % \
+ (name, unique_id, int(ns), int(fail), int(jitdriver_sd.vectorize)))
+ debug_stop("xxx-clock-stop")
-class NotAProfitableLoop(JitException):
- def __str__(self):
- return 'NotAProfitableLoop()'
+
def debug_print_operations(loop):
""" NOT_RPYTHON """
@@ -51,6 +64,15 @@
else:
print ""
+
+class NotAVectorizeableLoop(JitException):
+ def __str__(self):
+ return 'NotAVectorizeableLoop()'
+
+class NotAProfitableLoop(JitException):
+ def __str__(self):
+ return 'NotAProfitableLoop()'
+
def optimize_vector(metainterp_sd, jitdriver_sd, loop, optimizations,
inline_short_preamble, start_state, cost_threshold):
optimize_unroll(metainterp_sd, jitdriver_sd, loop, optimizations,
@@ -68,13 +90,15 @@
end = time.clock()
metainterp_sd.profiler.count(Counters.OPT_VECTORIZED)
metainterp_sd.logger_noopt.log_loop(loop.inputargs, loop.operations, -2, None, None, "post vectorize")
+ #
+ ns = int((end-start)*10.0**9)
debug_start("vec-opt-clock")
debug_print("unroll: %d gso count: %d opcount: (%d -> %d) took %fns" % \
(opt.unroll_count+1,
gso.strength_reduced,
len(orig_ops),
len(loop.operations),
- (end-start)*10.0**9))
+ ns)
debug_stop("vec-opt-clock")
except NotAVectorizeableLoop:
diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -829,6 +829,12 @@
else:
value = cast_base_ptr_to_instance(Exception, value)
raise Exception, value
+ finally:
+ # XXX debug purpose only
+ from rpython.jit.metainterp.optimizeopt.vectorize import xxx_clock_stop
+ xxx_clock_stop(jd, fail=False)
+ # XXX debug purpose only end
+
def handle_jitexception(e):
# XXX the bulk of this function is mostly a copy-paste from above
diff --git a/rpython/jit/metainterp/warmstate.py b/rpython/jit/metainterp/warmstate.py
--- a/rpython/jit/metainterp/warmstate.py
+++ b/rpython/jit/metainterp/warmstate.py
@@ -368,7 +368,11 @@
if vinfo is not None:
virtualizable = args[index_of_virtualizable]
vinfo.clear_vable_token(virtualizable)
-
+ # XXX debug purpose only
+ from rpython.jit.metainterp.optimizeopt.vectorize import xxx_clock_start
+ xxx_clock_start(jitdriver_sd)
+ # XXX debug purpose only end
+
deadframe = func_execute_token(loop_token, *args)
#
# Record in the memmgr that we just ran this loop,
More information about the pypy-commit
mailing list