EuroSciPy 2024

The Array API Standard in SciPy
2024-08-29 , Room 6

The array API standard is unifying the ecosystem of Python array computing, facilitating greater interoperability between array libraries, including NumPy, CuPy, PyTorch, JAX, and Dask. Find out how we are using it in SciPy to bring support for hardware-accelerated (e.g. GPU) and distributed arrays to our users, and how you can do the same in your library.


SciPy has had "support for distributed and GPU arrays" on its roadmap for over five years now. For a library built around NumPy arrays, that is easier said than done. There are other array libraries, such as CuPy, PyTorch, JAX, and Dask, which can help address these user wishes.

Supporting multiple array libraries is not simple, since their APIs differ. Lengthy if-else statements in every function won't cut it - what we want is to be able to write 'array-agnostic' code which will work with multiple array libraries, without having to special-case on the input array type.

The Python array API standard aims to standardise functionality that exists in most array libraries. It specifies an API which 'array-consumer' libraries can use to write array-agnostic code. In this talk, I give a brief introduction to the standard, before explaining how we are implementing support for it in SciPy, and the progress which we have made so far.

Rough talk outline:
- 5 mins - what is the array API standard, and why should you care?
- 7 mins - what work is needed for a consumer library to adopt the array API standard, and what does that look like in SciPy? What tools are available to help?
- 3 mins - current progress in SciPy & looking to the future.


Abstract as a tweet:

Find out how we are using the array API standard in SciPy to bring support for hardware-accelerated and distributed arrays to our users, and how you can do the same in your library.

Category [High Performance Computing]:

Vector and Array Manipulation

Expected audience expertise: Domain:

none

Expected audience expertise: Python:

some

Public link to supporting material:

https://data-apis.org/array-api/latest/index.html

Project Homepage / Git:

https://scipy.org

See also: Slides

SciPy Maintainer | Computer Science & Philosophy Undergraduate Student at Christ Church, University of Oxford | Based in Newcastle upon Tyne, UK