Python 数组 API 支持#
注意
CuPy v14 中将移除 cupy.array_api
,因为它对应的 NumPy 部分 numpy.array_api
已被移除。根模块 cupy.*
现在与 NumPy v2 API 镜像,因此与数组 API 规范兼容。使用 Array API 兼容性库 来开发与各种数组库(包括 CuPy、NumPy 和 PyTorch)兼容的应用程序。
Python 数组 API 标准 旨在为社区开发的数组和张量库提供一套连贯的 API。通过提供具体的函数签名、语义和覆盖范围,这解决了社区间的 API 碎片化问题,使得可以编写后端无关的代码,从而提高可移植性。
CuPy 基于 NumPy 的 NEP-47 提供实验性支持,而 NEP-47 又基于 v2021 标准。所有功能都可以通过 cupy.array_api
命名空间访问。
NumPy 的 Array API 标准兼容性 是一个极好的起点,可以帮助更好地理解主命名空间和 array_api
命名空间下 API 之间的区别。然而,请记住 NumPy 和 CuPy 之间的关键区别在于我们是一个仅限 GPU 的库,因此 CuPy 用户应注意潜在的设备管理问题。与常规 CuPy 代码一样,要使用的 GPU 可以通过 Device
对象指定,请参见设备管理。GPU 相关的语义(例如流、异步等)也受到遵守。最后,请记住 NumPy 和 CuPy 之间已经存在差异,尽管其中一些在标准中得到了修正。
- 数组 API 函数
abs()
acos()
acosh()
add()
all()
any()
arange()
argmax()
argmin()
argsort()
asarray()
asin()
asinh()
atan()
atan2()
atanh()
bitwise_and()
bitwise_invert()
bitwise_left_shift()
bitwise_or()
bitwise_right_shift()
bitwise_xor()
broadcast_arrays()
broadcast_to()
can_cast()
ceil()
concat()
cos()
cosh()
divide()
empty()
empty_like()
equal()
exp()
expand_dims()
expm1()
eye()
finfo()
flip()
floor()
floor_divide()
from_dlpack()
full()
full_like()
greater()
greater_equal()
iinfo()
isfinite()
isinf()
isnan()
less()
less_equal()
linspace()
log()
log10()
log1p()
log2()
logaddexp()
logical_and()
logical_not()
logical_or()
logical_xor()
matmul()
meshgrid()
multiply()
negative()
nonzero()
not_equal()
ones()
ones_like()
permute_dims()
positive()
pow()
remainder()
reshape()
result_type()
roll()
round()
sign()
sin()
sinh()
sort()
sqrt()
square()
squeeze()
stack()
subtract()
take()
tan()
tanh()
tril()
triu()
trunc()
unique_all()
unique_inverse()
unique_values()
where()
zeros()
zeros_like()
- 符合数组 API 的对象