Ë
    ÌÓ^j·  ã                  ó²   — d dl mZ d dlZd dlZd dlZd dlmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZ erd dlmZ  G d„ d	«      Z G d
„ d«      Z G d„ de«      Zy)é    )ÚannotationsN)ÚAnyÚTYPE_CHECKING)ÚTensor)ÚTorchDispatchMode)Ú	tree_iter)Ú_POOL_HANDLEc                  ó    — e Zd ZdZdd„Zdd„Zy)Ú_TrackedTensorInfo)ÚweakrefÚcreation_traceback_pyÚcreation_traceback_cppÚdeletion_traceback_pyÚdata_ptrÚdevice_indexÚ_storage_data_ptrc                óz  ‡ — ddl m} dj                  t        j                  «       d d «      ‰ _         |«       ‰ _        d ‰ _        |j                  «       ‰ _        |j                  j                  ‰ _        dˆ fd„}|j                  «       }|j                  «       ‰ _        t        j                  ||«      ‰ _        y )Nr   )Úget_cpp_backtraceÚ éýÿÿÿc                ó|   •— 	 dj                  t        j                  «       d d «      ‰_        y # t        $ r Y y w xY w)Nr   éÿÿÿÿ)ÚjoinÚ	tracebackÚformat_stackr   Ú	Exception)Ú_Úselfs    €úb/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/utils/_cuda_debug.pyÚ
on_releasez/_TrackedTensorInfo.__init__.<locals>.on_release&   s;   ø€ ðØ-/¯W©W´Y×5KÑ5KÓ5MÈcÈrÐ5RÓ-S�Õ*øÜò Ùðús   ƒ+/ ¯	;º;)r   z!weakref.ref[torch.UntypedStorage]ÚreturnÚNone)Útorch.utilsr   r   r   r   r   r   r   r   ÚdeviceÚindexr   Úuntyped_storager   r   Úref)r   Útensorr   r    Ústorages   `    r   Ú__init__z_TrackedTensorInfo.__init__   s•   ø€ Ý1à%'§W¡W¬Y×-CÑ-CÓ-EÀcÀrÐ-JÓ%KˆÔ"Ù&7Ó&9ˆÔ#Ø15ˆÔ"ØŸ™Ó)ˆŒØ"ŸM™M×/Ñ/ˆÔõ	ð ×(Ñ(Ó*ˆØ!(×!1Ñ!1Ó!3ˆÔÜ:A¿+¹+Ø�Zó;
ˆ�ó    c                ób   — | j                  «       }|€y|j                  «       | j                  k(  S )NF)r   r   r   )r   r)   s     r   Úis_alivez_TrackedTensorInfo.is_alive2   s/   € Ø—,‘,“.ˆØˆ?ØØ×ÑÓ! T×%;Ñ%;Ñ;Ð;r+   N©r(   r   r!   r"   )r!   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r*   r-   © r+   r   r   r      s   „ ð€Ió
ô*<r+   r   c                  óX   — e Zd Zd
d„Zd
d„Zd
d„Zdd„Zdd„Zdd„Zdd„Z		 	 	 	 	 	 dd„Z
y	)Ú_CUDAGraphInputLivenessTrackerc                óL   — i | _         t        «       | _        d | _        d | _        y ©N)Ú_external_inputsÚsetÚ_internal_outputsÚ_memory_snapshotÚ_dispatch_mode©r   s    r   r*   z'_CUDAGraphInputLivenessTracker.__init__:   s$   € Ø?AˆÔÜ+.«5ˆÔØ=AˆÔØ:>ˆÕr+   c                óX   — t        | «      | _        | j                  j                  «        y r8   )Ú_TensorTrackingModer=   Ú	__enter__r>   s    r   Ústartz$_CUDAGraphInputLivenessTracker.start@   s!   € Ü1°$Ó7ˆÔØ×Ñ×%Ñ%Õ'r+   c                ól   — | j                   �(| j                   d c}| _         |j                  d d d «       y y r8   )r=   Ú__exit__)r   Úmodes     r   Ústopz#_CUDAGraphInputLivenessTracker.stopD   s8   € Ø×ÑÐ*Ø(,×(;Ñ(;¸TÐ%ˆD�$Ô%Ø�M‰M˜$  dÕ+ð +r+   c                ó�   — |j                  «       }|| j                  vr(|| j                  vrt        |«      | j                  |<   y y y r8   )r   r;   r9   r   ©r   r(   r   s      r   Útrack_external_inputz3_CUDAGraphInputLivenessTracker.track_external_inputI   sI   € Ø—?‘?Ó$ˆà˜D×2Ñ2Ñ2Ø × 5Ñ 5Ñ5ä.@ÀÓ.HˆD×!Ñ! (Ò+ð 6ð 3r+   c                óx   — |j                  «       }|| j                  vr| j                  j                  |«       y y r8   )r   r9   r;   ÚaddrH   s      r   Úmark_internal_outputz3_CUDAGraphInputLivenessTracker.mark_internal_outputQ   s5   € Ø—?‘?Ó$ˆØ˜4×0Ñ0Ñ0Ø×"Ñ"×&Ñ& xÕ0ð 1r+   c           
     ó  — | j                   j                  «       D �cg c]&  }|j                  «       s| j                  ||«      s|‘Œ( }}|sy dd„}dt	        |«      › d�g}t        |d d d«      D ]Ž  \  }}|j                  d|› d|j                  d›d	�«       |j                   |d
|j                  «      «       |j                   |d|j                  «      «       |j                   |d|j                  «      «       Œ� t	        |«      dkD  r!|j                  dt	        |«      dz
  › d�«       |j                   |ddj                  t        j                  «       d d «      «      «       t        dj                  |«      «      ‚c c}w )Nc                ó`   — |r+d| › dt        j                  |j                  «       d«      › d�S dS )Nz  z:
z    ú
r   )ÚtextwrapÚindentÚstrip)ÚlabelÚtbs     r   Úfmtz7_CUDAGraphInputLivenessTracker.check_alive.<locals>.fmt`   s1   € ÙMO�R˜�w˜c¤(§/¡/°"·(±(³*¸fÓ"EÐ!FÀbÐIÐWÐUWÐWr+   zCUDA graph replay detected z dead tensor(s).
é   é   zDead tensor #z (data_ptr=z#xz):
zCreation Traceback (Python)zCreation Traceback (C++)zDeletion Traceback (Python)z
  ... and z more
zReplay Traceback (Python)r   éþÿÿÿ)rS   ÚstrrT   z
str | Noner!   rY   )r9   Úvaluesr-   Ú_is_tensor_from_capture_poolÚlenÚ	enumerateÚappendr   r   r   r   r   r   r   ÚRuntimeError)r   Úcapture_poolÚiÚdeadrU   ÚpartsÚinfos          r   Úcheck_alivez*_CUDAGraphInputLivenessTracker.check_aliveV   su  € ð ×*Ñ*×1Ñ1Ó3ö
àØ—:‘:”<Ø×5Ñ5°a¸ÔFò ð
ˆð 
ñ Øó	Xð /¬s°4«y¨kÐ9KÐLÐMˆÜ   b q ¨1Ó-ò 	Y‰GˆAˆtØ�L‰L˜=¨¨¨;°t·}±}ÀRÐ6HÈÐMÔNØ�L‰L™Ð:¸D×<VÑ<VÓWÔXØ�L‰L™Ð7¸×9TÑ9TÓUÔVØ�L‰L™Ð:¸D×<VÑ<VÓWÕXð		Yô
 ˆt‹9�qŠ=Ø�L‰L˜:¤c¨$£i°!¡m _°GÐ<Ô=Ø�‰ÙÐ+¨R¯W©W´Y×5KÑ5KÓ5MÈcÈrÐ5RÓ-SÓTô	
ô ˜2Ÿ7™7 5›>Ó*Ð*ùò/
s   �+Fc                ó’   — | j                   €0t        j                  j                  j	                  |d¬«      | _         | j                   S )NF)Úinclude_traces)r<   ÚtorchÚcudaÚmemoryÚmemory_snapshot)r   r`   s     r   Ú_get_memory_snapshotz3_CUDAGraphInputLivenessTracker._get_memory_snapshotp   sD   € Ø× Ñ Ð(Ü$)§J¡J×$5Ñ$5×$EÑ$EØ¨Uð %Fó %ˆDÔ!ð ×$Ñ$Ð$r+   c                óÔ   — |j                   }|€y|j                  }| j                  |«      D ]9  }|d   |k7  rŒ|d   D ]&  }|d   }||cxk  r||d   z   k  sŒn Œd|d   v sŒ%  y Œ; y)	NFr$   ÚblocksÚaddressÚsizeÚactiveÚstateT)r   r   rl   )r   r(   r`   r$   Ú
tensor_ptrÚmeminfoÚblockÚaddrs           r   r[   z;_CUDAGraphInputLivenessTracker._is_tensor_from_capture_poolw   s’   € ð ×$Ñ$ˆØˆ>ØØ—_‘_ˆ
Ø×0Ñ0°Ó>ò 		 ˆGØ�xÑ  FÒ*ØØ  Ñ*ò  �Ø˜YÑ'�à˜JÔ=¨°°f±Ñ)=Ö=Ø  E¨'¡NÒ2âñ ð		 ð r+   N)r!   r"   r.   )r`   r	   r!   r"   )r`   r	   r!   zlist[dict[str, Any]])r(   r   r`   r	   r!   r/   )r0   r1   r2   r*   rB   rF   rI   rL   re   rl   r[   r4   r+   r   r6   r6   9   sC   „ ó?ó(ó,ó
Ió1ó
+ó4%ðØ(ðØ8Dðà	ôr+   r6   c                  óP   — e Zd ZdZdd„Zd	d„Z	 	 d
	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)r@   Tc                ó   — || _         y r8   )Ú_tracker)r   Útrackers     r   r*   z_TensorTrackingMode.__init__Ž   s	   € Øˆ�r+   c                ób   — t        |«      D ]!  }t        |t        «      sŒ|j                  sŒ! y y)NTF)r   Ú
isinstancer   Úis_cuda©r   rZ   Úvs      r   Ú_selects_cuda_dispatch_keyz._TensorTrackingMode._selects_cuda_dispatch_key•   s.   € Ü˜6Ó"ò 	ˆAÜ˜!œVÕ$¨¯«Ùð	ð r+   Nc                óà   — |xs i }||g}t         j                  j                  «       r=| j                  |«      r, ||i |¤Ž}| j	                  |«       | j                  |«       |S  ||i |¤Ž}|S r8   )rh   ri   Úis_current_stream_capturingr€   Ú_track_inputsÚ_mark_outputs)r   ÚfuncÚtypesÚargsÚkwargsÚinputsÚouts          r   Ú__torch_dispatch__z&_TensorTrackingMode.__torch_dispatch__›   s€   € ð ’˜2ˆØ˜�ˆÜ�:‰:×1Ñ1Ô3¸×8WÑ8WØô9
ñ ˜Ð' Ñ'ˆCØ×Ñ˜vÔ&Ø×Ñ˜sÔ#ð ˆ
ñ ˜Ð' Ñ'ˆCØˆ
r+   c                óÜ   — t        |«      D ]^  }t        |t        «      r|j                  «       dk(  rŒ'|j                  s|j                  «       sŒD| j                  j                  |«       Œ` y )Nr   )r   r|   r   r   r}   Ú	is_pinnedry   rI   r~   s      r   rƒ   z!_TensorTrackingMode._track_inputs®   sQ   € Ü˜6Ó"ò 	6ˆAÜ˜a¤Ô(¨A¯J©J«L¸AÒ,=ØØ�yŠy˜AŸK™K�MØ—‘×2Ñ2°1Õ5ñ		6r+   c                ó–   — t        |«      D ];  }t        |t        «      sŒ|j                  sŒ!| j                  j                  |«       Œ= y r8   )r   r|   r   r}   ry   rL   r~   s      r   r„   z!_TensorTrackingMode._mark_outputsµ   s8   € Ü˜6Ó"ò 	6ˆAÜ˜!œVÕ$¨¯«Ø—‘×2Ñ2°1Õ5ñ	6r+   )rz   r6   r!   r"   )rZ   Úobjectr!   r/   )r4   N)
r…   r�   r†   r�   r‡   ztuple[object, ...]rˆ   zdict[str, object] | Noner!   r�   )rZ   r�   r!   r"   )	r0   r1   r2   Úsupports_higher_order_operatorsr*   r€   r‹   rƒ   r„   r4   r+   r   r@   r@   ‹   sY   „ Ø&*Ð#ó óð $&Ø+/ðàðð ðð !ð	ð
 )ðð 
óó&6ô6r+   r@   )Ú
__future__r   rP   r   r   Útypingr   r   rh   r   Útorch.utils._python_dispatchr   Útorch.utils._pytreer   Ú
torch.cudar	   r   r6   r@   r4   r+   r   ú<module>r–      sM   ðÝ "ã Û Û ß %ã Ý Ý :Ý )ñ Ý'÷$<ñ $<÷NOñ Oôd-6Ð+õ -6r+   