All Projects → zachjweiner → pystella

zachjweiner / pystella

Licence: MIT license
A code generator for grid-based PDE solving on CPUs and GPUs

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to pystella

Amgcl
C++ library for solving large sparse linear systems with algebraic multigrid method
Stars: ✭ 390 (+2066.67%)
Mutual labels:  opencl, mpi, scientific-computing
hpc
Learning and practice of high performance computing (CUDA, Vulkan, OpenCL, OpenMP, TBB, SSE/AVX, NEON, MPI, coroutines, etc. )
Stars: ✭ 39 (+116.67%)
Mutual labels:  hpc, opencl, mpi
Loopy
A code generator for array-based code on CPUs and GPUs
Stars: ✭ 367 (+1938.89%)
Mutual labels:  opencl, scientific-computing, code-generation
Arrayfire
ArrayFire: a general purpose GPU library.
Stars: ✭ 3,693 (+20416.67%)
Mutual labels:  hpc, opencl, scientific-computing
boxtree
Quad/octree building for FMMs in Python and OpenCL
Stars: ✭ 52 (+188.89%)
Mutual labels:  opencl, scientific-computing, pyopencl
Ohpc
OpenHPC Integration, Packaging, and Test Repo
Stars: ✭ 544 (+2922.22%)
Mutual labels:  hpc, mpi, scientific-computing
t8code
Parallel algorithms and data structures for tree-based AMR with arbitrary element shapes.
Stars: ✭ 37 (+105.56%)
Mutual labels:  hpc, mpi
Singularity-tutorial
Singularity 101
Stars: ✭ 31 (+72.22%)
Mutual labels:  hpc, mpi
PyRates
Open-source, graph-based Python code generator and analysis toolbox for dynamical systems (pre-implemented and custom models). Most pre-implemented models belong to the family of neural population models.
Stars: ✭ 33 (+83.33%)
Mutual labels:  scientific-computing, code-generation
gslib
sparse communication library
Stars: ✭ 22 (+22.22%)
Mutual labels:  hpc, mpi
bandicoot-code
Bandicoot: GPU accelerator add-on for the Armadillo C++ linear algebra library
Stars: ✭ 21 (+16.67%)
Mutual labels:  opencl, scientific-computing
gpyfft
python wrapper for the OpenCL FFT library clFFT
Stars: ✭ 52 (+188.89%)
Mutual labels:  opencl, pyopencl
az-hop
The Azure HPC On-Demand Platform provides an HPC Cluster Ready solution
Stars: ✭ 33 (+83.33%)
Mutual labels:  hpc, mpi
ParMmg
Distributed parallelization of 3D volume mesh adaptation
Stars: ✭ 19 (+5.56%)
Mutual labels:  hpc, mpi
arbor
The Arbor multi-compartment neural network simulation library.
Stars: ✭ 87 (+383.33%)
Mutual labels:  hpc, mpi
Foundations of HPC 2021
This repository collects the materials from the course "Foundations of HPC", 2021, at the Data Science and Scientific Computing Department, University of Trieste
Stars: ✭ 22 (+22.22%)
Mutual labels:  hpc, mpi
hp2p
Heavy Peer To Peer: a MPI based benchmark for network diagnostic
Stars: ✭ 17 (-5.56%)
Mutual labels:  hpc, mpi
fml
Fused Matrix Library
Stars: ✭ 24 (+33.33%)
Mutual labels:  hpc, mpi
nmodl
Code Generation Framework For NEURON MODeling Language
Stars: ✭ 42 (+133.33%)
Mutual labels:  hpc, code-generation
ACCL
Accelerated Collective Communication Library: MPI-like communication operations for Xilinx Alveo accelerators
Stars: ✭ 28 (+55.56%)
Mutual labels:  hpc, mpi

pystella: a distributed and accelerated framework for PDE solving

Github Build Status Documentation Status

pystella enables the easy expression of both PDE systems and the algorithms to solve them in high-performance computing environments within Python. It provides interfaces to generate custom computational kernels via loopy which can then be executed from Python on (multiple) CPUs or GPUs using pyopencl and mpi4py. Moreover, pystella implements a number of algorithms for PDE time evolution and spatial discretization that can be readily applied to a variety of physical systems.

Its features include:

  • code generation for performant element-wise kernels, stencil-based computations, reductions, and histograms
  • distributed domain decomposition and grid boundary sychronization
  • time-stepping algorithms, including low-storage Runge-Kutta schemes
  • finite difference and spectral collocation methods for spatial derivatives
  • a geometric multigrid solver for generic sets of nonlinear boundary-value problems (in beta)
  • wrappers to OpenCL-based Fast Fourier Transforms (FFTs) and distributed CPU FFTs
  • Fourier space methods for field analysis and solving Poisson's equation

All of the above functionality is configured to run at high performance by default, as are the interfaces for generating custom kernels (though this is entirely user-configurable!). Additionally, the provided functionality is intended to work seamlessly whether running in distributed- (i.e., multiple devices) or shared-memory (i.e., a single device) contexts without sacrificing performance in either case.

pystella was designed to simulate preheating and gravitational wave production after cosmological inflation and provides a simple way to specify models of this process. However, pystella is also designed to be sufficiently abstract as to provide a good framework for most systems that can be discretized onto grids (e.g., lattice field theory, (magneto)hydrodynamics, Einstein's equations, electromagnetism, etc.). The preheating-specific components can be viewed as examples for the symbolic representation of arbitrary physical systems as an interface to its code generation routines. pystella provides entry points at varying levels of abstraction—so if you like the idea of pystella but the algorithms you require are not implemented, you can create new interfaces (or extend existing ones) for your purposes with ease. (Better yet, consider contributing a PR!)

pystella is fully documented and is licensed under the liberal MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].