pystencils v2.0-dev Documentation

pystencils v2.0-dev Documentation#

Note

You are currently viewing the documentation pages for the development revision 2.0.dev0+78.gf8e5419 of pystencils 2.0. These pages have been generated from the branch v2.0-dev.

Pystencils 2.0 is currently under development. It marks a complete re-design of the package’s internal structure; furthermore, it will bring a set of new features and API changes. Be aware that many features are still missing or might have brand-new bugs in this version. If you wish to work with and contribute to this development, please refer to the Git repository.

Note

These pages are still under construction; many aspects are still missing. Do not hesitate to contribute!

Welcome to the documentation and reference guide of pystencils! Pystencils offers a symbolic language and code generator for the development of high-performing numerical kernels for both CPU and GPU targets. Its features include:

  • Symbolic Algebra: Design numerical methods on a mathematical level using the full power of the SymPy computer algebra system. Make use of pystencils’ discretization engines to automatically derive finite difference- and finite volume-methods, and take control of numerical precision using the versatile type system.

  • Kernel Description: Derive and optimize stencil-based update rules using a symbolic abstraction of numerical fields.

  • Code Generation: Generate and compile high-performance parallel kernels for CPUs and GPUs. Accelerate your kernels on multicore CPUs using the automatic OpenMP parallelization and make full use of your cores’ SIMD units through the highly configurable vectorizer.

  • Rapid Prototyping: Run your numerical solvers on NumPy and CuPy arrays and test them interactively inside Jupyter notebooks. Quickly set up numerical schemes, apply initial and boundary conditions, evaluate them on model problems and rapidly visualize the results using matplotlib or VTK.

  • Framework Integration: Export your kernels and use them inside HPC frameworks such as waLBerla to build massively parallel simulations.

Topics#

Projects using pystencils#