From 6373c03aeba2af10d15ee259677ae5f1d7d9a76f Mon Sep 17 00:00:00 2001 From: Martin Bauer <martin.bauer@fau.de> Date: Thu, 11 Jul 2019 11:13:23 +0200 Subject: [PATCH] Import sorting using isort --- .isort.cfg | 4 ++ conftest.py | 1 + pystencils/__init__.py | 17 ++++----- pystencils/assignment.py | 4 +- pystencils/astnodes.py | 3 +- pystencils/backends/cbackend.py | 19 ++++------ pystencils/backends/dot.py | 4 +- pystencils/boundaries/__init__.py | 2 +- pystencils/boundaries/boundaryconditions.py | 3 +- pystencils/boundaries/boundaryhandling.py | 9 +++-- pystencils/boundaries/createindexlist.py | 3 +- pystencils/boundaries/inkernel.py | 25 +++++++----- pystencils/cpu/__init__.py | 2 +- pystencils/cpu/cpujit.py | 15 ++++---- pystencils/cpu/kernelcreation.py | 19 ++++++---- pystencils/cpu/msvc_detection.py | 2 +- pystencils/cpu/vectorization.py | 22 ++++++----- pystencils/data_types.py | 13 ++++--- pystencils/datahandling/__init__.py | 3 +- pystencils/datahandling/blockiteration.py | 1 + .../datahandling/datahandling_interface.py | 6 ++- .../datahandling/parallel_datahandling.py | 12 +++--- .../datahandling/serial_datahandling.py | 10 +++-- pystencils/datahandling/vtk.py | 2 +- pystencils/display_utils.py | 4 +- pystencils/fast_approximation.py | 3 +- pystencils/fd/__init__.py | 10 ++--- pystencils/fd/derivation.py | 8 ++-- pystencils/fd/derivative.py | 6 ++- pystencils/fd/finitedifferences.py | 7 ++-- pystencils/fd/spatial.py | 7 +++- pystencils/field.py | 14 ++++--- pystencils/gpucuda/__init__.py | 4 +- pystencils/gpucuda/cudajit.py | 4 +- pystencils/gpucuda/indexing.py | 11 +++--- pystencils/gpucuda/kernelcreation.py | 13 ++++--- pystencils/gpucuda/periodicity.py | 5 ++- pystencils/integer_functions.py | 2 +- pystencils/integer_set_analysis.py | 2 +- pystencils/jupyter.py | 10 +++-- pystencils/kerncraft_coupling/__init__.py | 2 +- .../kerncraft_coupling/generate_benchmark.py | 12 +++--- .../kerncraft_coupling/kerncraft_interface.py | 13 ++++--- pystencils/kernel_decorator.py | 6 ++- pystencils/kernelcreation.py | 12 +++--- pystencils/kernelparameters.py | 4 +- pystencils/llvm/kernelcreation.py | 2 +- pystencils/llvm/llvm.py | 13 ++++--- pystencils/llvm/llvmjit.py | 11 ++++-- pystencils/placeholder_function.py | 4 +- pystencils/plot.py | 3 +- pystencils/rng.py | 3 +- pystencils/runhelper/db.py | 6 ++- pystencils/runhelper/parameterstudy.py | 10 ++--- pystencils/session.py | 8 ++-- pystencils/simp/__init__.py | 8 ++-- pystencils/simp/assignment_collection.py | 8 ++-- pystencils/simp/simplifications.py | 6 +-- pystencils/simp/simplificationstrategy.py | 6 ++- pystencils/slicing.py | 1 + pystencils/stencil.py | 5 ++- pystencils/sympyextensions.py | 12 +++--- pystencils/transformations.py | 19 ++++++---- pystencils/utils.py | 6 +-- pystencils_tests/benchmark/benchmark.py | 10 +++-- pystencils_tests/benchmark/generate.py | 7 ++-- pystencils_tests/test_address_of.py | 5 ++- .../test_assignment_collection.py | 1 + .../test_assignment_from_stencil.py | 3 +- pystencils_tests/test_blocking.py | 4 +- pystencils_tests/test_blocking_staggered.py | 1 + pystencils_tests/test_boundary.py | 7 ++-- pystencils_tests/test_buffer.py | 9 +++-- pystencils_tests/test_buffer_gpu.py | 13 ++++--- pystencils_tests/test_conditional_vec.py | 7 ++-- pystencils_tests/test_cudagpu.py | 13 ++++--- pystencils_tests/test_datahandling.py | 6 ++- .../test_datahandling_parallel.py | 7 ++-- pystencils_tests/test_derivative.py | 5 ++- pystencils_tests/test_dtype_check.py | 3 +- pystencils_tests/test_fast_approximation.py | 5 ++- pystencils_tests/test_fd_derivation.py | 1 + pystencils_tests/test_field.py | 5 ++- pystencils_tests/test_finite_differences.py | 3 +- pystencils_tests/test_indexed_kernels.py | 3 +- pystencils_tests/test_jacobi_cbackend.py | 8 ++-- pystencils_tests/test_jacobi_llvm.py | 1 + pystencils_tests/test_kerncraft_coupling.py | 38 +++++++++---------- pystencils_tests/test_loop_cutting.py | 13 ++++--- .../test_move_constant_before_loop.py | 5 ++- pystencils_tests/test_parameterstudy.py | 3 +- pystencils_tests/test_pickle_support.py | 4 +- pystencils_tests/test_plot.py | 2 + pystencils_tests/test_random.py | 3 +- .../test_simplification_strategy.py | 6 ++- .../test_size_and_layout_checks.py | 3 +- .../test_size_and_layout_checks_llvm.py | 3 +- pystencils_tests/test_sliced_iteration.py | 3 +- pystencils_tests/test_stencils.py | 2 - pystencils_tests/test_struct_types.py | 3 +- pystencils_tests/test_vectorization.py | 1 + 101 files changed, 411 insertions(+), 296 deletions(-) create mode 100644 .isort.cfg diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 000000000..cbdece311 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,4 @@ +[settings] +line_length=100 +balanced_wrapping=True +multi_line_output=4 diff --git a/conftest.py b/conftest.py index 5a7ce065a..1502422ee 100644 --- a/conftest.py +++ b/conftest.py @@ -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} diff --git a/pystencils/__init__.py b/pystencils/__init__.py index 8095205da..a7e21703b 100644 --- a/pystencils/__init__.py +++ b/pystencils/__init__.py @@ -1,18 +1,17 @@ """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', diff --git a/pystencils/assignment.py b/pystencils/assignment.py index 757413abd..45a95d41e 100644 --- a/pystencils/assignment.py +++ b/pystencils/assignment.py @@ -1,4 +1,5 @@ # -*- 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': diff --git a/pystencils/astnodes.py b/pystencils/astnodes.py index d83c488d0..441de76aa 100644 --- a/pystencils/astnodes.py +++ b/pystencils/astnodes.py @@ -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] diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 7c4937d1f..bb621f803 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -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: diff --git a/pystencils/backends/dot.py b/pystencils/backends/dot.py index bfec9cfdb..64610c47a 100644 --- a/pystencils/backends/dot.py +++ b/pystencils/backends/dot.py @@ -1,6 +1,6 @@ -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 diff --git a/pystencils/boundaries/__init__.py b/pystencils/boundaries/__init__.py index cf94f330f..890ea2083 100644 --- a/pystencils/boundaries/__init__.py +++ b/pystencils/boundaries/__init__.py @@ -1,5 +1,5 @@ +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'] diff --git a/pystencils/boundaries/boundaryconditions.py b/pystencils/boundaries/boundaryconditions.py index 10870c4cd..39338634a 100644 --- a/pystencils/boundaries/boundaryconditions.py +++ b/pystencils/boundaries/boundaryconditions.py @@ -1,4 +1,5 @@ -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 diff --git a/pystencils/boundaries/boundaryhandling.py b/pystencils/boundaries/boundaryhandling.py index 384c10d4f..d258de4b3 100644 --- a/pystencils/boundaries/boundaryhandling.py +++ b/pystencils/boundaries/boundaryhandling.py @@ -1,11 +1,14 @@ 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 diff --git a/pystencils/boundaries/createindexlist.py b/pystencils/boundaries/createindexlist.py index f3aff9c43..a0ee87f3b 100644 --- a/pystencils/boundaries/createindexlist.py +++ b/pystencils/boundaries/createindexlist.py @@ -1,7 +1,8 @@ -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 diff --git a/pystencils/boundaries/inkernel.py b/pystencils/boundaries/inkernel.py index 73da40bee..1d78814db 100644 --- a/pystencils/boundaries/inkernel.py +++ b/pystencils/boundaries/inkernel.py @@ -1,21 +1,26 @@ 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] diff --git a/pystencils/cpu/__init__.py b/pystencils/cpu/__init__.py index 900a32eab..e15bc8cf0 100644 --- a/pystencils/cpu/__init__.py +++ b/pystencils/cpu/__init__.py @@ -1,4 +1,4 @@ -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'] diff --git a/pystencils/cpu/cpujit.py b/pystencils/cpu/cpujit.py index 09128360d..c2561c149 100644 --- a/pystencils/cpu/cpujit.py +++ b/pystencils/cpu/cpujit.py @@ -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_write +from pystencils.field import FieldType 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): diff --git a/pystencils/cpu/kernelcreation.py b/pystencils/cpu/kernelcreation.py index d3b791901..fc6765e58 100644 --- a/pystencils/cpu/kernelcreation.py +++ b/pystencils/cpu/kernelcreation.py @@ -1,14 +1,17 @@ +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]] diff --git a/pystencils/cpu/msvc_detection.py b/pystencils/cpu/msvc_detection.py index be0fb9189..94b2bcf5b 100644 --- a/pystencils/cpu/msvc_detection.py +++ b/pystencils/cpu/msvc_detection.py @@ -1,5 +1,5 @@ -import subprocess import os +import subprocess def get_environment(version_specifier, arch='x64'): diff --git a/pystencils/cpu/vectorization.py b/pystencils/cpu/vectorization.py index 619a55ad0..6bf3a26de 100644 --- a/pystencils/cpu/vectorization.py +++ b/pystencils/cpu/vectorization.py @@ -1,15 +1,19 @@ -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 diff --git a/pystencils/data_types.py b/pystencils/data_types.py index 3f1a02c68..8bf28e777 100644 --- a/pystencils/data_types.py +++ b/pystencils/data_types.py @@ -1,17 +1,18 @@ 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 diff --git a/pystencils/datahandling/__init__.py b/pystencils/datahandling/__init__.py index 5b617bf49..583f121b0 100644 --- a/pystencils/datahandling/__init__.py +++ b/pystencils/datahandling/__init__.py @@ -1,6 +1,7 @@ from typing import Tuple, Union -from .serial_datahandling import SerialDataHandling + from .datahandling_interface import DataHandling +from .serial_datahandling import SerialDataHandling try: # noinspection PyPep8Naming diff --git a/pystencils/datahandling/blockiteration.py b/pystencils/datahandling/blockiteration.py index 04297087b..fdf2b97e8 100644 --- a/pystencils/datahandling/blockiteration.py +++ b/pystencils/datahandling/blockiteration.py @@ -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 diff --git a/pystencils/datahandling/datahandling_interface.py b/pystencils/datahandling/datahandling_interface.py index da2108bfb..ce153ff7a 100644 --- a/pystencils/datahandling/datahandling_interface.py +++ b/pystencils/datahandling/datahandling_interface.py @@ -1,6 +1,8 @@ -import numpy as np from abc import ABC, abstractmethod -from typing import Optional, Callable, Sequence, Iterable, Tuple, Dict, Union +from typing import Callable, Dict, Iterable, Optional, Sequence, Tuple, Union + +import numpy as np + from pystencils.field import Field diff --git a/pystencils/datahandling/parallel_datahandling.py b/pystencils/datahandling/parallel_datahandling.py index 31ca00e2c..4e8d965d4 100644 --- a/pystencils/datahandling/parallel_datahandling.py +++ b/pystencils/datahandling/parallel_datahandling.py @@ -1,13 +1,15 @@ import os -import numpy as np import warnings -from pystencils import Field + +import numpy as np +# noinspection PyPep8Naming +import waLBerla as wlb + +from pystencils.datahandling.blockiteration import block_iteration, sliced_block_iteration from pystencils.datahandling.datahandling_interface import DataHandling -from pystencils.datahandling.blockiteration import sliced_block_iteration, block_iteration +from pystencils.field import Field from pystencils.kernelparameters import FieldPointerSymbol from pystencils.utils import DotDict -# noinspection PyPep8Naming -import waLBerla as wlb class ParallelDataHandling(DataHandling): diff --git a/pystencils/datahandling/serial_datahandling.py b/pystencils/datahandling/serial_datahandling.py index 7e4d19cd8..8c79a0931 100644 --- a/pystencils/datahandling/serial_datahandling.py +++ b/pystencils/datahandling/serial_datahandling.py @@ -1,11 +1,13 @@ import itertools +import time from typing import Sequence, Union + import numpy as np -import time -from pystencils import Field -from pystencils.datahandling.datahandling_interface import DataHandling -from pystencils.field import layout_string_to_tuple, spatial_layout_string_to_tuple, create_numpy_array_with_layout + from pystencils.datahandling.blockiteration import SerialBlock +from pystencils.datahandling.datahandling_interface import DataHandling +from pystencils.field import ( + Field, create_numpy_array_with_layout, layout_string_to_tuple, spatial_layout_string_to_tuple) from pystencils.slicing import normalize_slice, remove_ghost_layers from pystencils.utils import DotDict diff --git a/pystencils/datahandling/vtk.py b/pystencils/datahandling/vtk.py index dcdf2d2d0..9c5f27fa8 100644 --- a/pystencils/datahandling/vtk.py +++ b/pystencils/datahandling/vtk.py @@ -1,5 +1,5 @@ -from pyevtk.vtk import VtkFile, VtkImageData from pyevtk.hl import _addDataToFile, _appendDataToFile +from pyevtk.vtk import VtkFile, VtkImageData def image_to_vtk(path, cell_data, origin=(0.0, 0.0, 0.0), spacing=(1.0, 1.0, 1.0)): diff --git a/pystencils/display_utils.py b/pystencils/display_utils.py index 55a4720c1..77eca2e86 100644 --- a/pystencils/display_utils.py +++ b/pystencils/display_utils.py @@ -1,5 +1,7 @@ -import sympy as sp from typing import Any, Dict, Optional + +import sympy as sp + from pystencils.astnodes import KernelFunction diff --git a/pystencils/fast_approximation.py b/pystencils/fast_approximation.py index 0dbdab241..f33009600 100644 --- a/pystencils/fast_approximation.py +++ b/pystencils/fast_approximation.py @@ -1,6 +1,7 @@ -import sympy as sp from typing import List, Union +import sympy as sp + from pystencils.astnodes import Node from pystencils.simp import AssignmentCollection diff --git a/pystencils/fd/__init__.py b/pystencils/fd/__init__.py index 62b11e4e7..099763411 100644 --- a/pystencils/fd/__init__.py +++ b/pystencils/fd/__init__.py @@ -1,8 +1,8 @@ -from .derivative import Diff, DiffOperator, \ - diff_terms, collect_diffs, zero_diffs, evaluate_diffs, normalize_diff_order, \ - expand_diff_full, expand_diff_linear, expand_diff_products, combine_diff_products, \ - functional_derivative, diff -from .finitedifferences import advection, diffusion, transient, Discretization2ndOrder +from .derivative import ( + Diff, DiffOperator, collect_diffs, combine_diff_products, diff, diff_terms, evaluate_diffs, + expand_diff_full, expand_diff_linear, expand_diff_products, functional_derivative, + normalize_diff_order, zero_diffs) +from .finitedifferences import Discretization2ndOrder, advection, diffusion, transient from .spatial import discretize_spatial, discretize_spatial_staggered __all__ = ['Diff', 'diff', 'DiffOperator', 'diff_terms', 'collect_diffs', diff --git a/pystencils/fd/derivation.py b/pystencils/fd/derivation.py index 0d0d1e08d..451648ef3 100644 --- a/pystencils/fd/derivation.py +++ b/pystencils/fd/derivation.py @@ -1,8 +1,10 @@ -import sympy as sp from collections import defaultdict + +import sympy as sp + from pystencils.field import Field -from pystencils.sympyextensions import prod, multidimensional_sum -from pystencils.utils import fully_contains, LinearEquationSystem +from pystencils.sympyextensions import multidimensional_sum, prod +from pystencils.utils import LinearEquationSystem, fully_contains class FiniteDifferenceStencilDerivation: diff --git a/pystencils/fd/derivative.py b/pystencils/fd/derivative.py index 0557a2d50..7acd24505 100644 --- a/pystencils/fd/derivative.py +++ b/pystencils/fd/derivative.py @@ -1,6 +1,8 @@ +from collections import defaultdict, namedtuple + import sympy as sp -from collections import namedtuple, defaultdict -from pystencils import Field + +from pystencils.field import Field from pystencils.sympyextensions import normalize_product, prod diff --git a/pystencils/fd/finitedifferences.py b/pystencils/fd/finitedifferences.py index 3cb7e6db7..d5bce66e9 100644 --- a/pystencils/fd/finitedifferences.py +++ b/pystencils/fd/finitedifferences.py @@ -1,14 +1,15 @@ +from typing import Optional, Union + import numpy as np import sympy as sp -from typing import Union, Optional -from pystencils import Field, AssignmentCollection from pystencils.fd import Diff from pystencils.fd.derivative import diff_args from pystencils.fd.spatial import fd_stencils_standard +from pystencils.field import Field +from pystencils.simp.assignment_collection import AssignmentCollection from pystencils.sympyextensions import fast_subs - FieldOrFieldAccess = Union[Field, Field.Access] diff --git a/pystencils/fd/spatial.py b/pystencils/fd/spatial.py index 0f9ba7571..fda6773ce 100644 --- a/pystencils/fd/spatial.py +++ b/pystencils/fd/spatial.py @@ -1,12 +1,15 @@ from typing import Tuple + import sympy as sp + from pystencils.astnodes import LoopOverCoordinate from pystencils.cache import memorycache -from pystencils import Field from pystencils.fd import Diff +from pystencils.field import Field from pystencils.transformations import generic_visit -from .derivative import diff_args + from .derivation import FiniteDifferenceStencilDerivation +from .derivative import diff_args def fd_stencils_standard(indices, dx, fa): diff --git a/pystencils/field.py b/pystencils/field.py index 0c3af6dfa..5fa456c68 100644 --- a/pystencils/field.py +++ b/pystencils/field.py @@ -1,17 +1,19 @@ +import hashlib +import pickle +import re from enum import Enum from itertools import chain -from typing import Tuple, Sequence, Optional, List, Set +from typing import List, Optional, Sequence, Set, Tuple + import numpy as np import sympy as sp -import re from sympy.core.cache import cacheit + from pystencils.alignedarray import aligned_empty -from pystencils.data_types import create_type, StructType +from pystencils.data_types import StructType, create_type from pystencils.kernelparameters import FieldShapeSymbol, FieldStrideSymbol -from pystencils.stencil import offset_to_direction_string, direction_string_to_offset +from pystencils.stencil import direction_string_to_offset, offset_to_direction_string from pystencils.sympyextensions import is_integer_sequence -import pickle -import hashlib __all__ = ['Field', 'fields', 'FieldType', 'AbstractField'] diff --git a/pystencils/gpucuda/__init__.py b/pystencils/gpucuda/__init__.py index 9b178c470..e7be54527 100644 --- a/pystencils/gpucuda/__init__.py +++ b/pystencils/gpucuda/__init__.py @@ -1,5 +1,7 @@ -from pystencils.gpucuda.kernelcreation import create_cuda_kernel, created_indexed_cuda_kernel from pystencils.gpucuda.cudajit import make_python_function +from pystencils.gpucuda.kernelcreation import create_cuda_kernel, created_indexed_cuda_kernel + from .indexing import AbstractIndexing, BlockIndexing, LineIndexing + __all__ = ['create_cuda_kernel', 'created_indexed_cuda_kernel', 'make_python_function', 'AbstractIndexing', 'BlockIndexing', 'LineIndexing'] diff --git a/pystencils/gpucuda/cudajit.py b/pystencils/gpucuda/cudajit.py index 90c23b133..40dbfda8f 100644 --- a/pystencils/gpucuda/cudajit.py +++ b/pystencils/gpucuda/cudajit.py @@ -1,10 +1,10 @@ import numpy as np + from pystencils.backends.cbackend import generate_c, get_headers -from pystencils.kernelparameters import FieldPointerSymbol from pystencils.data_types import StructType from pystencils.field import FieldType from pystencils.include import get_pystencils_include_path - +from pystencils.kernelparameters import FieldPointerSymbol USE_FAST_MATH = True diff --git a/pystencils/gpucuda/indexing.py b/pystencils/gpucuda/indexing.py index 5864c4f82..f6f1fbe80 100644 --- a/pystencils/gpucuda/indexing.py +++ b/pystencils/gpucuda/indexing.py @@ -1,13 +1,14 @@ import abc +from functools import partial from typing import Tuple # noqa + import sympy as sp -from pystencils.astnodes import Conditional, Block + +from pystencils.astnodes import Block, Conditional +from pystencils.data_types import TypedSymbol, create_type from pystencils.integer_functions import div_ceil, div_floor from pystencils.slicing import normalize_slice -from pystencils.data_types import TypedSymbol, create_type -from functools import partial - -from pystencils.sympyextensions import prod, is_integer_sequence +from pystencils.sympyextensions import is_integer_sequence, prod BLOCK_IDX = [TypedSymbol("blockIdx." + coord, create_type("int")) for coord in ('x', 'y', 'z')] THREAD_IDX = [TypedSymbol("threadIdx." + coord, create_type("int")) for coord in ('x', 'y', 'z')] diff --git a/pystencils/gpucuda/kernelcreation.py b/pystencils/gpucuda/kernelcreation.py index fd387efbd..bc6de8d3a 100644 --- a/pystencils/gpucuda/kernelcreation.py +++ b/pystencils/gpucuda/kernelcreation.py @@ -1,10 +1,11 @@ -from pystencils.gpucuda.indexing import BlockIndexing -from pystencils.transformations import resolve_field_accesses, add_types, parse_base_pointer_info, \ - get_common_shape, resolve_buffer_accesses, unify_shape_symbols, get_base_buffer_index -from pystencils.astnodes import Block, KernelFunction, SympyAssignment, LoopOverCoordinate -from pystencils.data_types import TypedSymbol, BasicType, StructType -from pystencils import Field, FieldType +from pystencils.astnodes import Block, KernelFunction, LoopOverCoordinate, SympyAssignment +from pystencils.data_types import BasicType, StructType, TypedSymbol +from pystencils.field import Field, FieldType from pystencils.gpucuda.cudajit import make_python_function +from pystencils.gpucuda.indexing import BlockIndexing +from pystencils.transformations import ( + add_types, get_base_buffer_index, get_common_shape, parse_base_pointer_info, + resolve_buffer_accesses, resolve_field_accesses, unify_shape_symbols) def create_cuda_kernel(assignments, function_name="kernel", type_info=None, indexing_creator=BlockIndexing, diff --git a/pystencils/gpucuda/periodicity.py b/pystencils/gpucuda/periodicity.py index 5657d4618..e94a1796e 100644 --- a/pystencils/gpucuda/periodicity.py +++ b/pystencils/gpucuda/periodicity.py @@ -1,8 +1,9 @@ import numpy as np -from pystencils import Field, Assignment -from pystencils.slicing import normalize_slice, get_periodic_boundary_src_dst_slices + +from pystencils import Assignment, Field from pystencils.gpucuda import make_python_function from pystencils.gpucuda.kernelcreation import create_cuda_kernel +from pystencils.slicing import get_periodic_boundary_src_dst_slices, normalize_slice def create_copy_kernel(domain_size, from_slice, to_slice, index_dimensions=0, index_dim_shape=1, dtype=np.float64): diff --git a/pystencils/integer_functions.py b/pystencils/integer_functions.py index 2fbc1ed67..4e583d9ab 100644 --- a/pystencils/integer_functions.py +++ b/pystencils/integer_functions.py @@ -1,6 +1,6 @@ import sympy as sp -from pystencils.data_types import get_type_of_expression, collate_types +from pystencils.data_types import collate_types, get_type_of_expression from pystencils.sympyextensions import is_integer_sequence bitwise_xor = sp.Function("bitwise_xor") diff --git a/pystencils/integer_set_analysis.py b/pystencils/integer_set_analysis.py index fc4a60b13..3560ba6ca 100644 --- a/pystencils/integer_set_analysis.py +++ b/pystencils/integer_set_analysis.py @@ -1,7 +1,7 @@ """Transformations using integer sets based on ISL library""" -import sympy as sp import islpy as isl +import sympy as sp import pystencils.astnodes as ast from pystencils.transformations import parents_of_type diff --git a/pystencils/jupyter.py b/pystencils/jupyter.py index 08d71a4cd..f977e87c0 100644 --- a/pystencils/jupyter.py +++ b/pystencils/jupyter.py @@ -1,9 +1,11 @@ -import pystencils.plot as plt -import matplotlib.animation as animation -from IPython.display import HTML -from tempfile import NamedTemporaryFile import base64 +from tempfile import NamedTemporaryFile + +import matplotlib.animation as animation import sympy as sp +from IPython.display import HTML + +import pystencils.plot as plt __all__ = ['log_progress', 'make_imshow_animation', 'display_animation', 'set_display_mode'] diff --git a/pystencils/kerncraft_coupling/__init__.py b/pystencils/kerncraft_coupling/__init__.py index 7822b3b54..8d2c3ad50 100644 --- a/pystencils/kerncraft_coupling/__init__.py +++ b/pystencils/kerncraft_coupling/__init__.py @@ -1,4 +1,4 @@ -from .kerncraft_interface import PyStencilsKerncraftKernel, KerncraftParameters from .generate_benchmark import generate_benchmark, run_c_benchmark +from .kerncraft_interface import KerncraftParameters, PyStencilsKerncraftKernel __all__ = ['PyStencilsKerncraftKernel', 'KerncraftParameters', 'generate_benchmark', 'run_c_benchmark'] diff --git a/pystencils/kerncraft_coupling/generate_benchmark.py b/pystencils/kerncraft_coupling/generate_benchmark.py index f63be049a..c95c420d6 100644 --- a/pystencils/kerncraft_coupling/generate_benchmark.py +++ b/pystencils/kerncraft_coupling/generate_benchmark.py @@ -1,12 +1,14 @@ -from jinja2 import Template import os import subprocess -from pystencils.include import get_pystencils_include_path -from pystencils.cpu.cpujit import get_compiler_config, run_compile_step + +from jinja2 import Template + +from pystencils.astnodes import PragmaBlock from pystencils.backends.cbackend import generate_c, get_headers -from pystencils.sympyextensions import prod +from pystencils.cpu.cpujit import get_compiler_config, run_compile_step from pystencils.data_types import get_base_type -from pystencils.astnodes import PragmaBlock +from pystencils.include import get_pystencils_include_path +from pystencils.sympyextensions import prod benchmark_template = Template(""" #include "kerncraft.h" diff --git a/pystencils/kerncraft_coupling/kerncraft_interface.py b/pystencils/kerncraft_coupling/kerncraft_interface.py index b58ccb96a..37a5109de 100644 --- a/pystencils/kerncraft_coupling/kerncraft_interface.py +++ b/pystencils/kerncraft_coupling/kerncraft_interface.py @@ -1,19 +1,20 @@ +import warnings +from collections import defaultdict from tempfile import TemporaryDirectory +from typing import Optional -import sympy as sp -from collections import defaultdict import kerncraft +import sympy as sp from kerncraft.kerncraft import KernelCode -from typing import Optional from kerncraft.machinemodel import MachineModel -from pystencils.kerncraft_coupling.generate_benchmark import generate_benchmark -from pystencils.astnodes import LoopOverCoordinate, SympyAssignment, ResolvedFieldAccess, KernelFunction +from pystencils.astnodes import ( + KernelFunction, LoopOverCoordinate, ResolvedFieldAccess, SympyAssignment) from pystencils.field import get_layout_from_strides +from pystencils.kerncraft_coupling.generate_benchmark import generate_benchmark from pystencils.sympyextensions import count_operations_in_ast from pystencils.transformations import filtered_tree_iteration from pystencils.utils import DotDict -import warnings class PyStencilsKerncraftKernel(KernelCode): diff --git a/pystencils/kernel_decorator.py b/pystencils/kernel_decorator.py index 0063865b2..1ea8dcfbc 100644 --- a/pystencils/kernel_decorator.py +++ b/pystencils/kernel_decorator.py @@ -1,9 +1,11 @@ import ast import inspect -import sympy as sp import textwrap -from pystencils.sympyextensions import SymbolCreator + +import sympy as sp + from pystencils.assignment import Assignment +from pystencils.sympyextensions import SymbolCreator __all__ = ['kernel'] diff --git a/pystencils/kernelcreation.py b/pystencils/kernelcreation.py index e8de7d245..ade980f55 100644 --- a/pystencils/kernelcreation.py +++ b/pystencils/kernelcreation.py @@ -1,13 +1,15 @@ +import itertools from types import MappingProxyType + import sympy as sp -import itertools + from pystencils.assignment import Assignment -from pystencils.astnodes import LoopOverCoordinate, Conditional, Block, SympyAssignment +from pystencils.astnodes import Block, Conditional, LoopOverCoordinate, SympyAssignment from pystencils.cpu.vectorization import vectorize -from pystencils.simp.assignment_collection import AssignmentCollection from pystencils.gpucuda.indexing import indexing_creator_from_params -from pystencils.transformations import remove_conditionals_in_staggered_kernel, loop_blocking, \ - move_constants_before_loop +from pystencils.simp.assignment_collection import AssignmentCollection +from pystencils.transformations import ( + loop_blocking, move_constants_before_loop, remove_conditionals_in_staggered_kernel) def create_kernel(assignments, target='cpu', data_type="double", iteration_slice=None, ghost_layers=None, diff --git a/pystencils/kernelparameters.py b/pystencils/kernelparameters.py index f6e19ef83..11d30e09c 100644 --- a/pystencils/kernelparameters.py +++ b/pystencils/kernelparameters.py @@ -14,7 +14,9 @@ e.g. `FieldShapeSymbol`, since a Field contains `FieldShapeSymbol`s in its shape would reference back to the field. """ from sympy.core.cache import cacheit -from pystencils.data_types import TypedSymbol, create_composite_type_from_string, PointerType, get_base_type + +from pystencils.data_types import ( + PointerType, TypedSymbol, create_composite_type_from_string, get_base_type) SHAPE_DTYPE = create_composite_type_from_string("const int64") STRIDE_DTYPE = create_composite_type_from_string("const int64") diff --git a/pystencils/llvm/kernelcreation.py b/pystencils/llvm/kernelcreation.py index fcb403e78..38ac7fe6b 100644 --- a/pystencils/llvm/kernelcreation.py +++ b/pystencils/llvm/kernelcreation.py @@ -1,5 +1,5 @@ -from pystencils.transformations import insert_casts from pystencils.llvm.llvmjit import make_python_function +from pystencils.transformations import insert_casts def create_kernel(assignments, function_name="kernel", type_info=None, split_groups=(), diff --git a/pystencils/llvm/llvm.py b/pystencils/llvm/llvm.py index c71fb5ab6..cf2207c08 100644 --- a/pystencils/llvm/llvm.py +++ b/pystencils/llvm/llvm.py @@ -1,12 +1,15 @@ -import sympy as sp import functools -from sympy import S, Indexed -from sympy.printing.printer import Printer + import llvmlite.ir as ir +import sympy as sp +from sympy import Indexed, S +from sympy.printing.printer import Printer + from pystencils.assignment import Assignment +from pystencils.data_types import ( + collate_types, create_composite_type_from_string, create_type, get_type_of_expression, + to_llvm_type) from pystencils.llvm.control_flow import Loop -from pystencils.data_types import create_type, to_llvm_type, get_type_of_expression, collate_types, \ - create_composite_type_from_string def generate_llvm(ast_node, module=None, builder=None): diff --git a/pystencils/llvm/llvmjit.py b/pystencils/llvm/llvmjit.py index 545454cb9..6dc40151e 100644 --- a/pystencils/llvm/llvmjit.py +++ b/pystencils/llvm/llvmjit.py @@ -1,12 +1,15 @@ -import llvmlite.ir as ir +import ctypes as ct + import llvmlite.binding as llvm +import llvmlite.ir as ir import numpy as np -import ctypes as ct + from pystencils.data_types import create_composite_type_from_string -from ..data_types import to_ctypes, ctypes_from_llvm, StructType -from .llvm import generate_llvm from pystencils.field import FieldType +from ..data_types import StructType, ctypes_from_llvm, to_ctypes +from .llvm import generate_llvm + def build_ctypes_argument_list(parameter_specification, argument_dict): argument_dict = {k: v for k, v in argument_dict.items()} diff --git a/pystencils/placeholder_function.py b/pystencils/placeholder_function.py index aca93d169..18a0574b8 100644 --- a/pystencils/placeholder_function.py +++ b/pystencils/placeholder_function.py @@ -1,5 +1,7 @@ -import sympy as sp from typing import List + +import sympy as sp + from pystencils.assignment import Assignment from pystencils.astnodes import Node from pystencils.sympyextensions import is_constant diff --git a/pystencils/plot.py b/pystencils/plot.py index 24a8cdce7..de1b1e32e 100644 --- a/pystencils/plot.py +++ b/pystencils/plot.py @@ -3,9 +3,10 @@ This module extends the pyplot module with functions to show scalar and vector f simulation coordinate system (y-axis goes up), instead of the "image coordinate system" (y axis goes down) that matplotlib normally uses. """ -from matplotlib.pyplot import * from itertools import cycle +from matplotlib.pyplot import * + def vector_field(array, step=2, **kwargs): """Plots given vector field as quiver (arrow) plot. diff --git a/pystencils/rng.py b/pystencils/rng.py index 7e84e23f0..eae916410 100644 --- a/pystencils/rng.py +++ b/pystencils/rng.py @@ -1,5 +1,6 @@ -import sympy as sp import numpy as np +import sympy as sp + from pystencils import TypedSymbol from pystencils.astnodes import LoopOverCoordinate from pystencils.backends.cbackend import CustomCodeNode diff --git a/pystencils/runhelper/db.py b/pystencils/runhelper/db.py index e0655db32..acf5c6f74 100644 --- a/pystencils/runhelper/db.py +++ b/pystencils/runhelper/db.py @@ -1,7 +1,9 @@ -import time import socket -from typing import Dict, Sequence, Iterator +import time +from typing import Dict, Iterator, Sequence + import blitzdb + from pystencils.cpu.cpujit import get_compiler_config diff --git a/pystencils/runhelper/parameterstudy.py b/pystencils/runhelper/parameterstudy.py index 22d2bf2e3..0ad27fd5b 100644 --- a/pystencils/runhelper/parameterstudy.py +++ b/pystencils/runhelper/parameterstudy.py @@ -1,16 +1,16 @@ -import json import datetime +import itertools +import json import os import socket -import itertools -from copy import deepcopy from collections import namedtuple +from copy import deepcopy from time import sleep -from typing import Dict, Callable, Sequence, Any, Tuple, Optional +from typing import Any, Callable, Dict, Optional, Sequence, Tuple + from pystencils.runhelper import Database from pystencils.utils import DotDict - ParameterDict = Dict[str, Any] WeightFunction = Callable[[Dict], int] FilterFunction = Callable[[ParameterDict], Optional[ParameterDict]] diff --git a/pystencils/session.py b/pystencils/session.py index 53287ee9e..51d2ef627 100644 --- a/pystencils/session.py +++ b/pystencils/session.py @@ -1,9 +1,9 @@ -import pystencils.sympy_gmpy_bug_workaround -import pystencils.jupyter -import sympy as sp import numpy as np +import sympy as sp + import pystencils as ps +import pystencils.jupyter import pystencils.plot as plt - +import pystencils.sympy_gmpy_bug_workaround __all__ = ['sp', 'np', 'ps', 'plt'] diff --git a/pystencils/simp/__init__.py b/pystencils/simp/__init__.py index 36efb062d..ab0d608fb 100644 --- a/pystencils/simp/__init__.py +++ b/pystencils/simp/__init__.py @@ -1,8 +1,10 @@ from .assignment_collection import AssignmentCollection +from .simplifications import ( + add_subexpressions_for_divisions, add_subexpressions_for_field_reads, + apply_on_all_subexpressions, apply_to_all_assignments, + subexpression_substitution_in_existing_subexpressions, + subexpression_substitution_in_main_assignments, sympy_cse, sympy_cse_on_assignment_list) from .simplificationstrategy import SimplificationStrategy -from .simplifications import sympy_cse, sympy_cse_on_assignment_list, \ - apply_to_all_assignments, apply_on_all_subexpressions, subexpression_substitution_in_existing_subexpressions, \ - subexpression_substitution_in_main_assignments, add_subexpressions_for_divisions, add_subexpressions_for_field_reads __all__ = ['AssignmentCollection', 'SimplificationStrategy', 'sympy_cse', 'sympy_cse_on_assignment_list', 'apply_to_all_assignments', diff --git a/pystencils/simp/assignment_collection.py b/pystencils/simp/assignment_collection.py index 8f0b481ce..b15b87a4f 100644 --- a/pystencils/simp/assignment_collection.py +++ b/pystencils/simp/assignment_collection.py @@ -1,8 +1,10 @@ -import sympy as sp from copy import copy -from typing import List, Optional, Dict, Any, Set, Sequence, Iterator, Iterable, Union +from typing import Any, Dict, Iterable, Iterator, List, Optional, Sequence, Set, Union + +import sympy as sp + from pystencils.assignment import Assignment -from pystencils.sympyextensions import fast_subs, count_operations, sort_assignments_topologically +from pystencils.sympyextensions import count_operations, fast_subs, sort_assignments_topologically class AssignmentCollection: diff --git a/pystencils/simp/simplifications.py b/pystencils/simp/simplifications.py index d6077b8f6..22ff1bee2 100644 --- a/pystencils/simp/simplifications.py +++ b/pystencils/simp/simplifications.py @@ -1,9 +1,9 @@ -import sympy as sp from typing import Callable, List -from pystencils import Field +import sympy as sp + from pystencils.assignment import Assignment -from pystencils.field import AbstractField +from pystencils.field import AbstractField, Field from pystencils.simp.assignment_collection import AssignmentCollection from pystencils.sympyextensions import subs_additive diff --git a/pystencils/simp/simplificationstrategy.py b/pystencils/simp/simplificationstrategy.py index f80734bab..d9bcafa46 100644 --- a/pystencils/simp/simplificationstrategy.py +++ b/pystencils/simp/simplificationstrategy.py @@ -1,6 +1,8 @@ -import sympy as sp from collections import namedtuple -from typing import Callable, Any, Optional, Sequence +from typing import Any, Callable, Optional, Sequence + +import sympy as sp + from pystencils.simp.assignment_collection import AssignmentCollection diff --git a/pystencils/slicing.py b/pystencils/slicing.py index 0fab3678c..2f44a00a9 100644 --- a/pystencils/slicing.py +++ b/pystencils/slicing.py @@ -1,4 +1,5 @@ import sympy as sp + from pystencils.field import create_numpy_array_with_layout, get_layout_of_array diff --git a/pystencils/stencil.py b/pystencils/stencil.py index a6224e079..f2201ccc1 100644 --- a/pystencils/stencil.py +++ b/pystencils/stencil.py @@ -1,8 +1,9 @@ """This submodule offers functions to work with stencils in expression an offset-list form.""" +from collections import defaultdict from typing import Sequence + import numpy as np import sympy as sp -from collections import defaultdict def inverse_direction(direction): @@ -91,7 +92,7 @@ def coefficient_dict(expr): >>> sorted(coeffs.items()) [((-1, 0), 3), ((0, 1), 2)] """ - from pystencils import Field + from pystencils.field import Field expr = expr.expand() field_accesses = expr.atoms(Field.Access) fields = set(fa.field for fa in field_accesses) diff --git a/pystencils/sympyextensions.py b/pystencils/sympyextensions.py index 6df8eedab..2741f7ca5 100644 --- a/pystencils/sympyextensions.py +++ b/pystencils/sympyextensions.py @@ -1,13 +1,15 @@ import itertools -import warnings import operator -from functools import reduce, partial -from collections import defaultdict, Counter +import warnings +from collections import Counter, defaultdict +from functools import partial, reduce +from typing import Callable, Dict, Iterable, List, Optional, Sequence, Tuple, TypeVar, Union + import sympy as sp from sympy.functions import Abs -from typing import Optional, Union, List, TypeVar, Iterable, Sequence, Callable, Dict, Tuple -from pystencils.data_types import get_type_of_expression, get_base_type, cast_func + from pystencils.assignment import Assignment +from pystencils.data_types import cast_func, get_base_type, get_type_of_expression T = TypeVar('T') diff --git a/pystencils/transformations.py b/pystencils/transformations.py index 30cb69844..60a22d812 100644 --- a/pystencils/transformations.py +++ b/pystencils/transformations.py @@ -1,19 +1,22 @@ +import hashlib +import pickle import warnings -from collections import defaultdict, OrderedDict, namedtuple +from collections import OrderedDict, defaultdict, namedtuple from copy import deepcopy from types import MappingProxyType -import pickle -import hashlib + import sympy as sp from sympy.logic.boolalg import Boolean -from pystencils.simp.assignment_collection import AssignmentCollection + +import pystencils.astnodes as ast from pystencils.assignment import Assignment -from pystencils.field import AbstractField, FieldType, Field -from pystencils.data_types import TypedSymbol, PointerType, StructType, get_base_type, reinterpret_cast_func, \ - cast_func, pointer_arithmetic_func, get_type_of_expression, collate_types, create_type +from pystencils.data_types import ( + PointerType, StructType, TypedSymbol, cast_func, collate_types, create_type, get_base_type, + get_type_of_expression, pointer_arithmetic_func, reinterpret_cast_func) +from pystencils.field import AbstractField, Field, FieldType from pystencils.kernelparameters import FieldPointerSymbol +from pystencils.simp.assignment_collection import AssignmentCollection from pystencils.slicing import normalize_slice -import pystencils.astnodes as ast class NestedScopes: diff --git a/pystencils/utils.py b/pystencils/utils.py index 6e620b5f2..5b97f7f24 100644 --- a/pystencils/utils.py +++ b/pystencils/utils.py @@ -1,11 +1,11 @@ import os -from tempfile import NamedTemporaryFile +from collections import Counter from contextlib import contextmanager +from tempfile import NamedTemporaryFile from typing import Mapping -from collections import Counter -import sympy as sp import numpy as np +import sympy as sp class DotDict(dict): diff --git a/pystencils_tests/benchmark/benchmark.py b/pystencils_tests/benchmark/benchmark.py index 6ecb6aaa8..29066127c 100644 --- a/pystencils_tests/benchmark/benchmark.py +++ b/pystencils_tests/benchmark/benchmark.py @@ -1,15 +1,17 @@ -import os import math +import os import time + import numpy as np import sympy as sp -from influxdb import InfluxDBClient from git import Repo -from kerncraft.models import ECM, Benchmark, Roofline, RooflineIACA +from influxdb import InfluxDBClient from kerncraft.machinemodel import MachineModel +from kerncraft.models import ECM, Benchmark, Roofline, RooflineIACA from kerncraft.prefixedunit import PrefixedUnit + +from pystencils import Assignment, Field, create_kernel from pystencils.kerncraft_coupling import KerncraftParameters, PyStencilsKerncraftKernel -from pystencils import Field, Assignment, create_kernel def output_benchmark(analysis): diff --git a/pystencils_tests/benchmark/generate.py b/pystencils_tests/benchmark/generate.py index 09e2769e2..fba398489 100644 --- a/pystencils_tests/benchmark/generate.py +++ b/pystencils_tests/benchmark/generate.py @@ -1,6 +1,7 @@ -import sympy as sp import numpy as np -from pystencils import Field, Assignment, create_kernel +import sympy as sp + +from pystencils import Assignment, Field, create_kernel def meassure(): @@ -47,5 +48,3 @@ def meassure(): if __name__ == "__main__": meassure() - - diff --git a/pystencils_tests/test_address_of.py b/pystencils_tests/test_address_of.py index 8de48e2bb..6e23d5ffd 100644 --- a/pystencils_tests/test_address_of.py +++ b/pystencils_tests/test_address_of.py @@ -3,10 +3,11 @@ Test of pystencils.data_types.address_of """ -from pystencils.data_types import address_of, cast_func, PointerType +import sympy + import pystencils +from pystencils.data_types import PointerType, address_of, cast_func from pystencils.simp.simplifications import sympy_cse -import sympy def test_address_of(): diff --git a/pystencils_tests/test_assignment_collection.py b/pystencils_tests/test_assignment_collection.py index 4bf27b22e..1a8f6f9dc 100644 --- a/pystencils_tests/test_assignment_collection.py +++ b/pystencils_tests/test_assignment_collection.py @@ -1,4 +1,5 @@ import sympy as sp + from pystencils import Assignment, AssignmentCollection from pystencils.simp.assignment_collection import SymbolGen diff --git a/pystencils_tests/test_assignment_from_stencil.py b/pystencils_tests/test_assignment_from_stencil.py index b3b193f8e..a4bb705d6 100644 --- a/pystencils_tests/test_assignment_from_stencil.py +++ b/pystencils_tests/test_assignment_from_stencil.py @@ -1,6 +1,7 @@ -import pystencils import numpy as np +import pystencils + def test_assignment_from_stencil(): diff --git a/pystencils_tests/test_blocking.py b/pystencils_tests/test_blocking.py index c554da74d..579ba4199 100644 --- a/pystencils_tests/test_blocking.py +++ b/pystencils_tests/test_blocking.py @@ -1,5 +1,6 @@ -import sympy as sp import numpy as np +import sympy as sp + import pystencils as ps @@ -58,4 +59,3 @@ def test_jacobi3d_fixed_size(): arr = np.empty([8*4, 16*2, 4*3]) src, dst = ps.fields("src, dst: double[3D]", src=arr, dst=arr) check_equivalence(jacobi(dst, src), arr) - diff --git a/pystencils_tests/test_blocking_staggered.py b/pystencils_tests/test_blocking_staggered.py index d32e60173..207d05a28 100644 --- a/pystencils_tests/test_blocking_staggered.py +++ b/pystencils_tests/test_blocking_staggered.py @@ -1,4 +1,5 @@ import numpy as np + import pystencils as ps diff --git a/pystencils_tests/test_boundary.py b/pystencils_tests/test_boundary.py index 6aaf4e696..096b1348f 100644 --- a/pystencils_tests/test_boundary.py +++ b/pystencils_tests/test_boundary.py @@ -1,9 +1,10 @@ -from tempfile import TemporaryDirectory import os +from tempfile import TemporaryDirectory + import numpy as np -from pystencils import create_kernel, Assignment -from pystencils.boundaries import add_neumann_boundary, Neumann, BoundaryHandling +from pystencils import Assignment, create_kernel +from pystencils.boundaries import BoundaryHandling, Neumann, add_neumann_boundary from pystencils.datahandling import SerialDataHandling from pystencils.slicing import slice_from_direction diff --git a/pystencils_tests/test_buffer.py b/pystencils_tests/test_buffer.py index 3f513a1f5..7ea7fd2a1 100644 --- a/pystencils_tests/test_buffer.py +++ b/pystencils_tests/test_buffer.py @@ -1,11 +1,12 @@ """Tests (un)packing (from)to buffers.""" import numpy as np -from pystencils import Field, FieldType, Assignment, create_kernel -from pystencils.field import layout_string_to_tuple, create_numpy_array_with_layout -from pystencils.stencil import direction_string_to_offset -from pystencils.slicing import add_ghost_layers, get_slice_before_ghost_layer, get_ghost_region_slice +from pystencils import Assignment, Field, FieldType, create_kernel +from pystencils.field import create_numpy_array_with_layout, layout_string_to_tuple +from pystencils.slicing import ( + add_ghost_layers, get_ghost_region_slice, get_slice_before_ghost_layer) +from pystencils.stencil import direction_string_to_offset FIELD_SIZES = [(32, 10), (10, 8, 6)] diff --git a/pystencils_tests/test_buffer_gpu.py b/pystencils_tests/test_buffer_gpu.py index 1af0e6cf5..fc27a2331 100644 --- a/pystencils_tests/test_buffer_gpu.py +++ b/pystencils_tests/test_buffer_gpu.py @@ -1,12 +1,15 @@ """Tests for the (un)packing (from)to buffers on a CUDA GPU.""" import numpy as np -from pystencils import Field, FieldType, Assignment -from pystencils.field import layout_string_to_tuple, create_numpy_array_with_layout -from pystencils.stencil import direction_string_to_offset -from pystencils.gpucuda import make_python_function, create_cuda_kernel -from pystencils.slicing import add_ghost_layers, get_slice_before_ghost_layer, get_ghost_region_slice import pytest + +from pystencils import Assignment, Field, FieldType +from pystencils.field import create_numpy_array_with_layout, layout_string_to_tuple +from pystencils.gpucuda import create_cuda_kernel, make_python_function +from pystencils.slicing import ( + add_ghost_layers, get_ghost_region_slice, get_slice_before_ghost_layer) +from pystencils.stencil import direction_string_to_offset + try: # noinspection PyUnresolvedReferences import pycuda.autoinit diff --git a/pystencils_tests/test_conditional_vec.py b/pystencils_tests/test_conditional_vec.py index b66cffcb8..d3fc3dc66 100644 --- a/pystencils_tests/test_conditional_vec.py +++ b/pystencils_tests/test_conditional_vec.py @@ -1,7 +1,8 @@ -import pystencils as ps -import sympy as sp import numpy as np -from pystencils.astnodes import Conditional, Block +import sympy as sp + +import pystencils as ps +from pystencils.astnodes import Block, Conditional from pystencils.cpu.vectorization import vec_all, vec_any diff --git a/pystencils_tests/test_cudagpu.py b/pystencils_tests/test_cudagpu.py index ad13ac96f..77790229f 100644 --- a/pystencils_tests/test_cudagpu.py +++ b/pystencils_tests/test_cudagpu.py @@ -1,13 +1,14 @@ import numpy as np -import sympy as sp -from pystencils import Field, Assignment, fields -from pystencils.simp import sympy_cse_on_assignment_list -from pystencils.gpucuda.indexing import LineIndexing -from pystencils.slicing import remove_ghost_layers, add_ghost_layers, make_slice -from pystencils.gpucuda import make_python_function, create_cuda_kernel, BlockIndexing import pycuda.gpuarray as gpuarray +import sympy as sp from scipy.ndimage import convolve +from pystencils import Assignment, Field, fields +from pystencils.gpucuda import BlockIndexing, create_cuda_kernel, make_python_function +from pystencils.gpucuda.indexing import LineIndexing +from pystencils.simp import sympy_cse_on_assignment_list +from pystencils.slicing import add_ghost_layers, make_slice, remove_ghost_layers + def test_averaging_kernel(): size = (40, 55) diff --git a/pystencils_tests/test_datahandling.py b/pystencils_tests/test_datahandling.py index 887c855db..cdee059c2 100644 --- a/pystencils_tests/test_datahandling.py +++ b/pystencils_tests/test_datahandling.py @@ -1,8 +1,10 @@ -import numpy as np import os from tempfile import TemporaryDirectory + +import numpy as np + import pystencils as ps -from pystencils import create_kernel, create_data_handling +from pystencils import create_data_handling, create_kernel def basic_iteration(dh): diff --git a/pystencils_tests/test_datahandling_parallel.py b/pystencils_tests/test_datahandling_parallel.py index 5111bd247..52ccb6bce 100644 --- a/pystencils_tests/test_datahandling_parallel.py +++ b/pystencils_tests/test_datahandling_parallel.py @@ -1,9 +1,10 @@ import numpy as np -from pystencils.datahandling.parallel_datahandling import ParallelDataHandling -from pystencils_tests.test_datahandling import access_and_gather, synchronization, kernel_execution_jacobi, vtk_output, \ - reduction import waLBerla as wlb +from pystencils.datahandling.parallel_datahandling import ParallelDataHandling +from pystencils_tests.test_datahandling import ( + access_and_gather, kernel_execution_jacobi, reduction, synchronization, vtk_output) + def test_access_and_gather(): block_size = (4, 7, 1) diff --git a/pystencils_tests/test_derivative.py b/pystencils_tests/test_derivative.py index 74ad02e38..82738429c 100644 --- a/pystencils_tests/test_derivative.py +++ b/pystencils_tests/test_derivative.py @@ -1,8 +1,9 @@ import sympy as sp -import pystencils as ps +from sympy.abc import a, b, t, x, y, z from sympy.printing.latex import LatexPrinter + +import pystencils as ps from pystencils.fd import * -from sympy.abc import a, b, t, x, y, z def test_derivative_basic(): diff --git a/pystencils_tests/test_dtype_check.py b/pystencils_tests/test_dtype_check.py index fdbcb9b22..842e89c24 100644 --- a/pystencils_tests/test_dtype_check.py +++ b/pystencils_tests/test_dtype_check.py @@ -1,7 +1,8 @@ -import pystencils import numpy as np import pytest +import pystencils + def test_dtype_check_wrong_type(): array = np.ones((10, 20)).astype(np.float32) diff --git a/pystencils_tests/test_fast_approximation.py b/pystencils_tests/test_fast_approximation.py index bc07ae9b8..76bef174e 100644 --- a/pystencils_tests/test_fast_approximation.py +++ b/pystencils_tests/test_fast_approximation.py @@ -1,7 +1,8 @@ import sympy as sp + import pystencils as ps -from pystencils.fast_approximation import insert_fast_divisions, insert_fast_sqrts, fast_sqrt, fast_inv_sqrt, \ - fast_division +from pystencils.fast_approximation import ( + fast_division, fast_inv_sqrt, fast_sqrt, insert_fast_divisions, insert_fast_sqrts) def test_fast_sqrt(): diff --git a/pystencils_tests/test_fd_derivation.py b/pystencils_tests/test_fd_derivation.py index 6de6e6a28..73d38dc10 100644 --- a/pystencils_tests/test_fd_derivation.py +++ b/pystencils_tests/test_fd_derivation.py @@ -1,5 +1,6 @@ import pytest import sympy as sp + from pystencils.utils import LinearEquationSystem diff --git a/pystencils_tests/test_field.py b/pystencils_tests/test_field.py index 67b34e798..474228263 100644 --- a/pystencils_tests/test_field.py +++ b/pystencils_tests/test_field.py @@ -1,8 +1,9 @@ -import pytest import numpy as np +import pytest import sympy as sp + import pystencils as ps -from pystencils import Field, FieldType +from pystencils.field import Field, FieldType from pystencils.field import layout_string_to_tuple diff --git a/pystencils_tests/test_finite_differences.py b/pystencils_tests/test_finite_differences.py index be2dacd3a..2491247c2 100644 --- a/pystencils_tests/test_finite_differences.py +++ b/pystencils_tests/test_finite_differences.py @@ -1,8 +1,9 @@ import sympy as sp + import pystencils as ps from pystencils.astnodes import LoopOverCoordinate -from pystencils.fd.spatial import fd_stencils_standard, fd_stencils_isotropic, discretize_spatial from pystencils.fd import diff +from pystencils.fd.spatial import discretize_spatial, fd_stencils_isotropic, fd_stencils_standard def test_spatial_2d_unit_sum(): diff --git a/pystencils_tests/test_indexed_kernels.py b/pystencils_tests/test_indexed_kernels.py index 13dbbd498..fd994c7f9 100644 --- a/pystencils_tests/test_indexed_kernels.py +++ b/pystencils_tests/test_indexed_kernels.py @@ -1,5 +1,6 @@ import numpy as np -from pystencils import Field, Assignment + +from pystencils import Assignment, Field from pystencils.cpu import create_indexed_kernel, make_python_function diff --git a/pystencils_tests/test_jacobi_cbackend.py b/pystencils_tests/test_jacobi_cbackend.py index ad4f82e89..9206aeeda 100644 --- a/pystencils_tests/test_jacobi_cbackend.py +++ b/pystencils_tests/test_jacobi_cbackend.py @@ -1,9 +1,11 @@ import numpy as np + from pystencils import show_code -from pystencils.transformations import move_constants_before_loop, make_loop_over_domain, resolve_field_accesses -from pystencils.field import Field -from pystencils.astnodes import SympyAssignment, Block, KernelFunction +from pystencils.astnodes import Block, KernelFunction, SympyAssignment from pystencils.cpu import make_python_function +from pystencils.field import Field +from pystencils.transformations import ( + make_loop_over_domain, move_constants_before_loop, resolve_field_accesses) def test_jacobi_fixed_field_size(): diff --git a/pystencils_tests/test_jacobi_llvm.py b/pystencils_tests/test_jacobi_llvm.py index f6e482573..2965cf245 100644 --- a/pystencils_tests/test_jacobi_llvm.py +++ b/pystencils_tests/test_jacobi_llvm.py @@ -1,4 +1,5 @@ import numpy as np + from pystencils import Assignment, Field from pystencils.llvm import create_kernel, make_python_function from pystencils.llvm.llvmjit import generate_and_jit diff --git a/pystencils_tests/test_kerncraft_coupling.py b/pystencils_tests/test_kerncraft_coupling.py index 5d3485e4a..058c35c2a 100644 --- a/pystencils_tests/test_kerncraft_coupling.py +++ b/pystencils_tests/test_kerncraft_coupling.py @@ -1,16 +1,14 @@ import os + import numpy as np -import sympy as sp -from pystencils import Field, Assignment -from pystencils.kerncraft_coupling import PyStencilsKerncraftKernel, KerncraftParameters -from pystencils.kerncraft_coupling.generate_benchmark import generate_benchmark -from pystencils.cpu import create_kernel import pytest +import sympy as sp +import kerncraft -from kerncraft.models import ECMData, ECM, Benchmark -from kerncraft.machinemodel import MachineModel -from kerncraft.kernel import KernelCode - +from pystencils import Assignment, Field +from pystencils.cpu import create_kernel +from pystencils.kerncraft_coupling import KerncraftParameters, PyStencilsKerncraftKernel +from pystencils.kerncraft_coupling.generate_benchmark import generate_benchmark SCRIPT_FOLDER = os.path.dirname(os.path.realpath(__file__)) INPUT_FOLDER = os.path.join(SCRIPT_FOLDER, "kerncraft_inputs") @@ -19,11 +17,11 @@ INPUT_FOLDER = os.path.join(SCRIPT_FOLDER, "kerncraft_inputs") @pytest.mark.kernkraft def test_compilation(): machine_file_path = os.path.join(INPUT_FOLDER, "default_machine_file.yaml") - machine = MachineModel(path_to_yaml=machine_file_path) + machine = kerncraft.machinemodel.MachineModel(path_to_yaml=machine_file_path) kernel_file_path = os.path.join(INPUT_FOLDER, "2d-5pt.c") with open(kernel_file_path) as kernel_file: - reference_kernel = KernelCode(kernel_file.read(), machine=machine, filename=kernel_file_path) + reference_kernel = kerncraft.kernel.KernelCode(kernel_file.read(), machine=machine, filename=kernel_file_path) reference_kernel.as_code('likwid') size = [30, 50, 3] @@ -41,17 +39,17 @@ def test_compilation(): @pytest.mark.kernkraft def analysis(kernel, model='ecmdata'): machine_file_path = os.path.join(INPUT_FOLDER, "default_machine_file.yaml") - machine = MachineModel(path_to_yaml=machine_file_path) + machine = kerncraft.machinemodel.MachineModel(path_to_yaml=machine_file_path) if model == 'ecmdata': - model = ECMData(kernel, machine, KerncraftParameters()) + model = kerncraft.models.ECMData(kernel, machine, KerncraftParameters()) elif model == 'ecm': - model = ECM(kernel, machine, KerncraftParameters()) + model = kerncraft.models.ECM(kernel, machine, KerncraftParameters()) # model.analyze() # model.plot() elif model == 'benchmark': - model = Benchmark(kernel, machine, KerncraftParameters()) + model = kerncraft.models.Benchmark(kernel, machine, KerncraftParameters()) else: - model = ECM(kernel, machine, KerncraftParameters()) + model = kerncraft.models.ECM(kernel, machine, KerncraftParameters()) model.analyze() return model @@ -62,9 +60,9 @@ def test_3d_7pt_iaca(): size = [20, 200, 200] kernel_file_path = os.path.join(INPUT_FOLDER, "3d-7pt.c") machine_file_path = os.path.join(INPUT_FOLDER, "default_machine_file.yaml") - machine = MachineModel(path_to_yaml=machine_file_path) + machine = kerncraft.machinemodel.MachineModel(path_to_yaml=machine_file_path) with open(kernel_file_path) as kernel_file: - reference_kernel = KernelCode(kernel_file.read(), machine=machine, filename=kernel_file_path) + reference_kernel = kerncraft.kernel.KernelCode(kernel_file.read(), machine=machine, filename=kernel_file_path) reference_kernel.set_constant('M', size[0]) reference_kernel.set_constant('N', size[1]) assert size[1] == size[2] @@ -89,7 +87,7 @@ def test_2d_5pt(): size = [30, 50, 3] kernel_file_path = os.path.join(INPUT_FOLDER, "2d-5pt.c") with open(kernel_file_path) as kernel_file: - reference_kernel = KernelCode(kernel_file.read(), machine=None, filename=kernel_file_path) + reference_kernel = kerncraft.kernel.KernelCode(kernel_file.read(), machine=None, filename=kernel_file_path) reference = analysis(reference_kernel) arr = np.zeros(size) @@ -111,7 +109,7 @@ def test_3d_7pt(): size = [30, 50, 50] kernel_file_path = os.path.join(INPUT_FOLDER, "3d-7pt.c") with open(kernel_file_path) as kernel_file: - reference_kernel = KernelCode(kernel_file.read(), machine=None, filename=kernel_file_path) + reference_kernel = kerncraft.kernel.KernelCode(kernel_file.read(), machine=None, filename=kernel_file_path) reference_kernel.set_constant('M', size[0]) reference_kernel.set_constant('N', size[1]) assert size[1] == size[2] diff --git a/pystencils_tests/test_loop_cutting.py b/pystencils_tests/test_loop_cutting.py index 163b6cebb..58126928d 100644 --- a/pystencils_tests/test_loop_cutting.py +++ b/pystencils_tests/test_loop_cutting.py @@ -1,13 +1,14 @@ -import sympy as sp import numpy as np +import sympy as sp + import pystencils as ps -from pystencils import Field -from pystencils.cpu import create_kernel, make_python_function +import pystencils.astnodes as ast +from pystencils.field import Field from pystencils.astnodes import Conditional, LoopOverCoordinate, SympyAssignment +from pystencils.cpu import create_kernel, make_python_function from pystencils.kernelcreation import create_staggered_kernel -from pystencils.transformations import move_constants_before_loop -import pystencils.astnodes as ast -from pystencils.transformations import simplify_conditionals, cleanup_blocks, cut_loop +from pystencils.transformations import ( + cleanup_blocks, cut_loop, move_constants_before_loop, simplify_conditionals) def offsets_in_plane(normal_plane, offset_int, dimension): diff --git a/pystencils_tests/test_move_constant_before_loop.py b/pystencils_tests/test_move_constant_before_loop.py index a76ab82c2..bec180dee 100644 --- a/pystencils_tests/test_move_constant_before_loop.py +++ b/pystencils_tests/test_move_constant_before_loop.py @@ -1,6 +1,7 @@ -import pystencils as ps import numpy as np -from pystencils.astnodes import LoopOverCoordinate, Block, SympyAssignment, TypedSymbol + +import pystencils as ps +from pystencils.astnodes import Block, LoopOverCoordinate, SympyAssignment, TypedSymbol from pystencils.transformations import move_constants_before_loop diff --git a/pystencils_tests/test_parameterstudy.py b/pystencils_tests/test_parameterstudy.py index 2b58e7566..be5058d6c 100644 --- a/pystencils_tests/test_parameterstudy.py +++ b/pystencils_tests/test_parameterstudy.py @@ -1,7 +1,8 @@ import io import json -from http.server import HTTPServer, BaseHTTPRequestHandler +from http.server import BaseHTTPRequestHandler, HTTPServer from tempfile import TemporaryDirectory + from pystencils.runhelper import ParameterStudy diff --git a/pystencils_tests/test_pickle_support.py b/pystencils_tests/test_pickle_support.py index 82d8e1f36..462645198 100644 --- a/pystencils_tests/test_pickle_support.py +++ b/pystencils_tests/test_pickle_support.py @@ -1,6 +1,8 @@ -from pystencils import Field, TypedSymbol from copy import copy, deepcopy +from pystencils.field import Field +from pystencils.data_types import TypedSymbol + def test_field_access(): field = Field.create_generic('some_field', spatial_dimensions=2, index_dimensions=0) diff --git a/pystencils_tests/test_plot.py b/pystencils_tests/test_plot.py index 2e51343ec..6234334bb 100644 --- a/pystencils_tests/test_plot.py +++ b/pystencils_tests/test_plot.py @@ -1,6 +1,8 @@ import os from tempfile import TemporaryDirectory + import numpy as np + import pystencils.plot as plt diff --git a/pystencils_tests/test_random.py b/pystencils_tests/test_random.py index 2995cbdd6..f86644875 100644 --- a/pystencils_tests/test_random.py +++ b/pystencils_tests/test_random.py @@ -1,6 +1,7 @@ import numpy as np + import pystencils as ps -from pystencils.rng import PhiloxTwoDoubles, PhiloxFourFloats +from pystencils.rng import PhiloxFourFloats, PhiloxTwoDoubles def test_philox_double(): diff --git a/pystencils_tests/test_simplification_strategy.py b/pystencils_tests/test_simplification_strategy.py index 957bee2ba..189482c00 100644 --- a/pystencils_tests/test_simplification_strategy.py +++ b/pystencils_tests/test_simplification_strategy.py @@ -1,7 +1,9 @@ import sympy as sp + from pystencils import Assignment, AssignmentCollection -from pystencils.simp import SimplificationStrategy, apply_on_all_subexpressions, \ - subexpression_substitution_in_existing_subexpressions +from pystencils.simp import ( + SimplificationStrategy, apply_on_all_subexpressions, + subexpression_substitution_in_existing_subexpressions) def test_simplification_strategy(): diff --git a/pystencils_tests/test_size_and_layout_checks.py b/pystencils_tests/test_size_and_layout_checks.py index ecc454638..597bf2c4d 100644 --- a/pystencils_tests/test_size_and_layout_checks.py +++ b/pystencils_tests/test_size_and_layout_checks.py @@ -1,8 +1,9 @@ import numpy as np import pytest -from pystencils import Field, Assignment, fields, create_kernel import sympy as sp +from pystencils import Assignment, Field, create_kernel, fields + def test_size_check(): """Kernel with two fixed-sized fields creating with same size but calling with wrong size""" diff --git a/pystencils_tests/test_size_and_layout_checks_llvm.py b/pystencils_tests/test_size_and_layout_checks_llvm.py index 96b9bc054..8de8018f9 100644 --- a/pystencils_tests/test_size_and_layout_checks_llvm.py +++ b/pystencils_tests/test_size_and_layout_checks_llvm.py @@ -1,5 +1,6 @@ import numpy as np -from pystencils import Field, Assignment + +from pystencils import Assignment, Field from pystencils.llvm import create_kernel, make_python_function diff --git a/pystencils_tests/test_sliced_iteration.py b/pystencils_tests/test_sliced_iteration.py index 756937998..174974568 100644 --- a/pystencils_tests/test_sliced_iteration.py +++ b/pystencils_tests/test_sliced_iteration.py @@ -1,6 +1,7 @@ import numpy as np import sympy as sp -from pystencils import TypedSymbol, make_slice, Assignment, create_kernel, Field + +from pystencils import Assignment, Field, TypedSymbol, create_kernel, make_slice from pystencils.simp import sympy_cse_on_assignment_list diff --git a/pystencils_tests/test_stencils.py b/pystencils_tests/test_stencils.py index ea040a371..bf1418e05 100644 --- a/pystencils_tests/test_stencils.py +++ b/pystencils_tests/test_stencils.py @@ -1,3 +1 @@ import pystencils as ps - - diff --git a/pystencils_tests/test_struct_types.py b/pystencils_tests/test_struct_types.py index 0a20ca28a..5d8de3da6 100644 --- a/pystencils_tests/test_struct_types.py +++ b/pystencils_tests/test_struct_types.py @@ -1,5 +1,6 @@ import numpy as np -from pystencils import Field, create_kernel, Assignment + +from pystencils import Assignment, Field, create_kernel def test_fixed_sized_field(): diff --git a/pystencils_tests/test_vectorization.py b/pystencils_tests/test_vectorization.py index 2f7d0f919..1505c7543 100644 --- a/pystencils_tests/test_vectorization.py +++ b/pystencils_tests/test_vectorization.py @@ -1,5 +1,6 @@ import numpy as np import sympy as sp + import pystencils as ps from pystencils.backends.simd_instruction_sets import get_supported_instruction_sets from pystencils.cpu.vectorization import vectorize -- GitLab