Skip to content
Snippets Groups Projects

Draft: Develop

Closed Markus Holzer requested to merge holzer/pystencils:develop into master
Files
8
@@ -627,7 +627,23 @@ class VectorizedCustomSympyPrinter(CustomSympyPrinter):
result = self.instruction_set['|'].format(result, item)
return result
def _print_Add(self, expr, order=None):
def _print_Add(self, expr):
# recursivley add the summands to increase the level of parallelism on the core level
def visit(summands):
if len(summands) == 2:
sign = summands[0].sign * summands[1].sign
func = self.instruction_set['-' + suffix] if sign == -1 else self.instruction_set['+' + suffix]
return func.format(summands[0].term, summands[1].term)
else:
elements = len(summands) // 2
if len(summands[:elements]) < 2:
func = self.instruction_set['-' + suffix] \
if summands[0].sign == -1 else self.instruction_set['+' + suffix]
return func.format(summands[0].term, visit(summands[elements:]))
else:
func = self.instruction_set['+' + suffix]
return func.format(visit(summands[:elements]), visit(summands[elements:]))
try:
result = self._scalarFallback('_print_Add', expr)
except Exception:
@@ -662,10 +678,8 @@ class VectorizedCustomSympyPrinter(CustomSympyPrinter):
summands.insert(0, self.SummandInfo(1, "0"))
assert len(summands) >= 2
processed = summands[0].term
for summand in summands[1:]:
func = self.instruction_set['-' + suffix] if summand.sign == -1 else self.instruction_set['+' + suffix]
processed = func.format(processed, summand.term)
processed = visit(summands)
return processed
def _print_Pow(self, expr):