Ë
    7^(hLˆ  ã            	      óþ  — d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	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mZmZmZmZ ddlmZ d dlmZ dd	lmZmZ e d e!d
«        Z" ed«      Z# G d„ dejH                  «      Z%dGd„Z& G d„ d«      Z'i Z(g Z)d„ Z*dHd„Z+ G d„ dee#   «      Z,d„ Z-d„ 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.“d/d0“d1d2“d3d4“d5d6d7d8d9d:œ¥Z/ e0e/jc                  «       «      D ]  Z2e2e/e2<   Œ	  G d;„ d<e,e#   «      Z3edId=„«       Z4edddddddd>œ	 	 	 	 	 	 	 	 	 	 	 	 	 dJd?„«       Z4	 dKdddddddd>œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dLd@„Z4 G dA„ dB«      Z5 G dC„ dD«      Z6dE„ Z7dF„ Z8y)Mé    )ÚannotationsÚdivisionN)Údefaultdict)Úcached_property)
ÚCallableÚGenericÚIterableÚOptionalÚTypeVarÚUnionÚoverloadÚDictÚAnyÚTupleé   )Údriver)Ú
ModuleType)Úfind_paths_ifÚget_iterable_pathz.runtime.jitÚTc                  óv   ‡ — e Zd ZdZdˆ fd„Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚDependenciesFinderaÑ  
    This AST visitor is used to find dependencies of a JITFunction. This can
    be used to invalidate a JITFunction's hash when its source code -- or
    that of its dependencies -- changes.

    This visitor also keeps track of the global variables touched by the
    JITFunction.  When we launch the kernel, we check that these have the same
    values as they did when we ran this visitor.  If not, we raise an error (or
    otherwise we could recompile).
    c                ó¾   •— t         ‰| �  «        || _        t        j                  |j                  d«      «      | _        || _        h d£| _        i | _	        d| _
        y )Núutf-8>
   ÚintÚlenÚmaxÚminÚlistÚfloatÚprintÚrangeÚgetattrÚ
isinstanceF)ÚsuperÚ__init__ÚnameÚhashlibÚsha256ÚencodeÚhasherÚglobalsÚsupported_python_builtinsÚused_global_valsÚvisiting_arg_default_value)Úselfr'   r,   ÚsrcÚ	__class__s       €úP/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/triton/runtime/jit.pyr&   zDependenciesFinder.__init__%   sU   ø€ Ü‰ÑÔØˆŒ	Ü—n‘n S§Z¡Z°Ó%8Ó9ˆŒð ˆŒò*
ˆÔ&ð. TVˆÔà*/ˆÕ'ó    c                ó6   — | j                   j                  «       S ©N)r+   Ú	hexdigest©r0   s    r3   ÚretzDependenciesFinder.retI   s   € à�{‰{×$Ñ$Ó&Ð&r4   c                ó†   — t        j                  |j                  «      ryt        |dd«      }|j	                  t
        «      S )NTÚ
__module__Ú )ÚinspectÚ	isbuiltinÚfuncr#   Ú
startswithÚTRITON_MODULE)r0   Únoder?   Úmodules       r3   Ú_is_triton_builtinz%DependenciesFinder._is_triton_builtinM   s6   € Ü×Ñ˜TŸY™YÔ'ØÜ˜˜|¨RÓ0ˆØ× Ñ ¤Ó/Ð/r4   c                ó>  — t        |t        «      �r| j                  j                  «       |j                  j                  «       z  D ]_  }|\  }}| j                  |   \  }}|j                  |   \  }}||k7  sŒ2t	        d|› d|› d| j
                  › d|j                  › d|› d�«      ‚ | j                  j                  |j                  «       |j                  }|t        t        |dd«      «      z  }| j                  j                  |j                  d	«      «       y y )
NúGlobal variable z has value z when compiling z, but inner kernel z has conflicting value z7 from when it was first compiled.  This is not allowed.ÚnoinlineFr   )r$   ÚJITFunctionr.   ÚkeysÚRuntimeErrorr'   Ú__name__ÚupdateÚ	cache_keyÚstrr#   r+   r*   )r0   r?   ÚkÚvar_nameÚ_Úv1Úv2Úfunc_keys           r3   Ú_update_hashzDependenciesFinder._update_hashS   s3  € Ü�dœKÕ(ð ×*Ñ*×/Ñ/Ó1°D×4IÑ4I×4NÑ4NÓ4PÑPò �Ø‘�˜!Ø×-Ñ-¨aÑ0‘��AØ×-Ñ-¨aÑ0‘��AØ˜“8Ü&Ø*¨8¨*°KÀ¸tÐCSÐTX×T]ÑT]ÐS^Ð^qÐrv×rÑrð  rAð  AXð  Y[ð  X\ð  \Sð  Tóð ðð ×!Ñ!×(Ñ(¨×)>Ñ)>Ô?à—~‘~ˆHØœœG D¨*°eÓ<Ó=Ñ=ˆHØ�K‰K×Ñ˜xŸ™¨wÓ7Õ8ð )r4   c                ó$  — t        |j                  «      t        j                  u r|j                  S |j                  | j
                  v ry | j                  j                  |j                  d «      }|�Œ| j                  s€t        |«      t        urot        |t        «      s_t        |dd«      sR|j                  | j                  vr:|| j                  f| j                  |j                  t	        | j                  «      f<   | j                  |«       |S )NÚ__triton_builtin__F)ÚtypeÚctxÚastÚStoreÚidÚlocal_namesr,   Úgetr/   r   r$   rH   r#   r-   r.   rU   )r0   rB   Úvals      r3   Ú
visit_NamezDependenciesFinder.visit_Namee   s×   € Ü�—‘‹>œSŸY™YÑ&Ø—7‘7ˆNà�7‰7�d×&Ñ&Ñ&àà�l‰l×Ñ˜tŸw™w¨Ó-ˆð
 ˆOð ×7Ò7ô ˜“I¤ZÑ/ô # 3¬Ô4¼WÀSÐJ^Ð`eÔ=fØ—G‘G 4×#AÑ#AÑAØBEÀtÇ|Á|ÐATˆD×!Ñ! 4§7¡7¬B¨t¯|©|Ó,<Ð"=Ñ>à×Ñ˜#ÔØˆ
r4   c                ó^   — |j                   D �cg c]  }| j                  |«      ‘Œ c}S c c}w r6   )ÚeltsÚvisit)r0   rB   Úelts      r3   Úvisit_TuplezDependenciesFinder.visit_Tupleƒ   s$   € ð ,0¯9©9Ö5 C�—
‘
˜3•Ò5Ð5ùÒ5s   �*c                óX  — | j                  |j                  «      }t        |t        j                  «      r6| j                  |j                  «      }t        |t        j                  «      rŒ6|�t        |dd«      t        k(  ry t        ||j                  «      }| j                  |«       |S )NrK   r<   )	rc   Úvaluer$   rZ   Ú	Attributer#   rA   ÚattrrU   )r0   rB   Úlhsr9   s       r3   Úvisit_Attributez"DependenciesFinder.visit_Attributeˆ   s   € Ø�j‰j˜Ÿ™Ó$ˆÜ˜œcŸm™mÔ,Ø—*‘*˜SŸY™YÓ'ˆCô ˜œcŸm™mÕ,àˆ;œ7 3¨
°BÓ7¼=ÒHØÜ�c˜4Ÿ9™9Ó%ˆØ×Ñ˜#ÔØˆ
r4   c                ó–   — |j                   j                   D �ch c]  }|j                  ’Œ c}| _        | j                  |«       y c c}w r6   )ÚargsÚargr]   Úgeneric_visit)r0   rB   rn   s      r3   Úvisit_FunctionDefz$DependenciesFinder.visit_FunctionDef’   s4   € à/3¯y©y¯~©~Ö>¨˜CŸG›GÒ>ˆÔØ×Ñ˜4Õ ùò ?s   ™Ac                óp  ‡ — ˆ fd„}t        j                  |j                  |j                  |j                  r|j                  gng |j
                  «      D ]  }‰ j                  |«       Œ  ||j                  «       |j                  �‰ j                  |j                  «        ||j                  «       y )Nc                ó�   •— 	 ‰j                   rJ ‚d‰_         | D ]  }|€Œ‰j                  |«       Œ 	 d‰_         y # d‰_         w xY w)NTF)r/   rc   )ÚdefaultsÚexprr0   s     €r3   Úvisit_defaultsz:DependenciesFinder.visit_arguments.<locals>.visit_defaults£   sS   ø€ ð8Ø×:Ò:Ð:Ð:Ø26�Ô/Ø$ò )�DØÑ'ØŸ
™
 4Õ(ñ)ð 38�Õ/ø°%�Õ/ús   ƒ<  < ¼	A)
Ú	itertoolsÚchainÚposonlyargsrm   ÚvarargÚ
kwonlyargsrc   Úkw_defaultsÚkwargrs   )r0   rB   ru   rn   s   `   r3   Úvisit_argumentsz"DependenciesFinder.visit_arguments—   sŒ   ø€ ô	8ô —?‘? 4×#3Ñ#3°T·Y±YÐQU×Q\ÒQ\ÀÇÁÁÐbdÐfj×fuÑfuÓvò 	ˆCØ�J‰J�s�Oð	ñ 	�t×'Ñ'Ô(à�:‰:Ð!Ø�J‰J�t—z‘zÔ"á�t—}‘}Õ%r4   c                óº   — | j                  |«      }t        |t        «      r| xj                  t	        |«      z  c_        y | j                  j                  |«       y r6   )rc   r$   r   r]   ÚsetÚadd)r0   rB   Útargets      r3   ÚvisitAssnTargetz"DependenciesFinder.visitAssnTarget·   sE   € ð —‘˜DÓ!ˆÜ�fœdÔ#Ø×Ò¤ F£Ñ+Öà×Ñ× Ñ  Õ(r4   c                ó¨   — t        |j                  «      dk7  rt        d«      ‚| j                  |j                  d   «       | j	                  |«       y )Né   z2Simultaneous multiple assignment is not supported.r   )r   ÚtargetsÚ	TypeErrorr‚   ro   ©r0   rB   s     r3   Úvisit_AssignzDependenciesFinder.visit_AssignÀ   sG   € Üˆt�|‰|Ó Ò!ô
 ÐPÓQÐQà×Ñ˜TŸ\™\¨!™_Ô-ð 	×Ñ˜4Õ r4   c                ó\   — | j                  |j                  «       | j                  |«       y r6   ©r‚   r�   ro   r‡   s     r3   Úvisit_AnnAssignz"DependenciesFinder.visit_AnnAssignÍ   ó$   € Ø×Ñ˜TŸ[™[Ô)ð 	×Ñ˜4Õ r4   c                ó\   — | j                  |j                  «       | j                  |«       y r6   rŠ   r‡   s     r3   Ú	visit_ForzDependenciesFinder.visit_ForÓ   rŒ   r4   )ÚreturnÚNone)rK   r;   Ú__qualname__Ú__doc__r&   Úpropertyr9   rD   rU   r`   re   rk   rp   r}   r‚   rˆ   r‹   rŽ   Ú__classcell__©r2   s   @r3   r   r      sZ   ø„ ñ	õ"0ðH ñ'ó ð'ò0ò9ò$ò<6ò
ò!ò
&ò@)ò!ò!ö!r4   r   c                ót   — t        | t        «      r| j                  S t        | t        «      r| S t	        | «      S r6   )r$   rX   rK   rN   Úrepr)Útys    r3   Ú_normalize_tyr™   ß   s.   € Ü�"”dÔØ�{‰{ÐÜ	�BœÔ	Øˆ	Ü�‹8€Or4   c                  óŒ   — e Zd ZdZ	 	 dd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zy
)ÚKernelParamzBRepresents a parameter (name plus metadata) to a @jit'ed function.c                ó<   — || _         || _        || _        || _        y r6   )ÚnumÚ_paramÚdo_not_specializeÚdo_not_specialize_on_alignment)r0   r�   ÚparamrŸ   r    s        r3   r&   zKernelParam.__init__ê   s    € àˆŒØˆŒØ!2ˆÔØ.LˆÕ+r4   c                ó.   — | j                   j                  S r6   )rž   r'   r8   s    r3   r'   zKernelParam.nameñ   s   € à�{‰{×ÑÐr4   c                óÐ   — | j                   j                  r1| j                   j                  t        j                  j                  k(  ryt        | j                   j                  «      S )Nr<   )rž   Ú
annotationr=   Ú	ParameterÚemptyr™   r8   s    r3   r¤   zKernelParam.annotationõ   sD   € à�{‰{×%Ò%¨¯©×)?Ñ)?Ä7×CTÑCT×CZÑCZÒ)ZØÜ˜TŸ[™[×3Ñ3Ó4Ð4r4   c                óš   — | j                   }dD ]4  \  }}||j                  |«      t        |«      z   d  }|sŒ)||v sŒ.|› |› �c S  |dk(  ryy)N))ÚuintÚu)r   ÚiÚboolÚu1r<   )r¤   Úfindr   )r0   r¤   Úty1Úty2Úwidths        r3   Úannotation_typezKernelParam.annotation_typeû   se   € à—_‘_ˆ
Ø5ò 	'‰HˆC�Ø˜zŸ™¨sÓ3´c¸#³hÑ>Ð?Ð@ˆEÚ˜ 
Ò*Ø˜˜u˜g�Ò&ð	'ð ˜ÒØØr4   c                ó   — d| j                   v S ©NÚ	constexpr)r¤   r8   s    r3   Úis_constexprzKernelParam.is_constexpr  s   € à˜dŸo™oÐ-Ð-r4   c                ó<   — d| j                   v xr | j                   S )NÚconst)r¤   rµ   r8   s    r3   Úis_constzKernelParam.is_const
  s   € à˜$Ÿ/™/Ð)ÒC°$×2CÑ2CÐ.CÐCr4   c                ó.   — | j                   j                  S r6   )rž   Údefaultr8   s    r3   rº   zKernelParam.default  s   € à�{‰{×"Ñ"Ð"r4   c                ód   — | j                   j                  t        j                  j                  k7  S r6   )rž   rº   r=   r¥   r¦   r8   s    r3   Úhas_defaultzKernelParam.has_default  s#   € à�{‰{×"Ñ"¤g×&7Ñ&7×&=Ñ&=Ñ=Ð=r4   N)r�   r   r¡   zinspect.ParameterrŸ   r«   r    r«   )rK   r;   r‘   r’   r&   r   r'   r¤   r±   rµ   r¸   r“   rº   r¼   © r4   r3   r›   r›   ç   s¢   „ ÙLðMØ15óMð ñ ó ð ð ñ5ó ð5ð
 ñó ðð ñ.ó ð.ð ñDó ðDð ñ#ó ð#ð ñ>ó ñ>r4   r›   c                 ól   ‡ ‡— t         r	t         d   S ddlmŠ  dˆ ˆfd„	Št         j                  ‰«       ‰S )Néÿÿÿÿr   )r´   c                ó  •‡ — ‰ €yt        ‰ t        «      rd‰ j                  fS t        ‰ ‰«      rd‰ fS t        ‰ t        «      ryt        ‰ t        «      r7|r |‰ d|¬«      nd }‰ dk(  r|ryd‰ k  r	‰ d	k  rd
|fS d‰ k  r	‰ dk  rd|fS d|fS t        ‰ t
        «      ryt        ‰ d«      ryt        ‰ t        «      rQ‰ D �cg c]  } ‰||«      ‘Œ }}ˆ fd„} ||D �cg c]  }|d   ‘Œ	 c}«      }	 ||D �cg c]  }|d   ‘Œ	 c}«      }
|	|
fS ‰ j                  |f}t        j                  |d «      }|€:|d   rdndt        t        |d   «      j                  d«      d      z   }|t        |<   |r |‰ d|¬«      nd }||fS c c}w c c}w c c}w )N)r´   Nr´   )Úi1Nr   )Úalignr„   )r´   r„   i   €iÿÿÿÚi32l            l   ÿÿÿÿ Úu64Úi64)Úfp32NÚtma_desc_cpu_ptr)Ú	nvTmaDescNc                óN   •— t        ‰d«      r t        ‰«      | Ž S t        | «      S )NÚ_fields)ÚhasattrrX   Útuple)Úvalsrn   s    €r3   ú<lambda>zAcreate_specialize_impl.<locals>.specialize_impl.<locals>.<lambda>;  s&   ø€ ¼'À#ÀyÔ:Q i¤d¨3£i°Ð&6€ ÔW\Ð]aÓWb€ r4   r   z*kÚ*ú.r¿   Útensor)r$   rH   rM   r«   r   r    rË   rÌ   ÚdtypeÚ	dtype2strr^   Útype_canonicalisation_dictrN   Úsplit)rn   Úspecialize_extrar¸   Úspecialize_valuerÂ   ÚkeyÚxÚspecÚ
make_tupleÚtysrI   ÚdskÚresr´   Úspecialize_impls   `            €€r3   rß   z/create_specialize_impl.<locals>.specialize_impl!  s¹  ù€ àˆ;Ø&Ü˜œ[Ô)Ø §¡Ð/Ð/Ü˜˜YÔ'Ø Ð%Ð%Ü˜œTÔ"ØÜ˜œSÔ!Ù?OÑ" 3¨°UÕ;ÐUYˆCØ�aŠxÑ,Ø'Ø˜S’ S¨IÒ%5Ø˜s�|Ð#Ø˜#’ #¨Ò"2Ø˜s�|Ð#à˜s�|Ð#Ü˜œUÔ#Ø!Ü�SÐ,Ô-Ø&Ü˜œUÔ#ØBEÖF¸Q‘O AÐ'7Õ8ÐFˆDÐFÛbˆJÙ¨DÖ1 q˜a ›dÒ1Ó2ˆCÙ¨TÖ2¨˜q ›tÒ2Ó3ˆDØ˜�;Ðð —9‘9˜hÐ'ˆCÜ—-‘-  TÓ*ˆCØˆ{Ø" 1šv‘t¨3Ô2LÌSÐQTÐUVÑQWË[×M^ÑM^Ð_bÓMcÐdfÑMgÑ2hÑh�Ø!$”	˜#‘ÙBRÑ" 3¨¸Õ>ÐX\ˆCØ˜�:Ðùò Gùâ1ùÚ2s   Â>E>ÃFÃ4F)FTT)Úspecialize_impl_cacheÚlanguager´   Úappend)r´   rß   s   @@r3   Úcreate_specialize_implrã     s0   ù€ ÝÜ$ RÑ(Ð(å$ö&ôP × Ñ  Ô1ØÐr4   c                ó4   — t        «       } || d„ |¬«      d   S )Nc                 ó   — y r6   r½   )rQ   Úkwargss     r3   rÎ   zmangle_type.<locals>.<lambda>O  s   � r4   )r×   r   )rã   )rn   Ú
specializerß   s      r3   Úmangle_typerè   M  s    € Ü,Ó.€OÙ˜3Ñ 8È:ÔVÐWXÑYÐYr4   c                  ó    — e Zd ZU ded<   dd„Zy)ÚKernelInterfacer   Úrunc                ó   ‡ ‡— ˆˆ fd„S )z­
        A JIT function is launched with: fn[grid](*args, **kwargs).
        Hence JITFunction.__getitem__ returns a callable proxy that
        memorizes the grid.
        c                 ó.   •—  ‰j                   | ‰ddœ|¤ŽS )NF©ÚgridÚwarmup)rë   )rm   ræ   rï   r0   s     €€r3   rÎ   z-KernelInterface.__getitem__.<locals>.<lambda>[  s   ø€  x t§x¡xÈ$°TÀ%Ñ'YÐRXÑ'Y€ r4   r½   )r0   rï   s   ``r3   Ú__getitem__zKernelInterface.__getitem__U  s   ù€ ô ZÐYr4   N)r�   r   )rK   r;   r‘   Ú__annotations__rñ   r½   r4   r3   rê   rê   R  s   … Ø	
ƒFôZr4   rê   c           
     óø  — |j                  «       D ��ci c],  \  }}||j                  j                  dk(  rt        |«      n|“Œ. }}}dd l}| ||j                  «       D �cg c]  }t        |«      ‘Œ c}t        |j                  «       «      |j                  «       D �cg c]  }t        |«      ‘Œ c}t        |j                  «       «      |j                  dœ}	|j                  |	«      }
|
S c c}}w c c}w c c}w )NrÒ   r   )r'   Ú	signatureÚconstant_keysÚconstant_valsÚ
attrs_keysÚ
attrs_valsÚoptionsrØ   )
Úitemsr2   rK   rN   ÚjsonrI   r   ÚvaluesÚ__dict__Údumps)r'   rô   Ú	constantsÚattrsrù   rØ   rg   rû   rÙ   ÚobjÚserialized_objs              r3   Úserialize_specialization_datar  _  sÕ   € Øen×etÑetÓev×wÑWaÐWZÐ\a� E§O¡O×$<Ñ$<ÀÒ$G”c˜%”jÈUÑRÐw€IÑwÛà 9ÐQZ×Q_ÑQ_ÓQaÖ?bÈAÄÀQÅÒ?bÜˆY×ÑÓÓ À%Ç*Á*Ã,Ö0O¸Q´°aµÒ0OÔ_cÐdi×dpÑdpÓdrÓ_sØ×#Ñ#¨Cñ€Cð
 —Z‘Z “_€NØÐùó xùò @cùÚ0Os   ”1C,Á C2ÂC7c                óX  — t        | j                  «      t        |«      k(  sJ ‚g }t        | j                  j                  «       |«      D ]§  \  }}|j                  r|j                  d|› d�«       Œ(|j                  rdnd}|j                  rdnd}|j                  rdnd}d|› d|› d|› d|› d�	}	|j                  r#|j                  d|j                  › d	|	› d
�«       Œ–|j                  |	› «       Œ© d„ }
ddj                  t        t        |
| j                  j                  «       «      «      dgz   «      › ddj                  | j                  j                  «       D �cg c]
  }d|› d|› �‘Œ c}«      › ddj                  |«      › d�}| j                  j                  «       D ��ci c];  \  }}|j                  t        j                   j"                  urd|› �|j                  “Œ= }}}t$        |d<   t'        «       |d<   |j(                  |d<   t+        ||«       |d   S c c}w c c}}w )a2  
    Equivalent to sig.bind followed by apply_defaults. This generates a
    native Python function (using exec) which can be memoized on a per-kernel
    basis to avoid having to run these expensive functions -- which constitute
    much of the kernel launch overhead -- every time we run the kernel.
    z("constexpr", ú)ÚTrueÚFalsezspecialize_impl(z, specialize_extra, ú, z("z",) + z[1:]c                óx   — | d   j                   t        j                  j                  u r| d   S | d   › d| d   › �S )Nr„   r   z	=default_)rº   r=   r¥   r¦   )rÙ   s    r3   rÎ   z0create_function_from_signature.<locals>.<lambda>„  sA   € ˜A˜a™DŸL™L¬G×,=Ñ,=×,CÑ,CÑC�A�a‘D€ ÈAÈaÉDÈ6ÐQZÐ[\Ð]^Ñ[_ÐZ`ÐIa€ r4   z
def dynamic_func(z	**optionsz):
    params = {ú'z': z}
    specialization = [ú,z-]
    return params, specialization, options
Údefault_rH   rß   rÖ   Údynamic_func)r   Ú
parametersÚziprI   rµ   râ   r¸   rŸ   r    r±   Újoinr   Úmaprú   rº   r=   r¥   r¦   rH   rã   Úget_arg_specializationÚexec)ÚsigÚkparamsÚbackendÚspecializationr'   Úkpr¸   rç   rÂ   r9   rn   Ú	func_bodyr¡   Úfunc_namespaces                 r3   Úcreate_function_from_signaturer  k  s4  € ô ˆs�~‰~Ó¤# g£,Ò.Ð.Ð.à€Nä˜Ÿ™×+Ñ+Ó-¨wÓ7ò 0‰ˆˆbØ�?Š?Ø×!Ñ! N°4°&¸Ð":Õ;à!#§¢‘v°'ˆHØ$&×$8Ò$8™¸fˆJØ!×@Ò@‘GÀfˆEØ$ T FÐ*>¸x¸jÈÈ:È,ÐVXÐY^ÐX_Ð_`ÐaˆCØ×!Ò!Ø×%Ñ%¨¨2×+=Ñ+=Ð*>¸fÀSÀEÈÐ&NÕOà×%Ñ%¨¨Õ/ð0ñ b€CðØ—)‘)œD¤ S¨#¯.©.×*>Ñ*>Ó*@Ó!AÓBÀkÀ]ÑRÓSÐTð UØ—	‘	¸3¿>¹>×;NÑ;NÓ;PÖQ°4˜Q˜t˜f C¨ vÒ.ÒQÓRÐSð TØ—x‘x Ó/Ð0ð 1ð€Ið Ÿ>™>×/Ñ/Ó1÷áˆD�%Ø�=‰=¤× 1Ñ 1× 7Ñ 7Ñ7ð �4�&Ð˜5Ÿ=™=Ñ(ð€Nñ ô %0€N�=Ñ!Ü(>Ó(@€NÐ$Ñ%Ø)0×)GÑ)G€NÐ%Ñ&ô 	ˆ�NÔ#ð ˜.Ñ)Ð)ùò' Rùó
s   Å H!Æ(A H&r«   rÁ   Ú
float8e4nvÚfp8e4nvÚfloat8e5Úfp8e5Úfloat8e4b15Úfp8e4b15Úfloat8_e4m3fnÚ
float8e4b8Úfp8e4b8Úfloat8_e4m3fnuzÚfloat8_e5m2Úfloat8e5b16Úfp8e5b16Úfloat8_e5m2fnuzÚfloat16Úfp16Úbfloat16Úbf16Úfloat32rÆ   Úfloat64Úfp64Úint8Úi8Úint16Úi16Úint32rÃ   rÅ   Úu8Úu16Úu32rÄ   )Úint64Úuint8Úuint16Úuint32Úuint64c                  óˆ   ‡ — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z		 	 dd„Z
ed„ «       Zd	„ Zd
„ Zd„ Zd„ Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )rH   Nc	                óÚ  — |rt         j                  nt         j                  }	|	€y| j                  j                  }
| j                  j
                  }dj                  t        | j                  |d   «      D ��cg c]  \  }}|j                  › d|› �‘Œ c}}«      }|
› d|j                  › d|j                  › d|j                  › d|j                  › d	|j                  › d
|› d�} G d„ d«      }t        |
|||d   ||«      }||||j                  |j                  |j                  |j                  |j                  |j                   |||dœ} |	|| |||
| «      d|i|¥|d¬«      S c c}}w )NFr  r„   z: z[num_warps=z, num_ctas=z, num_stages=z, enable_fp_fusion=z, launch_cooperative_grid=ú](r  c                  ó   — e Zd Zd„ Zy)ú/JITFunction._call_hook.<locals>.JitFunctionInfoc                ó.   — || _         || _        || _        y r6   )rC   r'   Újit_function)r0   rC   r'   rD  s       r3   r&   z8JITFunction._call_hook.<locals>.JitFunctionInfo.__init__Ø  s   € Ø$�”Ø �”	Ø$0�Ô!Ør4   N)rK   r;   r‘   r&   r½   r4   r3   ÚJitFunctionInforB  Ö  s   „ ór4   rE  r   )rô   Údevicerÿ   Ú	num_warpsÚnum_ctasÚ
num_stagesÚenable_fp_fusionÚlaunch_cooperative_gridÚextern_libsÚconfigsÚspecialization_dataÚ	is_warmuprØ   )rØ   r—   ÚfnÚcompileÚis_manual_warmupÚalready_compiled)rH   Ú
cache_hookÚcompiled_hookrP  rK   r;   r  r  Úparamsr'   rG  rH  rI  rJ  rK  r  rL  )r0   rØ   rô   rF  rÿ   rù   rM  rO  ÚbeforeÚhookr'   rC   r¡   r˜   Ú	arg_reprsr—   rE  rN  ræ   s                      r3   Ú
_call_hookzJITFunction._call_hookÂ  sÊ  € ñ *0Œ{×%Ò%´[×5NÑ5NˆØˆ<Øà�w‰w×ÑˆØ—‘×#Ñ#ˆØ—I‘IÄcÈ$Ï+É+ÐWZÐ[\ÑW]ÓF^×_¹¸À %§*¡* ¨R°¨tÒ4Ó_Ó`ˆ	Ø��{ 7×#4Ñ#4Ð"5°[À×AQÑAQÐ@RÐR_Ð`g×`rÑ`rÐ_sð  tGð  HO÷  H`ñ  H`ð  Gað  a{ð  |C÷  |[ñ  |[ð  {\ð  \^ð  _hð  ^ið  ijð  kˆ÷	ñ 	ô <¸DÀ)ÈYÐX_Ð`aÑXbÐdkÐmpÓqÐð #ØØ"Ø ×*Ñ*Ø×(Ñ(Ø!×,Ñ,Ø '× 8Ñ 8Ø'.×'FÑ'FØ"×.Ñ.ØØ#6Ø"ñ
ˆñ ØØÙ˜v t¨TÓ2Ø˜CÐ* 6Ð*Ø&Ø"ô
ð 	
ùó9 `s   Á9E'
c                óT   — t        |«      sJ ‚| j                  j                  |«       y)z�
        Add a hook that will be executed prior to the execution of run
        function with args and kwargs passed into the kernel
        N)ÚcallableÚpre_run_hooksrâ   )r0   rX  s     r3   Úadd_pre_run_hookzJITFunction.add_pre_run_hookø  s$   € ô
 ˜Œ~Ðˆ~Ø×Ñ×!Ñ! $Õ'r4   c                óÞ   — ddl m}m}m}m} t
        j                  j                  «       } ||«      }|| _        || _        || _        t        | j                  | j                  |«      }i |||fS )z1
        Precompute as much as possible.
        r   )ÚCompiledKernelrQ  Ú	ASTSourceÚmake_backend)Úcompilerr`  rQ  ra  rb  r   ÚactiveÚget_current_targetr  rô   rV  )r0   r`  rQ  ra  rb  r�   r  Úbinders           r3   Úcreate_binderzJITFunction.create_binder   sb   € ÷ 	PÓOÜ—‘×1Ñ1Ó3ˆÙ˜vÓ&ˆØ,ˆÔØˆŒØ"ˆŒÜ/°·±ÀÇÁÈWÓUˆØ�6˜7 FÐ*Ð*r4   c               óš  — |j                  d| j                  «      xs# t        j                  j                  dd«      dk(  |d<   t        j
                  j                  «       }t        j
                  j                  |«      }| j                  D ]
  } ||i |¤Ž Œ | j                  |   \  }}	}
} ||i |¤Ž\  }}}t        |«      t        |«      z   }|j                  |d «      }|�€ |
j                  |«      }| j                  D �cg c]  }|j                  ‘Œ }}|D �cg c]  }|d   ‘Œ	 }}t        ||«      D ��ci c]  \  }}||“Œ
 }}}d|vsJ d«       ‚d|vsJ d	«       ‚d
|vsJ d«       ‚|D ]#  }||j                  vsŒ||vsŒt!        d|z  «      ‚ t#        |d„ «      }|D �ci c]&  }|t%        t'        |j)                  «       «      |«      “Œ( }}|D �cg c]  }|d   ‘Œ	 }}t#        |d„ «      }|D �ci c]  }||
j+                  t%        ||«      «      “Œ  }}| j-                  ||||||g|d¬«      ry | j/                  | |||«      }| j1                  ||	|j                  ¬«      }|||<   | j-                  ||||||g|d¬«       t3        «       }| j4                  j7                  «       D ]6  \  \  }}\  }} | j                  ||«      x}!|k7  sŒ$t9        d|› d|› d|!› �«      ‚ |sÆ|€J ‚t;        |«      r ||«      }t=        |«      }"|d   }#|"dkD  r|d   nd}$|"dkD  r|d   nd}% |j>                  ||g|j)                  «       ¢­Ž }& |j@                  |#|$|%||jB                  |jD                  |&| jF                  jH                  | jF                  jJ                  g	|j)                  «       ¢­Ž  |S c c}w c c}w c c}}w c c}w c c}w c c}w )NÚdebugÚTRITON_DEBUGÚ0Ú1r   Údevice_typez=device_type option is deprecated; current target will be usedrF  z8device option is deprecated; current device will be usedÚstreamz8stream option is deprecated; current stream will be usedz2Keyword argument %s was specified but unrecognisedc                ó   — |dk(  S r³   r½   )rQ   r_   s     r3   rÎ   z!JITFunction.run.<locals>.<lambda>/  s   € ¸sÀkÑ?Q€ r4   r„   c                ó"   — t        |t        «      S r6   )r$   rN   )rQ   rÙ   s     r3   rÎ   z!JITFunction.run.<locals>.<lambda>3  s   € ¼ÀAÄsÓ9K€ r4   T)rW  )r�   rù   FrF   z1 has changed since we compiled this kernel, from z to r   )&r^   ri  ÚosÚenvironr   rd  Úget_current_deviceÚget_current_streamr]  Údevice_cachesrN   Úparse_optionsrV  r'   r  rý   ÚKeyErrorr   r   r   rü   Ú
parse_attrrZ  ra  rQ  Úobjectr.   rú   rJ   r\  r   Úlaunch_metadatarë   ÚfunctionÚpacked_metadatar`  Úlaunch_enter_hookÚlaunch_exit_hook)'r0   rï   rð   rm   ræ   rF  rn  rX  Úkernel_cacher�   r  rf  Ú
bound_argsr  rù   rØ   ÚkernelrÙ   ÚsigkeysÚsigvalsrO   Úvrô   Ú
constexprsÚpathÚattrvalsr   r1   Únot_presentr'   rQ   r_   Úglobals_dictÚnewValÚ	grid_sizeÚgrid_0Úgrid_1Úgrid_2rz  s'                                          r3   rë   zJITFunction.run  s'  € Ø Ÿ*™* W¨d¯j©jÓ9Òg¼R¿Z¹Z¿^¹^ÈNÐ\_Ó=`ÐdgÑ=gˆˆw‰ô —‘×1Ñ1Ó3ˆÜ—‘×1Ñ1°&Ó9ˆð ×&Ñ&ò 	"ˆDÙ�$Ð!˜&Ó!ð	"ð 15×0BÑ0BÀ6Ñ0JÑ-ˆ�f˜g vÙ.4°dÐ.E¸fÑ.EÑ+ˆ
�N Gô �.Ó!¤C¨£LÑ0ˆØ×!Ñ! # tÓ,ˆð ‰>à×+Ñ+¨FÓ3ˆGà'+§{¡{Ö3 !�q—v“vÐ3ˆGÐ3Ø%3Ö4 �q˜“tÐ4ˆGÐ4Ü,/°¸Ó,A×B¡& 1 a˜˜A™ÐBˆIÑBà ¨Ñ.ÐoÐ0oÓoÐ.Ø 6Ñ)ÐeÐ+eÓeÐ)Ø 6Ñ)ÐeÐ+eÓeÐ)Øò ]�Ø˜G×,Ñ,Ò,°¸'Ò1AÜ"Ð#WÐZ[Ñ#[Ó\Ð\ð]ô ' wÑ0QÓRˆJØ_iÖjÐW[˜$Ô 1´$°z×7HÑ7HÓ7JÓ2KÈTÓ RÑRÐjˆJÐjà&4Ö5 ˜˜!›Ð5ˆHÐ5Ü! (Ñ,KÓLˆEØTYÖZÈq�Q˜×*Ñ*Ô+<¸XÀqÓ+IÓJÑJÐZˆEÐZØ�‰˜s I¨v°zÀ7ÈUÈGÐU[ÐdhˆÔiØà—.‘.  y°*¸eÓDˆCØ—\‘\ #¨f¸g×>NÑ>N�\ÓOˆFØ &ˆL˜ÑØ�O‰O˜C ¨F°JÀÈ%ÈÐRXÐafˆOÔgô “hˆØ.2×.CÑ.C×.IÑ.IÓ.Kò 	qÑ*‰IˆT�1Ñ*˜˜\Ø&×*Ñ*¨4°Ó=Ð=�À#ÓEÜ"Ø& t fÐ,]Ð^aÐ]bÐbfÐgmÐfnÐoóqð qð	qñ
 àÐ#Ð#Ð#Ü˜Œ~Ù˜JÓ'�Ü˜D›	ˆIØ˜!‘WˆFØ )¨A¢�T˜!’W°1ˆFØ )¨A¢�T˜!’W°1ˆFà4˜f×4Ñ4°T¸6ÐXÀJ×DUÑDUÓDWÒXˆOØˆF�J‰J�v˜v v¨v°v·±È×H^ÑH^Ø&¨×(;Ñ(;×(MÑ(MÈt×ObÑOb×OsÑOsð-à"×)Ñ)Ó+ó-ð ˆùò] 4ùÚ4ùÛBùò kùâ5ùâZs$   ÄN.ÄN3Ä<N8Æ&+N>ÇOÇ6#Oc                óT   — | j                   €| j                  S | j                  |«      S r6   )Ú_reprÚ_fn_name)r0   rQ   s     r3   r—   zJITFunction.reprT  s"   € Ø $§
¡
Ð 2ˆt�}‰}ÐE¸¿
¹
À1»ÐEr4   c	           	     óø  — |r|ng }|r|ng }|| _         |j                  | _        || _        t	        j
                  |«      | _        || _        || _        t	        j                  |«      d   | _	        || _
        |j                  | _        || _        g | _        t        | j
                  j                   j#                  «       «      D ]T  \  }	}
|	|v xs |
j$                  |v }|	|v xs |
j$                  |v }| j                  j'                  t)        |	|
||«      «       ŒV t+        j,                  t	        j.                  |«      «      }|t1        j2                  d|t0        j4                  «      j7                  «       d  }| j9                  |«       t;        | j<                  «      | _        d | _         i | _!        d | _"        || _#        || _$        | j                  D �cg c]  }|j$                  ‘Œ c}| _%        | j                  D �cg c]  }|jL                  sŒ|jN                  ‘Œ c}| _(        g | _)        |jT                  | _*        |j                  | _        |jV                  | _+        |j                  | _        y c c}w c c}w )Nr„   z^def\s+\w+\s*\(),rP  r;   rC   Úversionr=   rô   rŸ   r    ÚgetsourcelinesÚstarting_line_numberr�  rK   r‘  rz  rV  Ú	enumerater  rü   r'   râ   r›   ÚtextwrapÚdedentÚ	getsourceÚreÚsearchÚ	MULTILINEÚstartÚ_unsafe_update_srcr   rg  ru  Úhashr.   r�  ri  rG   Ú	arg_namesrµ   r�   r…  r]  r’   Ú__globals__)r0   rP  r“  rŸ   r    ri  rG   r—   rz  rª   r¡   ÚdnsÚdns_oar1   Úps                  r3   r&   zJITFunction.__init__W  s  € á1BÑ-ÈÐÙKiÑ)GÐoqÐ&àˆŒØ—m‘mˆŒØˆŒÜ ×*Ñ*¨2Ó.ˆŒØ!2ˆÔØ.LˆÔ+Ü$+×$:Ñ$:¸2Ó$>¸qÑ$AˆÔ!ØˆŒ
ØŸ™ˆŒØ.ˆÔàˆŒÜ! $§.¡.×";Ñ";×"BÑ"BÓ"DÓEò 	C‰HˆAˆuØÐ(Ð(ÒK¨E¯J©JÐ:KÐ,KˆCØÐ8Ð8Òh¸E¿J¹JÐJhÐ<hˆFØ�K‰K×Ñœ{¨1¨e°S¸&ÓAÕBð	Cô �o‰oœg×/Ñ/°Ó3Ó4ˆØ”"—)‘)Ð.°´R·\±\ÓB×HÑHÓJÐKÐLˆØ×Ñ Ô$ä(¨×);Ñ);Ó<ˆÔØˆŒ	ð TVˆÔð ˆŒØˆŒ
Ø ˆŒð +/¯+©+Ö6 Q˜!Ÿ&›&Ò6ˆŒØ*.¯+©+ÖH Q¸¿»˜1Ÿ5›5ÒHˆŒð  ˆÔð —z‘zˆŒØŸ™ˆŒØŸ>™>ˆÔØŸ-™-ˆ�ùò 7ùÚHs   ÇI2Ç>I7ÈI7c                óx  — | j                   €£t        | j                  | j                  | j                  ¬«      }|j                  | j                  «       «       |j                  t        | j                  «      z   | _         t        t        |j                  j                  «       «      «      | _        | j                   S )N)r'   r,   r1   )rŸ  r   rK   r¡  r1   rc   Úparser9   rN   r•  ÚdictÚsortedr.   rú   )r0   Údependencies_finders     r3   rM   zJITFunction.cache_key”  sŒ   € ð �9‰9ÐÜ"4¸$¿-¹-ÐQU×QaÑQaÐgk×goÑgoÔ"pÐØ×%Ñ% d§j¡j£lÔ3Ø+×/Ñ/´#°d×6OÑ6OÓ2PÑPˆDŒIÜ$(¬Ð0C×0TÑ0T×0ZÑ0ZÓ0\Ó)]Ó$^ˆDÔ!Ø�y‰yÐr4   c               ó\   —  | j                   t        t        j                  |«      |ddœ|¤ŽS )NTrî   )rë   r  Ú
MockTensorÚ
wrap_dtype)r0   rï   rm   ræ   s       r3   rð   zJITFunction.warmupž  s*   € Øˆt�x‰x´´Z×5JÑ5JÈDÓ1Q˜T¨$Ñ\ÐU[Ñ\Ð\r4   c           	     ó`  — ddl m}m} dd l}dd lm} t        j                  j                  «       }|j                  |«      }|d   | j                  j                  k7  r(t        d|d   › d| j                  j                  › �«      ‚t        t        |d   «      }|d   }	t        ||	«      D �
�ci c]4  \  }
}|
|j                   j#                  |«      r|j!                  |«      n|“Œ6 }}
}t        t        |d	   «      }|d
   }t%        t        ||«      «      }t%        |d   j'                  «       «      } || |||«      }|d   j'                  «       D �
�ci c]#  \  }
}|
t)        |t*        «      rt        |«      n|“Œ% }}
}|d   }
 ||d |«      }|| j,                  |   d   |
<   |S c c}}
w c c}}
w )Nr   )rQ  ra  r   r'   zSpecialization data is for z but trying to preload for rõ   rö   r÷   rø   rô   rù   rØ   )rc  rQ  ra  rû   Útriton.languagerá   r   rd  rs  ÚloadsrP  rK   rJ   r  rÌ   r  rÒ   Úis_dtyper§  rú   r$   r   ru  )r0   rN  rQ  ra  rû   ÚtlrF  Údeserialized_objrõ   rö   rØ   rg   rÿ   r÷   rø   r   rô   r1   rù   r�  s                       r3   ÚpreloadzJITFunction.preload¡  s¿  € ß1ÛÝ$Ü—‘×1Ñ1Ó3ˆØŸ:™:Ð&9Ó:ÐØ˜FÑ# t§w¡w×'7Ñ'7Ò7ÜØ-Ð.>¸vÑ.FÐ-GÐGbÐcg×cjÑcj×csÑcsÐbtÐuówð wäœEÐ#3°OÑ#DÓEˆØ(¨Ñ9ˆô " -°Ó?÷
á��Uð  B§H¡H×$5Ñ$5°eÔ$<�—‘˜%”À%ÑGð
ˆ	ñ 
ô œÐ 0°Ñ >Ó?ˆ
Ø% lÑ3ˆ
Ü”S˜ ZÓ0Ó1ˆÜÐ)¨+Ñ6×<Ñ<Ó>Ó?ˆ	Ù˜˜i¨°EÓ:ˆð /¨yÑ9×?Ñ?ÓA÷
á��Uð ¤¨E´4Ô!8”�u”¸eÑCð
ˆñ 
ð ˜uÑ%ˆÙ˜˜d GÓ,ˆØ-3ˆ×Ñ˜6Ñ" 1Ñ% cÑ*Øˆùó!
ùó
s   Â-9F$Å(F*c                ó  — t        j                  | j                  «      }t        |t         j                  «      sJ ‚t        |j                  «      dk(  sJ ‚t        |j                  d   t         j                  «      sJ ‚|S )Nr„   r   )rZ   r¦  r1   r$   ÚModuler   ÚbodyÚFunctionDef)r0   Útrees     r3   r¦  zJITFunction.parseÁ  s_   € Ü�y‰y˜Ÿ™Ó"ˆÜ˜$¤§
¡
Ô+Ð+Ð+Ü�4—9‘9‹~ Ò"Ð"Ð"Ü˜$Ÿ)™) A™,¬¯©Ô8Ð8Ð8Øˆr4   c                ó   — t        d«      ‚)Nz:Cannot call @triton.jit'd outside of the scope of a kernel)rJ   )r0   rm   ræ   s      r3   Ú__call__zJITFunction.__call__È  s   € ÜÐWÓXÐXr4   c                óV   •— |dk(  rt        d|› d�«      ‚t        t        | �  ||«       y )Nr1   zCannot set attribute 'zX' directly. Use '_unsafe_update_src()' and manually clear `.hash` of all callersinstead.)ÚAttributeErrorr%   rH   Ú__setattr__)r0   r'   rg   r2   s      €r3   r½  zJITFunction.__setattr__Ë  s<   ø€ à�5Š=Ü Ð#9¸$¸ð @,ð "-ó .ð .ô 	Œk˜4Ñ,¨T°5Õ9r4   c                ó4   •— d| _         t        ‰| �	  d|«       y)zŽ
        The only method allowed to modify src.
        Bypasses the __setattr__ restriction by calling super().__setattr__ directly.
        Nr1   )rŸ  r%   r½  )r0   Únew_srcr2   s     €r3   rž  zJITFunction._unsafe_update_srcÓ  s   ø€ ð
 ˆŒ	Ü‰Ñ˜E 7Õ+r4   c                óP   — d| j                   › d| j                  j                  › d�S )NzJITFunction(ú:r  )rC   rP  rK   r8   s    r3   Ú__repr__zJITFunction.__repr__Û  s&   € Ø˜dŸk™k˜]¨!¨D¯G©G×,<Ñ,<Ð+=¸QÐ?Ð?r4   )NNNNNNN)rK   r;   r‘   rT  rU  rZ  r^  rg  rë   r—   r&   r“   rM   rð   r³  r¦  rº  r½  rž  rÂ  r”   r•   s   @r3   rH   rH   »  sw   ø„ à€Jð €Mò4
òl(ò+òEòNFð mqØ;?ó;(ðz ñó ðò]òò@òYô:ô,ö@r4   rH   c                 ó   — y r6   r½   )rP  s    r3   ÚjitrÄ  ä  s   € àr4   ©r“  r—   rz  rŸ   r    ri  rG   c                 ó   — y r6   r½   rÅ  s          r3   rÄ  rÄ  é  s   € ð r4   c               ó@   ‡‡‡‡‡‡‡— dˆˆˆˆˆˆˆfd„}| � || «      S |S )a<  
    Decorator for JIT-compiling a function using the Triton compiler.

    :note: When a jit'd function is called, arguments are
        implicitly converted to pointers if they have a :code:`.data_ptr()` method
        and a `.dtype` attribute.

    :note: This function will be compiled and run on the GPU. It will only have access to:

           * python primitives,
           * builtins within the triton package,
           * arguments to this function,
           * other jit'd functions

    :param fn: the function to be jit-compiled
    :type fn: Callable
    c           
     ó¢   •— t        | «      sJ ‚t        j                  dd«      dk(  rddlm}  || ‰‰‰‰‰‰‰¬«      S t        | ‰‰‰‰‰‰‰¬«      S )NÚTRITON_INTERPRETrk  rl  r„   )ÚInterpretedFunction)r“  rŸ   r    ri  rG   r—   rz  )r\  rq  ÚgetenvÚinterpreterrÊ  rH   )	rP  rÊ  ri  rŸ   r    rz  rG   r—   r“  s	     €€€€€€€r3   Ú	decoratorzjit.<locals>.decorator  sq   ø€ Ü˜Œ|Ðˆ|Ü�9‰9Ð'¨Ó-°Ò4Ý8Ù& r°7ÐN_ØFdÐlqØ08¸tÐUdôfð fô ØØØ"3Ø/MØØ!ØØ /ô	ð 	r4   ©rP  r   r�   zJITFunction[T]r½   )	rP  r“  r—   rz  rŸ   r    ri  rG   rÍ  s	    ``````` r3   rÄ  rÄ  ÷  s&   þ€ ÷:ó ð& 
€~Ù˜‹}Ðð Ðr4   c                  óF   — e Zd ZdZed„ «       Zd„ Zed„ «       Zed„ «       Zy)r«  zr
    Can be used in place of real tensors when calling:
        kernel.warmup(MockTensor(torch.float32), ...)
    c                ól   — | j                   j                  dk(  r| j                  dk(  rt        | «      S | S )NrÒ   Útorch)r2   rK   r;   r«  )rn   s    r3   r¬  zMockTensor.wrap_dtype9  s.   € à�=‰=×!Ñ! WÒ,°·±À7Ò1JÜ˜c“?Ð"Øˆ
r4   c                ó   — || _         y r6   )rÒ   )r0   rÒ   s     r3   r&   zMockTensor.__init__?  s	   € Øˆ�
r4   c                  ó   — y©Nr   r½   r½   r4   r3   Údata_ptrzMockTensor.data_ptrB  ó   € àr4   c                  ó   — yrÔ  r½   r½   r4   r3   Ú	ptr_rangezMockTensor.ptr_rangeF  rÖ  r4   N)	rK   r;   r‘   r’   Ústaticmethodr¬  r&   rÕ  rØ  r½   r4   r3   r«  r«  3  sH   „ ñð
 ñó ðò
ð ñó ðð ñó ñr4   r«  c                  óJ   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTensorWrapperc                óš   — || _         || _        |j                  | _        |j                  | _        | j                  j                  | _        y r6   )rÒ   ÚbaseÚdatarF  Úshape)r0   rÝ  rÒ   s      r3   r&   zTensorWrapper.__init__M  s5   € ØˆŒ
ØˆŒ	Ø—I‘IˆŒ	Ø—k‘kˆŒØ—Y‘Y—_‘_ˆ�
r4   c                ó6   — | j                   j                  «       S r6   )rÝ  rÕ  r8   s    r3   rÕ  zTensorWrapper.data_ptrT  s   € Ø�y‰y×!Ñ!Ó#Ð#r4   c                ó4   —  | j                   j                  |Ž S r6   )rÝ  Ústride)r0   rm   s     r3   râ  zTensorWrapper.strideW  s   € Øˆt�y‰y×Ñ Ð&Ð&r4   c                ó<   — d| j                   › d| j                  › d�S )NzTensorWrapper[r@  r  )rÒ   rÝ  r8   s    r3   Ú__str__zTensorWrapper.__str__Z  s   € Ø §
¡
˜|¨2¨d¯i©i¨[¸Ð:Ð:r4   c                ó6   — | j                   j                  «       S r6   )rÝ  Úelement_sizer8   s    r3   ræ  zTensorWrapper.element_size]  s   € Ø�y‰y×%Ñ%Ó'Ð'r4   c                ó^   — t        | j                  j                  «       | j                  «      S r6   )rÛ  rÝ  ÚcpurÒ   r8   s    r3   rè  zTensorWrapper.cpu`  s   € Ü˜TŸY™YŸ]™]›_¨d¯j©jÓ9Ð9r4   c                óN   — | j                   j                  |j                   «       y r6   )rÝ  Úcopy_)r0   Úothers     r3   rê  zTensorWrapper.copy_c  s   € Ø�	‰	�‰˜Ÿ
™
Õ#r4   c                ó^   — t        | j                  j                  «       | j                  «      S r6   )rÛ  rÝ  ÚclonerÒ   r8   s    r3   rí  zTensorWrapper.clonef  s   € Ü˜TŸY™YŸ_™_Ó.°·
±
Ó;Ð;r4   c                ó`   — t        | j                  j                  |«      | j                  «      S r6   )rÛ  rÝ  ÚtorÒ   )r0   rF  s     r3   rï  zTensorWrapper.toi  s    € Ü˜TŸY™YŸ\™\¨&Ó1°4·:±:Ó>Ð>r4   c                ó`   — t        | j                  j                  |«      | j                  «      S r6   )rÛ  rÝ  Ú	new_emptyrÒ   )r0   Úsizess     r3   rñ  zTensorWrapper.new_emptyl  s"   € Ü˜TŸY™Y×0Ñ0°Ó7¸¿¹ÓDÐDr4   N©r�   rN   )rK   r;   r‘   r&   rÕ  râ  rä  ræ  rè  rê  rí  rï  rñ  r½   r4   r3   rÛ  rÛ  K  s5   „ ò%ò$ò'ó;ò(ò:ò$ò<ò?óEr4   rÛ  c                óø   — t        | t        «      r;|| j                  j                  k(  r| j                  S t        | j                  |«      S t	        | d«      rt        | |«      S t        dt        | «      › d�«      ‚)NrÕ  zCannot reinterpret a rÐ   )r$   rÛ  rÝ  rÒ   rË   r†   rX   )rÑ   rÒ   s     r3   Úreinterpretrõ  p  sk   € Ü�&œ-Ô(Ø�F—K‘K×%Ñ%Ò%à—;‘;Ðô ! §¡¨eÓ4Ð4Ü	�˜Ô	$ä˜V UÓ+Ð+äÐ/´°V³¨~¸QÐ?Ó@Ð@r4   c                ód  — | }t        |t        «      s|j                  }t        |t        «      sŒ|j                  j                  j                  }t        j                  |j                  «      \  }}t        |«      D ].  \  }}|j                  «       j                  d«      sŒ&||z  } ||fS  ||fS )Nzdef )
r$   rH   rP  Ú__code__Úco_filenamer=   r”  r–  Ústripr@   )rP  Úbase_fnÚ	file_nameÚlinesÚ
begin_lineÚidxÚlines          r3   Úget_jit_fn_file_liner     s§   € Ø€GÜ˜¤+Ô.Ø—*‘*ˆô ˜¤+Õ.à—
‘
×#Ñ#×/Ñ/€IÜ×.Ñ.¨w¯z©zÓ:Ñ€Eˆ:ô ˜uÓ%ò ‰	ˆˆTØ�:‰:‹<×"Ñ" 6Õ*Ø˜#ÑˆJØØ�jÐ Ð ð	ð �jÐ Ð r4   ró  )FrÎ  )r—   úOptional[Callable]rz  r  rŸ   úOptional[Iterable[int]]r    r  ri  úOptional[bool]rG   r  r�   zCallable[[T], JITFunction[T]]r6   )rP  zOptional[T]r—   r  rz  r  rŸ   r  r    r  ri  r  rG   r  r�   z4Union[JITFunction[T], Callable[[T], JITFunction[T]]])9Ú
__future__r   r   rZ   r(   r=   rv   rq  rš  r—  Úcollectionsr   Ú	functoolsr   Útypingr   r   r	   r
   r   r   r   r   r   r   Úruntime.driverr   Útypesr   Ú_utilsr   r   rK   r   rA   r   ÚNodeVisitorr   r™   r›   rÓ   rà   rã   rè   rê   r  r  rÔ   r   rü   r„  rH   rÄ  r«  rÛ  rõ  r   r½   r4   r3   ú<module>r     sï  ðß ,Û 
Û Û Û Û 	Û 	Û Ý #Ý %ß d× d× dÝ #Ý ß 5àÐ.™3˜~Ó.Ð.Ð/€áˆCƒL€ô~!˜Ÿ™ô ~!óL÷->ñ ->ð` €	ØÐ ò/ódZô
	Z�g˜a‘jô 	Zò	ò0*ðfØ
ˆDðà�)ðð �ðð �:ð	ð
 �Yðð �)ðð �yðð �7ðð �:ðð �zðð ˆvðð �ðð ˆvðð ˆvðð ˆDðð  ˆUð!ð" ˆUð#ð$ ØØØØò-Ð ñ2 
Ð(×/Ñ/Ó1Ó	2ò &€AØ$%Ð˜qÒ!ð&ôa@�/ !Ñ$ô a@ðR	 
òó 
ðð 
ð Ø#Ø*.Ø15Ø>BØ Ø#ñ
ð ð
ð (ð	
ð
 /ð
ð %<ð
ð ð
ð ð
ð #ò
ó 
ð
ð ð4ð Ø#Ø*.Ø15Ø>BØ Ø#ñ4Øð4ð ð	4ð
 (ð4ð /ð4ð %<ð4ð ð4ð ð4ð :ó4÷xñ ÷0"Eñ "EòJAó!r4   