
    xKg                         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y)zw
Hints to wrap Kernel arguments to indicate how to manage host-device
memory transfers before & after the kernel call.
    N)typeofPurposec                   H    e Zd Zd Zej
                  dd       Zed        Zy)ArgHintc                     || _         y N)value)selfr	   s     S/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/args.py__init__zArgHint.__init__   s	    
    c                      y)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                 J    t        | j                  t        j                        S r   )r   r	   r   argument)r
   s    r   _numba_type_zArgHint._numba_type_   s    djj'"2"233r   Nr   )	__name__
__module____qualname__r   abcabstractmethodr   propertyr   r   r   r   r   r   
   s5     		 	 4 4r   r   )	metaclassc                       e Zd ZddZy)Inc                 j    ddl m}  || j                  |      \  }|j                  fd       S )N   auto_devicer   c                       S r   r   )devarys   r   <lambda>zIn.to_device.<locals>.<lambda>'   s    Fr   cudadrv.devicearrayr#   r	   append)r
   r   r   r#   _r&   s        @r   r   zIn.to_device    s1    4JJ	
 	N#r   Nr   r   r   r   r   r   r   r   r   r          r   r   c                       e Zd ZddZy)Outc                 x     ddl m}  | j                  d      \  }|r|j                   fd       S )Nr!   r"   F)copyr   c                  >     j                  j                        S Nr$   copy_to_hostr	   r&   r
   r   s   r   r'   zOut.to_device.<locals>.<lambda>3        3 3DJJv 3 Nr   r(   r
   r   r   r#   convr&   s   ` `  @r   r   zOut.to_device,   s8    4"JJ KKNOr   Nr   r,   r   r   r   r/   r/   +   r-   r   r/   c                       e Zd ZddZy)InOutc                 v     ddl m}  | j                        \  }|r|j                   fd       S )Nr!   r"   r$   c                  >     j                  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   s5    4"JJ KKNOr   Nr   r,   r   r   r   r;   r;   7   s    r   r;   c                 6    t        | t              r| S  ||       S r   )
isinstancer   )r	   defaults     r   wrap_argrA   B   s    ug.5BGENBr   )r   r/   r;   r   rA   )__doc__r   numba.core.typing.typeofr   r   ABCMetar   r   r/   r;   rA   __all__r   r   r   <module>rF      sX     44 4*	 		' 	G  " Cr   