Metadata-Version: 2.1
Name: pystencils
Version: 0.2.11
Summary: Speeding up stencil computations on CPUs and GPUs
Home-page: https://i10git.cs.fau.de/pycodegen/pystencils/
Author: Martin Bauer
Author-email: martin.bauer@fau.de
License: AGPLv3
Project-URL: Bug Tracker, https://i10git.cs.fau.de/pycodegen/pystencils/issues
Project-URL: Documentation, http://pycodegen.pages.walberla.net/pystencils/
Project-URL: Source Code, https://i10git.cs.fau.de/pycodegen/pystencils
Description: pystencils
        ==========
        
        [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/mabau/pystencils/master?filepath=doc%2Fnotebooks)
        [![Docs](https://img.shields.io/badge/read-the_docs-brightgreen.svg)](http://pycodegen.pages.walberla.net/pystencils)
        [![pypi-package](https://badge.fury.io/py/pystencils.svg)](https://badge.fury.io/py/pystencils)
        [![pipeline status](https://i10git.cs.fau.de/pycodegen/pystencils/badges/master/pipeline.svg)](https://i10git.cs.fau.de/pycodegen/pystencils/commits/master)
        [![coverage report](https://i10git.cs.fau.de/pycodegen/pystencils/badges/master/coverage.svg)](http://pycodegen.pages.walberla.net/pystencils/coverage_report)
        
        Run blazingly fast stencil codes on numpy arrays.
        
        *pystencils* uses sympy to define stencil operations, that can be executed on numpy arrays.
        Exploiting the stencil structure makes *pystencils* run faster than normal numpy code and even as Cython and numba,
        [as demonstrated in this notebook](http://pycodegen.pages.walberla.net/pystencils/notebooks/demo_benchmark.html).
        
        
        Here is a code snippet that computes the average of neighboring cells:
        ```python
        import pystencils as ps
        import numpy as np
        
        f, g = ps.fields("f, g : [2D]")
        stencil = ps.Assignment(g[0, 0],
                                (f[1, 0] + f[-1, 0] + f[0, 1] + f[0, -1]) / 4)
        kernel = ps.create_kernel(stencil).compile()
        
        f_arr = np.random.rand(1000, 1000)
        g_arr = np.empty_like(f_arr)
        kernel(f=f_arr, g=g_arr)
        ```
        
        *pystencils* is mostly used for numerical simulations using finite difference or finite volume methods.
        It comes with automatic finite difference discretization for PDEs:
        
        ```python
        c, v = ps.fields("c, v(2): [2D]")
        adv_diff_pde = ps.fd.transient(c) - ps.fd.diffusion(c, sp.symbols("D")) + ps.fd.advection(c, v)
        discretize = ps.fd.Discretization2ndOrder(dx=1, dt=0.01)
        discretization = discretize(adv_diff_pde)
        ```
        
        Look at the [documentation](http://pycodegen.pages.walberla.net/pystencils) to learn more.
        
        
        Installation
        ------------
        
        ```bash
        pip install pystencils[interactive]
        ```
        
        Without `[interactive]` you get a minimal version with very little dependencies.
        
        All options:
        -  `gpu`: use this if an Nvidia GPU is available and CUDA is installed
        -  `opencl`: basic OpenCL support (experimental)
        - `alltrafos`: pulls in additional dependencies for loop simplification e.g. libisl
        - `bench_db`: functionality to store benchmark result in object databases
        - `interactive`: installs dependencies to work in Jupyter including image I/O, plotting etc.
        - `autodiff`: enable derivation of adjoint kernels and generation of Torch/Tensorflow operations
        - `doc`: packages to build documentation
        
        Options can be combined e.g.
        ```bash
        pip install pystencils[interactive,gpu,doc]
        ```    
        
        
        Documentation
        -------------
        
        Read the docs [here](http://pycodegen.pages.walberla.net/pystencils) and
        check out the Jupyter notebooks in `doc/notebooks`.
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Jupyter
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: gpu
Provides-Extra: opencl
Provides-Extra: alltrafos
Provides-Extra: bench_db
Provides-Extra: interactive
Provides-Extra: autodiff
Provides-Extra: doc
