Ensure ufunc/function dispatching is narrow #977
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To allow potential wrapping e.g. via projects like pint, cuNumeric should only accept types in the
__array_function__
and__array_ufunc__
protocols that it clearly understands. Right now, these are superclasses (if there was subclassing in theory) and NumPy arrays. CuPy arrays would also fall into this category.Ping @manopapad since we talked about it briefly yesterday, thought I would just look into it. It is correct that cuNumeric currently only knows about NumPy arrays really (and objects that don't have
__array_function__
/__array_ufunc__
); i.e. no cupy?I would lean towards it being OK to just fail if you don't implement this. Dask has a FutureWarning for their NumPy fallback path in
__array_function__
, but it looks a bit like this may be important for other fallbacks and I think its fine.