Numba is a game-changing compiler for high-performance computing with Python. It produces machine code that runs outside of the single-threaded Python interpreter and that fully utilizes the resources of modern CPUs. This means support for parallel multithreading and auto vectorization if available, as with compiled languages such as C++ or Fortran. In this article we document our experience developing PyExaFMM, a multithreaded Numba implementation of the Fast Multipole Method, an algorithm with a non-linear data structure and a large amount of data organization. We find that designing performant Numba code for complex algorithms can be as challenging as writing in a compiled language.
@article{arxiv.2303.08394,
title = {PyExaFMM: an exercise in designing high-performance software with Python and Numba},
author = {Srinath Kailasa and Tingyu Wang and Lorena A. Barba and Timo Betcke},
journal= {arXiv preprint arXiv:2303.08394},
year = {2023}
}