Back to EOSS Proposals List

Back to All Open Science Grantees

Strengthening NumPy’s Foundations: Growing Beyond Code


Projects NumPy, OpenBLAS
Funding Cycle 1

Proposal Summary

To grow the maturity of the NumPy project through governance, documentation, and website work by improving the robustness of its links with OpenBLAS, and through diversifying the core team beyond the developer role.


Project

NumPy

NumPy is the fundamental package for numerical and scientific computing with Python. It provides an N-dimensional array data structure and a large set of numerical functions that operate on it. Its array computing concepts 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 furthermore 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. NumPy is used in all areas of science and engineering.


Key Personnel

Ralf Gommers

Project

OpenBLAS

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