
    ȅi                        S SK Jr  S SKJrJr  S SKJr  SSKJr  \(       a  S SK	J
r
  SSKJrJr  SSKJrJr                          SS	 jrg
)    )annotations)TYPE_CHECKINGUnion)trace_structured   )estimate_peak_memory_allocfree)
OrderedSet)FreeableInputBufferSNodeMemory)BaseSchedulerNodeSchedulerBufferc                v  ^^ SnX   n[        X4U5      u  pp[        [        X>5      5      nXp   nUU    nSmX:  a  SmSnUU:w  a  SmSnU H*  nUU   nUU   nUU:w  d  M  SUR                  5        3mSnM,     U(       Ga  TSU R                  5        SU S	U S
U SU R	                  5        SU SU SU SX    3-  mSn[        U5       HO  u  nu  nnUU:X  d  M  UU   nSU SU SU S[        U5       SUR                  5        SUR	                  5        3n  O   Sn[        U5       Hi  u  nnUU   nUU   nUSU SUR	                  5        SU SUR                  5        SU SU SUR                  5        SU SU SUU    SU SUU    3-  nMk     TU-  mTU-  mTSU
 3-  mTSR                  [        U5       VVs/ s H4  u  nnSU SUR	                  5        SUU    SUU    S UU    S!UU    3PM6     snn5      -  mU	 S"3m[        T S#T 35        [        S$U4S% jU4S& jS'9  U$ s  snnf )(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                    > T SS.$ )Nstring)nameencoding )tnames   U/home/james-whalen/.local/lib/python3.13/site-packages/torch/_inductor/comms_debug.py<lambda>3_debug_iterative_memory_recompute.<locals>.<lambda>j   s    $!    c                    > T $ )Nr   )logs   r   r   r   n   s    sr   )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_recomputerF      sE    !&*5&	
 =O)9
 3v:;O)GY'F
C$-$(!&>$(!#B'!"%w<R[[]OLC(,%  !9--/0{m#K=''89..01+G9+F8)*=)>()9)D(EG
	
 ();<OA|U#%1I!/!2& F  !s!CK=1::<.!++-R    = 	s^EAr'+H%b)Gs"R\\^$4s+bkkm_Bxjs+bkkm_Bwis"34DR4H3Is"34DR4H3I	KI $ 	xy'(;'<==v{{ &f-	 .DAq qcQ[[]O%&6q&9%:%oa&8%9'(8(;'<'(8(;'<	> .	
 	
  . :;s3% ! #	
 %$+	s   ;H5N)r*   r   r+   list[BaseSchedulerNode]r,   strr-   rG   r.   zdict[str, FreeableInputBuffer]r/   zOrderedSet[str]r0   intr1   z(dict[BaseSchedulerNode, tuple[int, int]]r2   z$dict[BaseSchedulerNode, SNodeMemory]r3   rH   r4   zJdict[BaseSchedulerNode, list[Union[FreeableInputBuffer, SchedulerBuffer]]]returnbool)
__future__r   typingr   r   torch._loggingr   memoryr   torch.utils._ordered_setr	   r
   r   	schedulerr   r   rF   r   r   r   <module>rR      s    " ' + 2 38=_% _%	 _% _% $	_%
 !?_% #_% _% ?_% ;_% _%_% 
_%r   