diff --git a/numba_cuda/numba/cuda/core/interpreter.py b/numba_cuda/numba/cuda/core/interpreter.py index 2db457e7a..44c0fa9e1 100644 --- a/numba_cuda/numba/cuda/core/interpreter.py +++ b/numba_cuda/numba/cuda/core/interpreter.py @@ -20,8 +20,8 @@ PYVERSION, BINOPS_TO_OPERATORS, INPLACE_BINOPS_TO_OPERATORS, + _lazy_pformat, ) -from numba.cuda.utils import _lazy_pformat from numba.cuda.core.byteflow import Flow, AdaptDFA, AdaptCFA, BlockKind from numba.cuda.core.unsafe import eh from numba.cuda.cpython.unsafe.tuple import unpack_single_tuple diff --git a/numba_cuda/numba/cuda/core/transforms.py b/numba_cuda/numba/cuda/core/transforms.py index ee46c3f19..0f1bce62a 100644 --- a/numba_cuda/numba/cuda/core/transforms.py +++ b/numba_cuda/numba/cuda/core/transforms.py @@ -17,6 +17,7 @@ from numba.cuda.core import errors from numba.cuda.core import ir_utils from numba.cuda.core.analysis import compute_use_defs +from numba.core.utils import _lazy_pformat _logger = logging.getLogger(__name__) @@ -301,7 +302,7 @@ def loop_lifting(func_ir, typingctx, targetctx, flags, locals): _logger.debug( "loop lifting this IR with %d candidates:\n%s", len(loopinfos), - func_ir.dump_to_string(), + _lazy_pformat(func_ir, lazy_func=lambda x: x.dump_to_string()), ) for loopinfo in loopinfos: lifted = _loop_lift_modify_blocks( diff --git a/numba_cuda/numba/cuda/utils.py b/numba_cuda/numba/cuda/utils.py index 23f5956d6..d18ee1450 100644 --- a/numba_cuda/numba/cuda/utils.py +++ b/numba_cuda/numba/cuda/utils.py @@ -673,12 +673,22 @@ def dump_llvm(fndesc, module): class _lazy_pformat: + """ + Lazily generate strings that may be useful only for debugging. + pformat is the default formatter but you can pass lazy_func kwarg + to use a different formatter. + """ + def __init__(self, *args, **kwargs): + self.func = pformat self.args = args self.kwargs = kwargs + if "lazy_func" in kwargs: + self.func = kwargs["lazy_func"] + del kwargs["lazy_func"] def __str__(self): - return pformat(*self.args, **self.kwargs) + return self.func(*self.args, **self.kwargs) class _LazyJSONEncoder(json.JSONEncoder):