Common APIs across array libraries (1 year later)

Open
#187 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
numpy, python, pytorch, tensorflow

Research direction

Start by reviewing gh-6 and the array API specification, then compare the publicly documented APIs for NumPy, CuPy, Dask.array, JAX, MXNet, PyTorch, and TensorFlow listed here. Done means producing a justified set of candidates for standardization in the next specification version; no repository files or tests are named.

Written by the indexing model from the issue text.

Description

API extension

Overview

Similar to gh-6, this issue looks to identify commonalities across array libraries, but only addresses those APIs which are not already included in the array API specification.

Since gh-6 and its analysis,

  1. Every array library added more APIs.
  2. Continued convergence toward NumPy APIs (CuPy, PyTorch, TensorFlow.experimental, MXNet).
  3. Greater agreement among accelerator libraries (e.g., CuPy, MXNet, Torch, TF) wrt special functions not available in NumPy, but available in SciPy.

Method

Similar to gh-6, the list was compiled by doing the following:

  1. Generating a list of APIs based on publicly documented array APIs (e.g., by scraping website documentation).
  2. Computing the intersection across the individual datasets.

The following libraries were analyzed:

  • numpy
  • cupy
  • dask.array
  • jax
  • mxnet
  • pytorch
  • tensorflow

APIs

The following APIs were found to be common across the above libraries, but not already included in the array API specification:

cbrt
clip
copysign
count_nonzero

deg2rad
diff

erf (scipy)
erfc (scipy)
erfinv (scipy)
erfcinv (scipy)
exp2

gamma (scipy)
gammaln (scipy)

histogram
hypot

i0 (bessel)

logsumexp (accelerators)

nextafter

pad

rad2deg
reciprocal
repeat
rot90
rsqrt (accelerators)
rcbrt (accelerators)

sigmoid (accelerators)

take
tile
top_k (accelerators+dask)

xlogy (scipy)

We can split the APIs into the following categories...

Array Manipulation
pad
repeat
rot90
tile
Special Functions
cbrt
clip
copysign
deg2rad
erf
erfc
erfcinv
erfinv
exp2
gamma
gammaln
hypot
i0
nextafter
rad2deg
reciprocal
rsqrt
rcbrt
sigmoid
xlogy
Reductions
count_nonzero
histogram
logsumexp
top_k
Indexing
take
Other
diff

Next Steps

  • Identify which APIs could be suitable candidates for standardization in the next version of the specification.
Dominant language
Python
Stars
281
Forks
52
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from data-apis/array-api

All issues in data-apis/array-api

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.