Skip to content
Snippets Groups Projects

Reimplement create_staggered_kernel

Merged Michael Kuron requested to merge staggered_kernel into master
Viewing commit 6dab2755
Show latest version
2 files
+ 17
9
Preferences
Compare changes
Files
2
@@ -6,6 +6,7 @@ import sympy as sp
@@ -6,6 +6,7 @@ import sympy as sp
from pystencils.assignment import Assignment
from pystencils.assignment import Assignment
from pystencils.astnodes import Block, Conditional, LoopOverCoordinate, SympyAssignment
from pystencils.astnodes import Block, Conditional, LoopOverCoordinate, SympyAssignment
from pystencils.cpu.vectorization import vectorize
from pystencils.cpu.vectorization import vectorize
 
from pystencils.field import Field
from pystencils.gpucuda.indexing import indexing_creator_from_params
from pystencils.gpucuda.indexing import indexing_creator_from_params
from pystencils.simp.assignment_collection import AssignmentCollection
from pystencils.simp.assignment_collection import AssignmentCollection
from pystencils.stencil import direction_string_to_offset, inverse_direction_string
from pystencils.stencil import direction_string_to_offset, inverse_direction_string
@@ -187,8 +188,18 @@ def create_indexed_kernel(assignments,
@@ -187,8 +188,18 @@ def create_indexed_kernel(assignments,
raise ValueError("Unknown target %s. Has to be either 'cpu' or 'gpu'" % (target,))
raise ValueError("Unknown target %s. Has to be either 'cpu' or 'gpu'" % (target,))
def create_staggered_kernel(staggered_field, expressions, subexpressions=(), target='cpu',
def create_staggered_kernel(*args, **kwargs):
gpu_exclusive_conditions=False, **kwargs):
"""Kernel that updates a staggered field. Dispatches to either create_staggered_kernel_1 or
 
create_staggered_kernel_2 depending on the argument types.
 
"""
 
if 'staggered_field' in kwargs or type(args[0]) is Field:
 
return create_staggered_kernel_1(*args, **kwargs)
 
else:
 
return create_staggered_kernel_2(*args, **kwargs)
 
 
 
def create_staggered_kernel_1(staggered_field, expressions, subexpressions=(), target='cpu',
 
gpu_exclusive_conditions=False, **kwargs):
"""Kernel that updates a staggered field.
"""Kernel that updates a staggered field.
.. image:: /img/staggered_grid.svg
.. image:: /img/staggered_grid.svg