§
    1@Äj  ã                   ó°   — d Z ddlZddlmZmZ  G d„ dej        ¬¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z	e	fd„Z
g d¢ZdS )zw
Hints to wrap Kernel arguments to indicate how to manage host-device
memory transfers before & after the kernel call.
é    N)ÚtypeofÚPurposec                   óL   — e Zd Zd„ Zej        dd„¦   «         Zed„ ¦   «         ZdS )ÚArgHintc                 ó   — || _         d S ©N)Úvalue)Úselfr	   s     ú@C:\Projects\Historical\venv\Lib\site-packages\numba/cuda/args.pyÚ__init__zArgHint.__init__   s   € ØˆŒ
ˆ
ˆ
ó    r   c                 ó   — dS )a#  
        :param stream: a stream to use when copying data
        :param retr:
            a list of clean-up work to do after the kernel's been run.
            Append 0-arg lambdas to it!
        :return: a value (usually an `DeviceNDArray`) to be passed to
            the kernel
        N© )r
   ÚretrÚstreams      r   Ú	to_devicezArgHint.to_device   s	   € ð 	ˆr   c                 ó@   — t          | j        t          j        ¦  «        S r   )r   r	   r   Úargument)r
   s    r   Ú_numba_type_zArgHint._numba_type_   s   € å�d”j¥'Ô"2Ñ3Ô3Ð3r   N©r   )	Ú__name__Ú
__module__Ú__qualname__r   ÚabcÚabstractmethodr   Úpropertyr   r   r   r   r   r   
   sb   € € € € € ðð ð ð 	Ôð	ð 	ð 	ñ Ôð	ð ð4ð 4ñ „Xð4ð 4ð 4r   r   )Ú	metaclassc                   ó   — e Zd Zdd„ZdS )ÚInr   c                 ón   ‡— ddl m}  || j        |¬¦  «        \  Š}|                     ˆfd„¦  «         ‰S )Né   ©Úauto_device©r   c                  ó   •— ‰ S r   r   )Údevarys   €r   ú<lambda>zIn.to_device.<locals>.<lambda>'   s   ø€ ˜F€ r   ©Úcudadrv.devicearrayr#   r	   Úappend)r
   r   r   r#   Ú_r&   s        @r   r   zIn.to_device    sV   ø€ Ø4Ð4Ð4Ð4Ð4Ð4Ø�KØŒJØðñ ô ‰	ˆ�ð
 	�Š�N�N�N�NÑ#Ô#Ð#Øˆr   Nr   ©r   r   r   r   r   r   r   r   r      ó(   € € € € € ðð ð ð ð ð r   r   c                   ó   — e Zd Zdd„ZdS )ÚOutr   c                 ó|   ‡ ‡‡— ddl m}  |‰ j        d‰¬¦  «        \  Š}|r|                     ˆˆ ˆfd„¦  «         ‰S )Nr!   r"   F)Úcopyr   c                  ó<   •— ‰                       ‰j        ‰¬¦  «        S ©Nr$   ©Úcopy_to_hostr	   ©r&   r
   r   s   €€€r   r'   zOut.to_device.<locals>.<lambda>3   ó   ø€  × 3Ò 3°D´JÀvÐ 3Ñ NÔ N€ r   r(   ©r
   r   r   r#   Úconvr&   s   ` `  @r   r   zOut.to_device,   sn   øøø€ Ø4Ð4Ð4Ð4Ð4Ð4Ø"�{ØŒJØØðñ ô ‰ˆ�ð ð 	PØ�KŠKÐNÐNÐNÐNÐNÐNÑOÔOÐOØˆr   Nr   r,   r   r   r   r/   r/   +   r-   r   r/   c                   ó   — e Zd Zdd„ZdS )ÚInOutr   c                 óz   ‡ ‡‡— ddl m}  |‰ j        ‰¬¦  «        \  Š}|r|                     ˆˆ ˆfd„¦  «         ‰S )Nr!   r"   r$   c                  ó<   •— ‰                       ‰j        ‰¬¦  «        S r3   r4   r6   s   €€€r   r'   z!InOut.to_device.<locals>.<lambda>>   r7   r   r(   r8   s   ` `  @r   r   zInOut.to_device8   sk   øøø€ Ø4Ð4Ð4Ð4Ð4Ð4Ø"�{ØŒJØðñ ô ‰ˆ�ð ð 	PØ�KŠKÐNÐNÐNÐNÐNÐNÑOÔOÐOØˆr   Nr   r,   r   r   r   r;   r;   7   s(   € € € € € ðð ð ð ð ð r   r;   c                 óF   — t          | t          ¦  «        r| n
 || ¦  «        S r   )Ú
isinstancer   )r	   Údefaults     r   Úwrap_argrA   B   s#   € Ý˜u¥gÑ.Ô.ÐBˆ5ˆ5°G°G¸E±N´NÐBr   )r   r/   r;   r   rA   )Ú__doc__r   Únumba.core.typing.typeofr   r   ÚABCMetar   r   r/   r;   rA   Ú__all__r   r   r   ú<module>rF      s  ððð ð €
€
€
à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð4ð 4ð 4ð 4ð 4˜œð 4ñ 4ô 4ð 4ð*	ð 	ð 	ð 	ð 	ˆñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	ˆ'ñ 	ô 	ð 	ðð ð ð ð ˆGñ ô ð ð "ð Cð Cð Cð Cðð ð €€€r   