diff --git a/loopy/check.py b/loopy/check.py index 5d7ea21474359bdd3a6aabb7ff56b5370b772ee1..e2de6405e84c0c57d01f54d250fa140520fdfcec 100644 --- a/loopy/check.py +++ b/loopy/check.py @@ -27,6 +27,9 @@ from islpy import dim_type import islpy as isl from loopy.symbolic import WalkMapper +import logging +logger = logging.getLogger(__name__) + # {{{ sanity checks run during scheduling @@ -314,6 +317,8 @@ def check_write_destinations(kernel): def run_automatic_checks(kernel): try: + logger.info("sanity-check %s: start" % kernel.name) + check_for_orphaned_user_hardware_axes(kernel) check_for_double_use_of_hw_axes(kernel) check_for_unused_hw_axes_in_insns(kernel) @@ -322,6 +327,8 @@ def run_automatic_checks(kernel): check_for_data_dependent_parallel_bounds(kernel) check_bounds(kernel) check_write_destinations(kernel) + + logger.info("sanity-check %s: done" % kernel.name) except: print 75*"=" print "failing kernel after processing:" diff --git a/loopy/preprocess.py b/loopy/preprocess.py index dc32e01454e361b96d9bb5c16d1e994d4bf7bdde..ebc7721558b2deceb0c8d7e5d7f8e5b9dea46bef 100644 --- a/loopy/preprocess.py +++ b/loopy/preprocess.py @@ -52,8 +52,8 @@ def _infer_var_type(kernel, var_name, type_inf_mapper, subst_expander): dtypes.append(result) - except DependencyTypeInferenceFailure: - logger.debug(" failed") + except DependencyTypeInferenceFailure, e: + logger.debug(" failed: %s" % e) if not dtypes: return None @@ -971,33 +971,50 @@ def adjust_local_temp_var_storage(kernel): def preprocess_kernel(kernel): + logger.info("preprocess %s: start" % kernel.name) + from loopy.subst import expand_subst + logger.debug("preprocess %s: expand subst" % kernel.name) kernel = expand_subst(kernel) # Ordering restriction: # Type inference doesn't handle substitutions. Get them out of the # way. + logger.debug("preprocess %s: infer types" % kernel.name) kernel = infer_unknown_types(kernel, expect_completion=False) # Ordering restriction: # realize_reduction must happen after type inference because it needs # to be able to determine the types of the reduced expressions. + logger.debug("preprocess %s: realize reduction" % kernel.name) kernel = realize_reduction(kernel) # Ordering restriction: # duplicate_private_temporaries_for_ilp because reduction accumulators # need to be duplicated by this. + logger.debug("preprocess %s: duplicate temporaries for ilp" % kernel.name) kernel = duplicate_private_temporaries_for_ilp(kernel) + logger.debug("preprocess %s: mark local temporaries" % kernel.name) kernel = mark_local_temporaries(kernel) + + logger.debug("preprocess %s: assign automatic axes" % kernel.name) kernel = assign_automatic_axes(kernel) + + logger.debug("preprocess %s: automatic deps, boostability" % kernel.name) kernel = add_boostability_and_automatic_dependencies(kernel) + + logger.debug("preprocess %s: limit boostability" % kernel.name) kernel = limit_boostability(kernel) + + logger.debug("preprocess %s: adjust temp var storage" % kernel.name) kernel = adjust_local_temp_var_storage(kernel) + logger.info("preprocess %s: done" % kernel.name) + return kernel diff --git a/loopy/schedule.py b/loopy/schedule.py index 7b35d721e375d999759f93dddd4f2c35ba9aa12b..f1e06a37e13f086bc42ec2186933834d72e5f0a5 100644 --- a/loopy/schedule.py +++ b/loopy/schedule.py @@ -27,6 +27,9 @@ from pytools import Record import sys import islpy as isl +import logging +logger = logging.getLogger(__name__) + # {{{ schedule items @@ -789,6 +792,8 @@ def generate_loop_schedules(kernel, loop_priority=[], debug_args={}): from loopy.check import run_automatic_checks run_automatic_checks(kernel) + logger.info("schedule %s: start" % kernel.name) + schedule_count = 0 debug = ScheduleDebugger(**debug_args) @@ -864,6 +869,8 @@ def generate_loop_schedules(kernel, loop_priority=[], debug_args={}): raise RuntimeError("no valid schedules found") + logger.info("schedule %s: done" % kernel.name) + # }}} # vim: foldmethod=marker