ó
    Eñi©  ã                  ó’  • % S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	J
r
JrJrJr  SSKrSSKJrJr  SSKJr  SSKJrJrJrJrJrJr  SS	KJrJr  SS
KJrJ r J!r!J"r"J#r#J$r$J%r%J&r&  SSK'J(r(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1  \(       a2  SSK2J3r3  SSK4J5r5J6r6  SSK7J8r8  SSK9J:r:  SSK;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrB  \R†                  " \D5      rE\RŒ                   " S S5      5       rG\HrIS\JS'   S1S jrKS2S jrLS3S jrM      S4S! jrN        S5S" jrO            S6S# jrP            S6S$ jrQ          S7S% jrR " S& S'5      rS " S( S)\S5      rT\RŒ                   " S* S \G5      5       rU\RŒ                   " S+ S,\G5      5       rV\RŒ                   " S- S.\G5      5       rW\RŒ                   " S/ S0\G5      5       rXg)8aÞ  
This provides an abstract class which parametrizes over an "output code" concept
for Inductor.  Intuitively, this represents the compiled callable which Inductor
produces which you can call to get optimized code.  However, this callable
has some other capabilities:

- It is serializable, so you can save/load this product from disk without
  having to do compilation again.

- (When using remote cache) it is addressable, so you can save just a key
  which you can use to load this product from remote cache later.

This class is abstract because we have several different implementations of
serialized format:

- Python wrapper (the default)

- AOTInductor (this produces ABI stable binaries which work across PyTorch
  versions)

é    )ÚannotationsN)Úpartial)ÚAnyÚOptionalÚTYPE_CHECKINGÚ	TypeAliasÚUnion)ÚcountersÚget_runtime_metrics_context)Úinductor_compiled_code)ÚBoxedDeviceIndexÚCudagraphCachedInfoÚCudagraphMetadataÚ get_partition_cudagraph_metadataÚget_placeholder_infoÚ#log_cudagraph_skip_and_bump_counter)Úhas_frozen_paramsÚis_frozen_param)Ú&_unstable_customized_partition_wrapperÚalign_inputs_from_check_idxsÚ	BoxedBoolÚCUDAGraphWrapperMetadataÚGraphPartitionMapÚ	InputTypeÚoutput_nodeÚ"set_tracing_context_output_strides)Ú_node_metadata_key_filter_safeÚ_ops_filter_safe)Ú
OrderedSet)Úis_in_torch_dispatch_modeé   )Úconfig)ÚAutotuneCacheBundler)ÚCounter)ÚCallableÚSequence)Úmetrics)ÚGraphLowering)ÚFakeScriptObject)ÚWeights)Ú_CompileFxKwargs)ÚTritonBundlec                  óÒ   • \ rS rSr% \R
                  " SSS9rS\S'   \R
                  " SSS9rS\S'   \R
                  " SSS9r	S	\S
'   SS jr
SS jr        SS jrSS jrSrg)Ú
OutputCodeéL   NF)ÚdefaultÚinitúOptional[str]Ú_fx_graph_cache_keyzOptional[list[str]]Ú_fx_graph_cache_debug_lineszOptional[int]Ú_time_taken_nsc                ó*   • [        [        U 5      5      e©N©ÚNotImplementedErrorÚtype©ÚselfÚinputss     ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/output_code.pyÚ__call__ÚOutputCode.__call__Y   ó   € Ü!¤$ t£*Ó-Ð-ó    c                ó*   • [        [        U 5      5      er7   r8   ©r<   s    r>   Úprepare_for_serializationÚ$OutputCode.prepare_for_serialization\   rA   rB   c                ó*   • [        [        U 5      5      er7   r8   ©r<   Úexample_inputsÚ	constantsÚgraph_kwargss       r>   Úpost_compileÚOutputCode.post_compile_   s   € ô "¤$ t£*Ó-Ð-rB   c                ó*   • [        [        U 5      5      er7   r8   ©r<   Útriton_bundles     r>   Úset_triton_bundleÚOutputCode.set_triton_bundleh   rA   rB   © ©r=   zSequence[Any]Úreturnr   ©rU   ÚNone©rI   úSequence[InputType]rJ   ÚCompiledFxGraphConstantsrK   r+   rU   rW   ©rP   r   rU   rW   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚdataclassesÚfieldr3   Ú__annotations__r4   r5   r?   rE   rL   rQ   Ú__static_attributes__rS   rB   r>   r.   r.   L   s�   ‡ ð
 *5×):Ò):À4ÈeÑ)TÐ˜ÓTØ7B×7HÒ7HØ˜5ñ8ÐÐ!4ó ð
 %0×$5Ò$5¸dÈÑ$O€N�MÓOô.ô.ð.à+ð.ð ,ð.ð 'ð	.ð
 
ô.÷.rB   r.   r   Ú_StrideExprStrc                óò   • [        U [        R                  5      (       d  g [        U R                  5       Vs/ s H2  oR                  U5      S:X  d  M  U R                  U5      S:w  d  M0  UPM4     sn$ s  snf ©Nr   r!   )Ú
isinstanceÚtorchÚTensorÚrangeÚndimÚstrideÚsize)ÚtÚis     r>   Úget_expanded_dimsrp   s   sS   € Ü�aœŸ™×&Ñ&àÜ˜QŸV™V”}ÓL’}�!¯©°«°qÑ(8‹A¸Q¿V¹VÀA»YÈ!¹^�A‘}ÑLÐLùÒLs   ¸A4ÁA4Á+A4c                ón   • U H.  n[         R                  R                  R                  XSS5      n M0     U $ rf   )rh   ÚopsÚatenÚslice)rn   Úexpanded_dimsÚexpanded_dims      r>   Úindex_expanded_dimsrw   z   s-   € Û%ˆÜ�I‰I�N‰N× Ñ  °!°QÓ7Šñ &à€HrB   c                ó  • [         R                  (       a  g[        U [        U 5      5      R	                  5       n [
        R                  " U 5      S:w  a¯  U R                  5       nU R                  n[        [        [        U5      5      5      n[        [        X5      5       VVs/ s H  u  pEUPM	     nnn[        [        U5      5       H6  nUS:X  a  SO	XUS-
        nUS:X  a  SO	X#US-
        nXU      Xx-  :  d  M6    g   gs  snnf )NTr   r!   F)r"   Ú*always_complex_memory_overlap_TESTING_ONLYrw   rp   Úsqueezerh   Ú_debug_has_internal_overlaprl   ÚshapeÚlistrj   ÚlenÚsortedÚzip)	rn   ÚstridesÚsizesÚindicesÚ_Úxro   Úprev_strideÚ	prev_sizes	            r>   Úcomplex_memory_overlaprˆ   €   sê   € Ü×8×8Øô 	˜AÔ0°Ó3Ó4×<Ñ<Ó>€AÜ×(Ò(¨Ó+¨qÓ0Ø—(‘(“*ˆØ—‘ˆÜ”uœS ›\Ó*Ó+ˆÜ!'¬¨GÓ(=Ô!>Ô?Ò!>™˜“1Ñ!>ˆÑ?Ü”s˜7“|Ö$ˆAØ  A›v™!¨7¸1¸q¹5±>Ñ+BˆKØ !›V™¨°q¸1±u©~Ñ)>ˆIØ˜q‘zÑ" [Ñ%<Õ<Ùñ	 %ð
 ùó @s   Â$DÚCompiledFxGraphc                ó`  ^^• U R                   c   eU R                  S   nU(       a‡  [        R                  R                  (       ag  Uc   eUR
                  c   eU R                   m[        R                  R                  R                  UR
                  SS9mTc   eSUU4S jjnX0l         g g g )NÚis_backwardF)Úcreate_if_none_existsc                ó4   >• TR                  5         T" U 5      $ r7   )Úset_to_running_backward)Ú
new_inputsÚcompiled_graph_callableÚmanagers    €€r>   Úcompiled_artifactÚ;maybe_handle_backward_generation.<locals>.compiled_artifact«   s   ø€ Ø×+Ñ+Ô-Ù*¨:Ó6Ð6rB   )r�   ú	list[Any]rU   zCallable[..., Any])	Úcurrent_callableÚ	fx_kwargsr"   ÚtritonÚcudagraph_treesÚvaluerh   Ú	_inductorÚget_manager)Úcompiled_graphÚboxed_forward_device_indexr‹   r’   r�   r‘   s       @@r>   Ú maybe_handle_backward_generationrž   –   s³   ù€ ð ×*Ñ*Ñ6Ð6Ð6Ø ×*Ñ*¨=Ñ9€Kö
 ”v—}‘}×4×4Ø)Ñ5Ð5Ð5Ø)×/Ñ/Ñ;Ð;Ð;Ø"0×"AÑ"AÐä—/‘/×1Ñ1×=Ñ=Ø&×,Ñ,ÀEð >ð 
ˆð Ñ"Ð"Ð"÷	7ð 	7ð +<Õ'ð 5€{rB   c                ój  • [         R                  R                  (       d5  U H/  n[        U[        R
                  5      (       d  M$  [        U5        M1     U R                  S   nU R                  S   nUb>  U(       d6  U(       d.  UR                  [        [        U R                  5      5      5        g g g g )NÚis_inferencer‹   )r"   r—   r˜   rg   rh   ÚSymIntÚintr–   ÚsetÚnextÚiterÚdevice_idxs)rœ   rI   r�   rn   r    r‹   s         r>   Úprepare_cudagraph_post_compiler§   ²   s‰   € ô
 �=‰=×(×(ãˆAÜ˜!œUŸ\™\×*Ó*Ü�A–ñ  ð "×+Ñ+¨NÑ;€LØ ×*Ñ*¨=Ñ9€KØ!Ñ-¶lÎ;Ø"×&Ñ&¤t¬D°×1KÑ1KÓ,LÓ'MÕNð LW°lÐ-rB   c                ó  • SSK Jn  UR                  c   eUR                  c   eUR                  nUR                  nUR
                  S   nUR
                  S   n	UR                  SS5      (       a-  [        R                  " U5        [        X5        [        S5        gU(       dö  UR
                  n
U
S	   nUR                  nUR                  n[        XU5        S
SKJn  UR                  nUc   eUR!                  5        VVs0 s H*  u  nn[#        U[$        R&                  5      (       d  M'  UU_M,     nnnU" UU=(       d    S[)        [+        UR,                  5      5      UU	U[/        UR1                  5       5      U[/        UR2                  5      S9	Ul        g[        R                  " U5        [        X5        SUR4                  ;   a6  UR6                  (       a  [        UR6                  5        g[        SU 35        ggs  snnf )z‘
Checks for any reasons not to run cudagraphs and then
runs it on compiled_graph.
Mutates the `compiled_graph.current_callable` and `cudagraphs`
r   ©ÚCompilerBisectorNr    r‹   ÚinductorÚ
cudagraphsú#skipping cudagraphs due to bisectorÚstatic_input_idxsr!   ©ÚcudagraphifyrS   ©r®   Údevice_indexÚstack_tracesr‹   r    rJ   ÚplaceholdersÚmutated_input_idxsÚcudaúskipping cudagraphs due to )Ú!torch._inductor.compiler_bisectorrª   r•   Úcudagraph_infoÚcudagraph_fail_reasonsr–   Údisable_subsystemr   Údisablerž   r   r´   r³   r§   Ú
compile_fxr°   Úitemsrg   rh   ri   r¤   r¥   r¦   ÚtupleÚvaluesrµ   Údevice_typesÚdisabled_cudagraphs_reason)rI   rœ   r¬   rJ   r�   rª   Úcached_inforº   r    r‹   r–   r®   r´   r³   r°   r•   ÚkÚvÚtensor_constantss                      r>   Úcudagraph_post_compilerÇ   Ã   sí  € õ Cà×*Ñ*Ñ6Ð6Ð6Ø×(Ñ(Ñ4Ð4Ð4Ø ×/Ñ/€KØ(×?Ñ?ÐØ!×+Ñ+¨NÑ;€LØ ×*Ñ*¨=Ñ9€Kð ×)Ñ)¨*°l×CÑCÜ×Ò˜*Ô%Ü(¨ÔTÜ+Ð,QÔRØæ!Ø"×,Ñ,ˆ	Ø%Ð&9Ñ:Ðà"×/Ñ/ˆØ"×/Ñ/ˆä&ØÐ,Fô	
õ 	-à)×:Ñ:ÐØÑ+Ð+Ð+ð 'Ÿ_™_Ô.ô
Ú.‘T�Q˜´*¸QÄÇÁ×2M‹DˆAˆqŠDÑ.ð 	ñ 
ñ +7ØØ/×5°2Üœd >×#=Ñ#=Ó>Ó?Ø%Ø#Ø%ÜÐ,×3Ñ3Ó5Ó6Ø%Ü$ ^×%FÑ%FÓGñ
+
ˆÕ'ô 	×Ò˜*Ô%Ü(¨ÔTà�^×0Ñ0Ó0ð ×8×8Ü3Ø"×=Ñ=õô 4Ø1Ð2HÐ1IÐJõð 1ùó'
s   Ä&HÄ/Hc                ó  • SSK Jn  UR                  SS5      (       a-  [        R                  " U5        [        X5        [        S5        gUR                  c   eUR                  R                  nU(       d&  UR                  b  [        UR                  5      S:X  a"  [        R                  " U5        [        X5        gSSKJn  UR                  c   eUR                  c   eUR                  S	   nUR                  S
   n	[!        UR                  S   =(       d    S5      n
UR"                  n[%        ['        UR(                  5      5      nUR+                  5        VVs0 s H(  u  pÞ[-        U[.        R0                  5      (       d  M&  XÞ_M*     nnn[3        UR                  R4                  U
UUR                  R6                  U5      n[9        XU5        / nUR                   HŒ  n[;        UU5      n[=        U[?        UR@                  5      UUR6                  U	U[?        URB                  RE                  5       5      UR4                  [?        UR"                  5      S9	nURG                  U5        MŽ     UR                  U5        gs  snnf )a3  
Cudagraphify each partition functions, which first prepares the necessary
metadata and then applies the cudagraphify function to each partition.

Assuming all partition functions are cudagraphified and share the same order
as `compiled_graph.partition_maps`. See [Note: Graph Partition Map for CUDAGraph].
r   r©   r«   r¬   r­   Nr!   r¯   r    r‹   r®   rS   r±   )$r¸   rª   r»   r   r¼   rž   r   r¹   rº   Úpartition_mapsr~   r½   r°   r•   Úrecursively_apply_fnsr–   r   rµ   r¤   r¥   r¦   r¾   rg   rh   ri   r   r´   r³   r§   r   r   r¿   r®   rJ   rÀ   Úappend)rI   rœ   r¬   rJ   r�   rª   rº   r°   r    r‹   r®   rµ   r²   rÄ   rÅ   rÆ   Úgraph_metadataÚcudagraphify_fnsÚpartition_mapÚpartition_metadataÚcudagraphify_fns                        r>   Ú cudagraph_partition_post_compilerÑ     sQ  € õ Cà×)Ñ)¨*°l×CÑCÜ×Ò˜*Ô%Ü(¨ÔTÜ+Ð,QÔRØà×(Ñ(Ñ4Ð4Ð4Ø+×:Ñ:×QÑQÐö 	Ø×(Ñ(Ñ0Üˆ~×,Ñ,Ó-°Ó2ô 	×Ò˜*Ô%Ü(¨ÔTØå(à×*Ñ*Ñ6Ð6Ð6Ø×/Ñ/Ñ;Ð;Ð;Ø!×+Ñ+¨NÑ;€LØ ×*Ñ*¨=Ñ9€KÜ" >×#;Ñ#;Ð<OÑ#P×#VÐTVÓWÐØ'×:Ñ:ÐÜœ˜^×7Ñ7Ó8Ó9€Lð #Ÿ™Ô*ôÚ*‘�¬j¸¼E¿L¹L×.I‹ˆŠÑ*ð ñ ô 'Ø×%Ñ%×2Ñ2ØØØ×%Ñ%×2Ñ2Øó€Nô #ØÐ(Bôð ÐØ'×6Ô6ˆÜ=ØØó
Ðô
 "ØÜ#Ð$6×$HÑ$HÓIØ%Ø+×8Ñ8Ø#Ø%ÜÐ.×8Ñ8×?Ñ?ÓAÓBØ+×8Ñ8Ü$Ð%7×%JÑ%JÓKñ

ˆð 	×Ñ Ö0ñ# 7ð& ×(Ñ(Ð)9Õ:ùóOs   Å%JÆJc                óˆ   • U (       d;  UR                   c   e[        UR                   X#5      nXAR                   La  XAl         ggg)z¯
Realigns input strides from inputs_to_check if
we didn't end up running cudagraphs. Mutates
`compiled_graph.current_callable` if cudagraphs
was run. Otherwise, does nothing.
N)r•   r   )Úran_cudagraphsrœ   Úinputs_to_checkÚmutated_inputs_idxsÚnew_callables        r>   Úmaybe_realign_inputsr×   g  sL   € ö Ø×.Ñ.Ñ:Ð:Ð:Ü3Ø×+Ñ+¨_ó
ˆð ×>Ñ>Ò>Ø.:Õ+ð ?ð rB   c                  ó"   • \ rS rSrSrSS jrSrg)rZ   i|  a,  Wrapper class that unwraps constants from a compiled fx graph. This
version of the class only supports directly grabbing the saved constants off of
a CompiledFxGraph.

With freezing, FxGraphCache doesn't store the constants of the input
GraphModule it gets from AOTAutograd. Instead, it saves just the **names**
of those constants, and grabs the constant values directly from the graph module
passed in at runtime.

Thing is, we don't always *have* the graph module available at runtime, hence
the existence of this class and its CompiledFxGraphConstantsWithGm counterpart.

To support freezing, FXGraphCache gets passed a CompiledFxGraphConstantsWithGm during
post compile. Otherwise, CompiledFxGraphConstants supports the basic case of loading
the value of constants directly off of the original saved object.
c                óT   • UR                   c   e0 UR                   EUR                  E$ r7   )rJ   Úopaque_value_type_classes)r<   Úgs     r>   ÚunwrapÚCompiledFxGraphConstants.unwrapŽ  s,   € Ø�{‰{Ñ&Ð&Ð&Ø=�!—+‘+Ð= ×!<Ñ!<Ð=Ð=rB   rS   N©rÛ   r‰   rU   ú$dict[str, Union[torch.Tensor, type]])r\   r]   r^   r_   Ú__doc__rÜ   rc   rS   rB   r>   rZ   rZ   |  s   † ñ÷">rB   rZ   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚCompiledFxGraphConstantsWithGmi“  a  
This version of CompiledFxGraphConstants, instead of grabbing constants
directly saved on CompiledFxGraphs, will just grab their names. Then, it takes
a second GraphModule to grab the corresponding constant values out of.

This is necessary for supporting freezing in FxGraphCache.
c                ó   • Xl         g r7   ©Úgm)r<   rå   s     r>   Ú__init__Ú'CompiledFxGraphConstantsWithGm.__init__œ  s   € Ø�rB   c           	     óâ   • UR                   R                  5        VVs0 s H  u  p#U[        U R                  U5      _M     nnnUR                  =(       d    0 n0 UEUEUR
                  E$ s  snnf r7   )Úfrozen_param_namesr¾   Úgetattrrå   rJ   rÚ   )r<   rÛ   ÚnameÚ	orig_nameÚfrozen_paramsrJ   s         r>   rÜ   Ú%CompiledFxGraphConstantsWithGm.unwrapŸ  su   € ð $%×#7Ñ#7×#=Ñ#=Ô#?ô
â#?‘�ð ”'˜$Ÿ'™' 9Ó-Ò-Ù#?ð 	ñ 
ð —K‘K×% 2ˆ	ØL�)ÐL˜}ÐL°×0KÑ0KÐLÐLùó
s   ž#A+rä   N)rå   útorch.fx.GraphModulerU   rW   rÞ   )r\   r]   r^   r_   rà   ræ   rÜ   rc   rS   rB   r>   râ   râ   “  s   † ñô÷MrB   râ   c                  ób  • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   \R                  " S
S9rS\S'   \R                  " S
S9r	S\S'   \R                  " S
S9r
S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S '   S!\S"'   S#\S$'   S%\S&'   S!\S''   S!\S('   S!\S)'   S*\S+'   S,\S-'   S.\S/'   S0\S1'   S2rS3\S4'   S2rS5\S6'   S
rS7\S8'      SB                                   SCS9 jjrSDS: jrSES; jr        SFS< jrSGS= jrSDS> jrSHS? jrSIS@ jrSArg2)Jr‰   i¨  zf
Class holding a compiled FX graph. This is the object serialized on disk
to support FxGraph caching.
úOptional[Callable[..., Any]]r•   rÊ   úOptional[Any]Úcompiled_fn_runnerÚstrÚ	cache_keyF)ÚreprÚsource_codeÚrunnable_graph_strÚinductor_post_grad_graph_strzOptional[list[tuple[int, str]]]Úcache_linemapzOrderedSet[str]rÁ   úOrderedSet[int]r¦   Úmutated_inputsrµ   z!Optional[dict[str, torch.Tensor]]rJ   zdict[str, str]ré   z3dict[str, torch._C.ScriptObject | FakeScriptObject]Útorchbind_constantszdict[str, type]rÚ   z4Optional[list[Optional[tuple[_StrideExprStr, ...]]]]Úoutput_stridesr2   rÂ   úmetrics.CachedMetricsDeltasÚmetrics_deltasúCounter[str]Úcounter_deltasÚguards_exprÚinductor_provenance_mapping_strÚ$inductor_provenance_stack_traces_strzOptional[CudagraphCachedInfo]r¹   z!Optional[list[GraphPartitionMap]]rÉ   r+   r–   úSequence[int]rÔ   NzOptional[bool]Ú_boxed_callzOptional[TritonBundle]Ú_triton_bundleÚboolÚ_wrap_compiled_regionsc                óL  • Xl         Xðl        Ub  UR                  OS U l        UR                  U l        UR                  (       a3  [        UR                  5       nUR                  5       U l        S S S 5        XÐl        Xàl	        UU l
        UU l        UR                  U l        [        UR                  5      U l        [        UR                  5      U l        [        UR                   5      U l        [        UR"                  5      U l        [%        U5      (       d  UR&                  U l        0 U l        Oo0 U l        0 U l        UR&                  R+                  5        HC  u  nn[-        U5      (       a  UR.                  U   U R(                  U'   M4  UU R&                  U'   ME     UR0                  U l        UR2                  U l        X@l        XPl        X`l        Xpl        S U l        S U l        UR@                  U l         0 U l!        SU l"        S nU(       GaÅ  U R6                  (       aU  SU R                  ;   a  [G        SU R6                   35        O[H        S   S==   S-  ss'   [J        RL                  " U5        GO_[O        S U	 5       5      n[P        RR                  RT                  (       d8  SS	K+J,n  U" UU R                   U R"                  U
5      nUS LnU(       a  UU l        OS nU(       + S
4U(       + S4[[        S U	 5       5      S4/n[]        U5      n[_        UR`                  5      S:X  d   eUR`                  S    Vs/ s HD  n[c        U[d        Rf                  Rh                  Rj                  5      (       a  URl                  OS PMF     nnU VVs/ s H  u  nnU(       a  M  UPM     n nn[o        [q        URr                  5      5      n![u        U!UU 5      nUU l        XÀl"        X°l!        SU l;        [P        Rx                  U l=        g ! , (       d  f       GN = fs  snf s  snnf )NrS   r¶   r·   r«   Úcudagraph_skipsr!   c              3  óz   #   • U  H1  n[        U[        R                  5      (       d  M$  [        U5      v •  M3     g 7fr7   )rg   rh   ri   rˆ   ©Ú.0rn   s     r>   Ú	<genexpr>Ú+CompiledFxGraph.__init__.<locals>.<genexpr>,  s0   é € ð 4â+˜Ü! !¤U§\¡\×2ó .Ô*¨1×-Ð-Ú+ùs   ‚#;©;r   )Ú3check_for_mutation_ignore_cuda_graph_managed_tensorzmutated inputszcomplex memory overlapc              3  ó”   #   • U  H>  n[        U[        R                  [        R                  [        R                  45      v •  M@     g 7fr7   )rg   rh   ri   r¡   Ú	Generatorr  s     r>   r  r  L  s4   é € ð â%3 ô ' q¬5¯<©<¼¿¹ÄuÇÁÐ*W×XÐXÚ%3ùs   ‚AAznon-Tensor inputsT)>r•   ró   rÊ   rõ   Ú
cache_pathÚopenÚreadr÷   rø   rù   r  r  rú   r   rÁ   r¦   rü   rµ   r   rJ   ré   r¾   r   Úallocated_constant_namerý   rÚ   rþ   rÂ   r   r  r  r¹   rÉ   r–   rÔ   r   r
   r   r¼   Úanyr"   r—   Ú cudagraph_support_input_mutationÚtorch._inductor.cudagraph_utilsr  Úallr   r~   Úargsrg   rh   ÚfxÚnodeÚNodeÚstack_tracer¿   r   Úgraphr   r  Úwrap_inductor_compiled_regionsr
  )"r<   r•   r"  rå   rþ   rÂ   r   r  r¬   rI   r®   r–   rÔ   rø   rù   ró   r  r  ÚfrÄ   rÅ   r¹   Úcomplex_memory_overlap_inputsr  Úhas_mutation_strÚhas_mutationÚcudagraph_testsÚoutputÚargr³   ÚbÚsrº   r´   s"                                     r>   ræ   ÚCompiledFxGraph.__init__×  sÇ  € ð( !1ÔØ"4Ôð "Ñ-ð ×4Ò4àð 	Ô"ð
 Ÿ™ˆŒØ××Ü�e×&Ñ&Ô'¨1Ø#$§6¡6£8�Ô ÷ (à"4ÔØ,HÔ)Ø/NˆÔ,Ø4XˆÔ1Ø"×0Ñ0ˆÔä& u×'9Ñ'9Ó:ˆÔÜ% e×&7Ñ&7Ó8ˆÔÜ(¨×)=Ñ)=Ó>ˆÔÜ",¨U×-EÑ-EÓ"FˆÔô ! ×$Ñ$Ø"Ÿ_™_ˆDŒNØ&(ˆDÕ#àˆDŒNØ&(ˆDÔ#ØŸ™×-Ñ-Ö/‘��1Ü" 1×%Ñ%Ø16×1NÑ1NÈqÑ1Q�D×+Ñ+¨AÓ.à()�D—N‘N 1Ó%ñ	 0ð $)×#<Ñ#<ˆÔ Ø).×)HÑ)HˆÔ&Ø,ÔØ*DÔ'Ø,ÔØ,ÔØˆÔØ"ˆÔØ#×2Ñ2ˆÔØˆŒØ!ˆÔàˆßà×.×.Ø˜T×.Ñ.Ó.Ü7Ø5°d×6UÑ6UÐ5VÐWõô ˜ZÑ(Ð):Ó;¸qÑ@Ó;Ü×!Ò! *Ö-ä03ñ 4á+ó4ó 1Ð-ô —}‘}×E×Eõñ
 LØØ ×/Ñ/Ø ×3Ñ3Ø-ó	ð %ð $4¸4Ð#?�Læ#Ø:J˜Ô7øð $(�Lð &Ô%Ð'7Ð8Ø6Ô6Ð8PÐQäñ á%3óó ð ,ðð
#�ô % R›�ä˜6Ÿ;™;Ó'¨1Ó,Ð,Ð,ð  &Ÿ{™{¨1š~ó â-˜ô )3°3¼¿¹¿¹×8JÑ8J×(KÑ(K�S—_’_ÐQUÒUÙ-ð ð  ñ 9HÔ)Qº±°°1Ìq¯!¹Ð&Ñ)QÜ$Ô%9¸"¿(¹(Ó%CÓD�Ü!4Ø  ,Ð0Fó"�ð -ˆÔØ.ÔØ"Œð  ˆÔô '-×&KÑ&KˆÕ#÷k (Ö'üòD ùó *Rs   ÁP	ÍAPÎP Î%P Ð	
Pc                ó8   • U R                   b  U R                   ?g g r7   )ró   Ú
partitionsrD   s    r>   Ú__del__ÚCompiledFxGraph.__del__k  s!   € Ø×"Ñ"Ñ.ð ×'Ñ'Ñ2ð /rB   c                óÊ  • U R                   c   e[        R                  R                  R                  (       aÒ  [        R                  R                  R
                  b­  U R                  R                  S5      nUbX  [        R                  R                  R                  b3  [        R                  R                  R                  R                  U5      OS n[        R                  R                  R
                  R                  SU05         [        R                  R                  R                  (       a€  [        R                  R                  R                  SU R                    S3SS0S9   U R                  U5      sS S S 5        [#        5       R%                  5         [&        R(                  " 5         $ U R                  U5      [#        5       R%                  5         [&        R(                  " 5         $ ! , (       d  f       O= f [#        5       R%                  5         [&        R(                  " 5         g ! [#        5       R%                  5         [&        R(                  " 5         f = f)NÚgraph_idÚ
compile_idz## Call CompiledFxGraph z ##ÚscopeÚ
user_scope)Úkeyword_values)r•   rh   rš   ÚdebugÚRECORD_GRAPH_EXECUTIONÚGRAPH_EXECUTION_ORDERr–   ÚgetÚGRAPH_COMPILE_IDSrË   ÚautogradÚprofilerÚ_is_profiler_enabledÚ_CÚ	_profilerÚ_RecordFunctionFastr3   r   Úfinishr#   Úend_compile)r<   r=   r3  r4  s       r>   r?   ÚCompiledFxGraph.__call__t  sÃ  € Ø×$Ñ$Ñ0Ð0Ð0ô �O‰O×!Ñ!×8×8Ü—‘×%Ñ%×;Ñ;ÑGà—~‘~×)Ñ)¨*Ó5ˆHð Ñ'Ü—O‘O×)Ñ)×;Ñ;ÑGô —‘×%Ñ%×7Ñ7×;Ñ;¸HÔEð ð	 ô �O‰O×!Ñ!×7Ñ7×>Ñ>à  *ðôð
	/ä�~‰~×&Ñ&×;×;Ü—X‘X×'Ñ'×;Ñ;Ø.¨t×/GÑ/GÐ.HÈÐLØ$+¨\Ð#:ð <ò ð  ×0Ñ0°Ó8÷	ð ô (Ó)×0Ñ0Ô2Ü ×,Ò,Õ.ð ×,Ñ,¨VÓ4ä'Ó)×0Ñ0Ô2Ü ×,Ò,Õ.÷õ úð ô (Ó)×0Ñ0Ô2Ü ×,Ò,Õ.øô (Ó)×0Ñ0Ô2Ü ×,Ò,Õ.ús+   ÄA!H3 Å-G3Å>	H3 Æ5H3 Ç3
HÇ=H3 È3/I"c                ót  ^^• [         R                  (       a±  [        R                  (       aœ  U R                  c   eU R
                  c   e[        U R
                  R                  5      n[        U5       Vs/ s H  n[        XE5      PM     nn[        R                  mU Vs/ s H  nU4U4S jjPM     nnU R	                  U5        g[        X5        US   c   eUS   c   eUS   n	US   n
U
(       aÞ  U R                  (       aT  SU R                  ;   a  [        SU R                   35        O[        S   S==   S	-  ss'   [        R                   " U
5        OyU	(       a  S
U;   d   eUS
   nOUR#                  S
S5      n[         R                  (       a  [%        UU U
UR'                  U 5      U5        O[)        UU U
UR'                  U 5      U5        U R*                  n[-        U
U UU R.                  5        U R0                  (       a'  U R2                  b  U R2                  mU4S jnXÐl        gggs  snf s  snf )a_  
Run a set of post processing steps after loading from the cache. These involve:
 - Setting the tracing context output strides
 - Running cudagraphs if enabled
 - Realigning inputs

This runs whether or not we have a cache hit, and always runs directly after we get a CompiledFxGraph.
The results of this function are *not* saved in the cache itself.
Nc                ó   >• T" X5      $ r7   rS   )r$  ÚmÚcustomized_wrappers     €r>   Ú<lambda>Ú.CompiledFxGraph.post_compile.<locals>.<lambda>¯  s   ø€ Ñ&8¸Ô&>rB   r¬   r‹   r¶   r·   r«   r  r!   r�   c                óJ   >• [        5       (       a  [        TU 5      $ T" U 5      $ r7   )r    r   )r=   Úoriginal_callables    €r>   Úwrapped_callableÚ6CompiledFxGraph.post_compile.<locals>.wrapped_callableô  s%   ø€ Ü,×.Ñ.Ü1Ð2CÀVÓLÐLá,¨VÓ4Ð4rB   )r"   Úgraph_partitionr   ÚwrapperrÊ   ró   r~   r/  rj   r   r   rÂ   rÁ   r   r
   r   r¼   r;  rÑ   rÜ   rÇ   rÔ   r×   rµ   r
  r•   )r<   rI   rJ   rK   Únum_partitionsro   Úwrapper_metadatasÚmetadataÚ!customized_wrappers_with_metadatar‹   r¬   r�   rÔ   rN  rI  rM  s                 @@r>   rL   ÚCompiledFxGraph.post_compile•  sW  ù€ ô ×!×!Ô&L×&T×&Tà×-Ñ-Ñ9Ð9Ð9Ø×*Ñ*Ñ6Ð6Ð6Ü  ×!8Ñ!8×!CÑ!CÓDˆNô ˜~Ô.ó!â.�Aô )¨Ö;Ù.ð ð !ô "H×!OÑ!OÐñ !2ó1â 1�Hð %×>Ñ>Ù 1ð .ð 1ð ×&Ñ&Ð'HÔIØä*¨>Ô@Ø˜LÑ)Ñ5Ð5Ð5Ø˜MÑ*Ñ6Ð6Ð6Ø" =Ñ1ˆØ ,¨\Ñ :ˆ
Þð ×.×.Ø˜T×.Ñ.Ó.Ü7Ø5°d×6UÑ6UÐ5VÐWõô ˜ZÑ(Ð):Ó;¸qÑ@Ó;Ü×!Ò! *Õ-æØ7¸<ÓGÐGÐGØ1=Ø4ñ2Ñ.ð 2>×1AÑ1AØ4°dó2Ð.ô ×)×)ô 5Ø&ØØ"Ø!×(Ñ(¨Ó.Ø2õô +Ø&ØØ"Ø!×(Ñ(¨Ó.Ø2ôð ×.Ñ.ˆô 	ØØØØ×#Ñ#ô		
ð ×&×&¨4×+@Ñ+@Ñ+LØ $× 5Ñ 5Ðõ5ð %5Õ!ð ,MÐ&ùòQ!ùò
1s   Á7H0Â"H5c                ó   • Xl         g r7   )r  rO   s     r>   rQ   Ú!CompiledFxGraph.set_triton_bundleü  s   € Ø+ÕrB   c                ó.   • S U l         S U l        S U l        g r7   )r•   rÊ   ró   rD   s    r>   rE   Ú)CompiledFxGraph.prepare_for_serializationÿ  s   € ð
 !%ˆÔØ%)ˆÔ"Ø"&ˆÕrB   c                óÜ   • SSK Jn  SSKJnJn  U" U R
                  S5      S   nU R                  n[        R                  R                  U5      (       d  US   S==   S-  ss'   U" XES	S
9  U$ )Nr   )r
   )Úget_pathÚwrite_atomicÚpyé   r«   Úfxgraph_lookup_write_filer!   T)Ú	make_dirs)
Útorch._dynamo.utilsr
   Útorch._inductor.codecacher\  r]  rõ   r÷   ÚosÚpathÚexists)r<   r
   r\  r]  Úartifact_pathÚcodes         r>   Úwrite_to_diskÚCompiledFxGraph.write_to_disk  sc   € Ý0ßDñ ! §¡°Ó6°qÑ9ˆØ×ÑˆÜ�w‰w�~‰~˜m×,Ñ,Ø�ZÑ Ð!<Ó=ÀÑBÓ=Ù˜¸Ò=ØÐrB   c           	     ó¦  • SSK Jn  SSKJn  U R	                  5       n U" SSS9   UR                  U R                  UU R                  UR                  U 5      5      nUR                  U l
        [        USS 5      U l        [        USS 5      U l        S S S 5        U$ ! , (       d  f       U$ = f! [         a    [        R!                  S	U5        e f = f)
Nr   )Údynamo_timed)ÚPyCodeCachezPyCodeCache.load_by_key_pathT)Úlog_pt2_compile_eventrÊ   ÚrunnerzFailed to load artifact: %s)rb  rl  rc  rm  ri  Úload_by_key_pathrõ   rú   rÜ   Úcallr•   rê   rÊ   ró   ÚOSErrorÚlogÚerror)r<   rJ   rl  rm  rg  Ú
code_caches         r>   Úafter_deserializationÚ%CompiledFxGraph.after_deserialization  sÔ   € Ý4Ý9à×*Ñ*Ó,ˆð	ÙØ.Ø&*óð )×9Ñ9Ø—N‘NØ!Ø×&Ñ&Ø×$Ñ$ TÓ*ó	�
ð )3¯©�Ô%Ü-4ØÐ 7¸ó.�Ô*ô +2°*¸hÈÓ*M�Ô'÷ð& Ð÷'ô ð& Ðûô	 ó 	Ü�I‰IÐ3°]ÔCØð	ús)   žB. ¥A-BÂB. Â
B+Â&B. Â+B. Â."C)r  r  r
  rõ   rú   ró   rJ   r  r¹   r•   r¦   rÁ   rÂ   ré   r–   r  rù   r  r  rÔ   r   rµ   rü   rÚ   rþ   rÉ   rÊ   rø   r÷   rý   )NNN)$r•   rñ   r"  r(   rå   rï   rþ   z*list[Optional[tuple[_StrideExprStr, ...]]]rÂ   r2   r   rÿ   r  r  r¬   r   rI   rY   r®   r  r–   r+   rÔ   r  rø   rô   rù   rô   ró   rò   r  r2   r  r2   rU   rW   rV   rT   rX   r[   )rU   rô   )rJ   rZ   rU   rô   )r\   r]   r^   r_   rà   rb   r`   ra   r÷   rø   rù   r  r  r
  ræ   r0  r?   rL   rQ   rE   ri  rv  rc   rS   rB   r>   r‰   r‰   ¨  s<  ‡ ñð
 3Ó2Ø7Ó7Ø%Ó%ØƒNØ"×(Ò(¨eÑ4€K�Ó4Ø)×/Ò/°UÑ;Ð˜Ó;Ø(3×(9Ò(9Øñ)Ð  #ó ð 3Ó2Ø!Ó!Ø Ó Ø#Ó#Ø'Ó'Ø0Ó0Ø&Ó&ØLÓLØ.Ó.ØHÓHØ -Ó-Ø/Ó/Ø Ó ð ÓØ%2Ó2Ø*7Ó7à1Ó1Ø5Ó5ØÓØ"Ó"à"&€K�Ó&Ø-1€NÐ*Ó1Ø#(Ð˜DÓ(ð$ -1Ø9=Ø>Bð%RLà6ðRLð ðRLð !ð	RLð
 CðRLð %2ðRLð 4ðRLð %ðRLð ðRLð ,ðRLð )ðRLð $ðRLð 'ðRLð  ðRLð '*ðRLð  *ð!RLð" *7ð#RLð$ /<ð%RLð& 
õ'RLôh3ô/ðBe5à+ðe5ð ,ðe5ð 'ð	e5ð
 
ôe5ôN,ô'ô÷rB   c                  óª   • \ rS rSr% SrS\S'   S\S'   SrS\S	'   \R                  " \	S
9r
S\S'   S rSS jrSS jrS r        SS jrSS jrSrg)ÚCompiledAOTIi2  z+
Class holding an AOTInductor compiled so.
z;Union[str, list[Union[str, Weights]], torch.fx.GraphModule]Úfilenamerô   Údevice_typeNrñ   r•   )Údefault_factoryzdict[str, bytes]Ú_cached_filesc                ó  • [         R                  R                  (       d  g [        R                  R
                  R                  (       d)  [        R                  R
                  R                  (       a  g [         R                  R                  S:X  a  g [         R                  R                  (       a  g [         R                  (       d  g [        U R                  [        5      (       a  [        S U R                   5       5      nOU R                  n[        U[        R                  R                   5      (       a  Xl        g U R$                  R'                  S5      (       aB  [        R(                  R*                  R-                  USU R$                  SS5      R.                  nO]U R$                  S:X  a5  [        R(                  R*                  R1                  US5      R.                  nO[3        SU R$                   35      eXl        SU l        U R6                   H\  n[8        R:                  R=                  U5      (       a  M)  [?        US	5       nURA                  U R6                  U   5        S S S 5        M^     g ! , (       d  f       Mp  = f)
NÚwindowsc              3  ó„   #   • U  H6  n[        U[        5      (       d  M  UR                  S 5      (       d  M2  Uv •  M8     g7f)z.soN)rg   rô   Úendswith)r  Úfns     r>   r  Ú-CompiledAOTI.__post_init__.<locals>.<genexpr>Q  s,   é € ð $Ú*�r¬j¸¼S×.A“ÀbÇkÁkÐRW×FX—‘š]ùs   ‚A ŸA ·	A r¶   r!   Ú TÚcpuzunsupported device type Úwb)!r"   Úaot_inductorÚlink_libtorchrh   rš   Úcpp_builderÚ	_IS_MACOSÚ_IS_WINDOWSÚcross_target_platformÚpackage_cpp_onlyÚenable_autograd_for_aotrg   rz  r}   r¤   r  ÚGraphModuler•   r{  Ú
startswithr@  Ú_aotiÚAOTIModelContainerRunnerCudaÚrunÚAOTIModelContainerRunnerCpuÚRuntimeErrorr  r}  rd  re  rf  r  Úwrite)r<   r•   Úfiler$  s       r>   Ú__post_init__ÚCompiledAOTI.__post_init__=  sÐ  € Ü×"Ñ"×0×0Øô �O‰O×'Ñ'×1×1Ü�‰×*Ñ*×6×6àä×Ñ×4Ñ4¸	ÓAØä×Ñ×/×/Øä×-×-Øä�d—m‘m¤T×*Ñ*Ü#ñ $Ø!Ÿ]š]ó$ó  Ñð  $Ÿ}™}ÐäÐ&¬¯©×(<Ñ(<×=Ñ=à$4Ô!Øà×Ñ×&Ñ& v×.Ñ.ä—‘—‘×;Ñ;Ø$ØØ×$Ñ$ØØó÷ ‘#ñ ð ×Ñ Ó&ä—‘—‘×:Ñ:Ø$ aóç‘#ñ ô Ð!9¸$×:JÑ:JÐ9KÐLÓMÐMØ 0ÔØˆÔØ×&Ô&ˆDÜ—7‘7—>‘> $×'Ó'Ü˜$ Ô%¨Ø—G‘G˜D×.Ñ.¨tÑ4Ô5÷ &Ñ%ò 'ç%Ö%ús   ÉI:É:
J		c                óT   • U R                   c  [        S5      eU R                  U5      $ )Nz%AOTInductor compiled so is not loaded)r•   r•  r;   s     r>   r?   ÚCompiledAOTI.__call__u  s+   € Ø× Ñ Ñ(ÜÐFÓGÐGØ×$Ñ$ VÓ,Ð,rB   c                ón  • S U l         0 U l        / n[        U R                  [        5      (       a  U R                  nO,[        U R                  [
        5      (       a  U R                  /nU H5  n[        US5       nUR                  5       U R                  U'   S S S 5        M7     g ! , (       d  f       MI  = f)NÚrb)r•   r}  rg   rz  r}   rô   r  r  )r<   Ú	filenamesrë   r$  s       r>   rE   Ú&CompiledAOTI.prepare_for_serializationz  sˆ   € Ø $ˆÔØˆÔØ!ˆ	Ü�d—m‘m¤T×*Ñ*ØŸ™‰IÜ˜Ÿ™¤s×+Ñ+ØŸ™˜ˆIÛˆDÜ�d˜DÔ! QØ+,¯6©6«8�×"Ñ" 4Ñ(÷ "Ñ!ò ß!Ö!ús   Á:B%Â%
B4	c                óD   • U R                   R                  5       nS US'   U$ )Nr•   )Ú__dict__Úcopy)r<   Ústates     r>   Ú__getstate__ÚCompiledAOTI.__getstate__†  s$   € Ø—‘×"Ñ"Ó$ˆØ$(ˆÐ Ñ!ØˆrB   c                ó@   • U R                   c  U R                  5         g g r7   )r•   r˜  rH   s       r>   rL   ÚCompiledAOTI.post_compile‹  s!   € ð × Ñ Ñ(Ø×ÑÕ ð )rB   c                ó   • g r7   rS   rO   s     r>   rQ   ÚCompiledAOTI.set_triton_bundle”  ó   € ØrB   )r  r}  r•   rT   rV   rX   r[   )r\   r]   r^   r_   rà   rb   r•   r`   ra   Údictr}  r˜  r?   rE   r¤  rL   rQ   rc   rS   rB   r>   ry  ry  2  s}   ‡ ñð JÓIØÓØ59ÐÐ2Ó9Ø&1×&7Ò&7ÈÑ&M€MÐ#ÓMò66ôp-ô

4òð
!à+ð!ð ,ð!ð 'ð	!ð
 
ô!÷rB   ry  c                  ó\   • \ rS rSr% SrS\S'   S
S jr        SS jrSS jrSS jr	S	r
g)ÚMockFXGraphCacheOutputi˜  Nr   rå   c                ó   • SU l         g )NT©r  rD   s    r>   r˜  Ú$MockFXGraphCacheOutput.__post_init__œ  s
   € ØˆÕrB   c                ó   • g r7   rS   rH   s       r>   rL   Ú#MockFXGraphCacheOutput.post_compileŸ  s   € ð 	rB   c                ó$   • U R                  U5      $ r7   rä   r;   s     r>   r?   ÚMockFXGraphCacheOutput.__call__§  s   € Ø�w‰w�v‹ÐrB   c                ó   • g r7   rS   rO   s     r>   rQ   Ú(MockFXGraphCacheOutput.set_triton_bundleª  rª  rB   r¯  rV   rX   rT   r[   )r\   r]   r^   r_   rå   rb   r˜  rL   r?   rQ   rc   rS   rB   r>   r­  r­  ˜  sE   ‡ à€BˆƒNô ðà+ðð ,ðð 'ð	ð
 
ôô÷rB   r­  c                  óÄ   ^ • \ rS rSr% SrSrS\S'   SrS\S'   SrS\S	'   \	\
4     SU 4S
 jjjrSS jr\S 5       r  SS jr        SS jrSS jrSS jrSrU =r$ )ÚRegionalOutputCodei®  aÐ  
OutputCode for regional inductor compilation results.

Regional inductor returns a torch.fx.GraphModule that contains both
compiled regions (via standalone_compile) and eager regions. This needs
special serialization using GraphPickler instead of standard pickle.

The serialization strategy stores the GraphModule as bytes using
GraphPickler.dumps(), which handles FakeTensors, AOTCompiledArtifacts,
and other special objects that standard pickle cannot handle.
NzOptional[bytes]Ú_serialized_graph_modulezOptional[torch.nn.Module]Ú_graph_modulezCallable[[str], bool] | NoneÚ_ops_filterc                ó"  >• [         TU ]  5         Xl        SU l        / U l        SU l        U R                  5       u  pE[        UR                  R                  [        R                  R                  R                  5      U l        X l        X0l        g)zë
Args:
    graph_module: The torch.fx.GraphModule returned by regional_inductor
    ops_filter: Optional filter function for op names during serialization.
        If provided, only ops whose name passes the filter will be serialized.
NT)Úsuperræ   rº  r¹  Ú_serialized_wrappersr  Ú_unwrap_graph_modulerg   r"  Ú_codegenrh   r  Ú_BoxedCodeGenÚ_inner_boxed_callr»  Ú_node_metadata_key_filter)r<   Úgraph_moduleÚ
ops_filterÚnode_metadata_key_filterr„   ÚmoduleÚ	__class__s         €r>   ræ   ÚRegionalOutputCode.__init__Å  sv   ø€ ô 	‰ÑÔØ)ÔØ(,ˆÔ%Ø$&ˆÔ!ØˆÔØ×-Ñ-Ó/‰	ˆÜ!+Ø�L‰L×!Ñ!¤5§8¡8§>¡>×#?Ñ#?ó"
ˆÔð &ÔØ)AÕ&rB   c                ó”   • U R                   c  [        S5      eU R                  (       a  U R                  U5      $ U R                   " U6 $ )a$  
Execute the regional compiled graph.

Args:
    inputs: A mutable list of inputs. Must be a list (not an arbitrary
        Sequence) because the boxed calling convention allows the callee
        to mutably clear the list when inputs become dead, enabling early
        memory deallocation.
zURegionalOutputCode has no graph module loaded. Did you forget to call post_compile()?)rº  r•  rÂ  r;   s     r>   r?   ÚRegionalOutputCode.__call__ß  sO   € ð ×ÑÑ%Üð9óð ð
 ×!×!Ø×%Ñ% fÓ-Ð-Ø×!Ò! 6Ð*Ð*rB   c                ó>   • U R                  5       u  pUR                  $ r7   )r¿  r"  )r<   r„   rÇ  s      r>   r"  ÚRegionalOutputCode.graphó  s   € à×-Ñ-Ó/‰	ˆØ�|‰|ÐrB   c                óê  • U R                   n/ n[        U[        R                  R                  5      (       a�  UR
                  n[        U[        R                  R                  R                  5      (       d   eUR                  [        R                  R                  UR                  UR                  S.45        UR                  n[        U[        R                  R                  5      (       d   eX!4$ )N)ÚreasonÚwrapping)rº  rg   rh   Ú_dynamoÚOptimizedModuleÚ
dynamo_ctxÚ
eval_frameÚDisableContextrË   r¼   ÚmsgrÐ  Ú	_orig_modr  r�  )r<   rÇ  Úserialized_wrappersrÓ  s       r>   r¿  Ú'RegionalOutputCode._unwrap_graph_moduleø  s¿   € ð ×#Ñ#ˆØ ÐÜ�fœeŸm™m×;Ñ;×<Ñ<Ø×*Ñ*ˆJÜ˜j¬%¯-©-×*BÑ*B×*QÑ*Q×RÑRÐRÐRØ×&Ñ&ä—M‘M×)Ñ)Ø)Ÿ~™~¸:×;NÑ;NÑOðôð ×%Ñ%ˆFÜ˜&¤%§(¡(×"6Ñ"6×7Ñ7Ð7Ð7Ø"Ð*Ð*rB   c                óŠ  • U R                   b  gU R                  c   eSSKJn  U" U5      nUc  [	        S5      eSSKJn  UR                  U R                  U5      n[        U[        R                  R                  5      (       d   eUR                  5         [        U R                  5       H  u  p‰U" U40 U	D6nM     Xpl         g)z 
Post-compile processing for regional inductor.

This deserializes the GraphModule from bytes using GraphPickler,
extracting the fake_mode from example_inputs.
Nr   )Údetect_fake_modeziCould not detect fake mode from example inputs. Regional inductor requires fake mode for deserialization.)ÚGraphPickler)rº  r¹  Útorch._guardsrÛ  r•  Útorch.fx._graph_picklerrÜ  Úloadsrg   rh   r  r�  Ú	recompileÚreversedr¾  )
r<   rI   rJ   rK   rÛ  Ú	fake_moderÜ  rå   r‚  Úkwargss
             r>   rL   ÚRegionalOutputCode.post_compile
  sº   € ð ×ÑÑ)ØØ×,Ñ,Ñ8Ð8Ð8å2á$ ^Ó4ˆ	ØÑÜðLóð õ 	9à×Ñ × =Ñ =¸yÓIˆÜ˜"œeŸh™h×2Ñ2×3Ñ3Ð3Ð3Ø
�‰ŒÜ" 4×#<Ñ#<Ö=‰JˆBÙ�BÑ!˜&Ñ!ŠBñ >àÕrB   c                ó   • g)z6Regional inductor doesn't use triton bundles directly.NrS   rO   s     r>   rQ   Ú$RegionalOutputCode.set_triton_bundle-  s   � rB   c                óØ   • U R                   b]  SSKJnJn  SU l        U R                  5       u  U l        nUR                  UU" U R                  U R                  S9S9U l        SU l         gg)zà
Prepare for serialization by converting the GraphModule to bytes.

This uses GraphPickler to serialize the graph module since it contains
special objects like FakeTensors and AOTCompiledArtifacts that need
custom pickling.
Nr   )rÜ  ÚOptions)rÅ  rÆ  )Úoptions)
rº  rÞ  rÜ  rè  r¹  r¿  r¾  Údumpsr»  rÃ  )r<   rÜ  rè  rÄ  s       r>   rE   Ú,RegionalOutputCode.prepare_for_serialization0  su   € ð ×ÑÑ)ßEà,0ˆDÔ)Ø6:×6OÑ6OÓ6QÑ3ˆDÔ% |à,8×,>Ñ,>ØÙØ#×/Ñ/Ø-1×-KÑ-Kñð -?ð -ˆDÔ)ð "&ˆDÕð *rB   )r  rº  rÂ  rÃ  r»  r¹  r¾  )rÄ  rï   rÅ  zCallable[[str], bool]rÆ  zOptional[Callable[[str], bool]])r=   r”   rU   r   )rU   zBtuple[list[tuple[Callable, dict[str, Any]]], torch.fx.GraphModule]rX   r[   rV   )r\   r]   r^   r_   rà   r¹  rb   rº  r»  r   r   ræ   r?   Úpropertyr"  r¿  rL   rQ   rE   rc   Ú__classcell__)rÈ  s   @r>   r¸  r¸  ®  sÅ   ø‡ ñ
ð 15Ð˜oÓ4ð 04€MÐ,Ó3ð 15€KÐ-Ó4ð
 -=à*ðBà*ðBð *ðBð #B÷	Bð Bô4+ð( ñó ðð+à	Kô+ð$! à+ð! ð ,ð! ð 'ð	! ð
 
ô! ôFE÷&ò &rB   r¸  )rn   útorch.TensorrU   ú	list[int])rn   rî  ru   rï  rU   rî  )rn   rî  rU   r	  )rœ   r‰   r�   úOptional[BoxedDeviceIndex]rU   rW   )rœ   r‰   rI   rY   r�   rð  rU   rW   )rI   rY   rœ   r‰   r¬   r   rJ   rß   r�   rð  rU   rW   )
rÓ   r   rœ   r‰   rÔ   r  rÕ   rû   rU   rW   )Yrà   Ú
__future__r   r`   Úloggingrd  Ú	functoolsr   Útypingr   r   r   r   r	   rh   rb  r
   r   Útorch._higher_order_ops.wrapr   r  r   r   r   r   r   r   Útorch._inductor.freezing_utilsr   r   Útorch._inductor.utilsr   r   r   r   r   r   r   r   rÞ  r   r   Útorch.utils._ordered_setr   Útorch.utils._python_dispatchr    r„  r"   Úruntime.autotune_cacher#   Úcollectionsr$   Úcollections.abcr%   r&   Útorch._inductorr'   Útorch._inductor.graphr(   Ú"torch._library.fake_class_registryr)   Ú)torch.export.pt2_archive._package_weightsr*   r½   r+   Útriton_bundlerr,   Ú	getLoggerr\   rs  Ú	dataclassr.   rô   rd   rb   rp   rw   rˆ   rž   r§   rÇ   rÑ   r×   rZ   râ   r‰   ry  r­  r¸  rS   rB   r>   Ú<module>r     su  ðòõ, #ã Û Û 	Ý ß AÕ Aã ß EÝ ?÷÷ ÷ N÷	÷ 	ó 	÷ UÝ /Ý Bå Ý 8ö Ý#ß2å'Ý3ÝCÝAå,Ý,à×Ò˜Ó!€ð ×Ñ÷.ð .ó ð.ð>  €�	Ó ôMôôð,<Ø#ð<à :ð<ð 
ô<ð8OØ#ðOà'ðOð !;ðOð 
ô	Oð"IØ'ðIà#ðIð ðIð 4ð	Ið
 !;ðIð 
ôIðXU;Ø'ðU;à#ðU;ð ðU;ð 4ð	U;ð
 !;ðU;ð 
ôU;ðp;Øð;à#ð;ð #ð;ð )ð	;ð
 
ô;÷*>ñ >ô.MÐ%=ô Mð* ×ÑôF�jó Fó ðFðR ×Ñôb�:ó bó ðbðJ ×Ñô˜Zó ó ðð* ×ÑôW&˜ó W&ó ñW&rB   