From ed469bc64e164aa86d6bea03876639bb489127da Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sun, 3 May 2015 23:55:49 -0500 Subject: [PATCH] Make Reduction constructor friendlier --- loopy/symbolic.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/loopy/symbolic.py b/loopy/symbolic.py index 8897f3593..bad7f840f 100644 --- a/loopy/symbolic.py +++ b/loopy/symbolic.py @@ -305,7 +305,27 @@ class Reduction(AlgebraicLeaf): init_arg_names = ("operation", "inames", "expr") def __init__(self, operation, inames, expr): + if isinstance(inames, str): + inames = tuple(iname.strip() for iname in inames.split(",")) + + elif isinstance(inames, Variable): + inames = (inames,) + assert isinstance(inames, tuple) + + def strip_var(iname): + if isinstance(iname, Variable): + iname = iname.name + + assert isinstance(iname, str) + return iname + + inames = tuple(strip_var(iname) for iname in inames) + + if isinstance(operation, str): + from loopy.library.reduction import parse_reduction_op + operation = parse_reduction_op(operation) + from loopy.library.reduction import ReductionOperation assert isinstance(operation, ReductionOperation) -- GitLab