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
Branches
Tags
No related merge requests found
import numpy as np import numpy as np
import sympy as sp import sympy as sp
from pystencils.field import Field from pystencils.field import Field
from pystencils.transformations import fastSubs
def grad(var, dim=3): def grad(var, dim=3):
...@@ -131,14 +132,3 @@ def __upDownOffsets(d, dim): ...@@ -131,14 +132,3 @@ def __upDownOffsets(d, dim):
coord[d] = -1 coord[d] = -1
down = np.array(coord, dtype=np.int) down = np.array(coord, dtype=np.int)
return up, down 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 ...@@ -9,6 +9,17 @@ from pystencils.slicing import normalizeSlice
import pystencils.ast as ast 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): def makeLoopOverDomain(body, functionName, iterationSlice=None, ghostLayers=None, loopOrder=None):
""" """
Uses :class:`pystencils.field.Field.Access` to create (multiple) loops around given AST. 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