High performance Python for direct numerical simulations of turbulent flows
arXiv:1602.03638 · doi:10.1016/j.cpc.2016.02.005
Abstract
Direct Numerical Simulations (DNS) of the Navier Stokes equations is an invaluable research tool in fluid dynamics. Still, there are few publicly available research codes and, due to the heavy number crunching implied, available codes are usually written in low-level languages such as C/C++ or Fortran. In this paper we describe a pure scientific Python pseudo-spectral DNS code that nearly matches the performance of C++ for thousands of processors and billions of unknowns. We also describe a version optimized through Cython, that is found to match the speed of C++. The solvers are written from scratch in Python, both the mesh, the MPI domain decomposition, and the temporal integrators. The solvers have been verified and benchmarked on the Shaheen supercomputer at the KAUST supercomputing laboratory, and we are able to show very good scaling up to several thousand cores. A very important part of the implementation is the mesh decomposition (we implement both slab and pencil decompositions) and 3D parallel Fast Fourier Transforms (FFT). The mesh decomposition and FFT routines have been implemented in Python using serial FFT routines (either NumPy, pyFFTW or any other serial FFT module), NumPy array manipulations and with MPI communications handled by MPI for Python (mpi4py). We show how we are able to execute a 3D parallel FFT in Python for a slab mesh decomposition using 4 lines of compact Python code, for which the parallel performance on Shaheen is found to be slightly better than similar routines provided through the FFTW library. For a pencil mesh decomposition 7 lines of code is required to execute a transform.
References in corpus (3)
Cited by in corpus (11)
- On the stability of projection-based model order reduction for convection-dominated laminar and turbulent flows
- Tempered Fractional LES Modeling
- FluidSim: modular, object-oriented Python package for high-performance CFD simulations
- More efficient time integration for Fourier pseudo-spectral DNS of incompressible turbulence
- Intricate Relations Among Particle Collision, Relative Motion and Clustering in Turbulent Clouds: Computational Observation and Theory
- The Effect of Non-minimally Coupled Scalar Field on Gravitational Waves from First-order Vacuum Phase Transitions
- Baroclinic interaction of forced shock waves with random thermal gradients
- A Parallel Integrated Computational-Statistical Platform for Turbulent Transport Phenomena
- On the contribution of the Hall term in small-scale magnetohydrodynamic dynamo
- PyEquIon: A Python Package For Automatic Speciation Calculations of Aqueous Electrolyte Solutions
- Predictive Probability Density Mapping for Search and Rescue Using An Agent-Based Approach with Sparse Data