@@ -21,9 +21,50 @@ import os
2121import warnings
2222from cython import sizeof
2323
24- # from pyarrow.includes.libarrow_cuda cimport DefaultMemoryMapper
25- # from pyarrow.includes.libarrow cimport DefaultDeviceMapper as DefaultDeviceMemoryMapper
26- from pyarrow.includes.libarrow_memory cimport CDefaultDeviceMemoryMapper
24+
25+ def _import_device_array (in_ptr , type ):
26+ """
27+ Import Array from a C ArrowDeviceArray struct, given its pointer
28+ and the imported array type.
29+
30+ Parameters
31+ ----------
32+ in_ptr: int
33+ The raw pointer to a C ArrowDeviceArray struct.
34+ type: DataType or int
35+ Either a DataType object, or the raw pointer to a C ArrowSchema
36+ struct.
37+
38+ This is a low-level function intended for expert users.
39+ """
40+ cdef:
41+ void * c_ptr = _as_c_pointer(in_ptr)
42+ void * c_type_ptr
43+ shared_ptr[CArray] c_array
44+
45+ c_type = pyarrow_unwrap_data_type(type )
46+ if c_type == nullptr:
47+ # Not a DataType object, perhaps a raw ArrowSchema pointer
48+ c_type_ptr = _as_c_pointer(type )
49+ with nogil:
50+ c_array = GetResultValue(
51+ ImportDeviceArray(< ArrowDeviceArray* > c_ptr,
52+ < ArrowSchema* > c_type_ptr,
53+ DefaultDeviceMapper)
54+ )
55+ else :
56+ with nogil:
57+ c_array = GetResultValue(
58+ ImportDeviceArray(< ArrowDeviceArray* > c_ptr, c_type,
59+ DefaultDeviceMapper)
60+ )
61+ return pyarrow_wrap_array(c_array)
62+
63+
64+ try :
65+ from pyarrow._cuda import _import_device_array
66+ except ImportError :
67+ pass
2768
2869
2970cdef _sequence_to_array(object sequence, object mask, object size,
@@ -1826,28 +1867,7 @@ cdef class Array(_PandasConvertible):
18261867
18271868 This is a low-level function intended for expert users.
18281869 """
1829- cdef:
1830- void * c_ptr = _as_c_pointer(in_ptr)
1831- void * c_type_ptr
1832- shared_ptr[CArray] c_array
1833-
1834- c_type = pyarrow_unwrap_data_type(type )
1835- if c_type == nullptr:
1836- # Not a DataType object, perhaps a raw ArrowSchema pointer
1837- c_type_ptr = _as_c_pointer(type )
1838- with nogil:
1839- c_array = GetResultValue(
1840- ImportDeviceArray(< ArrowDeviceArray* > c_ptr,
1841- < ArrowSchema* > c_type_ptr,
1842- CDefaultDeviceMemoryMapper)
1843- )
1844- else :
1845- with nogil:
1846- c_array = GetResultValue(
1847- ImportDeviceArray(< ArrowDeviceArray* > c_ptr, c_type,
1848- CDefaultDeviceMemoryMapper)
1849- )
1850- return pyarrow_wrap_array(c_array)
1870+ return _import_device_array(in_ptr, type )
18511871
18521872 def __dlpack__ (self , stream = None ):
18531873 """ Export a primitive array as a DLPack capsule.
0 commit comments