
    `i                     t   d dl mZ d dl mZ d dl mZ d dlmZ  G d d          Zd Zd Z	 G d	 d
ej
                  Z G d dej
                  Z G d de          Z G d de          Z ee          Z ee          Z G d dej                  Z ed          Z ed          Z ed          ZdS )    )_cuda_types)_cuda_typerules)_internal_types)runtimec                       e Zd Zd Zd ZdS )_ClassTemplatec                 6    || _         | j         j        | _        d S N)_class_type__doc__)self
class_types     a/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/jit/cub.py__init__z_ClassTemplate.__init__	   s    %'/    c                 j    t          |t                    r
 | j        | S |                     |          S r
   )
isinstancetupler   )r   argss     r   __getitem__z_ClassTemplate.__getitem__   s8    dE"" 	*#4#T**##D)))r   N)__name__
__module____qualname__r   r    r   r   r   r      s2        0 0 0* * * * *r   r   c                     t           j        r(| j                            d           d| j        _        d S | j                            d           d| j        _        d| j        _        d S )Nz#include <hipcub/hipcub.hpp>nvccz%#include <cub/block/block_reduce.cuh>nvrtcF)_runtimeis_hip	generatedadd_codebackendjitify)envs    r   _include_cubr%      sf     %=>>> & 	FGGG '$r   c                  "    t           j        rdndS )Nhipcubcub)r   r   r   r   r   _get_cub_namespacer)   #   s    188E1r   c                   *     e Zd Z fdZdefdZ xZS )_TempStorageTypec                     t          |t                    sJ || _        t                                                       d S r
   )r   _CubReduceBaseTypeparent_typesuperr   )r   r.   	__class__s     r   r   z_TempStorageType.__init__)   s>    +'9:::::&r   returnc                     d| j          dS )Nz	typename z::TempStorage)r.   )r   s    r   __str__z_TempStorageType.__str__.   s    :4+::::r   r   r   r   r   strr3   __classcell__r0   s   @r   r+   r+   '   sS            
; ; ; ; ; ; ; ; ;r   r+   c                   t    e Zd Zdej        fdZej        dej        fd            Zej        d             ZdS )r-   r1   c                     t          |           |j        | j        k    r t          d|j         d| j         d          t	          j        |  d|j         d|           S )NzInvalid temp_storage type . ( is expected.)())r%   ctypeTempStorage	TypeErrorr   Datacode)r   r$   temp_storages      r   _instantiatez_CubReduceBaseType._instantiate4   s    S!1115\-? 5 5$5 5 56 6 6 #t$B$Bl.?$B$B$BDIIIr   c                     |j         | j        k    r t          d|j          d| j         d          t          j        |j         d|j         d|j                   S )NInvalid input type r:   r;   z.Sum(r=   r>   Tr@   r   rA   rB   )r   r$   instanceinputs       r   Sumz_CubReduceBaseType.Sum<   sq    ;$&  LekLLdfLLLN N N#}005:000%+? ? 	?r   c                     |j         | j        k    r t          d|j          d| j         d          t          j        |j         d|j         d|j         d|j                   S )NrF   r:   r;   z.Reduce(, r=   rG   )r   r$   rI   rJ   reduction_ops        r   Reducez_CubReduceBaseType.ReduceD   s}    ;$&  LekLLdfLLLN N N#}HHejHHL4EHHHK  	r   N)	r   r   r   r   rA   rD   wraps_class_methodrK   rO   r   r   r   r-   r-   2   s        J1E J J J J '??+? ? ? ? ('? '  ('  r   r-   c                   ,     e Zd Zd fdZdefdZ xZS )_WarpReduceTyper1   Nc                     t          j        |          | _        t          |           | _        t                                                       d S r
   )r   to_ctyperH   r+   r?   r/   r   )r   rH   r0   s     r   r   z_WarpReduceType.__init__P   sA     )!,,+D11r   c                 8    t                      }| d| j         dS )Nz::WarpReduce<>)r)   rH   r   	namespaces     r   r3   z_WarpReduceType.__str__U   s&    &((	33$&3333r   )r1   Nr4   r7   s   @r   rR   rR   N   sX             
4 4 4 4 4 4 4 4 4r   rR   c                   4     e Zd Zdeddf fdZdefdZ xZS )_BlockReduceTypeBLOCK_DIM_Xr1   Nc                     t          j        |          | _        || _        t	          |           | _        t                                                       d S r
   )r   rT   rH   r[   r+   r?   r/   r   )r   rH   r[   r0   s      r   r   z_BlockReduceType.__init__\   sI     )!,,&+D11r   c                 H    t                      }| d| j         d| j         dS )Nz::BlockReduce<rM   rV   )r)   rH   r[   rW   s     r   r3   z_BlockReduceType.__str__b   s1    &((	HH46HHT5EHHHHr   )r   r   r   intr   r5   r3   r6   r7   s   @r   rZ   rZ   Z   so        s t      I I I I I I I I Ir   rZ   c                       e Zd Zd Zd ZdS )_CubFunctorc                 <    t                      }| d| d| _        d S )Nz::z())r)   fname)r   namerX   s      r   r   z_CubFunctor.__init__m   s)    &((	!--T---


r   c                 \    t          j        | j        t          j        d                    S )Ncub_functor)label)r   rA   rb   r   Unknown)r   r$   s     r   
call_constz_CubFunctor.call_constq   s/    #J+-@@@B B 	Br   N)r   r   r   r   rh   r   r   r   r`   r`   k   s7        . . .B B B B Br   r`   rK   MaxMinN)	cupyx.jitr   r   r   cupy_backends.cuda.apir   r   r   r%   r)   TypeBaser+   r-   rR   rZ   
WarpReduceBlockReduceBuiltinFuncr`   rK   ri   rj   r   r   r   <module>rq      s   ! ! ! ! ! ! % % % % % % % % % % % % 6 6 6 6 6 6
* 
* 
* 
* 
* 
* 
* 
*% % %2 2 2; ; ; ; ;{+ ; ; ;    -   8	4 	4 	4 	4 	4( 	4 	4 	4
I 
I 
I 
I 
I) 
I 
I 
I ^O,,
n-..B B B B B/- B B B k%k%k%r   