id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 1322112135,I_kwDOAMm_X85OzdSH,6847,Please expose __cuda_array_interface__ via the xarray.__array__() function if present,8914493,open,0,,,5,2022-07-29T11:08:51Z,2022-08-01T12:38:13Z,,NONE,,,,"### Is your feature request related to a problem? When using an array type with GPU support, such as CuPy arrays, Numba device arrays or Numba mapped arrays (shared), ```__cuda_array_interface__``` is not exposed by the ```xarray.__array()``` function. I'm using large NetCDF files which I wish to process against reference dataframes and use GPU acceleration to do this. For example, Numba mapped array: ``` >>> points = np.random.randn(2, 3) >>> map_points = nb.cuda.mapped_array_like(points) >>> map_points.__array_interface__ {'data': (140399865758208, False), 'strides': None, 'descr': [('', '>> map_points.__cuda_array_interface__ {'shape': (2, 3), 'strides': None, 'data': (140399865758208, False), 'typestr': '>> data = xr.DataArray(map_points, dims=(""x"", ""y""), coords={""x"": [10, 20]}) >>> data xarray.DataArray x: 2y: 3 array([[0., 0., 0.], [0., 0., 0.]]) Coordinates: x (x) int64 10 20 Attributes: (0) ``` Array interface confirms same address for the base (CPU) array as above, i.e. Zero Copy ``` >>> data.__array__().__array_interface__ {'data': (140399865758208, False), 'strides': None, 'descr': [('', '>> data.__array__().__cuda_array_interface__ --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In [23], in () ----> 1 data.__array__().__cuda_array_interface__ AttributeError: 'numpy.ndarray' object has no attribute '__cuda_array_interface__' ``` ### Describe the solution you'd like Expose ```__cuda_array_interface__``` via the ```xarray.__array()``` function so it is available to CuPy and Numba CUDA functions. ### Describe alternatives you've considered As a workaround, I'm not using **xarray** for NetCDF files. Instead I'm converting them into an dictionary of arrays which provides me with the GPU interfaces. ### Additional context _No response_","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6847/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue