diff --git a/loopy/preprocess.py b/loopy/preprocess.py index 082b18895dc83824266b4e6f787da2f14a28ddda..665a5c8a1372d85731b87de5d2fdddb1b0d05a42 100644 --- a/loopy/preprocess.py +++ b/loopy/preprocess.py @@ -32,6 +32,7 @@ from loopy.diagnostic import ( from pytools.persistent_dict import PersistentDict from loopy.tools import LoopyKeyBuilder from loopy.version import DATA_MODEL_VERSION +from loopy.diagnostic import DependencyTypeInferenceFailure, LoopyError import logging logger = logging.getLogger(__name__) @@ -413,7 +414,11 @@ def realize_reduction(kernel, insn_id_filter=None): target_var_name = var_name_gen("acc_"+"_".join(expr.inames)) target_var = var(target_var_name) - arg_dtype = type_inf_mapper(expr.expr) + try: + arg_dtype = type_inf_mapper(expr.expr) + except DependencyTypeInferenceFailure: + raise LoopyError("failed to determine type of accumulator for " + "reduction '%s'" % expr) from loopy.kernel.data import ExpressionInstruction, TemporaryVariable