Ë
    ÃÓ^jv  ã                  óœ   — d dl mZ d dlmZ d dlmZ ddlmZ erd dlm	Z	 ddlm
Z
mZ ddlmZmZ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd	„Zy
)é    )Úannotations)ÚTYPE_CHECKING)Útrace_structuredé   )Úestimate_peak_memory_allocfree)Ú
OrderedSet)ÚFreeableInputBufferÚSNodeMemory)ÚBaseSchedulerNodeÚSchedulerBufferc                ób  ‡‡— d}||    }t        |||«      \  }}}}t        t        ||«      «      }||    }||    }dŠ||kD  rdŠd}||k7  rdŠd}|D ]'  }||   }||   }||k7  sŒd|j                  «       › �Šd}Œ) |�r«‰d| j                  «       › d|› d	|› d
|› d| j	                  «       › d|› d|› d|› d||    › �z  Šd}t        |«      D ]M  \  }\  }}||k(  sŒ||   }d|› d|› d|› dt        |«      › d|j                  «       › d|j	                  «       › �} n d}t        |«      D ]h  \  }}||   }||   }|d|› d|j	                  «       › d|› d|j                  «       › d|› d|› d|j                  «       › d|› d|› d||   › d|› d||   › �z  }Œj ‰|z  Š‰|z  Š‰d|
› �z  Š‰dj                  t        |«      D ��cg c]3  \  }}d|› d|j	                  «       › d||   › d||   › d ||   › d!||   › �‘Œ5 c}}«      z  Š|	› d"�Št        ‰› d#‰› �«       t        d$ˆfd%„ˆfd&„¬'«       |S c c}}w )(NFÚ zITERATIVE PEAK DOES NOT MATCHTz.ITERATIVE CURR MEMORY CANDIDATE DOES NOT MATCHz(ITERATIVE GN CURR MEMORY DOES NOT MATCH:z
CANDIDATE:z
GROUP:z
PEAK_MEMORY_BEFORE:z
PEAK_MEMORY_AFTER_SWAP:z
CANDIDATE_ITER_CURR_MEMORY:z
CANDIDATE_NEW__CURR_MEMORY:z
CANDIDATE_ITER_ALLOCFREE:z
CANDIDATE_NEW_ALLOCFREE:z

NEW_PEAK:z(BASE:z
) @ SNODE[ú/z]:ú z
GROUP_NODE[z] ITER_GNM[z] ESTM_GNM[z] ITER_allocfree:z] ESTM_allocfree:z
GN_TO_BUFS_LAST_USE:z

z
SNODE[z]
z
ITER_cur_mem:z
ESTM_cur_mem:z
ITER_allocfree:z
ESTM_allocfree:Ú_ITERATIVE_RECOMPUTE_ERRORz:
Úartifactc                 ó   •— ‰ ddœS )NÚstring)ÚnameÚencoding© )Útnames   €úf/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_inductor/comms_debug.pyú<lambda>z3_debug_iterative_memory_recompute.<locals>.<lambda>j   s   ø€ ØØ$ñ!€ ó    c                 ó   •— ‰ S )Nr   )Úlogs   €r   r   z3_debug_iterative_memory_recompute.<locals>.<lambda>n   s   ø€ ˜s€ r   )Úmetadata_fnÚ
payload_fn)
r   ÚdictÚzipÚget_nameÚ	debug_strÚ	enumerateÚlenÚjoinÚprintr   )Ú	candidateÚgnsÚgroup_namesÚsnodesÚname_to_freeable_input_bufÚgraph_outputsÚpeak_memoryÚiter_curr_memoryÚsnodes_allocfreeÚtlparse_nameÚgn_to_bufs_last_useÚiterative_recompute_errorÚcandidate_allocfreeÚest_peak_memoryÚsnodes_curr_memoryÚ_Úest_curr_memoryÚiter_cmÚnew_cmÚgnÚiter_gnmÚnew_gnmÚpeak_logÚiÚpreÚ_postÚnÚ	group_logr   r   s                               @@r   Ú!_debug_iterative_memory_recomputerD      s`  ù€ ð !&ÐØ*¨9Ñ5Ðä&ØÐ.°ó	
ñ =€OÐ'Ð)9¸1ô
 œ3˜vÐ'9Ó:Ó;€OØ˜yÑ)€GØ˜YÑ'€FØ
€CØ˜Ò$Ø-ˆØ$(Ð!Ø�&ÒØ>ˆØ$(Ð!Øò -ˆØ# BÑ'ˆØ! "Ñ%ˆØ�wÓØ<¸R¿[¹[»]¸OÐLˆCØ(,Ñ%ð-ò !ØØ˜9×-Ñ-Ó/Ð0Ø�{�mØ# K =Ø'¨Ð'8Ø˜9×.Ñ.Ó0Ð1Ø+¨G¨9Ø+¨F¨8Ø)Ð*=Ð)>Ø(Ð)9¸)Ñ)DÐ(EðGñ
	
ˆð ˆÜ(Ð);Ó<ò 	‰OˆA‰|��UØ #Ó%Ø˜1‘I�à! /Ð!2°&¸¸ð F Ø !˜s !¤C¨£K =°°1·:±:³<°.ÀÀ!Ç+Á+Ã-ÀðRð ñ ð	ð ˆ	Ü˜s“^ò 		‰EˆAˆrØ'¨Ñ+ˆHØ% bÑ)ˆGØØ ˜s " R§\¡\£^Ð$4Ø ˜s +¨b¯k©k«m¨_¸B¸x¸jØ ˜s +¨b¯k©k«m¨_¸B¸w¸iØ ˜sÐ"3Ð4DÀRÑ4HÐ3IØ ˜sÐ"3Ð4DÀRÑ4HÐ3Ið	Kñ‰Ið		ð 	ˆx‰ˆØˆyÑˆØÐ'Ð(;Ð'<Ð=Ñ=ˆØˆv�{‰{ô & fÓ-÷	ñ �A�qð ˜q˜c  Q§[¡[£] OØ%Ð&6°qÑ&9Ð%:Ø% o°aÑ&8Ð%9Ø'Ð(8¸Ñ(;Ð'<Ø'Ð(8¸Ñ(;Ð'<ò	>ó	ó
ñ 	
ˆð  �.Ð :Ð;ˆÜ���s˜3˜%Ð Ô!ÜØóó #õ	
ð %Ð$ùó+	s   Æ>8H+N)r(   r   r)   úlist[BaseSchedulerNode]r*   Ústrr+   rE   r,   zdict[str, FreeableInputBuffer]r-   zOrderedSet[str]r.   Úintr/   z(dict[BaseSchedulerNode, tuple[int, int]]r0   z$dict[BaseSchedulerNode, SNodeMemory]r1   rF   r2   zDdict[BaseSchedulerNode, list[FreeableInputBuffer | SchedulerBuffer]]ÚreturnÚbool)Ú
__future__r   Útypingr   Útorch._loggingr   Úmemoryr   Útorch.utils._ordered_setr   r	   r
   Ú	schedulerr   r   rD   r   r   r   ú<module>rP      s¥   ðÝ "å  å +å 2ñ Ý3ç8ß=ð_%Ø ð_%à	 ð_%ð ð_%ð $ð	_%ð
 !?ð_%ð #ð_%ð ð_%ð ?ð_%ð ;ð_%ð ð_%ðð_%ð 
ô_%r   