Skip to content

Commit

Permalink
Sync some changes from KvikIO's Array (#1080)
Browse files Browse the repository at this point in the history
Pulls in a few changes from KvikIO's `Array`. Namely...

* `asarray` for easy conversion to `Array` (no-op if already an `Array`)
* Include types for a few more properties

Authors:
  - https://github.com/jakirkham

Approvers:
  - Peter Andreas Entschev (https://github.com/pentschev)
  - Lawrence Mitchell (https://github.com/wence-)

URL: #1080
  • Loading branch information
jakirkham authored Oct 16, 2024
1 parent 805440f commit 210ebef
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
5 changes: 4 additions & 1 deletion ucp/_libs/arr.pxd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2020-2021, NVIDIA CORPORATION. All rights reserved.
# Copyright (c) 2020-2024, NVIDIA CORPORATION. All rights reserved.
# See file LICENSE for terms.

# cython: language_level=3
Expand All @@ -24,3 +24,6 @@ cdef class Array:
cpdef bint _f_contiguous(self)
cpdef bint _contiguous(self)
cpdef Py_ssize_t _nbytes(self)


cpdef Array asarray(obj)
17 changes: 14 additions & 3 deletions ucp/_libs/arr.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
from typing import Tuple
# Copyright (c) 2020-2024, NVIDIA CORPORATION. All rights reserved.
# See file LICENSE for terms.

class Array:
def __init__(self, obj: object): ...
from typing import Generic, Tuple, TypeVar

T = TypeVar("T")

class Array(Generic[T]):
def __init__(self, obj: T): ...
@property
def c_contiguous(self) -> bool: ...
@property
Expand All @@ -14,3 +19,9 @@ class Array:
def shape(self) -> Tuple[int]: ...
@property
def strides(self) -> Tuple[int]: ...
@property
def cuda(self) -> bool: ...
@property
def obj(self) -> T: ...

def asarray(obj) -> Array: ...
21 changes: 20 additions & 1 deletion ucp/_libs/arr.pyx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2020-2021, NVIDIA CORPORATION. All rights reserved.
# Copyright (c) 2020-2024, NVIDIA CORPORATION. All rights reserved.
# See file LICENSE for terms.

# cython: language_level=3
Expand Down Expand Up @@ -297,3 +297,22 @@ cdef inline Py_ssize_t _nbytes(Py_ssize_t itemsize,
for i in range(ndim):
nbytes *= shape_mv[i]
return nbytes


cpdef Array asarray(obj):
"""Coerce other objects to ``Array``. No-op for existing ``Array``s.
Parameters
----------
obj: object
Object exposing the Python buffer protocol or ``__cuda_array_interface__``.
Returns
-------
array: Array
An instance of the ``Array`` class.
"""
if isinstance(obj, Array):
return <Array>obj
else:
return Array(obj)

0 comments on commit 210ebef

Please sign in to comment.