NRPy+, a Python-Based Code Generation Package for Numerical Relativity... and Beyond!
COFFEE_KLATCH · Invited
Abstract
Encoding partial differential equations (PDEs) into high-performance software by hand can be a frustrating, error-prone process. NRPy+ is a SymPy-based Python package aimed at accelerating this process. Users may input complex expressions in a compact, human-friendly mathematical form (e.g., Einstein notation). NRPy+ then processes this input and outputs highly optimized C code kernels with CSE and/or SIMD compiler intrinsics if desired, converting partial derivatives to finite-difference expressions. NRPy+ has been used to generate kernels for solving Einstein's equations of general relativity on HPC systems in a variety of singular coordinate systems, and it forms the heart of BlackHoles@Home, a proposed volunteer computing project that brings numerical relativity to the consumer-grade desktop computer for the benefit of gravitational wave astronomy. Although originally designed for numerical relativity, NRPy+ has been used to quickly and efficiently solve a number of hyperbolic PDEs, and is pedagogically documented in a collection of Jupyter notebooks. I will report on NRPy+'s capabilities and new features, which include a new \LaTeX\ lexer/parser for inputting expressions. http://nrpyplus.net/
–
Authors
-
Zachariah Etienne
West Virginia University