
    J/Ph                         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     O/var/www/html/test/jupyter/venv/lib/python3.11/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    dj'"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  	
 	NNNN###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 3DJv 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KK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KK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#    ug..B55GGENN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   