
    Ni                    z   U d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 er4ddlmZ eee         eedf         ej        ej        f         Zeedf         ZdZdQdZdRdZdSdZd ZdTdZi ddddddddd d!d"d#d$d%d&d!d'd(d)d(d*d#d+d,d-d,d.d/d0d/d1d2d3d4d4d5d5d6d7d8d8d9d:d;d<d=d>d?Z ee                                          D ]Zeee<   d@ Zi dA dBD             dC dBD             dD dED             dF dGD             dHd dIZdJedK<   e                                D ]\  Z Zee         ee <   dUdOZ!dPS )V    )annotationsreduce)AnyCallableTYPE_CHECKINGUnionListDict   core.i   iterableIterableTypepathObjPathreturnr   c                &    t          d ||           S )Nc                    | |         S N )aidxs     e/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/triton/_utils.py<lambda>z#get_iterable_path.<locals>.<lambda>   s
    3     r   )r   r   s     r   get_iterable_pathr      s    ''x888r   tuple[int, ...]valc                    ddl m} t          |          dk    sJ t          |          dk    r| nt          | |d d                   }t	          ||j                  sJ |                    |d         |           d S )Nr   r   r   )languager   lenr   
isinstancetuple_setitem)r   r   r   r   prevs        r   set_iterable_pathr(      s    t99>>>>4yyA~~88+<XtCRCy+Q+QDdDJ'''''MM$r(C     r   Union[IterableType, Any]predCallable[[ObjPath, Any], bool]list[ObjPath]c                    ddl m fdi d
fd d	|            t                                                    S )Nr   r   c                T    t          | t          t          j        j        f          S r   )r$   listr%   
tuple_type)xr   s    r   r   zfind_paths_if.<locals>.<lambda>   s     :a$tz[_[jAk3l3l r   r   r   currentr   c                     |          r(t          |          D ]\  }} g | |R |           d S  | |          rd | <   d S d S r   )	enumerate)r   r2   r   item_implis_iterabler*   rets       r   r6   zfind_paths_if.<locals>._impl    s    ;w 	&w// * *	TllcllD))))* *T$   	CIII	 	r   r   )r   r   r2   r   )r"   r   r/   keys)r   r*   r6   r   r7   r8   s    `@@@@r   find_paths_ifr:      s    )l)l)l)lK!C         
E"h

r   c                    | | dz
  z  dk    S )Nr   r   r   )r1   s    r   is_power_of_twor<   ,   s    QKAr   shape	List[int]c           	     >   d}t          |           D ]d\  }}t          |t                    s#t          d| dt	          |           d          t          |          st          d| d          ||z  }e|t          k    rt          d| dt           d          |S )	Nr   zShape element z1 must have type `constexpr[int]`, got `constexpr[]z must be a power of 2znumel (z') exceeds triton maximum tensor numel ())r4   r$   int	TypeErrortyper<   
ValueErrorTRITON_MAX_TENSOR_NUMEL)r=   numelids       r   validate_block_shaperJ   0   s    E%    1!S!! 	mkQkkaefgahahkkklllq!! 	HFaFFFGGG
&&&k5kkQhkkklllLr   boolu1int1uint1i1
float8e4nvfp8e4nvfloat8e5fp8e5float8e4b15fp8e4b15float8_e4m3fn
float8e4b8fp8e4b8float8_e4m3fnuzfloat8_e5m2float8e5b16fp8e5b16float8_e5m2fnuzhalffp16float16bfloat16bf16floatfp32fp64i8i16i32i64u8u16u32u64void)float32doublefloat64int8int16rB   int32int64uint8uint16uint32uint64rn   c                l    t          |                               d          d         }t          |         S )N.r!   )strsplittype_canonicalisation_dict)dtype	dtype_strs     r   canonicalize_dtyper   g   s+    E

  %%b)I%i00r   c                    i | ]}d | |	S )ur   .0ns     r   
<dictcomp>r   m   0     $ $ $ 1ww $ $ $r   )r             @   c                    i | ]}d | |	S )rH   r   r   s     r   r   r   o   r   r   c                    i | ]}d | |	S )fpr   r   s     r   r   r   q   s0        Axx   r   )r   r   r   c                    i | ]}d | d	S )fp8r   r   )r   suffixs     r   r   r   s   s0     ? ? ? V~~q ? ? ?r   )e4nve4b15e4b8e5e5b16r   )rb   rn   zDict[str, int]BITWIDTH_DICTr   r|   rB   c                    t           |          S r   )r   )r   s    r   get_primitive_bitwidthr   }   s    r   N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r)   r*   r+   r   r,   )r=   r>   )r   r|   r   rB   )"
__future__r   	functoolsr   typingr   r   r   r	   r
   r   r"   r   r/   r%   r0   r   rB   r   rF   r   r(   r:   r<   rJ   r~   valuesvr   r   __annotations__itemskr   r   r   r   <module>r      sc   " " " " " " "       B B B B B B B B B B B B B B B B cE#s(OTZPQLCHoG! 9 9 9 9! ! ! !   $     #
D# D# T	#
 	$# )# # :# Y# )# y# 7# :# z#  F!#" v##$ %#& V'#( E# # # J 
(//11	2	2 & &A$%q!!1 1 1
!$ $"$ $ $!$ $"$ $ $!
   !? ?=? ? ?! ! ! !     ',,.. ( (DAq$Q'M!           r   