Ë
    ÄÓ^jDË  ã                   óœ  — U 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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Zd dlmZmZmZ d dlmZmZ d dlmZ d dlZd dlmZmZmZ d dlmZ d dlm Z  d dl!m"Z" d d	l#m$Z% d d
l&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: ddl;m$Z$m<Z< ddl<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZE  ejŒ                  eG«      ZHdaIeJeKeLeMf      dz  eNd<   daOePeNd<   daQeKeReLdz  f   dz  eNd<    e)eGd«      ZS e)eGd«      ZTeJe   ZU e j¬                  dd d!g«      ZWg d"¢ZX e8d#d$g«      ZYej´                  d%ePfd&„«       Z[d'eLdz  d%eLfd(„Z\	 	 dfd)eJe?   d*ePd'eLdz  d%dfd+„Z]d,eJe?   d%ej¼                  fd-„Z_	 	 dgd)eUdz  d.eKeLeLf   d/eLdz  d0eRd%df
d1„Z`d.eKeLeLf   d%eKeLeWf   fd2„Zad3ej<                  j^                  d,eUd%dfd4„ZbejÆ                  d%ed   fd5„«       Zdi aeeKeLeKeLeJeL   f   f   eNd6<   i afeKeLeJeL   f   eNd7<   dageRdz  eNd8<   i aheKeLeLf   eNd9<   i aieKeLeJeL   f   eNd:<   d ajeReNd;<   dhd<„ZkejÆ                  d%ed   fd=„«       Zl G d>„ d?«      Zm G d@„ dA«      Znd)eUd%dfdB„Zod)eUd%dfdC„ZpdDeJeLdz     d%dfdE„Zqd)ee?   d%dfdF„ZrdGeeseetf      d%dfdH„ZudhdI„ZvejÆ                  d%ed   fdJ„«       Zwejð                   G dK„ dL«      «       Zyejð                   G dM„ dN«      «       Zz ejö                  «       Z|dOeRdz  dPeKeLef   d%eKeLeKeLeJeL   f   f   fdQ„Z}dReKeLef   d%eKeLeKeLef   f   fdS„Z~d%eKeLef   fdT„Zd%eKeLeKeLeJeL   f   f   fdU„Z€	 didVee?   e=z  dWeLdXePd%eRdz  fdY„Z�dZed[ed%dfd\„Z‚d]eLd%efd^„Zƒdd_œd`edaeLf   dbe�j                  �j
                  dceKeLef   dde6dz  d%eLf
de„Z†y)jé    N)ÚCallableÚIteratorÚSequence)ÚAnyÚIO)Úpatch)Ú
draw_graphÚget_aot_graph_nameÚget_graph_being_compiled)Úfx)Úsave_graph_repro)Úget_debug_dir©Úconfig)Úutils)ÚgetArtifactLogger)Útrace_structured)Úsignpost_event)ÚGraphModule)Ú_extract_tensor_metadataÚTensorMetadata)Úlegalize_graph)ÚFileLike)Ú
OrderedSet)Útree_mapé   )r   Úir)ÚExternKernel)ÚBaseSchedulerNodeÚFusedSchedulerNodeÚNopKernelSchedulerNodeÚ
OutputNodeÚSchedulerNode)ÚVÚGRAPH_EXECUTION_ORDERFÚRECORD_GRAPH_EXECUTIONÚGRAPH_COMPILE_IDSÚir_pre_fusionÚir_post_fusionÚBufMetaÚnameÚn_origin)Údotz-Gnslimit=2z-Gnslimit1=2z-Gmaxiter=5000r-   ÚrawÚreturnc                  ó0   — t        j                  d«      d uS )Nr-   )ÚshutilÚwhich© ó    ú`/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_inductor/debug.pyÚhas_dotr6   A   s   € ä�<‰<˜Ó dÐ*Ð*r4   Úfnamec                 ó�   — | �5t         j                  j                  | «      \  }}|r|j                  d«      S t        j
                  S )Nú.)ÚosÚpathÚsplitextÚlstripÚfunctorch_configÚtorch_compile_graph_format)r7   Ú_Úexts      r5   Ú_get_graph_output_formatrB   F   s=   € ØÐÜ—‘×!Ñ! %Ó(‰ˆˆ3ÙØ—:‘:˜c“?Ð"Ü×6Ñ6Ð6r4   ÚnodesÚprint_graphc           
      óÆ  — t        |«      }|t        vr t        «       st        j	                  d«       y|€
t        «       }t        | «      }|j                  D �]  }d|j                  vrŒ|j                  d   j                  }t        |t        «      r t        |d   t        «      r|d   f}nj|d   }ndt        |t        «      rT	 |j                  d   j                  }|j                  «       d   j                   j#                  «       }|rt        |«      nd}d}	t        |t&        j(                  «      r|j*                  j,                  }	t/        ||	ddddd«      }
|
|j                  d<   �Œ |rt1        |«       t3        i |«      }t5        |«       |j6                  j9                  «        t;        ||dt<        j>                  j@                  ¬	«       y# t$        $ r d}Y ŒÈw xY w)
z 
    Draw a graph in fname.
    z*draw_buffers() requires `graphviz` packageNÚfusion_metar   r   r3   Útensor_metaF)Ú
clear_metaÚdot_graph_shape)!rB   Ú_RAW_DOT_GRAPH_FORMATSr6   ÚlogÚwarningr   Úcreate_fx_from_snodesrC   ÚmetaÚgroupÚ
isinstanceÚtupleÚintÚstrÚsnodeÚget_outputsÚnodeÚmaybe_get_sizeÚ	Exceptionr   ÚComputedBufferÚdataÚdtyper   Úprintr   r   ÚgraphÚlintr	   r   ÚtracerI   )rC   rD   r7   Úgraph_formatr]   rV   rO   rT   Úsizer[   ÚmetadataÚgms               r5   Údraw_buffersrd   N   sœ  € ô ,¨EÓ2€LØÔ1Ñ1¼'¼)Ü�‰Ð@ÔAØà€}Ü(Ó*ˆä! %Ó(€Eà—‘ó ,ˆØ §	¡	Ñ)ØØ—	‘	˜-Ñ(×.Ñ.ˆÜ�eœUÔ#Ü˜% ™(¤CÔ(Ø˜q™˜‘à˜a™‘Ü˜œsÔ#ðØŸ	™	 -Ñ0×6Ñ6�Ø×(Ñ(Ó*¨1Ñ-×2Ñ2×AÑAÓC�Ù'+œ˜dœ°�ð
 ˆÜ�dœB×-Ñ-Ô.Ø—I‘I—O‘OˆEä! %¨°°d¸DÀ$ÈÓMˆà#+ˆ�	‰	�-Ó ð7,ñ: ÜˆeŒä	�R˜Ó	€BÜ�2ÔØ‡H�H‡M�M„OÜØ
ˆE˜e´V·\±\×5QÑ5Qöøô% ò Ø’ðús   ÃAGÇG ÇG Úsnodesc                 óþ  ‡— dt         dt        dt        f   fd„}t        j                  dg d¢«      }i }i }t
        j                  j                  «       }d}g }d}| D �]™  }	|	j                  «       rd}
|
}ns|	j                  «       rd	}
|
}n^t        |	t        «      rd
}
|
}nIt        |	t        «      rd}
|	j                  }n*t        |	t        «      rd}
|	j                  }nt        d«      ‚t
        j                   j"                  j%                  |	j'                  «       d«      }|
› d|› �} ||«      }i }t)        |	d«      rd|	j+                  «       i}|j-                  |d|¬«      }dt.        t        z  dt0        fˆfd„Š ‰|	«      r|j3                  |«       |	j5                  «       }||_         |||	|
«      |j8                  d<   |||<   |	j;                  «       D ]  }|||j5                  «       <   Œ |��Œ˜|}�Œœ | D ]¿  }	|	j5                  «       }|	j<                  j>                  }||   }g }|D ]{  }|j6                  |v r||j6                     }nD|jA                  |«      5  |jC                  |j6                  «      }|||j6                  <   ddd«       |k(  rŒk|j3                  |«       Œ} tE        |«      |_#        ŒÁ |jI                  tK        |«      dk(  r|d   «       |S tE        |«      «       |S # 1 sw Y   ŒixY w)úB
    Creates a FX Graph from a list of SchedulerNode objects.
    r+   r/   .c                 ó4   — dt         dt        fd„}| |_        |S )NÚargsr/   c                   ó   — y©Nr   r3   )ri   s    r5   Úfunc1z;create_fx_from_snodes.<locals>.get_fake_func.<locals>.func1Ž   s   € Ør4   )r   rR   Ú__name__)r+   rl   s     r5   Úget_fake_funcz,create_fx_from_snodes.<locals>.get_fake_func�   s#   € ð	œð 	¤ó 	ð ˆŒØˆr4   Ú
FusionMeta)rO   rT   ÚtypeNÚexternÚtemplateÚnopÚcomputeÚfusedzUnknown node typeÚoriginal_atenz: Ú
get_deviceÚdevicer3   ©ri   ÚkwargsrT   c                 ó    •— t        | t        «      rt        ˆfd„| j                  D «       «      S t        d„ | j	                  «       D «       «      S )Nc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­w©Nr3   )Ú.0ÚxÚ	in_outputs     €r5   ú	<genexpr>z;create_fx_from_snodes.<locals>.in_output.<locals>.<genexpr>¾   s   øè ø€ Ò>¨A™9 QŸ<Ñ>ùs   ƒc              3   ór   K  — | ]/  }|j                   D ]  }t        |j                  t        «      –— Œ  Œ1 y ­wr}   )ÚusersrP   rV   r"   )r~   ÚbufÚusers      r5   r�   z;create_fx_from_snodes.<locals>.in_output.<locals>.<genexpr>¿   s<   è ø€ ò àØŸI™Iòð ô ˜4Ÿ9™9¤j×1ðØ1ñùs   ‚57)rP   r    Úanyre   rU   )rT   r€   s    €r5   r€   z(create_fx_from_snodes.<locals>.in_output¼   sF   ø€ Ü˜%Ô!3Ô4ÜÓ>°·±Ô>Ó>Ð>Üñ à ×,Ñ,Ó.ôó ð r4   rF   r   r   )&rS   r   rR   ÚcollectionsÚ
namedtupleÚtorchr   ÚGraphÚ	is_externÚis_templaterP   r!   r#   rO   r    ÚRuntimeErrorÚ	_inductorr   Úget_fused_kernel_nameÚ	get_nodesÚhasattrrw   Úcall_functionr   ÚboolÚappendÚget_namer+   rN   rU   Úread_writesÚreadsÚinserting_beforeÚplaceholderrQ   ri   ÚoutputÚlen)re   rn   ro   Úbuf_to_fx_nodeÚnode_to_fx_noder]   Ú
first_nodeÚoutputsrO   rT   Ú	node_typeÚ
fused_nameÚ	func_nameÚ	node_funcrz   Úfx_noder+   r„   ÚdepsÚnew_argsÚdepÚdep_noder€   s                         @r5   rM   rM   ˆ   s  ø€ ð
œCð ¤H¨S´#¨XÑ$6ó ô ×'Ñ'¨Ò6PÓQ€Jà€NØ€OÜ�H‰H�N‰NÓ€EØ€Jà€GØ€Eð ó 2!ˆØ�?‰?ÔØ ˆIØ‰EØ×ÑÔ Ø"ˆIØ‰EÜ˜Ô5Ô6ØˆIØ‰EÜ˜œ}Ô-Ø!ˆIØ—K‘K‰EÜ˜Ô1Ô2ØˆIØ—K‘K‰EäÐ2Ó3Ð3ä—_‘_×*Ñ*×@Ñ@Ø�O‰OÓ˜ó
ˆ
ð !�k  J <Ð0ˆ	Ù! )Ó,ˆ	ØˆÜ�5˜,Ô'Ø × 0Ñ 0Ó 2Ð3ˆFØ×%Ñ% i°bÀÐ%ÓHˆð	Ô.Ô1CÑCð 	Ìõ 	ñ �UÔØ�N‰N˜7Ô#Ø�~‰~ÓˆØˆŒá&0°¸¸yÓ&Iˆ�‰�]Ñ#à 'ˆ˜ÑØ×$Ñ$Ó&ò 	5ˆCØ-4ˆN˜3Ÿ<™<›>Ò*ð	5ð ÒØ ŠJðe2!ðj ò 'ˆØ�~‰~ÓˆØ× Ñ ×&Ñ&ˆà! $Ñ'ˆØˆØò 		&ˆCØ�x‰x˜>Ñ)Ø)¨#¯(©(Ñ3‘à×+Ñ+¨JÓ7ñ 8Ø$×0Ñ0°·±Ó:�HØ/7�N 3§8¡8Ñ,÷8ð ˜7Ò"ØØ�O‰O˜HÕ%ð		&ô ˜X“ˆ�ð#'ð& 
‡L�Lœs 7›|¨qÒ0�˜‘ÔEØ€Lô 7<¸G³nÔEØ€L÷8ð 8ús   É +K3Ë3K<Únode_name_to_buf_nameÚparent_buf_nameÚ	n_originsc                 óX  — | €y | D ]¢  }|j                  «       }|j                  «       }|� t        |«      dkD  rt        |||€|n|«       ŒEt        |«      dk(  r|d   |k(  sJ ‚|j                  }|�|j
                  €Œx|j
                  D ]  }|j                  }	|	|vsŒ|€|n|||	<   Œ Œ¤ y )Nr   r   )r•   r�   r›   Ú$update_orig_fx_node_name_to_buf_namerV   Úoriginsr+   )
rC   r©   rª   r«   rV   Úbuf_nameÚchildren_nodesÚir_nodeÚoriginÚ	node_names
             r5   r­   r­   ë   s×   € ð €}ØØò ˆà—=‘=“?ˆØŸ™Ó)ˆØÐ%¬#¨nÓ*=ÀÒ*AÜ0ØØ%Ø+Ð3‘¸ôð
 ô �~Ó&¨!Ò+°¸qÑ0AÀTÒ0IÐIÐIà—)‘)ˆØˆ?˜gŸo™oÐ5ØØ—o‘oò 	ˆFØŸ™ˆIð Ð 5Ò5à /Ð 7‘H¸_ð & iÒ0ñ	ñ%r4   c                 óø   — i }| j                  «       D ]-  \  }}||vrt        |g«      ||<   Œ||   j                  |«       Œ/ i }| j                  «       D ]"  \  }}t        ||   «      }t	        ||«      ||<   Œ$ |S r}   )Úitemsr   Úaddr›   r*   )r©   Úbuf_name_to_n_noder³   r¯   Únode_name_to_buf_metaÚn_nodes         r5   Úget_node_name_to_buf_metarº     s¨   € ð ÐØ4×:Ñ:Ó<ò 8Ñˆ	�8ØÐ-Ñ-Ü+5°y°kÓ+BÐ˜xÒ(ð ˜xÑ(×,Ñ,¨YÕ7ð8ð ÐØ4×:Ñ:Ó<ò EÑˆ	�8ÜÐ'¨Ñ1Ó2ˆÜ+2°8¸VÓ+DÐ˜iÒ(ðEð !Ð r4   rc   c                 óà   — i }t        ||«       |€yt        |«      }| j                  j                  D ]9  }|j                  |v sŒ|j                  |j                  «      |j                  d<   Œ; y)rg   NÚbuf_meta)r­   rº   r]   rC   r+   ÚgetrN   )rc   re   r©   r¸   rV   s        r5   Úannotate_orig_fx_with_snodesr¾   !  sm   € ð -/ÐÜ(¨Ð1FÔGØÐ$ØÜ5Ð6KÓLÐØ—‘—‘ò IˆØ�9‰9Ð-Ò-Ø$9×$=Ñ$=¸d¿i¹iÓ$HˆD�I‰I�jÒ!ñIr4   c               #   ó´  K  — t         j                  j                  dd«      dk(  } dd l}t	        j
                  |j                  j                  j                  «      }t        j                  «       }| s	 d –— |j                  «        y |j                  t        dd«      «       t         j                  j                  t!        «       d«      }t        j"                  |d¬«       t	        j$                  t         j                  j                  |d	t'        «       › d
�«      «      }|j)                  t        j*                  «       |j-                  t	        j.                  d«      «       |j1                  |«       	 d –— |j3                  |«       |j                  «        y # |j                  «        w xY w# |j3                  |«       |j                  «        w xY w­w)NÚTORCH_COMPILE_DEBUGÚ0Ú1r   z*functorch.compile.config.debug_partitionerTÚtorchinductor©Úexist_okÚaot_z
_debug.logú3[%(filename)s:%(lineno)d %(levelname)s] %(message)s)r:   Úenvironr½   Útorch._functorch.aot_autogradÚloggingÚ	getLoggerÚ
_functorchÚaot_autogradrm   Ú
contextlibÚ	ExitStackÚcloseÚenter_contextr   r;   Újoinr   ÚmakedirsÚFileHandlerr
   ÚsetLevelÚDEBUGÚsetFormatterÚ	FormatterÚ
addHandlerÚremoveHandler)Úcompile_debugr‰   rK   Ústackr;   Úfhs         r5   Úenable_aot_loggingrÞ   2  sZ  è ø€ ä—J‘J—N‘NÐ#8¸#Ó>À#ÑE€Mã(ä
×
Ñ
˜E×,Ñ,×9Ñ9×BÑBÓ
C€Cä× Ñ Ó"€EÙð	Ûà�K‰KŒMØð 
×ÑœÐJÈDÓQÔRä�7‰7�<‰<œ›¨Ó9€DÜ‡K�K�˜tÕ$ä	×	Ñ	Ü
�‰�‰ØØÔ%Ó'Ð(¨
Ð3ó	
ó
€Bð ‡K�K”—‘ÔØ‡O�OÜ×ÑÐOÓPôð ‡N�N�2ÔðÛà×Ñ˜"ÔØ�‰�øð3 �K‰K�Mûð0 	×Ñ˜"ÔØ�‰�üs7   ‚A1GÁ4F Á8C>GÅ7F2 Å;"GÆF/Æ/GÆ2#GÇGÚ _inductor_post_to_pre_grad_nodesÚ._inductor_triton_kernel_to_post_grad_node_infoÚ_pre_grad_graph_idÚ#_inductor_pre_grad_node_stack_traceÚ_inductor_kernel_stack_traceÚ(_inductor_kernel_provenance_debug_handlec                  ó   — da y rk   )rä   r3   r4   r5   Ú-reset_inductor_kernel_provenance_debug_handleræ   f  s   € à/0Ñ,r4   c               #   ó   K  — t         } t        j                  «       }t        j                  «       }t        j                  «       }t
        j                  «       }t        }da i ai ai ai ada	 d–— | a |a|a|a|a|ay# | a |a|a|a|a|aw xY w­w)zzContext manager that resets provenance tracking globals upon entering
    and restores their original values when exiting.éÿÿÿÿr   N)rá   rß   Úcopyrà   râ   rã   rä   )Úoriginal_pre_grad_graph_idÚoriginal_post_to_pre_grad_nodesÚ-original_triton_kernel_to_post_grad_node_infoÚ+original_inductor_pre_grad_node_stack_traceÚ$original_inductor_kernel_stack_traceÚ0original_inductor_kernel_provenance_debug_handles         r5   Úreset_provenance_globalsrð   k  sì   è ø€ ô "4ÐÜ&F×&KÑ&KÓ&MÐ#ä6×;Ñ;Ó=ð 2ô 	,×0Ñ0Ó2ð 0ô ,H×+LÑ+LÓ+NÐ(ä0ð 5ð
 ÐØ')Ð$Ø57Ð2Ø*,Ð'Ø#%Ð Ø/0Ð,ð
Ûð 8ÐØ+JÐ(à9ð 	7ð (LÐ$à7ð 	,ð =ñ 	1øð 8ÐØ+JÐ(à9ð 	7ð (LÐ$à7ð 	,ð =ñ 	1üs   ‚A)BÁ,A= Á0BÁ=BÂBc                   ó^  — e Zd Z ej                  «       Zedededz  fd„«       Zdd„Z	deddfd„Z
	 dded	ed
ededee   f
d„Zej                  	 dded	ed
ededeee      f
d„«       Zdedefd„Zdd„Zdd„Zdededdfd„Zdee   dz  dedz  dedz  ddfd„Zdd„Zdeded   dz  fd„Zy)ÚDebugContextÚfolder_namer/   Nc                 ó  — t         j                  j                  xs
 t        «       }t        j
                  D ]C  }t        j                  j                  |d| › d|› �«      }	 t        j                  |d¬«       |c S  y # t        $ r Y ŒRw xY w)NrÃ   r9   FrÄ   )r   r_   Ú	debug_dirr   rò   Ú_counterr:   r;   rÒ   rÓ   ÚFileExistsError)ró   rõ   ÚnÚdirnames       r5   Úcreate_debug_dirzDebugContext.create_debug_dir¡  s†   € ä—L‘L×*Ñ*Ò=¬m«oˆ	Ü×&Ñ&ò 	ˆAÜ—g‘g—l‘lØØØ�-˜q  Ð$óˆGð
Ü—‘˜G¨eÕ4Ø’ð	ð øô	 #ò ñ ðús   Á!A>Á>	B
Â	B
c                 óR   — d | _         d | _        t        j                  «       | _        y r}   )Ú_profÚ_pathrÎ   rÏ   Ú_stack)Úselfs    r5   Ú__init__zDebugContext.__init__³  s    € ØˆŒ
ØˆŒ
Ü ×*Ñ*Ó,ˆ�r4   Únew_pathc                 ó¤  — | j                   sy |j                  d«      sJ |«       ‚ddlm} 	  ||› d�«      5  t        j
                  j                  |«      rt        j                  |«       t        j                  | j                   |«       d d d «       y # 1 sw Y   y xY w# t        $ r$ t        j                  d| j                   |«       Y y w xY w)Nz.debugr   )ÚFileLockz.lockz(Failed to copy debug files from %s to %s)rý   ÚendswithÚfilelockr  r:   r;   Úexistsr1   ÚrmtreeÚcopytreeÚOSErrorrK   rL   )rÿ   r  r  s      r5   ré   zDebugContext.copy¸  s¦   € Ø�zŠzØØ× Ñ  Ô*Ð4¨HÓ4Ð*Ý%ð	Ù˜X˜J eÐ,Ó-ñ 6Ü—7‘7—>‘> (Ô+Ü—M‘M (Ô+Ü—‘ §
¡
¨HÔ5÷6÷ 6ñ 6ûô ò 	Ü�K‰KØ:¸D¿J¹JÈöð	ús/   ­B" ¸ABÂB" ÂBÂB" ÂB" Â"*CÃCÚfilenameÚ
write_moderi   rz   c                 óŽ   — | j                   sJ ‚t        t        j                  j	                  | j                   |«      |g|¢­i |¤ŽS r}   ©rý   Úopenr:   r;   rÒ   )rÿ   r
  r  ri   rz   s        r5   ÚfopenzDebugContext.fopenÈ  s:   € ð �zŠzÐˆzÜ”B—G‘G—L‘L §¡¨XÓ6¸
ÐTÀTÒTÈVÑTÐTr4   c              /   óÊ   K  — | j                   sJ ‚t        t        j                  j	                  | j                   |«      |g|¢­i |¤Ž5 }|–— d d d «       y # 1 sw Y   y xY w­wr}   r  )rÿ   r
  r  ri   rz   Úfs         r5   Úfopen_contextzDebugContext.fopen_contextÒ  sW   è ø€ ð �zŠzÐˆzÜ”"—'‘'—,‘,˜tŸz™z¨8Ó4°jÐRÀ4ÒRÈ6ÑRð 	ÐVWØŠG÷	÷ 	ñ 	üs   ‚AA#Á	AÁ	A#ÁA ÁA#Úsuffixc                 ór   — | j                   sJ ‚t        j                  j                  | j                   |«      S r}   )rý   r:   r;   rÒ   )rÿ   r  s     r5   r
  zDebugContext.filenameÞ  s'   € Ø�zŠzÐˆzÜ�w‰w�|‰|˜DŸJ™J¨Ó/Ð/r4   c                 ó  — t         j                  j                  �ådd l}| j                  sJ ‚t
        j                  j                  | j                  t
        j                  j                  | j                  «      › d�«      }|j                  |d«      5 }|j                  | j                  t
        j                  j                  | j                  «      ¬«       d d d «       t         j                  j                  |«       y y # 1 sw Y   Œ*xY w)Nr   z.tar.gzzw:gz)Úarcname)r   r_   Ú
upload_tarÚtarfilerý   r:   r;   rÒ   Úbasenamer  r¶   )rÿ   r  Útar_fileÚtars       r5   r  zDebugContext.upload_tarâ  sÀ   € Ü�<‰<×"Ñ"Ð.Ûà—:’:Ð�:Ü—w‘w—|‘|Ø—
‘
œrŸw™w×/Ñ/°·
±
Ó;Ð<¸GÐDóˆHð —‘˜h¨Ó/ð J°3Ø—‘˜Ÿ
™
¬B¯G©G×,<Ñ,<¸T¿Z¹ZÓ,H�ÔI÷Jä�L‰L×#Ñ# HÕ-ð /÷Jð Jús   ÂADÄD
c                 ó²  ‡— t         j                  rjt        j                  d«      Š‰j                  }‰j                  t        j                  «       dt        dd fˆfd„}| j                  j                  ||«       | j                  j                  t        j                  | «      «       t         j                  j                  sy | j                  t!        «       «      | _        t         j                  j$                  r | j'                  dt        j                  «       t         j                  j(                  r!| j'                  dt        j*                  «       y y )Nztorch._dynamoÚlevelr/   c                 ó(   •— ‰j                  | «       y r}   )rÕ   )r  rK   s    €r5   Úreset_log_levelz/DebugContext.__enter__.<locals>.reset_log_levelô  s   ø€ Ø—‘˜UÕ#r4   z	debug.logzinfo.log)r   ÚdebugrÊ   rË   r  rÕ   rÖ   r   rþ   ÚcallbackrÑ   r$   Úset_debug_handlerr_   Úenabledrú   r
   rý   Ú	debug_logÚ_setup_log_captureÚinfo_logÚINFO)rÿ   Ú
prev_levelr  rK   s      @r5   Ú	__enter__zDebugContext.__enter__î  sæ   ø€ Ü�<Š<Ü×#Ñ# OÓ4ˆCØŸ™ˆJØ�L‰LœŸ™Ô'ð$¤sð $¨tõ $ð �K‰K× Ñ  °*Ô=à�‰×!Ñ!¤!×"5Ñ"5°dÓ";Ô<ä�|‰|×#Ò#Øà×*Ñ*Ô+=Ó+?Ó@ˆŒ
ä�<‰<×!Ò!Ø×#Ñ# K´·±Ô?Ü�<‰<× Ò Ø×#Ñ# J´·±Õ=ð !r4   r  c                 óÎ  — t        j                  d«      }| j                  j                  | j	                  |«      «      }t        j
                  |«      }|j                  |«       |j                  t        j                  d«      «       |j                  |«       |j                  t        |j                  |«      «       | j                  j                  |j                  |«       y )Nztorch._inductorrÇ   )rÊ   rË   rþ   rÑ   r  ÚStreamHandlerrÕ   r×   rØ   rÙ   Úminr  r!  rÚ   )rÿ   r
  r  rK   ÚfdÚchs         r5   r%  zDebugContext._setup_log_capture  s¨   € ô
 ×ÑÐ 1Ó2ˆØ�[‰[×&Ñ& t§z¡z°(Ó';Ó<ˆÜ×"Ñ" 2Ó&ˆØ
�‰�EÔØ
�‰Ü×ÑÐSÓTô	
ð 	�‰�rÔØ�‰”S˜Ÿ™ EÓ*Ô+Ø�‰×Ñ˜S×.Ñ.°Õ3r4   Úexc_typeÚexc_valÚexc_tbc                 ó.  — | j                   r*| j                   j                  «        | j                  «        | j                  r9| j	                  «        t
        j                  dt        «       | j                  «       | j                  j                  «        y )Nz%s debug trace: %s)
rü   ÚdisableÚ_save_profile_datarý   r  rK   rL   r   rþ   rÐ   )rÿ   r/  r0  r1  s       r5   Ú__exit__zDebugContext.__exit__  sa   € ð �:Š:Ø�J‰J×ÑÔ Ø×#Ñ#Ô%à�:Š:Ø�O‰OÔÜ�K‰KÐ,Ô.FÓ.HÈ$Ï*É*ÔUØ�‰×ÑÕr4   c                 óª  — | j                   sJ ‚| j                   j                  | j                  d«      «       | j                  d«      5 }t	        j
                  | j                   |¬«      }|j                  «        |j                  d«       |j                  d«       |j                  d«       |j                  d«       d d d «       y # 1 sw Y   y xY w)Nzcompile.profzcompile.stats)ÚstreamÚcumtimeéd   Útottime)	rü   Ú
dump_statsr
  r  ÚpstatsÚStatsÚ
strip_dirsÚ
sort_statsÚprint_stats)rÿ   r-  Ústatss      r5   r4  zDebugContext._save_profile_data$  s¤   € Ø�zŠzÐˆzØ�
‰
×Ñ˜dŸm™m¨NÓ;Ô<Ø�Z‰Z˜Ó(ð 	#¨BÜ—L‘L §¡°BÔ7ˆEØ×ÑÔØ×Ñ˜YÔ'Ø×Ñ˜cÔ"Ø×Ñ˜YÔ'Ø×Ñ˜cÔ"÷	#÷ 	#ñ 	#ús   Á
A6C	Ã	Cr+   ).Nc                 ó
  — t         j                  j                  r0t        t         j                  |«      r	 t        t	        | «      |«      S dt        dt        dd fd„}|S # t
        $ r t        j                  dd¬«       Y y w xY w)Nz Ignoring exception in debug codeT©Úexc_infori   rz   r/   c                   ó   — y r}   r3   ry   s     r5   Úignoredz)DebugContext.__getattr__.<locals>.ignored8  s   € Ør4   )	r   r_   r#  ÚgetattrÚDebugFormatterrX   rK   rL   r   )rÿ   r+   rF  s      r5   Ú__getattr__zDebugContext.__getattr__/  sy   € Ü�<‰<×Ò¤G¬F¯L©L¸$Ô$?ðÜœ~¨dÓ3°TÓ:Ð:ðœsð ¬cð °dó ð ˆNøô ò Ü—‘Ð>È�ÔNÙðús   ¶A Á BÂB©r/   N)Úw)rm   Ú
__module__Ú__qualname__Ú	itertoolsÚcountrö   ÚstaticmethodrS   rú   r   ré   r   r   r  rÎ   Úcontextmanagerr   r  r
  r  r)  rR   r%  rp   ÚBaseExceptionr5  r4  r   rI  r3   r4   r5   rò   rò   ž  s†  „ Øˆy�‰Ó €Hàð cð ¨c°D©jò ó ðó"-ð
˜Sð  Tó ð& ñUàðUð ðUð ð	Uð
 ðUð 
ˆC‰óUð ×Ñð ñ	àð	ð ð	ð ð		ð
 ð	ð 
�"�S‘'Ñ	ò	ó ð	ð0˜sð 0 só 0ó
.ó>ð.4àð4ð ð4ð 
ó	4ð à�}Ñ%¨Ñ,ðð  Ñ%ðð �d‘
ð	ð
 
óó	#ð ð ¨°Ñ(;¸dÑ(Bô r4   rò   c                   ó²  — e Zd Zdeddfd„Zdej                  j                  deej                     ddfd„Z
dej                  j                  deej                     ddfd„Zd	eddfd
„Zd	eddfd„Zed	edefd„«       Zd	eddfd„Zdej                  j                  d	eddfd„Zddededdfd„Zdedeej,                     dedef   dedededz  ddfd„Zy)rH  Úhandlerr/   Nc                 óx   — |j                   | _         |j                  | _        |j                  | _        || _        y r}   )r  r  r
  rT  )rÿ   rT  s     r5   r   zDebugFormatter.__init__?  s/   € Ø—]‘]ˆŒ
Ø$×2Ñ2ˆÔØ×(Ñ(ˆŒØˆ�r4   rc   Úinputsc           
      óâ  — | j                  d«      5 }d }t        j                  j                  j                  j
                  rRt        j                  j                  j                  |«      }t        j                  j                  |j                  «      }t        j                  j                  j                  j
                  }t        j                  j                  j                  dddœ«      5  t        |||d||¬«       d d d «       d d d «       | j                  d«      5 }|j                  |j!                  d¬«      «       d d d «       y # 1 sw Y   ŒMxY w# 1 sw Y   ŒQxY w# 1 sw Y   y xY w)Nzfx_graph_runnable.pyF)ztrace.enabledztrace.save_real_tensorsÚinductor)Úsave_dirÚstable_hashzfx_graph_readable.py©Úprint_output)r  r‰   rŽ   r   r_   Úsave_real_tensorsÚ_subclassesÚ
fake_utilsÚtry_convert_fake_to_realr:   r;   rù   r+   r   r   ÚwriteÚprint_readable)rÿ   rc   rV  r-  rY  rZ  s         r5   Úfx_graphzDebugFormatter.fx_graphE  s+  € ð
 �Z‰ZÐ.Ó/ð 	°2ØˆHÜ�‰×%Ñ%×+Ñ+×=Ò=Ü×*Ñ*×5Ñ5×NÑNÈvÓV�ÜŸ7™7Ÿ?™?¨2¯7©7Ó3�ô
  Ÿ/™/×0Ñ0×6Ñ6×HÑHˆKÜ—‘×'Ñ'×-Ñ-Ø"'ÀEÑJóñ 
ô !ØØØØØ%Ø +õ÷
÷	ð, �Z‰ZÐ.Ó/ð 	<°2Ø�H‰H�R×&Ñ&°EÐ&Ó:Ô;÷	<ð 	<÷
ð 
ú÷	ð 	ú÷,	<ð 	<ús0   ’CEÃ/EÄEÄ""E%ÅE	ÅEÅE"Å%E.c                 ó’   — | j                  d«      5 }|j                  |j                  d¬«      «       d d d «       y # 1 sw Y   y xY w)Nzfx_graph_transformed.pyFr[  )r  ra  rb  )rÿ   rc   rV  r-  s       r5   Úfx_graph_transformedz#DebugFormatter.fx_graph_transformedc  sB   € ð
 �Z‰ZÐ1Ó2ð 	<°bØ�H‰H�R×&Ñ&°EÐ&Ó:Ô;÷	<÷ 	<ñ 	<ús	   ’"=½ArC   c                 ó�   — | j                  d«      5 }|j                  | j                  |«      «       d d d «       y # 1 sw Y   y xY w)Nzir_pre_fusion.txt©r  ra  Ú	_write_ir©rÿ   rC   r-  s      r5   r(   zDebugFormatter.ir_pre_fusionk  s;   € Ø�Z‰ZÐ+Ó,ð 	,°Ø�H‰H�T—^‘^ EÓ*Ô+÷	,÷ 	,ñ 	,úó	   ’!<¼Ac                 ó�   — | j                  d«      5 }|j                  | j                  |«      «       d d d «       y # 1 sw Y   y xY w)Nzir_post_fusion.txtrg  ri  s      r5   r)   zDebugFormatter.ir_post_fusiono  s;   € Ø�Z‰ZÐ,Ó-ð 	,°Ø�H‰H�T—^‘^ EÓ*Ô+÷	,÷ 	,ñ 	,úrj  c                 ó¸   — t        j                  «       }| D ]2  }|j                  |j                  «       «       |j                  d«       Œ4 |j	                  «       S )Nz


)ÚioÚStringIOra  Ú	debug_strÚgetvalue)rC   r„   rV   s      r5   rh  zDebugFormatter._write_irs  sI   € ä�k‰k‹mˆØò 	 ˆDØ�I‰I�d—n‘nÓ&Ô'Ø�I‰I�hÕð	 ð �|‰|‹~Ðr4   c                 ór   — t        || j                  dt        j                  j                  › �«      ¬«       y )Nzgraph_diagram.)r7   )rd   r
  r   r_   Úgraph_diagram_format)rÿ   rC   s     r5   Úgraph_diagramzDebugFormatter.graph_diagram{  s+   € ÜØØ—-‘- .´·±×1RÑ1RÐ0SÐ TÓUö	
r4   c                 óÊ   — t        ||«       t        || j                  dt        j                  j
                  › �«      dt        dt        j                  j                  ¬«       y )Nzorig_fx_graph_diagram.FT)r7   rH   ÚprogÚparse_stack_tracerI   )r¾   r	   r
  r   r_   Úorig_fx_graph_diagram_formatÚGRAPHVIZ_COMMAND_SCALABLErI   )rÿ   rc   rC   s      r5   Údraw_orig_fx_graphz!DebugFormatter.draw_orig_fx_graph�  sR   € ô
 	% R¨Ô/ÜØØ—-‘-Ø(¬¯©×)RÑ)RÐ(SÐTóð Ü*Ø"Ü"ŸL™L×8Ñ8ö		
r4   r
  Ú	extensionc                 óT   — t        j                  || j                  d|› �«      «       y )Nzoutput_code.)r1   ré   r
  )rÿ   r
  rz  s      r5   Úoutput_codezDebugFormatter.output_code’  s    € Ü�‰�H˜dŸm™m¨l¸9¸+Ð,FÓGÕHr4   r+   Úinput_nodesÚtimingsÚChoiceCallerÚelapseÚprecompile_elapseÚprescreening_elapsec           	      óN  ‡‡— ddl mŠ dt         j                  dt        t        t        f   fˆˆfd„Š|t
        j                  j                  «       t
        j                  j                  «       |D �cg c]
  } ‰|«      ‘Œ c}|||dœ}| j                  ddd	¬
«      5 }	|j                  «       D ][  \  }
}t        |
j                  «       «      }|j                  |«       ||d<   t        j                  ||	«       |	j                  d«       Œ] 	 d d d «       y c c}w # 1 sw Y   y xY w)Nr   )ÚFixedLayoutrV   r/   c           
      ó   •— t        | d«      r| j                  }nd}|t        | «      j                  dœ}	 | j	                  «       }t        |‰«      rÅ ‰|j                  |j                  t        j                  j                  j                  |j                  «      t        j                  j                  j                  |j                  «      t        j                  j                  j                  |j                  d¬«      ¬«      }t!        |«      |d<   nt!        |«      |d<   	 t!        | j%                  «       «      |d<   	 t!        | j'                  «       «      |d	<   	 t!        t        j                  j                  j                  | j)                  «       «      «      |d
<   	 t!        t        j                  j                  j                  | j+                  «       «      «      |d<   	 t!        t        j                  j                  j                  | j-                  «       «      «      |d<   t        | d«      r9t        | j.                  t0        j2                  «      r ‰| j.                  «      |d<   |S # t"        $ r Y �ŒYw xY w# t"        $ r Y �ŒLw xY w# t"        $ r Y �Œ?w xY w# t"        $ r Y �Œw xY w# t"        $ r Y ŒÖw xY w# t"        $ r Y Œ¡w xY w)Nr+   Ú )r+   rp   r   )Úfallback)r[   ra   ÚstrideÚoffsetÚlayoutr[   rx   rˆ  ra   ÚnumelrZ   )r‘   r+   rp   rm   Úget_output_specrP   rx   r[   r$   r]   ÚsizevarsÚoptimization_hintsra   rˆ  Úoptimization_hintr‰  rS   rX   Ú	get_dtyperw   Ú
get_strideÚget_sizeÚ	get_numelrZ   r   ÚIRNode)rV   r³   Ú	node_inforŠ  Ústatic_layoutr„  Úbuild_node_infos        €€r5   r—  z>DebugFormatter.log_autotuning_results.<locals>.build_node_info   s\  ø€ Ü�t˜VÔ$Ø ŸI™I‘	à�	à!Ü˜T›
×+Ñ+ñˆIðØ×-Ñ-Ó/�Ü˜f kÔ2Ù$/ØŸ™Ø$Ÿl™lÜŸW™W×-Ñ-×@Ñ@ÀÇÁÓMÜ Ÿw™w×/Ñ/×BÑBÀ6Ç=Á=ÓQÜ Ÿw™w×/Ñ/×AÑAØ"ŸM™M°Að  Bó  ô%�Mô +.¨mÓ*<�I˜hÒ'ä*-¨f«+�I˜hÑ'ðÜ%(¨¯©Ó)9Ó%:�	˜'Ñ"ðÜ&)¨$¯/©/Ó*;Ó&<�	˜(Ñ#ðÜ&)Ü—G‘G×$Ñ$×7Ñ7¸¿¹Ó8IÓJó'�	˜(Ñ#ð
Ü$'Ü—G‘G×$Ñ$×7Ñ7¸¿¹»ÓHó%�	˜&Ñ!ð
Ü%(Ü—G‘G×$Ñ$×6Ñ6°t·~±~Ó7GÓHó&�	˜'Ñ"ô
 �t˜VÔ$¬°D·I±I¼r¿y¹yÔ)IÙ$3°D·I±IÓ$>�	˜&Ñ!ØÐøô= ò Úðûô ò Úðûô ò Úðûô ò Úðûô ò Ùðûô ò Ùðúso   ¶C/I2 Ä&J ÅJ Å AJ" Æ$AJ2 Ç(AK É2	I?É>I?Ê	JÊJÊ	JÊJÊ"	J/Ê.J/Ê2	J>Ê=J>Ë	KËK)Úop_nameÚcuda_device_nameÚcuda_device_countr}  Úautotuning_timeÚprecompile_timeÚprescreening_timezautotuning_result_json_list.txtÚatzutf-8)ÚencodingÚbenchmark_resultú
)r   r„  r”  ÚdictrS   r‰   ÚcudaÚget_device_nameÚdevice_countr  rµ   Ú	info_dictÚupdateÚjsonÚdumpra  )rÿ   r+   r}  r~  r€  r�  r‚  rV   Úgeneral_propertiesr-  ÚcallerÚtimer¦  r„  r—  s                @@r5   Úlog_autotuning_resultsz%DebugFormatter.log_autotuning_results•  s  ù€ õ 	$ð6	¤"§)¡)ð 6	´´S¼#°X±ö 6	ðr Ü %§
¡
× :Ñ :Ó <Ü!&§¡×!8Ñ!8Ó!:Ø>IÖJ°d™O¨DÕ1ÒJØ%Ø0Ø!4ñ
Ðð ×ÑØ-¨t¸gð  ó 
ð 	àØ '§¡£ò ‘�˜Ü  ×!1Ñ!1Ó!3Ó4�	Ø× Ñ Ð!3Ô4Ø04�	Ð,Ñ-Ü—	‘	˜) RÔ(Ø—‘˜•ñ÷	ð 	ùò K÷
	ð 	ús   Á2D
ÂA/DÄD$)Úpy)rm   rL  rM  rò   r   r‰   r   r   ÚlistÚTensorrc  re  ÚSchedulerNodeListr(   r)   rP  rS   rh  rs  ry  r|  r   r”  r¢  Úfloatr­  r3   r4   r5   rH  rH  >  sŒ  „ ð ð °ó ð<à�H‰H× Ñ ð<ð �U—\‘\Ñ"ð<ð 
ó	<ð<<à�H‰H× Ñ ð<ð �U—\‘\Ñ"ð<ð 
ó	<ð,Ð#4ð ,¸ó ,ð,Ð$5ð ,¸$ó ,ð ðÐ*ð ¨sò ó ðð
Ð#4ð 
¸ó 
ð
à�H‰H× Ñ ð
ð !ð
ð 
ó	
ñ"I Cð I°Cð IÀ4ó IðTàðTð ˜"Ÿ)™)‘_ðTð �n eÐ+Ñ,ð	Tð
 ðTð !ðTð # T™\ðTð 
ôTr4   rH  c                 óÚ   — t         j                  t        j                  «      r)t         j	                  dt
        j                  | «      «       t        j                  j                  | «       y )NzBEFORE FUSION
%s)
Úir_pre_fusion_logÚisEnabledForrÊ   r'  ÚinforH  rh  r$   r   r(   ©rC   s    r5   Úlog_ir_pre_fusionr¸  ì  sB   € Ü×%Ñ%¤g§l¡lÔ3Ü×ÑÐ2´N×4LÑ4LÈUÓ4SÔTä‡G�G×Ñ˜%Õ r4   c                 óÚ   — t         j                  t        j                  «      r)t         j	                  dt
        j                  | «      «       t        j                  j                  | «       y )NzAFTER FUSION
%s)
Úir_post_fusion_logrµ  rÊ   r'  r¶  rH  rh  r$   r   r)   r·  s    r5   Úlog_ir_post_fusionr»  ó  sB   € Ü×&Ñ&¤w§|¡|Ô4Ü×ÑÐ 2´N×4LÑ4LÈUÓ4SÔTä‡G�G×Ñ˜5Õ!r4   Úschedulec                 óx   ‡ — 	 t        dd„ ˆ fd„¬«       y # t        $ r t        j                  dd¬«       Y y w xY w)NÚartifactc                  ó   — dddœS )NÚinductor_collective_scheduler¨  ©r+   rŸ  r3   r3   r4   r5   ú<lambda>z+_dump_collective_schedule.<locals>.<lambda>þ  s   € Ø6Ø"ñ!€ r4   c                  ó   •— ‰ S r}   r3   ©r¼  s   €r5   rÂ  z+_dump_collective_schedule.<locals>.<lambda>  s   ø€ ˜x€ r4   ©Úmetadata_fnÚ
payload_fnzAFailed to log inductor_collective_schedule via structured loggingTrC  )r   rX   rK   r   rÄ  s   `r5   Ú_dump_collective_schedulerÈ  ú  sE   ø€ ð
ÜØñó (ö	
øô ò 
Ü�	‰	ØOØð 	ö 	
ð
ús   ƒ – 9¸9c           
      ó¬   — | D �cg c]6  }t        t        |dd «      x}t        j                  «      rt        |dd «      ‘Œ8 }}|rt	        |«       y y c c}w )NrV   Úpython_kernel_name)rP   rG  r   Ú_CollectiveKernelrÈ  )rC   rV   Úopr¼  s       r5   Úlog_collective_schedulerÍ    s`   € ð öàÜœG D¨&°$Ó7Ð7�b¼×9MÑ9MÔNô 	�Ð(¨$Õ/ð€Hð ñ Ü! (Õ+ð ùòs   …;AÚnode_runtimesc           	      óh  ‡‡— 	 t         j                  j                  j                  Šdt        t
           dz  dt        t
           fˆfd„}dt
        dt        dz  fd„}g Š| D �]  \  }}t        |j                  d|j                  «       «      }t        j                  |j                  «      rdnd	}g }	 |j                  «       D ]‹  }|j                  }	|	j                  «       }
t        |	j                   t"        j$                  «      r|	j'                  «       nd}|	j)                  «       }|j+                   ||
«       ||«       ||«      d
œ«       Œ� 	 ‰j+                  ||||dœ«       �Œ	 t/        dd„ ˆfd„¬«       y# t,        $ r Y Œ7w xY w# t,        $ r t0        j3                  dd¬«       Y yw xY w)zDLog per-op runtime estimates and output tensor metadata for TLParse.r   Nr/   c                 ó.   •— | �t         ‰| «      «      S g S r}   )r¯  )r   Úto_optimization_hintss    €r5   Úto_listz,log_runtime_and_tensor_meta.<locals>.to_list  s   ø€ Ø56°]”4Ñ-¨aÓ0Ó1ÐJÈÐJr4   r[   c                 óD   — | €y t        | «      }|j                  d«      }|S )Nztorch.)rS   Úremoveprefix)r[   Úss     r5   Údtype_to_strz1log_runtime_and_tensor_meta.<locals>.dtype_to_str   s&   € Øˆ}ØÜ�E“
ˆAØ—‘˜xÓ(ˆAØˆHr4   rÊ  Ú
collectivert   )Úshaperˆ  r[   )r+   rp   Úestimated_runtime_nsrŸ   r¾  c                  ó   — dddœS )NÚ inductor_runtime_and_tensor_metar¨  rÁ  r3   r3   r4   r5   rÂ  z-log_runtime_and_tensor_meta.<locals>.<lambda>M  s   € Ø:Ø"ñ!€ r4   c                  ó   •— d‰ iS )NÚopsr3   )rÝ  s   €r5   rÂ  z-log_runtime_and_tensor_meta.<locals>.<lambda>Q  s   ø€   s˜|€ r4   rÅ  z.Failed to log inductor_runtime_and_tensor_metaTrC  )r$   r]   r�  rŽ  r   r   r¯  rS   rG  rV   r•   r   Úis_collectiverU   rW   rP   rŠ  r   ÚLayoutr‘  Úmaybe_get_dtyper”   rX   r   rK   r   )rÎ  rÒ  rÖ  rÕ  Ú
runtime_nsr+   Úop_typerŸ   r„   ÚirnoderØ  rˆ  r[   rÝ  rÑ  s                @@r5   Úlog_runtime_and_tensor_metarä    s«  ù€ ð:SÜ !§¡× 0Ñ 0× CÑ CÐð	K”x¤‘} tÑ+ð 	K´´S±	õ 	Kð	¤ð 	¬¨d©
ó 	ð %'ˆØ*ó !	‰MˆAˆzÜ˜1Ÿ6™6Ð#7¸¿¹»ÓFˆDÜ&+×&9Ñ&9¸!¿&¹&Ô&A‘lÀyˆGð -/ˆGðØŸ=™=›?ò �CØ ŸX™X�FØ"×1Ñ1Ó3�Eô & f§m¡m´R·Y±YÔ?ð ×)Ñ)Ô+à!ð ð
 #×2Ñ2Ó4�EØ—N‘Ná%,¨U£^Ù&-¨f£oÙ%1°%Ó%8ñõñð& �J‰Jà Ø#Ø,6Ø&ñ	öð5!	ôF 	Øñó ,ö	
øô ò Ùðûô( ò SÜ�	‰	ÐBÈTˆ	ÖRðSús7   „B/F Â4BE?Å,F Å?	FÆF Æ
FÆF Æ F1Æ0F1c                  ó€   — t         sy	 t        dd„ d„ ¬«       y# t        $ r t        j	                  dd¬«       Y yw xY w)	z:Emit a structured artifact with the graph execution order.Nr¾  c                  ó   — dddœS )NÚgraph_executionr¨  rÁ  r3   r3   r4   r5   rÂ  z%log_graph_execution.<locals>.<lambda>^  s   € Ø)Ø"ñ!€ r4   c                  ó   — dt         iS )NÚgraph_execution_order)r%   r3   r4   r5   rÂ  z%log_graph_execution.<locals>.<lambda>b  s   € Ð 7Ô9NÐO€ r4   rÅ  zFailed to log graph_executionTrC  )r%   r   rX   rK   r   r3   r4   r5   Úlog_graph_executionrê  W  sH   € å Øð
BÜØññ Pö	
øô ò BÜ�	‰	Ð1¸Dˆ	ÖAðBús   ‰ š =¼=c               #   ól   K  — g a i ada	 d–— t        «        dada day# t        «        dada daw xY w­w)z5Record graph execution order and log it once on exit.TNF)r%   r'   r&   rê  r3   r4   r5   Ú$record_and_log_graph_execution_orderrì  h  sU   è ø€ ð ÐØÐØ!Ðð!ÛäÔØ!&ÐØ $ÐØ Ñøô 	ÔØ!&ÐØ $ÐØ Ñüs   ‚4Š Ž4Ÿ1±4c                   ó6   — e Zd ZU eed<   ej                  ed<   y)ÚTensorMetadataHolderÚtensor_metadatarx   N)rm   rL  rM  r   Ú__annotations__r‰   rx   r3   r4   r5   rî  rî  x  s   … à#Ó#Ø�L‰LÔr4   rî  c                   ó^   — e Zd ZU eed<   eed<   eez  ez  dz  ed<   e	eeez  ez  f   ed<   y)ÚSymExprMetadataHolderÚpytypeÚexprNÚhintÚsymbol_hints)
rm   rL  rM  rS   rð  r   rR   r²  r“   r¢  r3   r4   r5   rò  rò  ~  s9   … àƒKØ
ƒIØ
�‰+˜Ñ
˜tÑ
#Ó#Ø�s˜C %™K¨$Ñ.Ð.Ñ/Ô/r4   rò  Úpre_grad_graph_idÚpost_to_pre_grad_nodes_jsonc           	      ó  ‡— i i dœ}t        |t        «      st        j                  d«       |S t        | t        «      s|S t        j                  t        «      }t        j                  t        «      }	 dt        t        t        f   dt        fd„}|j                  «       D �]<  \  }}t        |t        «      st        j                  d«       |c S |D �]  } ||«      s|c c S |j                  d«      | k(  r.||d      j                  |«       ||   j                  |d   «       |j                  d	g «      D �	cg c]  }	|	|f‘Œ }
}	|
sŒx|
j                  «       \  }Š ||«      s|c c S |j                  d«      | k(  r.||d      j                  ‰«       |‰   j                  |d   «       |
j!                  ˆfd
„|j                  d	g «      D «       «       |
rŒ��Œ
 �Œ? dt        t        t        f   ddfd„} ||«        ||«       ||dœS c c}	w # t"        $ rd}t%        dddt        |«      t'        j(                  «       dœ«       t        j                  d|«       t        j                  d| «       |cY d}~S d}~ww xY w)zx
    Create bidirectional mappings between pre_grad graph nodes
    and post_grad graph code nodes, and vice versa.
    )Ú	preToPostÚ	postToPrezCProvenance tacking error: post_to_pre_grad_nodes_json is not a dictrV   r/   c                 ó”   — t        | t        «      st        j                  d«       yd| vsd| vsd| vrt        j                  d«       yy)NzVProvenance tacking error: node provenance in post_to_pre_grad_nodes_json is not a dictFÚgraph_idr+   Ú	from_nodezYProvenance tacking error: node provenance in post_to_pre_grad_nodes_json has wrong formatT)rP   r¢  rK   Úerror)rV   s    r5   Úcheck_formatz8create_mapping_pre_post_grad_nodes.<locals>.check_format¥  sN   € Ü˜d¤DÔ)Ü—	‘	Ølôð Ø Ñ%¨°tÑ);¸{ÐRVÑ?VÜ—	‘	Øoôð Ør4   zIProvenance tacking error: post_to_pre_grad_nodes_json value is not a listrý  r+   rþ  c              3   ó&   •K  — | ]  }|‰f–— Œ
 y ­wr}   r3   )r~   rø   Ú
parent_keys     €r5   r�   z5create_mapping_pre_post_grad_nodes.<locals>.<genexpr>É  s   øè ø€ ò !Ø,-˜˜Jœñ!ùs   ƒÚdNc                 óJ   — | D ]  }t        | |   «      | |<   Œ t        | «      } y r}   ©r¯  r¢  ©r  Úkeys     r5   Úconvert_sets_to_listszAcreate_mapping_pre_post_grad_nodes.<locals>.convert_sets_to_listsÍ  ó+   € Øò &�Ü˜a ™f›��#’ð&ä�Q“‰Ar4   rX  Úprovenance_tracking_errorÚ"create_mapping_pre_post_grad_nodes©ÚfunctionÚ	error_msgÚstack_tracez post_to_pre_grad_nodes_json:  %szpre_grad_graph_id:  %s)rP   r¢  rK   rÿ  rR   r‡   Údefaultdictr   rS   r   r“   rµ   r¯  r½   r¶   ÚpopÚextendrX   r   Ú	tracebackÚ
format_exc)r÷  rø  Úempty_returnÚpre_to_postÚpost_to_prer   Ú	outer_keyÚ
node_arrayrV   rø   rÜ   Úcurrent_noder  Úer  s                 @r5   r  r  ‰  s€  ø€ ð Øñ5€Lô
 Ð1´4Ô8Ü�	‰	ÐWÔXØÐäÐ'¬Ô-ð Ðä"-×"9Ñ"9¼*Ó"E€KÜ"-×"9Ñ"9¼*Ó"E€KðDð	œt¤C¬ H™~ð 	´$ó 	ð &A×%FÑ%FÓ%Hó 	Ñ!ˆI�zÜ˜j¬$Ô/Ü—	‘	Ø_ôð $Ò#Ø"ó �Ù# DÔ)Ø'Ô'à—8‘8˜JÓ'Ð+<Ò<Ø  V¡Ñ-×1Ñ1°)Ô<Ø 	Ñ*×.Ñ.¨t°F©|Ô<ð 26·±¸+ÀrÓ1JÖK¨A˜!˜YšÐK�ÐKÚØ/4¯y©y«{Ñ,�L *Ù'¨Ô5Ø+Ô+Ø#×'Ñ'¨
Ó3Ð7HÒHØ# L°Ñ$8Ñ9×=Ñ=¸jÔIØ# JÑ/×3Ñ3°LÀÑ4HÔIØ—L‘Ló !Ø1=×1AÑ1AÀ+ÈrÓ1Rô!ô ô òð	ð6	¤T¬#¬s¨(¡^ð 	¸ó 	ñ 	˜kÔ*Ù˜kÔ*à$Ø$ñ
ð 	
ùò) Løô0 ò ô 	ØØ'à@Ü  ›VÜ(×3Ñ3Ó5ñô	
ô 	�	‰	Ð4Ð6QÔRÜ�	‰	Ð*Ð,=Ô>ØÕûðúsR   Á3AH ÃH Ã$AH Ä:HÅH Å
 H Å+A.H Ç3H ÈH È	J ÈAI;É5J É;J Útriton_kernel_to_post_grad_jsonc           	      óF  — i i dœ}t        | t        «      st        j                  d«       |S t	        j
                  t        «      }	 | j                  «       D ]I  \  }}t        |t        «      st        j                  d«       |c S |D ]  }||   j                  |«       Œ ŒK dt        t        t        f   ddfd„} ||«       | |dœS # t        $ rN}t        dd	d
t        |«      t        j                  «       dœ«       t        j                  d| «       |cY d}~S d}~ww xY w)zqCreate bidirectional mappings between triton kernel name and post_grad
    graph code nodes, and vice versa.
    )ÚcppCodeToPostÚpostToCppCodezGProvenance tacking error: triton_kernel_to_post_grad_json is not a dictzMProvenance tacking error: triton_kernel_to_post_grad_json value is not a listr  r/   Nc                 óJ   — | D ]  }t        | |   «      | |<   Œ t        | «      } y r}   r  r  s     r5   r  zFcreate_node_mapping_kernel_to_post_grad.<locals>.convert_sets_to_lists	  r	  r4   rX  r
  Ú"create_mapping_kernel_to_post_gradr  z$triton_kernel_to_post_grad_json:  %s)rP   r¢  rK   rÿ  r‡   r  r   rµ   r¯  r¶   rS   r   rX   r   r  r  )r  r  Úpost_to_cpp_coder  r  Ú	curr_noder  r  s           r5   Ú'create_node_mapping_kernel_to_post_gradr$  ê  s:  € ð Øñ/€Lô
 Ð5´tÔ<Ü�	‰	ØUô	
ð Ðä'2×'>Ñ'>¼zÓ'JÐð$Ø%D×%JÑ%JÓ%Lò 	;Ñ!ˆI�zÜ˜j¬$Ô/Ü—	‘	Øcôð $Ò#Ø'ò ;�	Ø  Ñ+×/Ñ/°	Õ:ñ;ð	;ð	¤T¬#¬s¨(¡^ð 	¸ó 	ñ 	Ð.Ô/à<Ø-ñ
ð 	
øô ò ô 	ØØ'à@Ü  ›VÜ(×3Ñ3Ó5ñô	
ô 	�	‰	Ø2Ð4Sô	
ð Õûðús&   Á>C	 ÂAC	 Ã		D ÃADÄD ÄD c            	      ó¦  — 	 i } t         rrt        t        «      }i t        ¥|¥} t        j
                  j                  r?t        j                  j                  dd«      5 }t        j                  | |«       d d d «       d| d<   | S # 1 sw Y   ŒxY w# t        $ r8}t        dddt        |«      t        j                   «       dœ«       i cY d }~S d }~ww xY w)	Nz/inductor_provenance_tracking_node_mappings.jsonrK  g       @ÚversionrX  r
  Údump_inductor_provenance_infor  )rá   r$  rà   rß   r   r_   r#  r$   r   r  r¨  r©  rX   r   rS   r  r  )Únode_mappingÚnode_mapping_kernelr-  r  s       r5   r'  r'  &  sÕ   € ð"ð (*ˆÝÜ"IÜ>ó#ÐðÜ2ðà%ðˆLô �|‰|×#Ò#Ü—W‘W—]‘]ØEÀsóð 0àÜ—I‘I˜l¨BÔ/÷0ð #&ˆ�YÑØÐ÷0ð 0ûô ò ô 	ØØ'à;Ü  ›VÜ(×3Ñ3Ó5ñô	
ð �	ûðús6   ‚AB ÁBÁ4B ÂBÂB Â	CÂ-CÃCÃCc            	      ó   — 	 t         j                  di «      } t        t        j	                  «       «      t        t
        j	                  «       «      z  }i }|D ]p  }t
        j                  |g «      }t        «       }|D ]#  }|j                  | j                  |g «      «       Œ% t        j                  |g «      |t        |«      dœ||<   Œr |S # t        $ r8}t        dddt        |«      t        j                  «       dœ«       i cY d}~S d}~ww xY w)zCreate kernel information JSONrû  )Ústack_tracesÚpost_grad_nodesÚpre_grad_nodesrX  r
  Úcreate_kernel_information_jsonr  N)rß   r½   r   rã   Úkeysrà   r§  r¯  rX   r   rS   r  r  )r  Úall_kernelsÚresultÚkernel_namer,  r-  Ú	post_noder  s           r5   r.  r.  L  s  € ð%ô
 7×:Ñ:¸;ÈÓKˆÜ Ô!=×!BÑ!BÓ!DÓEÌ
Ü:×?Ñ?ÓAóI
ñ 
ˆð ˆØ&ò 	ˆKÜL×PÑPØ˜RóˆOô /9«lˆNØ,ò F�	Ø×%Ñ% k§o¡o°iÀÓ&DÕEðFô !=× @Ñ @ÀÈbÓ QØ#2Ü"& ~Ó"6ñ#ˆF�;Òð	ð ˆøÜò 
ÜØØ'à<Ü  ›VÜ(×3Ñ3Ó5ñô	
ð �	ûð
ús   ‚C	C Ã	DÃ-DÄDÄDÚnode_scheduler2  r‹   c           	      óö  ‡
— t         j                  j                  dk(  ry	 ddlm}m} t        dz  ag }|› dt        › �}|ržt        | t        «      sJ ‚t        j                  |g «      Š
| j                  r,| j                  j                  }|‰
vr6‰
j                  |«       n$‰
j                  ˆ
fd„| j                  D «       «       t!        | j#                  «       «      }n¯t        | t         «      sJ ‚t%        «       }| D ]ƒ  }|||fvsŒ
|j&                  €Œt        j                  |g «      Š
|j)                  |j&                  j#                  «       «       ‰
j                  ˆ
fd„|j&                  j                  D «       «       Œ… t!        |«      }t*        j                  |g «      j                  |«       t        S # t,        $ r6}	t/        dd	d
t1        |	«      t3        j4                  «       dœ«       Y d}	~	yd}	~	ww xY w)z£
    Set the mapping between `kernel_name` and the post_grad nodes in `node_schedule`.

    Returns a unique int debug handler for each call to this function.
    r   Nr   )ÚDisableReductionÚEnableReductionú:c              3   óR   •K  — | ]  }|j                   ‰vr|j                   –— Œ  y ­wr}   ©r+   ©r~   r²   Úcurr_node_infos     €r5   r�   z:set_kernel_post_grad_provenance_tracing.<locals>.<genexpr>›  s)   øè ø€ ò &àØ—{‘{¨.Ñ8ð —K•Kñ&ùó   ƒ$'c              3   óR   •K  — | ]  }|j                   ‰vr|j                   –— Œ  y ­wr}   r:  r;  s     €r5   r�   z:set_kernel_post_grad_provenance_tracing.<locals>.<genexpr>®  s+   øè ø€ ò .ð !'Ø%Ÿ{™{°.Ñ@ð #ŸK�Kñ.ùr=  rX  r
  Ú'set_kernel_post_grad_provenance_tracingr  )r   r_   Úprovenance_tracking_levelÚcodegen.simd_kernel_featuresr6  r7  rä   rP   r   rà   Ú
setdefaultÚorigin_noder+   r”   r  r®   r¯  Úget_stack_tracesr   rV   r§  rã   rX   r   rS   r  r  )r4  r2  r‹   r6  r7  r+  Úorigin_node_nameÚstack_traces_setrT   r  r<  s             @r5   r?  r?  v  sá  ø€ ô ‡|�|×-Ñ-°Ò2Øð?ßSô 	1°AÑ5Ð0Ø"$ˆØ$˜ QÔ'OÐ&PÐQˆÙÜ˜m¬\Ô:Ð:Ð:ÜK×VÑVØ˜RóˆNð ×(Ò(Ø#0×#<Ñ#<×#AÑ#AÐ Ø#¨>Ñ9Ø"×)Ñ)Ð*:Õ;à×%Ñ%ó &à"/×"7Ñ"7ô&ô ô
   × >Ñ >Ó @ÓA‰Lä˜m¬TÔ2Ð2Ð2Ü0:³ÐØ&ò �Ø Ð2BÐ CÒCØ—z‘zÑ-äJ×UÑUØ +¨Róð 'ð )×/Ñ/°·
±
×0KÑ0KÓ0MÔNØ&×-Ñ-ó .ð +0¯*©*×*<Ñ*<ô.õ ðô   Ð 0Ó1ˆLÜ$×/Ñ/°¸RÓ@×GÑGÈÔUÜ7Ð7øÜò ô 	ØØ'àEÜ  ›VÜ(×3Ñ3Ó5ñô	
ô ûðús%   ¡C%F9 ÄF9 ÄB$F9 Æ9	G8Ç,G3Ç3G8ri   rz   c                  ó¦  ‡	‡
‡— t         j                  j                  t        j                  «       d«      }t         j                  j                  |«      st        j                  |«       dt        dt        t        z  t        z  dz  fd„Šdt        dt        dt        fˆfd„Š	dt        dt        fˆ	ˆ
fd	„Š
t        ‰
| |f«      \  }}d
}|› d|› dt        t        «      › d�}t!        |d«      5 }t#        j$                  ||f|«       ddd«       t&        j)                  t*        j,                  «      rd|› d|›d�}t/        |«       yy# 1 sw Y   ŒBxY w)zè
    This function is used to save arguments for a compile_fx_inner function call
    to the file system.  Later on one can replay the compile_fx_inner call
    with the saved arguments using load_args_and_run_compile_fx_inner.
    Úinductor_saved_argsÚvaluer/   Nc                 óè   — | €y t        | t        «      r| S t        | t        t        f«      r| S t	        | dd «      du rt        | «      S 	 t        | «      S # t
        t        f$ r t        | «      cY S w xY w)NÚ
is_integerF)rP   r“   rR   r²  rG  Ú	TypeErrorÚ
ValueError)rI  s    r5   Úpython_valuez4save_args_for_compile_fx_inner.<locals>.python_valueÑ  st   € Øˆ=ØÜ�eœTÔ"ØˆLÜ�eœc¤5˜\Ô*ØˆLä�5˜,¨Ó-°Ñ6Ü˜“<Ðð	 Ü�u“:ÐøÜœ:Ð&ò 	 Ü˜“<Òð	 ús   Á	
A ÁA1Á0A1r   ró  c                 ó0  •— | j                   }|j                  }i }|�R|j                  j                  D ]9  }|j                  j                  |«      }|€Œ! ‰|«      }|€Œ,||t        |«      <   Œ; t        ||j                   ‰|j                  «      |«      S r}   )	rV   Ú	shape_envrô  Úfree_symbolsÚbacked_var_to_valr½   rS   rò  rõ  )	r   ró  rV   rP  rö  Úsymbolrõ  Úpython_hintrN  s	           €r5   Úhandle_sym_exprz7save_args_for_compile_fx_inner.<locals>.handle_sym_exprà  s�   ø€ Ø�v‰vˆØ—N‘Nˆ	Ø68ˆØÐ ØŸ)™)×0Ñ0ò @�Ø ×2Ñ2×6Ñ6°vÓ>�ØÑ#Ù".¨tÓ"4�KØ"Ñ.Ø4?˜¤S¨£[Ò1ð@ô %ØØ�I‰IÙ˜Ÿ™Ó#Øó	
ð 	
r4   c                 ó  •— t        | t        «      rMt        j                  | «      }|j                  j
                  D ]  }t        ‰|j                  «      |_        Œ |S t        | t        j                  «      r)t        t        ‰t        | «      «      | j                  «      S t        | t        j                  «      r	 ‰| d«      S t        | t        j                  «      r	 ‰| d«      S t        | t        j                  «      r	 ‰| d«      S | S )a  
        Pickle FakeTensor/SymInt will result in errors like:
        AttributeError: Can't pickle local object 'WeakValueDictionary.__init__.<locals>.remove'

        Convert tensors and symbolic values to metadata. This may also make
        pickle faster.
        rR   r²  r“   )rP   r   ré   Údeepcopyr]   rC   r   rN   r‰   r°  rî  r   rx   ÚSymIntÚSymFloatÚSymBool)r   rc   rV   rU  Úhandle_tensors      €€r5   r[  z5save_args_for_compile_fx_inner.<locals>.handle_tensorò  sÔ   ø€ ô �aœÔ%Ü—‘˜qÓ!ˆBØŸ™Ÿ™ò ?�Ü$ ]°D·I±IÓ>�•	ð?àˆIÜ�aœŸ™Ô&Ü'Ü˜Ô(@ÀÓ(CÓDÀaÇhÁhóð ô ˜œ5Ÿ<™<Ô(Ù" 1 eÓ,Ð,Ü˜œ5Ÿ>™>Ô*Ù" 1 gÓ.Ð.Ü˜œ5Ÿ=™=Ô)Ù" 1 fÓ-Ð-àˆHr4   Úcompile_fx_innerú/r@   z.pklÚwbz3
Arguments for a compile_fx_inner call is saved to z’. To replay the call,
run the following:

from torch._inductor.debug import load_args_and_run_compile_fx_inner
load_args_and_run_compile_fx_inner(z
)
        )r:   r;   rÒ   ÚtempfileÚ
gettempdirr  Úmkdirr   rR   r²  r“   rS   rò  r   ÚnextÚsave_args_cntr  Úpickler©  rK   rµ  rÊ   rÖ   r\   )ri   rz   ÚfolderÚargs_to_saveÚkwargs_to_saveÚfn_namer;   r  ÚmessagerU  r[  rN  s            @@@r5   Úsave_args_for_compile_fx_innerrj  Æ  s@  ú€ ô �W‰W�\‰\œ(×-Ñ-Ó/Ð1FÓG€FÜ�7‰7�>‰>˜&Ô!Ü
�‰�Ôð œCð  ¤C¬%¡K´$Ñ$6¸Ñ$=ó  ð
œ3ð 
¬ð 
Ô0Eõ 
ð$œð ¤ö ô4 $,¨M¸DÀ&¸>Ó#JÑ €L�.à €GØˆX�Q�w�i˜q¤¤mÓ!4Ð 5°TÐ:€DÜ	ˆd�DÓ	ð 7˜QÜ�‰�\ >Ð2°AÔ6÷7ô ×ÑœŸ™Ô&ð3Ø37°&ð 9$ð %) 8ð ,	ðˆô 	ˆg�ð '÷7ð 7ús   Ã-EÅEr;   c                 ó  ‡‡‡	‡
‡‡— ddl mŠ ddlm} ddlmŠm} t        | d«      5 }t        j                  |«      \  }}d d d «        |«       Ši Šdt        dt        fˆˆˆˆfd„Š
dt        dt        fˆ	ˆ
fd	„Š	t        j                  j                  d
‰¬«      }|5  t        j                   dd«      5  t#        ‰	f«      \  }} ||i |¤Žcd d d «       cd d d «       S # 1 sw Y   Œ xY w# 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)Nr   )ÚConstantSource)r\  )Ú
DimDynamicÚShapeEnvÚrbr   r/   c                 ó`  •— | j                   }t        |t        «      r-dd l}dd lmc mc m} |j                  ||j                  ¬«      }i }|j                  D ]³  }t        |«      }|‰vrš| j                  j                  |«      }|€U| j                  �||k(  r| j                  }n7‰
j                   ‰|«      «      j                  j                   ‰|<   ‰|   ||<   Œ„‰
j!                  | ‰|«      ‰	j"                  d¬«      ‰|<   ‰|   ||<   Œµ |j%                  |«      }| j&                  dk(  r‰
j)                  || j                  ¬«      S | j&                  dk(  r‰
j+                  || j                  ¬«      S | j&                  dk(  r‰
j-                  |«      S t/        d	| j&                  › �«      ‚)
Nr   )ÚlocalsT)Údynamic_dimÚdo_not_specialize_zero_onerR   )rõ  r²  r“   z%Unexpected symbolic expression type: )rô  rP   rS   ÚsympyÚtorch.utils._sympy.functionsr   Ú_sympyÚ	functionsÚsympifyÚ__dict__rQ  rö  r½   rõ  Úcreate_unbacked_symintrV   Úcreate_symbolÚDYNAMICÚxreplaceró  Úcreate_symintnodeÚcreate_symfloatnodeÚcreate_symboolnodeÚAssertionError)r   rô  rt  Úsympy_functionsÚreplacementsrS  Úsymbol_namerõ  rl  rm  rP  Úsymbol_caches           €€€€r5   Úrestore_sym_exprz<load_args_and_run_compile_fx_inner.<locals>.restore_sym_expr.  s¤  ø€ Ø�v‰vˆÜ�dœCÔ ÛçBÓBà—=‘= ¨o×.FÑ.F�=ÓGˆDØˆØ×'Ñ'ò 	=ˆFÜ˜f›+ˆKØ ,Ñ.Ø—~‘~×)Ñ)¨+Ó6�Ø�<Ø—v‘vÐ)¨d°fªnØ Ÿv™v™à4=×4TÑ4TÙ*¨;Ó7ó5ç™$Ÿt™tð % [Ñ1ð 0<¸KÑ/H˜ VÑ,Ø Ø,5×,CÑ,CØÙ" ;Ó/Ø *× 2Ñ 2Ø/3ð	 -Dó -�˜[Ñ)ð $0°Ñ#<ˆL˜Ò ð'	=ð( �}‰}˜\Ó*ˆØ�8‰8�uÒØ×.Ñ.¨t¸!¿&¹&Ð.ÓAÐAØ�X‰X˜Ò Ø×0Ñ0°¸A¿F¹FÐ0ÓCÐCØ�X‰X˜ÒØ×/Ñ/°Ó5Ð5ä Ð#HÈÏÉÈ
Ð!SÓTÐTr4   c                 ó¼  •— t        | t        «      r8| j                  j                  D ]  }t	        ‰|j
                  «      |_        Œ | S t        | t        «      rjt	        ‰| j                  «      }t        j                  j                  j                  |j                  |j                  |j                  | j                  «      S t        | t         «      r ‰| «      S | S r}   )rP   r   r]   rC   r   rN   rî  rï  r‰   Ú_dynamoÚtestingÚrand_stridedrØ  rˆ  r[   rx   rò  )r   rV   rï  r[  r†  s      €€r5   r[  z9load_args_and_run_compile_fx_inner.<locals>.handle_tensorU  s´   ø€ Ü�aœÔ%ØŸ™Ÿ™ò ?�Ü$ ]°D·I±IÓ>�•	ð?àˆHÜ˜Ô/Ô0Ü& }°a×6GÑ6GÓHˆOÜ—=‘=×(Ñ(×5Ñ5Ø×%Ñ%Ø×&Ñ&Ø×%Ñ%Ø—‘ó	ð ô ˜Ô0Ô1Ù# AÓ&Ð&àˆHr4   T)Úallow_non_fake_inputsrP  Ú	save_argsF)Útorch._dynamo.sourcerl  Útorch._inductor.compile_fxr\  Ú%torch.fx.experimental.symbolic_shapesrm  rn  r  rd  Úloadrò  r   r‰   r^  ÚFakeTensorModer   r   r   )r;   r\  rn  r  ri   rz   Ú	fake_moderl  rm  r[  r†  rP  r…  s          @@@@@@r5   Ú"load_args_and_run_compile_fx_innerr“  #  s  ý€ Ý3Ý;ßJä	ˆd�DÓ	ð &˜QÜ—{‘{ 1“~‰ˆˆf÷&ñ “
€IØ#%€Lð%UÔ1ð %U´c÷ %Uð %UðNœð ¤ö ô$ ×!Ñ!×0Ñ0Ø"¨ið 1ó €Ið 
ñ 1”F—L‘L ¨eÓ4ñ 1Ü °°f¨~Ó>‰ˆˆfÙ Ð0¨Ñ0÷1÷ 1ò 1÷E&ð &ú÷D1ð 1ú÷ 1÷ 1ñ 1ús/   §CÂD Â3C+Ã	D ÃC(Ã+C4	Ã0D Ä D	)Úpackage_pathÚfunc.Úexported_programÚinductor_configsr”  c                ó°  — ddl m} ddlm} ddlm} ddlm} |j                  j                  }|j                  d¬«      }	t        |	t        j                  j                  «      sJ ‚|j                  \  }
}	 |r$|j                  j                   dk(  r ||d	|¬
«       |rÂ|j                  j                   dk(  r©t#        j$                  |	«      }t#        j$                  |j                  «      }t#        j$                  |«      } |||d   |d   |¬
«      \  }}t'        |«      }t        j(                  j)                  ||d¬«      } | |j                  d¬«      |||dd¬«        | |	|
||||¬«      S # |$ r(} ||dd|¬«       t*        j-                  d«       |‚d }~wt.        $ r2}|r)d}|j                  j                   dk(  rd} ||d	||¬«       |‚d }~ww xY w)Nr   )ÚAccuracyError)Údump_to_minifyr   )Ú_aoti_flatten_inputsF)Úcheck_guardsé   Úaot_inductor)Úoptionsé   r   )ÚstrictTÚaccuracy)r—  r”  Úload_and_runÚcheck_accuracy)r—  r”  r£  Úaot_inductor_accuracyÚminify)ÚcommandrŸ  zAccuracy failedÚrun)Útorch._dynamo.debug_utilsr™  Útorch._dynamo.repro.aotirš  Útorch._inductorr   rŽ  r›  rž  Údump_aoti_minifierÚmodulerP   r‰   r   r   Úexample_inputsÚrepro_levelré   rW  rQ   ÚexportrK   rL   rX   )r•  r–  r—  r”  r™  rš  r   r›  Úuse_minifierrc   ri   rz   Úgm_copyÚexample_inputs_copyÚconfig_copyÚflat_example_inputsÚtuple_inputsÚflattened_epr  r§  s                       r5   Úaot_inductor_minifier_wrapperr¸  o  sì  € õ 8Ý7Ý&Ý?à×&Ñ&×9Ñ9€Là	×	 Ñ	 ¨eÐ	 Ó	4€BÜ�bœ%Ÿ(™(×.Ñ.Ô/Ð/Ð/à#×2Ñ2�L€Dˆ&ð>Ù˜F×/Ñ/×;Ñ;¸qÒ@áØ ØØ(õñ
 ˜F×/Ñ/×;Ñ;¸qÒ@ô —m‘m BÓ'ˆGÜ"&§-¡-Ð0@×0OÑ0OÓ"PÐÜŸ-™-Ð(8Ó9ˆKÙ/CØØ# AÑ&Ø# AÑ&Ø#ô	0Ñ,Ð ô !Ð!4Ó5ˆLÜ Ÿ<™<×.Ñ.¨w¸ÈUÐ.ÓSˆLÙØ×#Ñ#°Ð#Ó7ØØ!,Ø)Ø!Ø)õñ ØØØØ-Ø%Ø%ô
ð 	
øð ò ÙØØ#ØØ$õ		
ô 	�‰Ð%Ô&ØˆûÜò ÙØˆGà×"Ñ"×.Ñ.°!Ò3Ø�áØ ØØØ(õ	ð ˆûðús%   Á7C7E/ Å/GÅ4#FÆGÆ#-GÇG)FNrk   rJ  )F)‡r‡   rÎ   ré   ÚdataclassesÚ	functoolsrm  rN  r¨  rÊ   r:   Úos.pathrd  r<  r1   r_  r  Úcollections.abcr   r   r   Útypingr   r   Úunittest.mockr   r‰   Úfunctorch.compiler	   r
   r   r   Útorch._dynamo.repro.after_aotr   Útorch._dynamo.utilsr   Útorch._functorchr   r>   r«  r   Útorch._loggingr   Útorch._logging._internalr   Útorch._utils_internalr   Útorch.fx.graph_moduler   Útorch.fx.passes.shape_propr   r   Útorch.fx.passes.tools_commonr   Útorch.typesr   Útorch.utils._ordered_setr   Útorch.utils._pytreer   r†  r   r   Ú	schedulerr   r    r!   r"   r#   Úvirtualizedr$   rË   rm   rK   r%   r¯  r¢  rS   Úobjectrð  r&   r“   r'   rR   r´  rº  r±  rˆ   r*   rx  rJ   Úcacher6   rB   rd   rŠ   rM   r­   rº   r¾   rQ  rÞ   rß   rà   rá   râ   rã   rä   ræ   rð   rò   rH  r¸  r»  rÈ  rÍ  rQ   r²  rä  rê  rì  Ú	dataclassrî  rò  rO  rc  r  r$  r'  r.  r?  rj  r“  r°  ÚExportedProgramr¸  r3   r4   r5   ú<module>rÒ     sÚ  ðÜ Û Û Û Û Û 	Û Û Û Û 	Û Û Û Û Û Û ß 8Ñ 8ß Ý ã ß VÑ VÝ Ý :Ý -Ý 7Ý !Ý ,Ý 5Ý 0Ý -ß OÝ 7Ý  Ý /Ý (ç Ý ÷õ õ ð €g×Ñ˜Ó!€ð 9=Ð �t˜D  f Ñ-Ñ.°Ñ5Ó <Ø$Ð ˜Ó $Ø26Ð �4˜˜S 4™Z˜Ñ(¨4Ñ/Ó 6á% h°Ó@Ð Ù& xÐ1AÓBÐ Ø˜‘IÐ Ø
 ˆ+×
 Ñ
  ¨V°ZÐ,@Ó
A€ÚTÐ Ù# U¨E NÓ3Ð ð ‡�ð+�ò +ó ð+ð7 C¨$¡Jð 7°3ó 7ð Øñ7ØÐ!Ñ"ð7àð7ð �‰:ð7ð 
ó	7ðt` $Ð'8Ñ"9ð `¸b¿h¹hó `ðL #'Øñ	!Ø˜tÑ#ð!à  S ™>ð!ð ˜4‘Zð!ð ð	!ð
 
ó!ðH!Ø  S ™>ð!à	ˆ#ˆwˆ,Ñó!ð$IØ�‰×ÑðIàðIð 
óIð" ×Ñð%˜H T™Nò %ó ð%ðV EGÐ   $ s¨D°°d¸3±i°Ñ,@Ð'@Ñ"AÓ FØGIÐ .°°S¸$¸s¹)°^Ñ0DÓ IØ!%Ð �C˜$‘JÓ %Ø68Ð # T¨#¨s¨(¡^Ó 8Ø57Ð ˜d 3¨¨S©	 >Ñ2Ó 7Ø01Ð (¨#Ó 1ó1ð
 ×Ñð/
 (¨4¡.ò /
ó ð/
÷d]ñ ]÷@kñ kð\!Ð.ð !°4ó !ð"Ð/ð "°Dó "ð
¨¨S°4©ZÑ(8ð 
¸Tó 
ð"	, 8Ð,=Ñ#>ð 	,À4ó 	,ð=S¨x¸¸cÀ5¸jÑ8IÑ/Jð =SÈtó =Só@Bð" ×Ñð!¨h°t©nò !ó ð!ð ×Ñ÷ð ó ðð
 ×Ñ÷0ð 0ó ð0ð  �	—‘Ó!€ð^Ø˜T‘zð^à!% c¨3 h¡ð^ð 
ˆ#ˆt�C˜˜c™�NÑ#Ð
#Ñ$ó^ðB9Ø%)¨#¨s¨(¡^ð9à	ˆ#ˆt�C˜�H‰~Ð
Ñó9ðx# t¨C°¨H¡~ó #ðL'¨¨S°$°s¸DÀ¹I°~Ñ2FÐ-FÑ(Gó 'ðZ ñMØÐ-Ñ.°Ñ=ðMàðMð ðMð 	ˆ4�Zó	Mð`Z¨#ð Z¸ð ZÀó ZðzI1¨Sð I1°Só I1ðb %)òQØ
�3˜�8Ñ
ðQà—l’l×2Ò2ðQð ˜3 ˜8‘nð	Qð
 ˜T‘/ðQð 	ôQr4   