
    9jv                        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   [/media/conek/DATA/Code/OCR/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')91
 3v'9:;Oy)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-	 Aq qcQ[[]O%&6q&9%:%oa&8%9'(8(;'<'(8(;'<	>	
 	
  . :;s3% ! #	
 %$+	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   