
    0Fie[                       d dl mZ d dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZ 	 d dlmZ n# e$ r dZY nw xY w e	j        ej        j        j                  d             Z ej        ej        j        j                  d             Z ej        ej        j        j                  d             Z ej        ej        j        j                  d	             ZdS )
    )annotationsN)cuda_deserializecuda_serialize)dask_deserializedask_serialize)"dask_deserialize_rmm_device_bufferc                   | j         d         sQ| j         d         sD| j        }t          j                            || j                  }|                    |            |} | j                                        }t          | j
                  |d<   t          j        j        j                            | j        fdt          j        d          | j                  g}||fS )NC_CONTIGUOUSF_CONTIGUOUS)dtypestrides)   u1shaper   r   gpu_data)flagsr   numbacudadevice_arrayr   copy_to_device__cuda_array_interface__copytupler   cudadrvdevicearrayDeviceNDArraynbytesnpr   )xr   theaderframess        :lib/python3.11/site-packages/distributed/protocol/numba.pycuda_serialize_numba_ndarrayr%      s     GN# qw~'> J##E#99	',,..Fai((F9
&448+t28D>>AJ 	5 	
 	
F 6>    c                    |\  }| d         }| d         }t           j        j                            ||t	          j        | d                   t           j                            |          j                  }|S )Nr   r   typestrr   )r   r   r   r   r   r   as_cuda_arrayr   )r"   r#   framer   r   arrs         r$   cuda_deserialize_numba_ndarrayr,   %   sp    HU7OEYG
*
 
.
.hvi())))%009	 /  C Jr&   c                F    t          |           \  }}d |D             }||fS )Nc                P    g | ]#}t          |                                          $S  )
memoryviewcopy_to_host.0fs     r$   
<listcomp>z0dask_serialize_numba_ndarray.<locals>.<listcomp>7   s*    ;;;qj))**;;;r&   )r%   )r    r"   r#   s      r$   dask_serialize_numba_ndarrayr6   4   s0    1!44NFF;;F;;;F6>r&   c                    t           rt          | |          g}n5d |D             }|D ]&}t          j        |t          j        j                   't          | |          }|S )Nc           	         g | ]@}t           j                            t          j        t          |                              AS r/   )r   r   	to_devicer   asarrayr0   r2   s     r$   r5   z0dask_deserialize_numba_array.<locals>.<listcomp>@   s8    RRRa%*&&rz*Q--'@'@AARRRr&   )r   weakreffinalizer   r   current_contextr,   )r"   r#   r4   r+   s       r$   dask_deserialize_numba_arrayr>   ;   so    ) <4VVDDERR6RRR 	< 	<AQ
 :;;;;
(
8
8CJr&   )
__future__r   r;   
numba.cudar   numpyr   distributed.protocol.cudar   r   distributed.protocol.serializer   r   distributed.protocol.rmmr   ImportErrorregisterr   r   r   r%   r,   r6   r>   r/   r&   r$   <module>rG      s{   " " " " " "          F F F F F F F F K K K K K K K K.KKKKKKK . . .)-&&&. /=>>  ?>& 5:1?@@  A@ /=>>  ?> 5:1?@@	 	 A@	 	 	s   + 55