Skip to content
Snippets Groups Projects
Commit bb265e0b authored by Martin Bauer's avatar Martin Bauer
Browse files

Benchmarked compilation step - added optimizations

parent 8940c4fe
No related merge requests found
import numpy as np
import sympy as sp
from pystencils.field import Field
from pystencils.transformations import fastSubs
def grad(var, dim=3):
......@@ -131,14 +132,3 @@ def __upDownOffsets(d, dim):
coord[d] = -1
down = np.array(coord, dtype=np.int)
return up, down
def fastSubs(term, subsDict):
"""Similar to sympy subs function.
This version is much faster for big substitution dictionaries than sympy version"""
def visit(expr):
if expr in subsDict:
return subsDict[expr]
paramList = [visit(a) for a in expr.args]
return expr if not paramList else expr.func(*paramList)
return visit(term)
......@@ -9,6 +9,17 @@ from pystencils.slicing import normalizeSlice
import pystencils.ast as ast
def fastSubs(term, subsDict):
"""Similar to sympy subs function.
This version is much faster for big substitution dictionaries than sympy version"""
def visit(expr):
if expr in subsDict:
return subsDict[expr]
paramList = [visit(a) for a in expr.args]
return expr if not paramList else expr.func(*paramList)
return visit(term)
def makeLoopOverDomain(body, functionName, iterationSlice=None, ghostLayers=None, loopOrder=None):
"""
Uses :class:`pystencils.field.Field.Access` to create (multiple) loops around given AST.
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment