Back to EOSS Proposals List

Back to All Open Science Grantees

Improving Usability and Sustainability for NumPy and OpenBLAS

Projects NumPy, OpenBLAS
Funding Cycle 3

Proposal Summary

To improve the robustness and usability of NumPy by continuing to work in documentation and community building, modernizing its integration with Fortran tools via numpy.f2py, and ensuring the sustainability of both NumPy and OpenBLAS.



NumPy, the fundamental package for numerical and scientific computing with Python, is used in all areas of science and engineering. It provides an N-dimensional array data structure and a large set of numerical functions that operate on it. Its array computing concepts, which include vectorization, broadcasting, indexing, and universal functions, are used throughout the scientific Python ecosystem and have also inspired similar libraries in other programming languages. The NumPy API and concepts have been adapted to other Python libraries, such as Dask and Xarray for distributed computing, and PyTorch and CuPy for GPU computing. NumPy also provides some essential algorithms for numerical applications, such as Fourier transforms, random number generators, and linear algebra routines. It also provides many of the utilities and standards for the scientific Python ecosystem: documentation guidelines and the NumpyDoc package, testing tools, and f2py and numpy.distutils for building scientific packages containing compiled code.

Key Personnel

Melissa Mendonça
Pearu Peterson



OpenBLAS is a highly optimized library for linear algebra computations. It provides accelerated versions of BLAS (Basic Linear Algebra Subroutines) and LAPACK (Linear Algebra Package), which are the two universal interfaces to perform linear algebra with. OpenBLAS provides automatic parallelization and optimized code for a large set of CPU architectures. Its performance is state-of-the-art, comparable to the leading commercial alternatives and one to two orders of magnitude faster than the reference BLAS and LAPACK implementations.

Key Personnel

Martin Kroeker