
    0Fies                    (   d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
mZ 	 ddlmZ n# e$ r	 ddlmZ Y nw xY w ej        ej                  d             Z ej        ej                  d	             Z e
j        ej                  d
             Z e	j        ej                  d             Z	 ddlmZ  eej                   ed          k    rddlmZ nddlmZ ddlmZ n# e$ r dZdZY nw xY werd Z  ej!        ee             ej        e           e
j        e          d                         Z" ej        e           e	j        e          d                         Z#edeefde
e	ffD ]\  Z$Z%Z& eee$e%e&           dS dS )z%
Efficient serialization GPU arrays.
    )annotationsN)cuda_deserializecuda_serialize)dask_deserializedask_serializeregister_generic)"dask_deserialize_rmm_device_buffer)dask_deserialize_numba_arrayc                6   | j         d         s#| j         d         st          j        | d          } | j                                        }t          | j                  |d<   t          j        | j        ft          j	        d          | j
        d          g}||fS )	NC_CONTIGUOUSF_CONTIGUOUST)copystridesu1)   shapedtypememptrr   )flagscupyarray__cuda_array_interface__r   tupler   ndarraynbytesr   dataxheaderframess      9lib/python3.11/site-packages/distributed/protocol/cupy.pycuda_serialize_cupy_ndarrayr#      s     GN# %qw~'> %Jqt$$$',,..Fai((F98+TZ%5%5afd	
 	
 	
F 6>    c                    |\  }t          j        | d         | d         t          j        |          j        | d                   }|S )Nr   typestrr   r   )r   r   asarrayr   )r    r!   framearrs       r"   cuda_deserialize_cupy_ndarrayr*   ,   sM    HU
,WoY|E""'y!	  C Jr$   c                F    t          |           \  }}d |D             }||fS )Nc                P    g | ]#}t          t          j        |                    $S  )
memoryviewr   asnumpy).0fs     r"   
<listcomp>z/dask_serialize_cupy_ndarray.<locals>.<listcomp>;   s(    :::aja)):::r$   )r#   r   s      r"   dask_serialize_cupy_ndarrayr3   8   s0    033NFF::6:::F6>r$   c                H    t          | |          g}t          | |          }|S N)dask_deserialize_cuda_bufferr*   )r    r!   r)   s      r"   dask_deserialize_cupy_ndarrayr7   ?   s(    *66::;F
'
7
7CJr$   )Version12)MatDescriptor)spmatrixc                    t           j        dfS )Nr-   r:   create)others    r"   reduce_matdescriptorr@   U   s     #R''r$   c                    i g }}||fS r5   r-   r   s      r"   serialize_cupy_matdescriptorrB   \   s     Rv~r$   c                (    t          j                    S r5   r=   )r    r!   s     r"   deserialize_cupy_matdescriptorrD   b   s     #%%%r$   cudadask)'__doc__
__future__r   copyregr   distributed.protocol.cudar   r   distributed.protocol.serializer   r   r   distributed.protocol.rmmr	   r6   ImportErrordistributed.protocol.numbar
   registerr   r#   r*   r3   r7   packaging.versionr8   __version__cupyx.cusparser:   cupy.cusparsecupyx.scipy.sparser;   r@   picklerB   rD   nsdr-   r$   r"   <module>rY      sI    # " " " " "   F F F F F F F F                           &&  '&  4<((  )( &&  '& 4<((  )(
))))))wt  GGDMM110000000//////+++++++   MHHH
 ( ( (
 GN="6777^]++^]++  ,+ ,+ }--}--& & .- .-& 	!12	!12 , ,1a 	1a++++ , ,s   + 9956C, ,	C87C8