Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Frederik Hennig
pystencils
Commits
6373c03a
Commit
6373c03a
authored
Jul 11, 2019
by
Martin Bauer
Browse files
Import sorting using isort
parent
cd0949ab
Changes
101
Hide whitespace changes
Inline
Side-by-side
.isort.cfg
0 → 100644
View file @
6373c03a
[settings]
line_length=100
balanced_wrapping=True
multi_line_output=4
conftest.py
View file @
6373c03a
...
...
@@ -89,6 +89,7 @@ class IPyNbTest(pytest.Item):
self
.
code
=
code
self
.
add_marker
(
'notebook'
)
@
pytest
.
mark
.
filterwarnings
(
"ignore:IPython.core.inputsplitter is deprecated"
)
def
runtest
(
self
):
global_dict
=
{
'get_ipython'
:
lambda
:
IPythonMockup
(),
'is_test_run'
:
True
}
...
...
pystencils/__init__.py
View file @
6373c03a
"""Module to generate stencil kernels in C or CUDA using sympy expressions and call them as Python functions"""
from
.
import
sympy_gmpy_bug_workaround
# NOQA
from
.field
import
Field
,
FieldType
,
fields
from
.
import
fd
from
.
import
stencil
as
stencil
from
.assignment
import
Assignment
,
assignment_from_stencil
from
.data_types
import
TypedSymbol
from
.slicing
import
make_slice
from
.kernelcreation
import
create_kernel
,
create_indexed_kernel
,
create_staggered_kernel
from
.datahandling
import
create_data_handling
from
.display_utils
import
show_code
,
to_dot
from
.field
import
Field
,
FieldType
,
fields
from
.kernel_decorator
import
kernel
from
.kernelcreation
import
create_indexed_kernel
,
create_kernel
,
create_staggered_kernel
from
.simp
import
AssignmentCollection
from
.
assignment
import
Assignment
,
assignment_from_stencil
from
.
slicing
import
make_slice
from
.sympyextensions
import
SymbolCreator
from
.datahandling
import
create_data_handling
from
.kernel_decorator
import
kernel
from
.
import
fd
from
.
import
stencil
as
stencil
__all__
=
[
'Field'
,
'FieldType'
,
'fields'
,
'TypedSymbol'
,
...
...
pystencils/assignment.py
View file @
6373c03a
# -*- coding: utf-8 -*-
import
numpy
as
np
import
sympy
as
sp
from
sympy.printing.latex
import
LatexPrinter
...
...
@@ -6,7 +7,6 @@ try:
from
sympy.codegen.ast
import
Assignment
except
ImportError
:
Assignment
=
None
import
numpy
as
np
__all__
=
[
'Assignment'
,
'assignment_from_stencil'
]
...
...
@@ -84,7 +84,7 @@ def assignment_from_stencil(stencil_array, input_field, output_field,
>>> assignment_from_stencil(stencil, f[1, 0], g[2, 0])
Assignment(g_2E, 3*f_C + 6*f_SE + 4*f_E + 2*f_NE + 5*f_2E)
"""
from
pystencils
import
Field
from
pystencils
.field
import
Field
stencil_array
=
np
.
array
(
stencil_array
)
if
order
==
'visual'
:
...
...
pystencils/astnodes.py
View file @
6373c03a
...
...
@@ -5,8 +5,7 @@ import sympy as sp
from
pystencils.data_types
import
TypedSymbol
,
cast_func
,
create_type
from
pystencils.field
import
Field
from
pystencils.kernelparameters
import
(
FieldPointerSymbol
,
FieldShapeSymbol
,
FieldStrideSymbol
)
from
pystencils.kernelparameters
import
FieldPointerSymbol
,
FieldShapeSymbol
,
FieldStrideSymbol
from
pystencils.sympyextensions
import
fast_subs
NodeOrExpr
=
Union
[
'Node'
,
sp
.
Expr
]
...
...
pystencils/backends/cbackend.py
View file @
6373c03a
...
...
@@ -6,18 +6,15 @@ import sympy as sp
from
sympy.core
import
S
from
sympy.printing.ccode
import
C89CodePrinter
from
pystencils.astnodes
import
(
DestructuringBindingsForFieldClass
,
KernelFunction
,
Node
)
from
pystencils.astnodes
import
DestructuringBindingsForFieldClass
,
KernelFunction
,
Node
from
pystencils.cpu.vectorization
import
vec_all
,
vec_any
from
pystencils.data_types
import
(
PointerType
,
VectorType
,
address_of
,
cast_func
,
create_type
,
get_type_of_expression
,
reinterpret_cast_func
,
vector_memory_access
)
from
pystencils.fast_approximation
import
(
fast_division
,
fast_inv_sqrt
,
fast_sqrt
)
from
pystencils.integer_functions
import
(
bit_shift_left
,
bit_shift_right
,
bitwise_and
,
bitwise_or
,
bitwise_xor
,
int_div
,
int_power_of_2
,
modulo_ceil
)
from
pystencils.data_types
import
(
PointerType
,
VectorType
,
address_of
,
cast_func
,
create_type
,
get_type_of_expression
,
reinterpret_cast_func
,
vector_memory_access
)
from
pystencils.fast_approximation
import
fast_division
,
fast_inv_sqrt
,
fast_sqrt
from
pystencils.integer_functions
import
(
bit_shift_left
,
bit_shift_right
,
bitwise_and
,
bitwise_or
,
bitwise_xor
,
int_div
,
int_power_of_2
,
modulo_ceil
)
from
pystencils.kernelparameters
import
FieldPointerSymbol
try
:
...
...
pystencils/backends/dot.py
View file @
6373c03a
from
sympy.printing.printer
import
Printer
from
graphviz
import
Digraph
,
lang
import
graphviz
from
graphviz
import
Digraph
,
lang
from
sympy.printing.printer
import
Printer
# noinspection PyPep8Naming
...
...
pystencils/boundaries/__init__.py
View file @
6373c03a
from
pystencils.boundaries.boundaryconditions
import
Dirichlet
,
Neumann
from
pystencils.boundaries.boundaryhandling
import
BoundaryHandling
from
pystencils.boundaries.boundaryconditions
import
Neumann
,
Dirichlet
from
pystencils.boundaries.inkernel
import
add_neumann_boundary
__all__
=
[
'BoundaryHandling'
,
'Neumann'
,
'Dirichlet'
,
'add_neumann_boundary'
]
pystencils/boundaries/boundaryconditions.py
View file @
6373c03a
from
typing
import
List
,
Tuple
,
Any
from
typing
import
Any
,
List
,
Tuple
from
pystencils
import
Assignment
from
pystencils.boundaries.boundaryhandling
import
BoundaryOffsetInfo
from
pystencils.data_types
import
create_type
...
...
pystencils/boundaries/boundaryhandling.py
View file @
6373c03a
import
numpy
as
np
import
sympy
as
sp
from
pystencils
import
create_indexed_kernel
from
pystencils.assignment
import
Assignment
from
pystencils
import
Field
,
TypedSymbol
,
create_indexed_kernel
from
pystencils.backends.cbackend
import
CustomCodeNode
from
pystencils.boundaries.createindexlist
import
numpy_data_type_for_boundary_object
,
create_boundary_index_array
from
pystencils.boundaries.createindexlist
import
(
create_boundary_index_array
,
numpy_data_type_for_boundary_object
)
from
pystencils.cache
import
memorycache
from
pystencils.data_types
import
create_type
from
pystencils.data_types
import
TypedSymbol
,
create_type
from
pystencils.field
import
Field
from
pystencils.kernelparameters
import
FieldPointerSymbol
DEFAULT_FLAG_TYPE
=
np
.
uint32
...
...
pystencils/boundaries/createindexlist.py
View file @
6373c03a
import
numpy
as
np
import
itertools
import
warnings
import
numpy
as
np
try
:
# Try to import right away - assume compiled code is available
# compile with: python setup.py build_ext --inplace --use-cython
...
...
pystencils/boundaries/inkernel.py
View file @
6373c03a
import
sympy
as
sp
from
pystencils
import
Field
,
TypedSymbol
from
pystencils.integer_functions
import
bitwise_and
from
pystencils.boundaries.boundaryhandling
import
DEFAULT_FLAG_TYPE
from
pystencils.data_types
import
create_type
from
pystencils.data_types
import
TypedSymbol
,
create_type
from
pystencils.field
import
Field
from
pystencils.integer_functions
import
bitwise_and
def
add_neumann_boundary
(
eqs
,
fields
,
flag_field
,
boundary_flag
=
"neumann_flag"
,
inverse_flag
=
False
):
"""
Replaces all neighbor accesses by flag field guarded accesses.
If flag in neighboring cell is set, the center value is used instead
:param eqs: list of equations containing field accesses to direct neighbors
:param fields: fields for which the Neumann boundary should be applied
:param flag_field: integer field marking boundary cells
:param boundary_flag: if flag field has value 'boundary_flag' (no bit operations yet)
the cell is assumed to be boundary
:param inverse_flag: if true, boundary cells are where flag field has not the value of boundary_flag
:return: list of equations with guarded field accesses
Args:
eqs: list of equations containing field accesses to direct neighbors
fields: fields for which the Neumann boundary should be applied
flag_field: integer field marking boundary cells
boundary_flag: if flag field has value 'boundary_flag' (no bit operations yet)
the cell is assumed to be boundary
inverse_flag: if true, boundary cells are where flag field has not the value of boundary_flag
Returns:
list of equations with guarded field accesses
"""
if
not
hasattr
(
fields
,
"__len__"
):
fields
=
[
fields
]
...
...
pystencils/cpu/__init__.py
View file @
6373c03a
from
pystencils.cpu.kernelcreation
import
create_kernel
,
create_indexed_kernel
,
add_openmp
from
pystencils.cpu.cpujit
import
make_python_function
from
pystencils.cpu.kernelcreation
import
add_openmp
,
create_indexed_kernel
,
create_kernel
__all__
=
[
'create_kernel'
,
'create_indexed_kernel'
,
'add_openmp'
,
'make_python_function'
]
pystencils/cpu/cpujit.py
View file @
6373c03a
...
...
@@ -43,25 +43,24 @@ Then 'cl.exe' is used to compile.
For Windows compilers the qualifier should be ``__restrict``
"""
import
os
import
hashlib
import
json
import
os
import
platform
import
shutil
import
subprocess
import
textwrap
from
collections
import
OrderedDict
from
sysconfig
import
get_paths
from
tempfile
import
TemporaryDirectory
import
numpy
as
np
import
subprocess
from
appdirs
import
user_config_dir
,
user_cache_dir
from
collections
import
OrderedDict
from
appdirs
import
user_cache_dir
,
user_config_dir
from
pystencils.utils
import
recursive_dict_update
from
sysconfig
import
get_paths
from
pystencils
import
FieldType
from
pystencils.backends.cbackend
import
generate_c
,
get_headers
from
pystencils.
utils
import
file_handle_for_atomic_write
,
atomic_file_writ
e
from
pystencils.
field
import
FieldTyp
e
from
pystencils.include
import
get_pystencils_include_path
from
pystencils.utils
import
atomic_file_write
,
file_handle_for_atomic_write
,
recursive_dict_update
def
make_python_function
(
kernel_function_node
):
...
...
pystencils/cpu/kernelcreation.py
View file @
6373c03a
from
typing
import
List
,
Union
import
sympy
as
sp
from
pystencils.astnodes
import
SympyAssignment
,
Block
,
LoopOverCoordinate
,
KernelFunction
from
pystencils.transformations
import
resolve_buffer_accesses
,
resolve_field_accesses
,
make_loop_over_domain
,
\
add_types
,
get_optimal_loop_ordering
,
parse_base_pointer_info
,
move_constants_before_loop
,
\
split_inner_loop
,
get_base_buffer_index
,
filtered_tree_iteration
from
pystencils.data_types
import
TypedSymbol
,
BasicType
,
StructType
,
create_type
from
pystencils.field
import
Field
,
FieldType
import
pystencils.astnodes
as
ast
from
pystencils.cpu.cpujit
import
make_python_function
from
pystencils.assignment
import
Assignment
from
typing
import
List
,
Union
from
pystencils.astnodes
import
Block
,
KernelFunction
,
LoopOverCoordinate
,
SympyAssignment
from
pystencils.cpu.cpujit
import
make_python_function
from
pystencils.data_types
import
BasicType
,
StructType
,
TypedSymbol
,
create_type
from
pystencils.field
import
Field
,
FieldType
from
pystencils.transformations
import
(
add_types
,
filtered_tree_iteration
,
get_base_buffer_index
,
get_optimal_loop_ordering
,
make_loop_over_domain
,
move_constants_before_loop
,
parse_base_pointer_info
,
resolve_buffer_accesses
,
resolve_field_accesses
,
split_inner_loop
)
AssignmentOrAstNodeList
=
List
[
Union
[
Assignment
,
ast
.
Node
]]
...
...
pystencils/cpu/msvc_detection.py
View file @
6373c03a
import
subprocess
import
os
import
subprocess
def
get_environment
(
version_specifier
,
arch
=
'x64'
):
...
...
pystencils/cpu/vectorization.py
View file @
6373c03a
import
sympy
as
sp
import
warnings
from
typing
import
Union
,
Container
from
pystencils.backends.simd_instruction_sets
import
get_vector_instruction_set
from
pystencils.fast_approximation
import
fast_division
,
fast_sqrt
,
fast_inv_sqrt
from
pystencils.integer_functions
import
modulo_floor
,
modulo_ceil
from
pystencils.sympyextensions
import
fast_subs
from
pystencils.data_types
import
TypedSymbol
,
VectorType
,
get_type_of_expression
,
vector_memory_access
,
cast_func
,
\
collate_types
,
PointerType
from
typing
import
Container
,
Union
import
sympy
as
sp
import
pystencils.astnodes
as
ast
from
pystencils.transformations
import
cut_loop
,
filtered_tree_iteration
,
replace_inner_stride_with_one
from
pystencils.backends.simd_instruction_sets
import
get_vector_instruction_set
from
pystencils.data_types
import
(
PointerType
,
TypedSymbol
,
VectorType
,
cast_func
,
collate_types
,
get_type_of_expression
,
vector_memory_access
)
from
pystencils.fast_approximation
import
fast_division
,
fast_inv_sqrt
,
fast_sqrt
from
pystencils.field
import
Field
from
pystencils.integer_functions
import
modulo_ceil
,
modulo_floor
from
pystencils.sympyextensions
import
fast_subs
from
pystencils.transformations
import
(
cut_loop
,
filtered_tree_iteration
,
replace_inner_stride_with_one
)
# noinspection PyPep8Naming
...
...
pystencils/data_types.py
View file @
6373c03a
import
ctypes
import
sympy
as
sp
import
numpy
as
np
import
sympy
as
sp
from
sympy.core.cache
import
cacheit
from
sympy.logic.boolalg
import
Boolean
from
pystencils.cache
import
memorycache
from
pystencils.utils
import
all_equal
try
:
import
llvmlite.ir
as
ir
except
ImportError
as
e
:
ir
=
None
_ir_importerror
=
e
from
sympy.core.cache
import
cacheit
from
pystencils.cache
import
memorycache
from
pystencils.utils
import
all_equal
from
sympy.logic.boolalg
import
Boolean
# noinspection PyPep8Naming
...
...
pystencils/datahandling/__init__.py
View file @
6373c03a
from
typing
import
Tuple
,
Union
from
.serial_datahandling
import
SerialDataHandling
from
.datahandling_interface
import
DataHandling
from
.serial_datahandling
import
SerialDataHandling
try
:
# noinspection PyPep8Naming
...
...
pystencils/datahandling/blockiteration.py
View file @
6373c03a
...
...
@@ -7,6 +7,7 @@ import numpy as np
from
pystencils.datahandling.datahandling_interface
import
Block
from
pystencils.slicing
import
normalize_slice
try
:
# noinspection PyPep8Naming
import
waLBerla
as
wlb
...
...
Prev
1
2
3
4
5
6
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment