§
    ž²ÅjÏa  ã                   ó>  — 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mZmZmZmZ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&m'Z' d d
l(m)Z) d dl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6  ej7        e8¦  «        Z9ee         Z: e j;        dddg¦  «        Z<g d¢Z= ej>        d¦  «        de?fd„¦   «         Z@	 	 d7dee0         de?deeA         ddfd„ZBdee0         dejC        fd„ZD	 	 d8dee:         deeAeAf         deeA         deEddf
d „ZFdeeAeAf         deeAe<f         fd!„ZGd"ej        j$        de:ddfd#„ZHejI        ded         fd$„¦   «         ZJ G d%„ d&¦  «        ZK G d'„ d(¦  «        ZLejM         G d)„ d*¦  «        ¦   «         ZN ejO        ¦   «         ZPd+ed,eddfd-„ZQd.eAdefd/„ZRdd0œd1ed2eAf         d3ejS        jT        d4eeAef         d5eeeAejU        f                  deAf
d6„ZVdS )9é    N)	ÚAnyÚCallableÚDictÚIOÚIteratorÚListÚOptionalÚTypeÚUnion)Úpatch)Ú
draw_graphÚget_aot_graph_nameÚget_graph_being_compiled)Úfx)Úsave_graph_repro)Úget_debug_dir)ÚGraphModule)Ú_extract_tensor_metadataÚTensorMetadata)Úlegalize_graph)Útree_mapé   )ÚconfigÚir)ÚBaseSchedulerNodeÚFusedSchedulerNodeÚNopKernelSchedulerNodeÚ
OutputNodeÚSchedulerNode)ÚVÚBufMetaÚnameÚn_origin)Údotz-Gnslimit=2z-Gnslimit1=2z-Gmaxiter=5000Úreturnc                  óx   — 	 t          j        ddgt           j        ¬¦  «         dS # t           j        $ r Y dS w xY w)NÚwhichr$   )ÚstderrTF)Ú
subprocessÚcheck_outputÚPIPEÚSubprocessError© ó    úFC:\Projects\Historical\venv\Lib\site-packages\torch/_inductor/debug.pyÚhas_dotr0   -   sN   € ðÝÔ ¨%Ð 0½¼ÐIÑIÔIÐIØˆtøÝÔ%ð ð ð Øˆuˆuðøøøs   ‚"& ¦9¸9FÚnodesÚprint_graphÚfnamec           
      óÌ  — t          ¦   «         st                               d¦  «         dS |€t          ¦   «         }t	          | ¦  «        }|j        D ]§}d|j        vrŒ|j        d         j        }t          |t          ¦  «        r-t          |d         t          ¦  «        r
|d         f}n|d         }d}t          |t          j        ¦  «        r|j        j        }t          ||ddddd¦  «        }||j        d<   Œ¨|rt!          |¦  «         t#          i |¦  «        }t%          |¦  «         |j                             ¦   «          t+          ||dt,          j        j        ¬¦  «         dS )z$
    Draw a graph in fname.svg.
    z*draw_buffers() requires `graphviz` packageNÚfusion_metar   Útensor_metaF)Ú
clear_metaÚdot_graph_shape)r0   ÚlogÚwarningr   Úcreate_fx_from_snodesr1   ÚmetaÚgroupÚ
isinstanceÚtupleÚintr   ÚComputedBufferÚdataÚdtyper   Úprintr   r   ÚgraphÚlintr   r   Útracer8   )	r1   r2   r3   rE   Únoder=   rC   ÚmetadataÚgms	            r/   Údraw_buffersrK   6   sn  € õ ‰9Œ9ð Ý�ŠÐ@ÑAÔAÐAØˆà€}Ý(Ñ*Ô*ˆå! %Ñ(Ô(€Eà”ð ,ð ,ˆØ ¤	Ð)Ð)ØØ”	˜-Ô(Ô.ˆÝ�e�UÑ#Ô#ð 	!Ý˜% œ(¥CÑ(Ô(ð !Ø˜qœ˜��à˜aœ�ð ˆÝ�d�BÔ-Ñ.Ô.ð 	$Ø”I”OˆEå! %¨°°d¸DÀ$ÈÑMÔMˆØ#+ˆŒ	�-Ñ Ð àð Ýˆe‰Œˆå	�R˜Ñ	Ô	€BÝ�2ÑÔÐØ„H‡M‚M�O„O€OÝØ
ˆE˜eµV´\Ô5Qðñ ô ð ð ð r.   Úsnodesc                 ó‚  ‡— dt           dt          dt          f         fd„}t          j        dg d¢¦  «        }i }i }t
          j                             ¦   «         }d}g }d}| D �]Ò}	|	                     ¦   «         rd}
|
}n€|	 	                    ¦   «         rd	}
|
}ngt          |	t          ¦  «        rd
}
|
}nMt          |	t          ¦  «        r
d}
|	j        }n.t          |	t          ¦  «        r
d}
|	j        }nt          d¦  «        ‚t
          j        j                             |	                     ¦   «         d¦  «        }|
› d|› �} ||¦  «        }i }t)          |	d¦  «        rd|	                     ¦   «         i}|                     |d|¬¦  «        }dt.          t0          t          f         dt2          fˆfd„Š ‰|	¦  «        r|                     |¦  «         |	                     ¦   «         }||_         |||	|
¦  «        |j        d<   |||<   |	                     ¦   «         D ]}|||                     ¦   «         <   Œ|€|}�ŒÔ| D ]É}	|	                     ¦   «         }|	j        j         }||         }g }|D ]†}|j        |v r||j                 }nQ| !                    |¦  «        5  | "                    |j        ¦  «        }|||j        <   ddd¦  «         n# 1 swxY w Y   ||k    rŒq|                     |¦  «         Œ‡tG          |¦  «        |_$        ŒÊ| %                    tM          |¦  «        dk    r|d         ntG          |¦  «        ¦  «         |S )úB
    Creates a FX Graph from a list of SchedulerNode objects.
    r"   r%   .c                 ó8   — dt           dt          fd„}| |_        |S )NÚargsr%   c                  ó   — dS ©Nr   r-   )rP   s    r/   Úfunc1z;create_fx_from_snodes.<locals>.get_fake_func.<locals>.func1j   s   € Ø�1r.   )r   r@   Ú__name__)r"   rS   s     r/   Úget_fake_funcz,create_fx_from_snodes.<locals>.get_fake_funci   s2   € ð	�ð 	¥ð 	ð 	ð 	ð 	ð ˆŒØˆr.   Ú
FusionMeta)r=   ÚsnodeÚtypeNÚexternÚtemplateÚnopÚcomputeÚfusedzUnknown node typeÚoriginal_atenz: Ú
get_deviceÚdevicer-   ©rP   ÚkwargsrW   c                 óÄ   •— t          | t          ¦  «        r t          ˆfd„| j        D ¦   «         ¦  «        S t          d„ |                      ¦   «         D ¦   «         ¦  «        S )Nc              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S ©Nr-   )Ú.0ÚxÚ	in_outputs     €r/   ú	<genexpr>z;create_fx_from_snodes.<locals>.in_output.<locals>.<genexpr>™   s+   øè è € Ð>Ð>¨A˜9˜9 Q™<œ<Ð>Ð>Ð>Ð>Ð>Ð>r.   c              3   ó^   K  — | ](}|j         D ]}t          |j        t          ¦  «        V — ŒŒ)d S re   )Úusersr>   rH   r   )rf   ÚbufÚusers      r/   ri   z;create_fx_from_snodes.<locals>.in_output.<locals>.<genexpr>š   s[   è è € ð ð àØœIðð ð õ ˜4œ9¥jÑ1Ô1ðð ð ð ð ð ð r.   )r>   r   ÚanyrL   Úget_outputs)rW   rh   s    €r/   rh   z(create_fx_from_snodes.<locals>.in_output—   su   ø€ Ý˜%Õ!3Ñ4Ô4ð ?ÝÐ>Ð>Ð>Ð>°´Ð>Ñ>Ô>Ñ>Ô>Ð>Ýð ð à ×,Ò,Ñ.Ô.ðñ ô ñ ô ð r.   r5   r   r   )'Ústrr   r@   ÚcollectionsÚ
namedtupleÚtorchr   ÚGraphÚ	is_externÚis_templater>   r   r   r=   r   ÚRuntimeErrorÚ	_inductorÚutilsÚget_fused_kernel_nameÚ	get_nodesÚhasattrr_   Úcall_functionr   r   ÚboolÚappendÚget_namer"   r<   ro   Úread_writesÚreadsÚinserting_beforeÚplaceholderr?   rP   ÚoutputÚlen)rL   rU   rV   Úbuf_to_fx_nodeÚnode_to_fx_noderE   Ú
first_nodeÚoutputsr=   rW   Ú	node_typeÚ
fused_nameÚ	func_nameÚ	node_funcrb   Úfx_noder"   rl   ÚdepsÚnew_argsÚdepÚdep_noderh   s                         @r/   r;   r;   d   sî  ø€ ð
�Cð ¥H¨Sµ#¨XÔ$6ð ð ð ð õ Ô'¨Ð6PÐ6PÐ6PÑQÔQ€Jà€NØ€OÝŒH�NŠNÑÔ€EØ€Jà€GØ€Eàð 2!ñ 2!ˆØ�?Š?ÑÔð 	4Ø ˆIØˆEˆEØ×ÒÑ Ô ð 	4Ø"ˆIØˆEˆEÝ˜Õ5Ñ6Ô6ð 
	4ØˆIØˆEˆEÝ˜�}Ñ-Ô-ð 	4Ø!ˆIØ”KˆEˆEÝ˜Õ1Ñ2Ô2ð 	4ØˆIØ”KˆEˆEåÐ2Ñ3Ô3Ð3å”_Ô*×@Ò@Ø�OŠOÑÔ˜ñ
ô 
ˆ
ð !Ð0Ð0 JÐ0Ð0ˆ	Ø!�M )Ñ,Ô,ˆ	ØˆÝ�5˜,Ñ'Ô'ð 	4Ø × 0Ò 0Ñ 2Ô 2Ð3ˆFØ×%Ò% i°bÀÐ%ÑHÔHˆð	�UÕ#4Õ6HÐ#HÔIð 	Ídð 	ð 	ð 	ð 	ð 	ð 	ð ˆ9�UÑÔð 	$Ø�NŠN˜7Ñ#Ô#Ð#Ø�~Š~ÑÔˆØˆŒà&0 j°¸¸yÑ&IÔ&IˆŒ�]Ñ#à 'ˆ˜ÑØ×$Ò$Ñ&Ô&ð 	5ð 	5ˆCØ-4ˆN˜3Ÿ<š<™>œ>Ñ*Ð*àÐØ ˆJùð ð 'ð 'ˆØ�~Š~ÑÔˆØÔ Ô&ˆà! $Ô'ˆØˆØð 		&ð 		&ˆCØŒx˜>Ð)Ð)Ø)¨#¬(Ô3��à×+Ò+¨JÑ7Ô7ð 8ð 8Ø$×0Ò0°´Ñ:Ô:�HØ/7�N 3¤8Ñ,ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð ˜7Ò"Ð"ØØ�OŠO˜HÑ%Ô%Ð%Ð%å˜X‘”ˆŒˆà	‡L‚L�s 7™|œ|¨qÒ0Ð0�˜”�µe¸G±n´nÑEÔEÐEØ€Ls   Ê%KËK	ËK	Únode_name_to_buf_nameÚparent_buf_nameÚ	n_originsc                 ó^  — | €d S | D ]¥}|                      ¦   «         }|                     ¦   «         }|�)t          |¦  «        dk    rt          |||€|n|¦  «         ŒUt          |¦  «        dk    r|d         |k    sJ ‚|j        }|�|j        €Œ‡|j        D ]}|j        }	|	|vr	|€|n|||	<   ŒŒ¦d S )Nr   r   )r€   r{   r†   Ú$update_orig_fx_node_name_to_buf_namerH   Úoriginsr"   )
r1   r”   r•   r–   rH   Úbuf_nameÚchildren_nodesÚir_nodeÚoriginÚ	node_names
             r/   r˜   r˜   Æ   s  € ð €}ØˆØð ð ˆà—=’=‘?”?ˆØŸšÑ)Ô)ˆØÐ%­#¨nÑ*=Ô*=ÀÒ*AÐ*AÝ0ØØ%Ø+Ð3��¸ñô ð ð
 å�~Ñ&Ô&¨!Ò+Ð+°¸qÔ0AÀTÒ0IÐ0IÐ0IÐIà”)ˆØˆ?˜gœoÐ5ØØ”oð 	ð 	ˆFØœˆIð Ð 5Ð5Ð5à /Ð 7�H�H¸_ð & iÑ0øð	ð#ð r.   c                 ó  — i }|                       ¦   «         D ]+\  }}||vr|h||<   Œ||                              |¦  «         Œ,i }|                       ¦   «         D ]-\  }}t          ||         ¦  «        }t          ||¦  «        ||<   Œ.|S re   )ÚitemsÚaddr†   r!   )r”   Úbuf_name_to_n_noderž   rš   Únode_name_to_buf_metaÚn_nodes         r/   Úget_node_name_to_buf_metar¥   é   s»   € ð ÐØ4×:Ò:Ñ<Ô<ð 8ð 8Ñˆ	�8ØÐ-Ð-Ð-Ø,5¨;Ð˜xÑ(Ð(à˜xÔ(×,Ò,¨YÑ7Ô7Ð7Ð7àÐØ4×:Ò:Ñ<Ô<ð Eð EÑˆ	�8ÝÐ'¨Ô1Ñ2Ô2ˆÝ+2°8¸VÑ+DÔ+DÐ˜iÑ(Ð(Ø Ð r.   rJ   c                 óÄ   — i }t          ||¦  «         |€dS t          |¦  «        }| j        j        D ]-}|j        |v r"|                     |j        ¦  «        |j        d<   Œ.dS )rN   NÚbuf_meta)r˜   r¥   rE   r1   r"   Úgetr<   )rJ   rL   r”   r£   rH   s        r/   Úannotate_orig_fx_with_snodesr©   ú   s�   € ð -/ÐÝ(¨Ð1FÑGÔGÐGØÐ$ØˆÝ5Ð6KÑLÔLÐØ””ð Ið IˆØŒ9Ð-Ð-Ð-Ø$9×$=Ò$=¸d¼iÑ$HÔ$HˆDŒI�jÑ!øðIð Ir.   c               #   óð  K  — t           j                             dd¦  «        dk    } dd l}t	          j        |j        j        j        ¦  «        }t          j
        ¦   «         }| s5	 d V — |                     ¦   «          n# |                     ¦   «          w xY wd S |                     t          dd¦  «        ¦  «         t           j                             t!          ¦   «         d¦  «        }t          j        |d¬¦  «         t	          j        t           j                             |d	t'          ¦   «         › d
�¦  «        ¦  «        }|                     t          j        ¦  «         |                     t	          j        d¦  «        ¦  «         |                     |¦  «         	 d V — |                     |¦  «         |                     ¦   «          d S # |                     |¦  «         |                     ¦   «          w xY 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)ÚosÚenvironr¨   Útorch._functorch.aot_autogradÚloggingÚ	getLoggerÚ
_functorchÚaot_autogradrT   Ú
contextlibÚ	ExitStackÚcloseÚenter_contextr   ÚpathÚjoinr   ÚmakedirsÚFileHandlerr   ÚsetLevelÚDEBUGÚsetFormatterÚ	FormatterÚ
addHandlerÚremoveHandler)Úcompile_debugrs   r9   Ústackr½   Úfhs         r/   Úenable_aot_loggingrÊ     sÇ  è è € å”J—N’NÐ#8¸#Ñ>Ô>À#ÒE€Mà(Ð(Ð(Ð(å
Ô
˜EÔ,Ô9ÔBÑ
CÔ
C€CåÔ Ñ"Ô"€EØð ð	ØˆEˆEˆEà�KŠK‰MŒMˆMˆMøˆE�KŠK‰MŒMˆMˆMøøøØˆð 
×Ò�ÐJÈDÑQÔQÑRÔRÐRåŒ7�<Š<�™œ¨Ñ9Ô9€DÝ„K�˜tÐ$Ñ$Ô$Ð$å	Ô	Ý
Œ�ŠØØ3Õ%Ñ'Ô'Ð3Ð3Ð3ñ	
ô 	
ñ
ô 
€Bð ‡K‚K•”ÑÔÐØ‡O‚OÝÔÐOÑPÔPñô ð ð ‡N‚N�2ÑÔÐðØˆˆˆà×Ò˜"ÑÔÐØ�Š‰Œˆˆˆøð 	×Ò˜"ÑÔÐØ�Š‰Œˆˆøøøs   Á$A= Á=BÆG
 Ç
+G5c                   óš  — e Zd Z ej        ¦   «         Zededee         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e                  dee         dee         ddfd„Zdd„Zdedeed                  fd„ZdS )ÚDebugContextÚfolder_namer%   c                 ó  — t           j        j        pt          ¦   «         }t          j        D ]_}t          j                             |d| › d|› �¦  «        }t          j         	                    |¦  «        st          j
        |¦  «         |c S Œ`d S )Nr®   ú.)r   rG   Ú	debug_dirr   rÌ   Ú_counterr²   r½   r¾   Úexistsr¿   )rÍ   rÐ   ÚnÚdirnames       r/   Úcreate_debug_dirzDebugContext.create_debug_dir7  s�   € å”LÔ*Ð=­m©o¬oˆ	ÝÔ&ð 	ð 	ˆAÝ”g—l’lØØØÐ$Ð$ Ð$Ð$ñô ˆGõ
 ”7—>’> 'Ñ*Ô*ð Ý”˜GÑ$Ô$Ð$Ø���ðð ˆtr.   Nc                 óR   — d | _         d | _        t          j        ¦   «         | _        d S re   )Ú_profÚ_pathr¹   rº   Ú_stack)Úselfs    r/   Ú__init__zDebugContext.__init__E  s$   € ØˆŒ
ØˆŒ
Ý Ô*Ñ,Ô,ˆŒˆˆr.   Únew_pathc                 ó°  — | j         sd S |                     d¦  «        s
J |¦   «         ‚ddlm} 	  ||› d�¦  «        5  t          j                             |¦  «        rt          j        |¦  «         t          j	        | j         |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r% t                               d| j         |¦  «         Y d S w xY w)Nz.debugr   )ÚFileLockz.lockz(Failed to copy debug files from %s to %s)rØ   ÚendswithÚfilelockrÞ   r²   r½   rÒ   ÚshutilÚrmtreeÚcopytreeÚOSErrorr9   r:   )rÚ   rÜ   rÞ   s      r/   ÚcopyzDebugContext.copyJ  sL  € ØŒzð 	ØˆFØ× Ò  Ñ*Ô*Ð4Ð4¨HÑ4Ô4Ð*Ø%Ð%Ð%Ð%Ð%Ð%ð	Ø�˜XÐ,Ð,Ð,Ñ-Ô-ð 6ð 6Ý”7—>’> (Ñ+Ô+ð ,Ý”M (Ñ+Ô+Ð+Ý” ¤
¨HÑ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6øõ ð 	ð 	ð 	Ý�KŠKØ:¸D¼JÈñô ð ð ð ð ð	øøøs5   °B& ¾ABÂB& ÂBÂB& Â BÂ!B& Â&+CÃCÚwÚfilenameÚ
write_moderP   rb   c                 ó|   — | j         sJ ‚t          t          j                             | j         |¦  «        |g|¢R i |¤ŽS re   ©rØ   Úopenr²   r½   r¾   )rÚ   rç   rè   rP   rb   s        r/   ÚfopenzDebugContext.fopenZ  sC   € ð ŒzÐÐˆzÝ•B”G—L’L ¤¨XÑ6Ô6¸
ÐTÀTÐTÐTÐTÈVÐTÐTÐTr.   c              /   ó¾   K  — | j         sJ ‚t          t          j                             | j         |¦  «        |g|¢R i |¤Ž5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S re   rê   )rÚ   rç   rè   rP   rb   Úfs         r/   Úfopen_contextzDebugContext.fopen_contextd  s²   è è € ð ŒzÐÐˆzÝ•"”'—,’,˜tœz¨8Ñ4Ô4°jÐRÀ4ÐRÐRÐRÈ6ÐRÐRð 	ÐVWØˆGˆGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á AÁAÁAÚsuffixc                 ó^   — | j         sJ ‚t          j                             | j         |¦  «        S re   )rØ   r²   r½   r¾   )rÚ   rð   s     r/   rç   zDebugContext.filenamep  s'   € ØŒzÐÐˆzÝŒw�|Š|˜DœJ¨Ñ/Ô/Ð/r.   c                 óð  — t           j        j        �ädd l}| j        sJ ‚t
          j                             | j        t
          j                             | j        ¦  «        › d�¦  «        }| 	                    |d¦  «        5 }| 
                    | j        t
          j                             | j        ¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t           j                             |¦  «         d S d S )Nr   z.tar.gzzw:gz)Úarcname)r   rG   Ú
upload_tarÚtarfilerØ   r²   r½   r¾   Úbasenamerë   r¡   )rÚ   rõ   Útar_fileÚtars       r/   rô   zDebugContext.upload_tart  s   € ÝŒ<Ô"Ð.ØˆNˆNˆNà”:ÐÐ�:Ý”w—|’|Ø”
�rœw×/Ò/°´
Ñ;Ô;ÐDÐDÐDñô ˆHð —’˜h¨Ñ/Ô/ð J°3Ø—’˜œ
­B¬G×,<Ò,<¸T¼ZÑ,HÔ,H�ÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð JåŒL×#Ò# HÑ-Ô-Ð-Ð-Ð-ð /Ð.s   Á??C
Ã
CÃCc                 óz  ‡— t           j        rdt          j        d¦  «        Š‰j        }‰                     t          j        ¦  «         dt          dd fˆfd„}| j         	                    ||¦  «         | j         
                    t          j        | ¦  «        ¦  «         t           j        j        sd S |                      t!          ¦   «         ¦  «        | _        t           j        j        r |                      dt          j        ¦  «         t           j        j        r"|                      dt          j        ¦  «         d S d S )Nztorch._dynamoÚlevelr%   c                 ó2   •— ‰                      | ¦  «         d S re   )rÁ   )rú   r9   s    €r/   Úreset_log_levelz/DebugContext.__enter__.<locals>.reset_log_level†  s   ø€ Ø—’˜UÑ#Ô#Ð#Ð#Ð#r.   z	debug.logzinfo.log)r   Údebugrµ   r¶   rú   rÁ   rÂ   r   rÙ   Úcallbackr¼   r    Úset_debug_handlerrG   ÚenabledrÕ   r   rØ   Ú	debug_logÚ_setup_log_captureÚinfo_logÚINFO)rÚ   Ú
prev_levelrü   r9   s      @r/   Ú	__enter__zDebugContext.__enter__€  s(  ø€ ÝŒ<ð 	>ÝÔ# OÑ4Ô4ˆCØœˆJØ�LŠL�œÑ'Ô'Ð'ð$¥sð $¨tð $ð $ð $ð $ð $ð $ð ŒK× Ò  °*Ñ=Ô=Ð=àŒ×!Ò!¥!Ô"5°dÑ";Ô";Ñ<Ô<Ð<åŒ|Ô#ð 	ØˆFà×*Ò*Õ+=Ñ+?Ô+?Ñ@Ô@ˆŒ
åŒ<Ô!ð 	@Ø×#Ò# Kµ´Ñ?Ô?Ð?ÝŒ<Ô ð 	>Ø×#Ò# Jµ´Ñ=Ô=Ð=Ð=Ð=ð	>ð 	>r.   rú   c                 óâ  — t          j        d¦  «        }| j                             |                      |¦  «        ¦  «        }t          j        |¦  «        }|                     |¦  «         |                     t          j        d¦  «        ¦  «         | 	                    |¦  «         |                     t          |j        |¦  «        ¦  «         | j                             |j        |¦  «         d S )Nztorch._inductorr±   )rµ   r¶   rÙ   r¼   rì   ÚStreamHandlerrÁ   rÃ   rÄ   rÅ   Úminrú   rþ   rÆ   )rÚ   rç   rú   r9   ÚfdÚchs         r/   r  zDebugContext._setup_log_capture—  sÐ   € õ
 ÔÐ 1Ñ2Ô2ˆØŒ[×&Ò& t§z¢z°(Ñ';Ô';Ñ<Ô<ˆÝÔ" 2Ñ&Ô&ˆØ
�Š�EÑÔÐØ
�ŠÝÔÐSÑTÔTñ	
ô 	
ð 	
ð 	�Š�rÑÔÐØ�Š•S˜œ EÑ*Ô*Ñ+Ô+Ð+ØŒ×Ò˜SÔ.°Ñ3Ô3Ð3Ð3Ð3r.   Úexc_typeÚexc_valÚexc_tbc                 ó0  — | j         r-| j                              ¦   «          |                      ¦   «          | j        rA|                      ¦   «          t
                               dt          ¦   «         | j        ¦  «         | j         	                    ¦   «          d S )Nz%s debug trace: %s)
r×   ÚdisableÚ_save_profile_datarØ   rô   r9   r:   r   rÙ   r»   )rÚ   r  r  r  s       r/   Ú__exit__zDebugContext.__exit__§  s‰   € ð Œ:ð 	&ØŒJ×ÒÑ Ô Ð Ø×#Ò#Ñ%Ô%Ð%àŒ:ð 	VØ�OŠOÑÔÐÝ�KŠKÐ,Õ.FÑ.HÔ.HÈ$Ì*ÑUÔUÐUØŒ×ÒÑÔÐÐÐr.   c                 óÔ  — | j         sJ ‚| j                              |                      d¦  «        ¦  «         |                      d¦  «        5 }t	          j        | j         |¬¦  «        }|                     ¦   «          |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzcompile.profzcompile.stats)ÚstreamÚcumtimeéd   Útottime)	r×   Ú
dump_statsrç   rì   ÚpstatsÚStatsÚ
strip_dirsÚ
sort_statsÚprint_stats)rÚ   r
  Ústatss      r/   r  zDebugContext._save_profile_data¶  s  € ØŒzÐÐˆzØŒ
×Ò˜dŸmšm¨NÑ;Ô;Ñ<Ô<Ð<Ø�ZŠZ˜Ñ(Ô(ð 	#¨BÝ”L ¤°BÐ7Ñ7Ô7ˆEØ×ÒÑÔÐØ×Ò˜YÑ'Ô'Ð'Ø×Ò˜cÑ"Ô"Ð"Ø×Ò˜YÑ'Ô'Ð'Ø×Ò˜cÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   ÁBCÃC!Ã$C!r"   ).Nc                 ó  — t           j        j        ret          t           j        |¦  «        rK	 t          t	          | ¦  «        |¦  «        S # t
          $ r  t                               dd¬¦  «         Y d S w xY wdt          dt          dd fd„}|S )Nz Ignoring exception in debug codeT)Úexc_inforP   rb   r%   c                  ó   — d S re   r-   ra   s     r/   Úignoredz)DebugContext.__getattr__.<locals>.ignoredÊ  s   € Ø�r.   )	r   rG   r   ÚgetattrÚDebugFormatterÚ	Exceptionr9   r:   r   )rÚ   r"   r"  s      r/   Ú__getattr__zDebugContext.__getattr__Á  s¨   € ÝŒ<Ôð 	¥G­F¬L¸$Ñ$?Ô$?ð 	ðÝ�~¨dÑ3Ô3°TÑ:Ô:Ð:øÝð ð ð Ý—’Ð>È�ÑNÔNÐNØ�t�tðøøøð
�sð ­cð °dð ð ð ð ð ˆNs   ­A
 Á
&A4Á3A4)r%   N)ræ   )rT   Ú
__module__Ú__qualname__Ú	itertoolsÚcountrÑ   Ústaticmethodrp   r	   rÕ   rÛ   rå   r   r   rì   r¹   Úcontextmanagerr   rï   rç   rô   r  r@   r  r
   ÚBaseExceptionr  r  r   r&  r-   r.   r/   rÌ   rÌ   4  sS  € € € € € ØˆyŒÑ Ô €Hàð cð ¨h°s¬mð ð ð ñ „\ðð-ð -ð -ð -ð
˜Sð  Tð ð ð ð ð& ðUð UàðUð ðUð ð	Uð
 ðUð 
ˆCŒðUð Uð Uð Uð Ôð ð	ð 	àð	ð ð	ð ð		ð
 ð	ð 
�"�S”'Ô	ð	ð 	ð 	ñ Ôð	ð0˜sð 0 sð 0ð 0ð 0ð 0ð
.ð 
.ð 
.ð 
.ð>ð >ð >ð >ð.4àð4ð ð4ð 
ð	4ð 4ð 4ð 4ð à˜4 Ô.Ô/ðð ˜-Ô(ðð ˜”ð	ð
 
ðð ð ð ð	#ð 	#ð 	#ð 	#ð ð ¨°¸)Ô1DÔ(Eð ð ð ð ð ð r.   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ded	eddfd„Zd	eddfd„Zdej        j        d	eddfd„Zdeddfd„Zdedeej                 dedef         dededdfd„ZdS )r$  Úhandlerr%   Nc                 ó\   — |j         | _         |j        | _        |j        | _        || _        d S re   )rì   rï   rç   r/  )rÚ   r/  s     r/   rÛ   zDebugFormatter.__init__Ñ  s+   € Ø”]ˆŒ
Ø$Ô2ˆÔØÔ(ˆŒØˆŒˆˆr.   rJ   Úinputsc           
      ó¶  — |                       d¦  «        5 }d }t          j        j        j        j        rHt          j        j                             |¦  «        }t          j
                             |j        ¦  «        }t          j        j        j        j        }t          j        j                             dddœ¦  «        5  t          |||d||¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                       d¦  «        5 }|                     |                     d¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzfx_graph_runnable.pyF)ztrace.enabledztrace.save_real_tensorsÚinductor)Úsave_dirÚstable_hashzfx_graph_readable.py©Úprint_output)rì   rs   rx   r   rG   Úsave_real_tensorsÚ_subclassesÚ
fake_utilsÚtry_convert_fake_to_realr²   r½   rÔ   r"   r   r   ÚwriteÚprint_readable)rÚ   rJ   r1  r
  r4  r5  s         r/   Úfx_graphzDebugFormatter.fx_graph×  s   € ð
 �ZŠZÐ.Ñ/Ô/ð 	°2ØˆHÝŒÔ%Ô+Ô=ð 4ÝÔ*Ô5×NÒNÈvÑVÔV�Ýœ7Ÿ?š?¨2¬7Ñ3Ô3�õ
  œ/Ô0Ô6ÔHˆKÝ”Ô'×-Ò-Ø"'ÀEÐJÐJñô ð 
ð 
õ !ØØØØØ%Ø +ðñ ô ð ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð, �ZŠZÐ.Ñ/Ô/ð 	<°2Ø�HŠH�R×&Ò&°EÐ&Ñ:Ô:Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<sH   –B(C7Â>C ÃC7Ã C$	Ã$C7Ã'C$	Ã(C7Ã7C;Ã>C;Ä*EÅEÅEc                 ó´   — |                       d¦  «        5 }|                     |                     d¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzfx_graph_transformed.pyFr6  )rì   r<  r=  )rÚ   rJ   r1  r
  s       r/   Úfx_graph_transformedz#DebugFormatter.fx_graph_transformedõ  s›   € ð
 �ZŠZÐ1Ñ2Ô2ð 	<°bØ�HŠH�R×&Ò&°EÐ&Ñ:Ô:Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   –*AÁAÁAr1   c                 ó2   — |                       d|¦  «         d S )Nzir_pre_fusion.txt©Ú	_write_ir©rÚ   r1   s     r/   Úir_pre_fusionzDebugFormatter.ir_pre_fusioný  s   € Ø�ŠÐ*¨EÑ2Ô2Ð2Ð2Ð2r.   c                 ó2   — |                       d|¦  «         d S )Nzir_post_fusion.txtrB  rD  s     r/   Úir_post_fusionzDebugFormatter.ir_post_fusion   s   € Ø�ŠÐ+¨UÑ3Ô3Ð3Ð3Ð3r.   rç   c                 ó&  — |                       |¦  «        5 }t                               d|j        ¦  «         |D ]>}|                     |                     ¦   «         ¦  «         |                     d¦  «         Œ?	 d d d ¦  «         d S # 1 swxY w Y   d S )NzWriting debug ir to  %sz


)rì   r9   Úinfor"   r<  Ú	debug_str)rÚ   rç   r1   r
  rH   s        r/   rC  zDebugFormatter._write_ir  sÓ   € ð
 �ZŠZ˜Ñ!Ô!ð 	# RÝ�HŠHÐ.°´Ñ8Ô8Ð8Øð #ð #�Ø—’˜ŸšÑ)Ô)Ñ*Ô*Ð*Ø—’˜Ñ"Ô"Ð"Ð"ð#ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   –A"BÂB
ÂB
c                 óN   — t          ||                      d¦  «        ¬¦  «         d S )Nzgraph_diagram.svg)r3   )rK   rç   rD  s     r/   Úgraph_diagramzDebugFormatter.graph_diagram  s(   € Ý�U $§-¢-Ð0CÑ"DÔ"DÐEÑEÔEÐEÐEÐEr.   c                 óž   — t          ||¦  «         t          ||                      d¦  «        dt          dt          j        j        ¬¦  «         d S )Nzorig_fx_graph_diagram.svgFT)r3   r7   ÚprogÚparse_stack_tracer8   )r©   r   rç   ÚGRAPHVIZ_COMMAND_SCALABLEr   rG   r8   )rÚ   rJ   r1   s      r/   Údraw_orig_fx_graphz!DebugFormatter.draw_orig_fx_graph  sY   € õ
 	% R¨Ñ/Ô/Ð/ÝØØ—-’-Ð ;Ñ<Ô<ØÝ*Ø"Ý"œLÔ8ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 óV   — t          j        ||                      d¦  «        ¦  «         d S )Nzoutput_code.py)rá   rå   rç   )rÚ   rç   s     r/   Úoutput_codezDebugFormatter.output_code   s'   € ÝŒ�H˜dŸmšmÐ,<Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>r.   r"   Úinput_nodesÚtimingsÚChoiceCallerÚelapseÚprecompile_elapsec                 ót  ‡‡— dd l }ddlmŠ dt          j        dt          t
          t
          f         fˆˆfd„Š|t          j                             ¦   «         t          j         	                    ¦   «         ˆfd„|D ¦   «         ||dœ}|  
                    d	d
d¬¦  «        5 }|                     ¦   «         D ]k\  }	}
t          |	                     ¦   «         ¦  «        }|                     |¦  «         |
|d<   |                     ||¦  «         |                     d¦  «         Œl	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   )ÚFixedLayoutrH   r%   c           	      ó‚  •— t          | d¦  «        r| j        }nd}|t          | ¦  «        j        dœ}	 |                      ¦   «         }t          |‰¦  «        räd}	 t          |j        ¦  «        }nM# t          $ r@ 	 t          j
        j                             |j        d¬¦  «        }n# t          $ r Y nw xY wY nw xY w ‰|j        |j        g t          j
        j                             |j        ¦  «        ¢g t          j
        j                             |j        ¦  «        ¢|¬¦  «        }t%          |¦  «        |d<   nt%          |¦  «        |d<   n# t          $ r
}Y d }~nd }~ww xY w	 t%          |                      ¦   «         ¦  «        |d<   n# t          $ r
}Y d }~nd }~ww xY w	 t%          |                      ¦   «         ¦  «        |d	<   n# t          $ r
}Y d }~nd }~ww xY w	 t%          t          j
        j                             |                      ¦   «         ¦  «        ¦  «        |d
<   n# t          $ r
}Y d }~nd }~ww xY w	 t%          t          j
        j                             |                      ¦   «         ¦  «        ¦  «        |d<   n# t          $ r
}Y d }~nd }~ww xY w	 t%          t          j
        j                             |                      ¦   «         ¦  «        ¦  «        |d<   n# t          $ r
}Y d }~nd }~ww xY wt          | d¦  «        r2t          | j        t2          j        ¦  «        r ‰| j        ¦  «        |d<   |S )Nr"   Ú )r"   rX   r   )Úfallback)rC   ÚsizeÚstrideÚoffsetÚlayoutrC   r`   r_  r^  ÚnumelrB   )r|   r"   rX   rT   Úget_output_specr>   r@   r`  r%  r    rE   ÚsizevarsÚ	size_hintr`   rC   Ú
size_hintsr^  r_  rp   Ú	get_dtyper_   Ú
get_strideÚget_sizeÚ	get_numelrB   r   ÚIRNode)	rH   rž   Ú	node_infora  r`  Ústatic_layoutÚerZ  Úbuild_node_infos	          €€r/   ro  z>DebugFormatter.log_autotuning_results.<locals>.build_node_info/  s¦  ø€ Ý�t˜VÑ$Ô$ð Ø œI�	�	à�	à!Ý˜T™
œ
Ô+ðð ˆIðØ×-Ò-Ñ/Ô/�Ý˜f kÑ2Ô2ð 6Ø�Fð!Ý!$ V¤]Ñ!3Ô!3˜˜øÝ$ð !ð !ð !ð!Ý%&¤WÔ%5×%?Ò%?Ø &¤¸ð &@ñ &ô &˜F˜Føõ  )ð !ð !ð !Ø ˜Dð!øøøøøð!øøøð %0 KØœØ$œlØH�qœwÔ/×:Ò:¸6¼;ÑGÔGÐHØL¥¤Ô!1×!<Ò!<¸V¼]Ñ!KÔ!KÐLØ%ð%ñ %ô %�Mõ +.¨mÑ*<Ô*<�I˜hÑ'Ð'å*-¨f©+¬+�I˜hÑ'øøÝð ð ð Ø����øøøøðøøøðÝ%(¨¯ªÑ)9Ô)9Ñ%:Ô%:�	˜'Ñ"Ð"øÝð ð ð Ø����øøøøðøøøðÝ&)¨$¯/ª/Ñ*;Ô*;Ñ&<Ô&<�	˜(Ñ#Ð#øÝð ð ð Ø����øøøøðøøøðÝ&)Ý”GÔ$×/Ò/°·²Ñ0AÔ0AÑBÔBñ'ô '�	˜(Ñ#Ð#øõ ð ð ð Ø����øøøøðøøøðÝ$'­¬Ô(8×(CÒ(CÀDÇMÂMÁOÄOÑ(TÔ(TÑ$UÔ$U�	˜&Ñ!Ð!øÝð ð ð Ø����øøøøðøøøðÝ%(­¬Ô)9×)CÒ)CÀDÇNÂNÑDTÔDTÑ)UÔ)UÑ%VÔ%V�	˜'Ñ"Ð"øÝð ð ð Ø����øøøøðøøøå�t˜VÑ$Ô$ð ?­°D´I½r¼yÑ)IÔ)Ið ?Ø$3 O°D´IÑ$>Ô$>�	˜&Ñ!ØÐs·   ´&E ÁA0 Á/E Á0
B:Á;+B'Â&B:Â'
B4Â1B:Â3B4Â4B:Â7E Â9B:Â:BE Å
E#ÅE#Å'$F Æ
F ÆF Æ$$G	 Ç	
GÇGÇ!AH( È(
H<È7H<É AJ Ê
JÊJÊAK& Ë&
K:Ë5K:c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r-   r-   )rf   rH   ro  s     €r/   ú
<listcomp>z9DebugFormatter.log_autotuning_results.<locals>.<listcomp>o  s#   ø€ ÐJÐJÐJ°d˜O˜O¨DÑ1Ô1ÐJÐJÐJr.   )Úop_nameÚcuda_device_nameÚcuda_device_countrT  Úautotuning_timeÚprecompile_timezautotuning_result_json_list.txtÚatzutf-8)ÚencodingÚbenchmark_resultú
)Újsonr   rZ  rk  r   rp   rs   ÚcudaÚget_device_nameÚdevice_countrï   r    ÚdictÚ	info_dictÚupdateÚdumpr<  )rÚ   r"   rT  rU  rW  rX  r{  Úgeneral_propertiesr
  ÚcallerÚtimer€  rZ  ro  s               @@r/   Úlog_autotuning_resultsz%DebugFormatter.log_autotuning_results#  s²  øø€ ð 	ˆˆˆà#Ð#Ð#Ð#Ð#Ð#ð:	¥"¤)ð :	µµS½#°X´ð :	ð :	ð :	ð :	ð :	ð :	ð :	ðz Ý %¤
× :Ò :Ñ <Ô <Ý!&¤×!8Ò!8Ñ!:Ô!:ØJÐJÐJÐJ¸kÐJÑJÔJØ%Ø0ð
ð 
Ðð ×ÒØ-¨t¸gð  ñ 
ô 
ð 	àØ '§¢¡¤ð ð ‘�˜Ý  ×!1Ò!1Ñ!3Ô!3Ñ4Ô4�	Ø× Ò Ð!3Ñ4Ô4Ð4Ø04�	Ð,Ñ-Ø—	’	˜) RÑ(Ô(Ð(Ø—’˜‘”��ðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÂBD-Ä-D1Ä4D1)rT   r'  r(  rÌ   rÛ   rs   r   r   r   ÚTensorr>  r@  ÚSchedulerNodeListrE  rG  rp   rC  rL  rQ  rS  r   rk  r   Úfloatr†  r-   r.   r/   r$  r$  Ð  s  € € € € € ð ð °ð ð ð ð ð<àŒHÔ ð<ð �U”\Ô"ð<ð 
ð	<ð <ð <ð <ð<<àŒHÔ ð<ð �U”\Ô"ð<ð 
ð	<ð <ð <ð <ð3Ð#4ð 3¸ð 3ð 3ð 3ð 3ð4Ð$5ð 4¸$ð 4ð 4ð 4ð 4ð	#àð	#ð !ð	#ð 
ð		#ð 	#ð 	#ð 	#ðFÐ#4ð F¸ð Fð Fð Fð Fð
àŒHÔ ð
ð !ð
ð 
ð	
ð 
ð 
ð 
ð? Cð ?¨Dð ?ð ?ð ?ð ?ðXàðXð ˜"œ)”_ðXð �n eÐ+Ô,ð	Xð
 ðXð !ðXð 
ðXð Xð Xð Xð Xð Xr.   r$  c                   ó.   — e Zd ZU eed<   ej        ed<   dS )ÚTensorMetadataHolderÚtensor_metadatar`   N)rT   r'  r(  r   Ú__annotations__rs   r`   r-   r.   r/   r‹  r‹  ~  s,   € € € € € € à#Ð#Ð#Ñ#ØŒLÐÐÑÐÐr.   r‹  rP   rb   c                  óö  — d}t           j                             |¦  «        st          j        |¦  «         dt          dt          fd„}t          || |f¦  «        \  }}d}|› d|› dt          t          ¦  «        › d�}t          |d	¦  «        5 }t          j
        ||f|¦  «         d
d
d
¦  «         n# 1 swxY w Y   t                               t          j        ¦  «        rd|› d|›d�}	t          |	¦  «         d
S d
S )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.
    z/tmp/inductor_saved_argsrg   r%   c                 ó~   — t          | t          j        ¦  «        r"t          t	          | ¦  «        | j        ¦  «        S | S )zæ
        Pickle FakeTensor will result in error:
        AttributeError: Can't pickle local object 'WeakValueDictionary.__init__.<locals>.remove'

        Convert all Tensor to metadata. This may also makes pickle faster.
        )r>   rs   r‡  r‹  r   r`   ©rg   s    r/   Úhandle_tensorz5save_args_for_compile_fx_inner.<locals>.handle_tensor’  s8   € õ �a�œÑ&Ô&ð 	Ý'Õ(@ÀÑ(CÔ(CÀQÄXÑNÔNÐNàˆHr.   Úcompile_fx_innerú/Ú_z.pklÚwbNz3
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Ò   Úmkdirr   r   ÚnextÚsave_args_cntrë   Úpickler‚  r9   ÚisEnabledForrµ   rÂ   rD   )
rP   rb   Úfolderr‘  Úargs_to_saveÚkwargs_to_saveÚfn_namer½   rî   Úmessages
             r/   Úsave_args_for_compile_fx_innerr   ‡  sl  € ð (€FÝŒ7�>Š>˜&Ñ!Ô!ð Ý
Œ�ÑÔÐð
�ð 
¥ð 
ð 
ð 
ð 
õ $,¨M¸DÀ&¸>Ñ#JÔ#JÑ €L�.à €GØÐ:Ð:�wÐ:Ð:¥¥mÑ!4Ô!4Ð:Ð:Ð:€DÝ	ˆd�DÑ	Ô	ð 7˜QÝŒ�\ >Ð2°AÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ ×Ò�œÑ&Ô&ð ðØ37ðð ð
 %)ðð ð ˆõ 	ˆg‰Œˆˆˆðð s   ÂB0Â0B4Â7B4r½   c                 óÖ  — ddl m} t          | d¦  «        5 }t          j        |¦  «        \  }}d d d ¦  «         n# 1 swxY w Y   dt
          dt
          fd„}t          j                             d¬¦  «        }|5  t          j
        d	d
¦  «        5  t          |||f¦  «        \  }} ||i |¤Žcd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )r’  Úrbrg   r%   c                 óÄ   — t          | t          ¦  «        rJt          j        j                             | j        j        | j        j        | j        j	        | j
        ¦  «        S | S re   )r>   r‹  rs   Ú_dynamoÚtestingÚrand_stridedrŒ  Úshaper_  rC   r`   r�  s    r/   r‘  z9load_args_and_run_compile_fx_inner.<locals>.handle_tensor»  sY   € Ý�aÕ-Ñ.Ô.ð 	Ý”=Ô(×5Ò5ØÔ!Ô'ØÔ!Ô(ØÔ!Ô'Ø”ñ	ô ð ð ˆHr.   T)Úallow_non_fake_inputsÚ	save_argsF)Útorch._inductor.compile_fxr’  rë   r™  Úloadr   rs   r9  ÚFakeTensorModer   r   r   )r½   r’  rî   rP   rb   r‘  Ú	fake_modes          r/   Ú"load_args_and_run_compile_fx_innerr®  µ  sæ  € Ø;Ð;Ð;Ð;Ð;Ð;å	ˆd�DÑ	Ô	ð &˜QÝ”{ 1‘~”~‰ˆˆfð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð	�ð 	¥ð 	ð 	ð 	ð 	õ Ô!×0Ò0ÀtÐ0ÑLÔL€IØ	ð 1ð 1•F”L ¨eÑ4Ô4ð 1ð 1Ý °°f¨~Ñ>Ô>‰ˆˆfØÐ Ð0¨Ð0Ð0ð1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1sC   —;»?Á?Á:CÂCÂ-CÃC
	Ã
CÃC
	ÃCÃC"Ã%C")Úpackage_pathÚfunc.Úexported_programÚinductor_configsr¯  c                ó  — ddl m} |j        j        }|                     ¦   «         }t          |t          j        j        ¦  «        sJ ‚|j	        \  }}	  | ||||||¬¦  «        S # t          $ r}	|rddlm}
  |
|d|¬¦  «         |	‚d }	~	ww xY w)Nr   )r   )r²  r¯  Úload_and_run)Údump_to_minifyÚcompile_fx_aot)Úoptions)Útorch._inductorr   Úaot_inductorÚdump_aoti_minifierÚmoduler>   rs   r   r   Úexample_inputsr%  Útorch._dynamo.repro.aotirµ  )r°  r±  r²  r¯  r   Úuse_minifierrJ   rP   rb   rn  rµ  s              r/   Úaot_inductor_minifier_wrapperr¿  Ì  sí   € ð 'Ð&Ð&Ð&Ð&Ð&àÔ&Ô9€Là	×	 Ò	 Ñ	"Ô	"€BÝ�b�%œ(Ô.Ñ/Ô/Ð/Ð/Ð/à#Ô2�L€Dˆ&ðØˆtØØØØ-Ø%Ø%ð
ñ 
ô 
ð 	
øõ ð 
ð 
ð 
Øð 	à?Ð?Ð?Ð?Ð?Ð?àˆNØ Ø Ø(ðñ ô ð ð
 ˆøøøøð
øøøs   ÁA$ Á$
BÁ.BÂB)FNrR   )Wrq   r¹   ÚdataclassesÚ	functoolsÚior)  rµ   r²   Úos.pathr™  r  rá   r)   Útypingr   r   r   r   r   r   r	   r
   r   Úunittest.mockr   rs   Úfunctorch.compiler   r   r   r   Útorch._dynamo.repro.after_aotr   Útorch._dynamo.utilsr   Útorch.fx.graph_moduler   Útorch.fx.passes.shape_propr   r   Útorch.fx.passes.tools_commonr   Útorch.utils._pytreer   r\  r   r   Ú	schedulerr   r   r   r   r   Úvirtualizedr    r¶   rT   r9   rˆ  rr   r!   rP  Ú	lru_cacher~   r0   rp   rK   rt   r;   r@   r˜   r¥   r©   r,  rÊ   rÌ   r$  Ú	dataclassr‹  r*  r˜  r   r®  ÚexportÚExportedProgramÚBytesIOr¿  r-   r.   r/   ú<module>rÔ     so  ðØ Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ Ð Ð Ð Ð Ð à €€€Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ø -Ð -Ð -Ð -Ð -Ð -Ø -Ð -Ð -Ð -Ð -Ð -Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø (Ð (Ð (Ð (Ð (Ð (à Ð Ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ð €gÔ˜Ñ!Ô!€à˜”IÐ Ø
 ˆ+Ô
  ¨V°ZÐ,@Ñ
AÔ
A€ØTÐTÐTÐ ð €Ô�TÑÔð�ð ð ð ñ Ôðð Øð+ð +ØÐ!Ô"ð+àð+ð �CŒ=ð+ð 
ð	+ð +ð +ð +ð\_ $Ð'8Ô"9ð _¸b¼hð _ð _ð _ð _ðJ &*Øð	 ð  ØÐ%Ô&ð à  S œ>ð ð ˜c”]ð ð ð	 ð
 
ð ð  ð  ð  ðF!Ø  S œ>ð!à	ˆ#ˆwˆ,Ôð!ð !ð !ð !ð"IØŒÔðIàðIð 
ðIð Ið Ið Ið" Ôð%˜H TœNð %ð %ð %ñ Ôð%ðPYð Yð Yð Yð Yñ Yô Yð Yðxkð kð kð kð kñ kô kð kð\ Ôðð ð ð ð ñ ô ñ Ôðð
  �	”Ñ!Ô!€ð+¨#ð +¸ð +Àð +ð +ð +ð +ð\1¨Sð 1°Sð 1ð 1ð 1ð 1ð8 6:ð#ð #ð #Ø
�3˜�8Ô
ð#à”lÔ2ð#ð ˜3 ˜8”nð	#ð
 ˜5  b¤j Ô1Ô2ð#ð 	ð#ð #ð #ð #ð #ð #r.   