§
    �Štj·  ã                  óÆ   — 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dS )é    )ÚannotationsN)ÚAnyÚTYPE_CHECKING)ÚTensor)ÚTorchDispatchMode)Ú	tree_iter)Ú_POOL_HANDLEc                  ó"   — e Zd ZdZd
d„Zdd„Zd	S )Ú_TrackedTensorInfo)ÚweakrefÚcreation_traceback_pyÚcreation_traceback_cppÚdeletion_traceback_pyÚdata_ptrÚdevice_indexÚ_storage_data_ptrÚtensorr   ÚreturnÚNonec                ó”  ‡ — ddl m} d                     t          j        ¦   «         d d…         ¦  «        ‰ _         |¦   «         ‰ _        d ‰ _        |                     ¦   «         ‰ _        |j	        j
        ‰ _        d
ˆ fd	„}|                     ¦   «         }|                     ¦   «         ‰ _        t          j        ||¦  «        ‰ _        d S )Nr   )Úget_cpp_backtraceÚ éýÿÿÿÚ_ú!weakref.ref[torch.UntypedStorage]r   r   c                ó’   •— 	 d                      t          j        ¦   «         d d…         ¦  «        ‰_        d S # t          $ r Y d S w xY w)Nr   éÿÿÿÿ)ÚjoinÚ	tracebackÚformat_stackr   Ú	Exception)r   Úselfs    €úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/_cuda_debug.pyÚ
on_releasez/_TrackedTensorInfo.__init__.<locals>.on_release&   sV   ø€ ðØ-/¯WªWµYÔ5KÑ5MÔ5MÈcÈrÈcÔ5RÑ-SÔ-S�Ô*Ð*Ð*øÝð ð ð Ø��ðøøøs   ƒ38 ¸
AÁA)r   r   r   r   )Útorch.utilsr   r   r   r    r   r   r   r   ÚdeviceÚindexr   Úuntyped_storager   r   Úref)r"   r   r   r$   Ústorages   `    r#   Ú__init__z_TrackedTensorInfo.__init__   sÓ   ø€ Ø1Ð1Ð1Ð1Ð1Ð1à%'§W¢W­YÔ-CÑ-EÔ-EÀcÀrÀcÔ-JÑ%KÔ%KˆÔ"Ø&7Ð&7Ñ&9Ô&9ˆÔ#Ø15ˆÔ"ØŸšÑ)Ô)ˆŒØ"œMÔ/ˆÔð	ð 	ð 	ð 	ð 	ð 	ð ×(Ò(Ñ*Ô*ˆØ!(×!1Ò!1Ñ!3Ô!3ˆÔÝ:A¼+Ø�Zñ;
ô ;
ˆŒˆˆó    Úboolc                ól   — |                       ¦   «         }|€dS |                     ¦   «         | j        k    S )NF)r   r   r   )r"   r*   s     r#   Úis_alivez_TrackedTensorInfo.is_alive2   s3   € Ø—,’,‘.”.ˆØˆ?Ø�5Ø×ÒÑ!Ô! TÔ%;Ò;Ð;r,   N©r   r   r   r   )r   r-   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r+   r/   © r,   r#   r   r      sC   € € € € € ð€Ið
ð 
ð 
ð 
ð*<ð <ð <ð <ð <ð <r,   r   c                  óN   — 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
dS )Ú_CUDAGraphInputLivenessTrackerr   r   c                óV   — i | _         t          ¦   «         | _        d | _        d | _        d S ©N)Ú_external_inputsÚsetÚ_internal_outputsÚ_memory_snapshotÚ_dispatch_mode©r"   s    r#   r+   z'_CUDAGraphInputLivenessTracker.__init__:   s,   € Ø?AˆÔÝ+.©5¬5ˆÔØ=AˆÔØ:>ˆÔÐÐr,   c                ó`   — t          | ¦  «        | _        | j                             ¦   «          d S r9   )Ú_TensorTrackingModer>   Ú	__enter__r?   s    r#   Ústartz$_CUDAGraphInputLivenessTracker.start@   s-   € Ý1°$Ñ7Ô7ˆÔØÔ×%Ò%Ñ'Ô'Ð'Ð'Ð'r,   c                ód   — | j         �(| j         d c}| _         |                     d d d ¦  «         d S d S r9   )r>   Ú__exit__)r"   Úmodes     r#   Ústopz#_CUDAGraphInputLivenessTracker.stopD   sA   € ØÔÐ*Ø(,Ô(;¸TÐ%ˆD�$Ô%Ø�MŠM˜$  dÑ+Ô+Ð+Ð+Ð+ð +Ð*r,   r   r   c                óˆ   — |                      ¦   «         }|| j        vr"|| j        vrt          |¦  «        | j        |<   d S d S d S r9   )r   r<   r:   r   ©r"   r   r   s      r#   Útrack_external_inputz3_CUDAGraphInputLivenessTracker.track_external_inputI   sV   € Ø—?’?Ñ$Ô$ˆà˜DÔ2Ð2Ð2Ø Ô 5Ð5Ð5å.@ÀÑ.HÔ.HˆDÔ! (Ñ+Ð+Ð+ð 3Ð2Ø5Ð5r,   c                óx   — |                      ¦   «         }|| j        vr| j                             |¦  «         d S d S r9   )r   r:   r<   ÚaddrI   s      r#   Úmark_internal_outputz3_CUDAGraphInputLivenessTracker.mark_internal_outputQ   sD   € Ø—?’?Ñ$Ô$ˆØ˜4Ô0Ð0Ð0ØÔ"×&Ò& xÑ0Ô0Ð0Ð0Ð0ð 1Ð0r,   Úcapture_poolr	   c           
     ó4  ‡ ‡— ˆˆ fd„‰ j                              ¦   «         D ¦   «         }|sd S dd„}dt          |¦  «        › d	�g}t          |d d
…         d¦  «        D ]“\  }}|                     d|› d|j        d›d�¦  «         |                      |d|j        ¦  «        ¦  «         |                      |d|j        ¦  «        ¦  «         |                      |d|j        ¦  «        ¦  «         Œ”t          |¦  «        d
k    r)|                     dt          |¦  «        d
z
  › d�¦  «         |                      |dd 	                    t          j        ¦   «         d d…         ¦  «        ¦  «        ¦  «         t          d 	                    |¦  «        ¦  «        ‚)Nc                óh   •— g | ].}|                      ¦   «         °‰                     |‰¦  «        °,|‘Œ/S r5   )r/   Ú_is_tensor_from_capture_pool)Ú.0ÚirN   r"   s     €€r#   ú
<listcomp>z>_CUDAGraphInputLivenessTracker.check_alive.<locals>.<listcomp>W   sQ   ø€ ð 
ð 
ð 
àØ—:’:‘<”<ð
ð ×5Ò5°a¸ÑFÔFð	
Øð
ð 
ð 
r,   ÚlabelÚstrÚtbú
str | Noner   c                óf   — |r.d| › dt          j        |                     ¦   «         d¦  «        › d�ndS )Nz  z:
z    ú
r   )ÚtextwrapÚindentÚstrip)rU   rW   s     r#   Úfmtz7_CUDAGraphInputLivenessTracker.check_alive.<locals>.fmt`   s;   € ØMOÐWÐI˜ÐIÐI¥(¤/°"·(²(±*´*¸fÑ"EÔ"EÐIÐIÐIÐIÐ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   éþÿÿÿ)rU   rV   rW   rX   r   rV   )r:   ÚvaluesÚlenÚ	enumerateÚappendr   r   r   r   r   r   r    ÚRuntimeError)r"   rN   Údeadr^   ÚpartsrS   Úinfos   ``     r#   Úcheck_alivez*_CUDAGraphInputLivenessTracker.check_aliveV   sÓ  øø€ ð
ð 
ð 
ð 
ð 
àÔ*×1Ò1Ñ3Ô3ð
ñ 
ô 
ˆð ð 	ØˆFð	Xð 	Xð 	Xð 	Xð M­s°4©y¬yÐLÐLÐLÐMˆÝ   b q b¤¨1Ñ-Ô-ð 	Yð 	Y‰GˆAˆtØ�LŠLÐM¨ÐMÐM°t´}ÐMÐMÐMÐMÑNÔNÐNØ�LŠL˜˜Ð:¸DÔ<VÑWÔWÑXÔXÐXØ�LŠL˜˜Ð7¸Ô9TÑUÔUÑVÔVÐVØ�LŠL˜˜Ð:¸DÔ<VÑWÔWÑXÔXÐXÐXÝˆt‰9Œ9�qŠ=ˆ=Ø�LŠLÐ<¥c¨$¡i¤i°!¡mÐ<Ð<Ð<Ñ=Ô=Ð=Ø�ŠØˆCÐ+¨R¯WªWµYÔ5KÑ5MÔ5MÈcÈrÈcÔ5RÑ-SÔ-SÑTÔTñ	
ô 	
ð 	
õ ˜2Ÿ7š7 5™>œ>Ñ*Ô*Ð*r,   úlist[dict[str, Any]]c                ót   — | j         €+t          j        j                             |d¬¦  «        | _         | j         S )NF)Úinclude_traces)r=   ÚtorchÚcudaÚmemoryÚmemory_snapshot)r"   rN   s     r#   Ú_get_memory_snapshotz3_CUDAGraphInputLivenessTracker._get_memory_snapshotp   s>   € ØÔ Ð(Ý$)¤JÔ$5×$EÒ$EØ¨Uð %Fñ %ô %ˆDÔ!ð Ô$Ð$r,   r   r-   c                óè   — |j         }|€dS |j        }|                      |¦  «        D ]I}|d         |k    rŒ|d         D ]1}|d         }||cxk    r||d         z   k     rn Œ#d|d         v r  dS Œ2ŒJdS )	NFr&   ÚblocksÚaddressÚsizeÚactiveÚstateT)r   r   rr   )r"   r   rN   r&   Ú
tensor_ptrÚmeminfoÚblockÚaddrs           r#   rQ   z;_CUDAGraphInputLivenessTracker._is_tensor_from_capture_poolw   s»   € ð Ô$ˆØˆ>Ø�5Ø”_ˆ
Ø×0Ò0°Ñ>Ô>ð 		 ð 		 ˆGØ�xÔ  FÒ*Ð*ØØ  Ô*ð  ð  �Ø˜YÔ'�à˜JÐ=Ð=Ò=Ð=¨°°f´Ñ)=Ò=Ð=Ð=Ð=Ð=Ø  E¨'¤NÐ2Ð2à˜4˜4˜4øð ð ˆur,   N)r   r   r0   )rN   r	   r   r   )rN   r	   r   rk   )r   r   rN   r	   r   r-   )r1   r2   r3   r+   rC   rG   rJ   rM   rj   rr   rQ   r5   r,   r#   r7   r7   9   s¸   € € € € € ð?ð ?ð ?ð ?ð(ð (ð (ð (ð,ð ,ð ,ð ,ð
Ið Ið Ið Ið1ð 1ð 1ð 1ð
+ð +ð +ð +ð4%ð %ð %ð %ðð ð ð ð ð r,   r7   c                  ó@   — e Zd ZdZdd„Zdd
„Z	 	 ddd„Zdd„Zdd„ZdS )rA   TÚtrackerr7   r   r   c                ó   — || _         d S r9   )Ú_tracker)r"   r~   s     r#   r+   z_TensorTrackingMode.__init__Ž   s   € ØˆŒˆˆr,   rb   Úobjectr-   c                óh   — t          |¦  «        D ]!}t          |t          ¦  «        r
|j        r dS Œ"dS )NTF)r   Ú
isinstancer   Úis_cuda©r"   rb   Úvs      r#   Ú_selects_cuda_dispatch_keyz._TensorTrackingMode._selects_cuda_dispatch_key•   sA   € Ý˜6Ñ"Ô"ð 	ð 	ˆAÝ˜!�VÑ$Ô$ð ¨¬ð Ø�t�tøØˆur,   r5   NÚfuncÚtypesÚargsútuple[object, ...]Úkwargsúdict[str, object] | Nonec                óò   — |pi }||g}t           j                             ¦   «         rH|                      |¦  «        r3 ||i |¤Ž}|                      |¦  «         |                      |¦  «         n ||i |¤Ž}|S r9   )rn   ro   Úis_current_stream_capturingr‡   Ú_track_inputsÚ_mark_outputs)r"   rˆ   r‰   rŠ   rŒ   ÚinputsÚouts          r#   Ú__torch_dispatch__z&_TensorTrackingMode.__torch_dispatch__›   s    € ð �˜2ˆØ˜�ˆÝŒ:×1Ò1Ñ3Ô3ð 	(¸×8WÒ8WØñ9
ô 9
ð 	(ð �$˜Ð' Ð'Ð'ˆCØ×Ò˜vÑ&Ô&Ð&Ø×Ò˜sÑ#Ô#Ð#Ð#à�$˜Ð' Ð'Ð'ˆCØˆ
r,   c                óð   — t          |¦  «        D ]e}t          |t          ¦  «        r|                     ¦   «         dk    rŒ0|j        s|                     ¦   «         r| j                             |¦  «         Œfd S )Nr   )r   rƒ   r   r   r„   Ú	is_pinnedr€   rJ   r…   s      r#   r�   z!_TensorTrackingMode._track_inputs®   sz   € Ý˜6Ñ"Ô"ð 	6ð 	6ˆAÝ˜a¥Ñ(Ô(ð ¨A¯JªJ©L¬L¸AÒ,=Ð,=ØØŒyð 6˜AŸKšK™MœMð 6Ø”×2Ò2°1Ñ5Ô5Ð5øð		6ð 	6r,   c                ó–   — t          |¦  «        D ]8}t          |t          ¦  «        r!|j        r| j                             |¦  «         Œ9d S r9   )r   rƒ   r   r„   r€   rM   r…   s      r#   r‘   z!_TensorTrackingMode._mark_outputsµ   sU   € Ý˜6Ñ"Ô"ð 	6ð 	6ˆAÝ˜!�VÑ$Ô$ð 6¨¬ð 6Ø”×2Ò2°1Ñ5Ô5Ð5øð	6ð 	6r,   )r~   r7   r   r   )rb   r�   r   r-   )r5   N)
rˆ   r�   r‰   r�   rŠ   r‹   rŒ   r�   r   r�   )rb   r�   r   r   )	r1   r2   r3   Úsupports_higher_order_operatorsr+   r‡   r”   r�   r‘   r5   r,   r#   rA   rA   ‹   s‹   € € € € € Ø&*Ð#ð ð  ð  ð  ðð ð ð ð $&Ø+/ðð ð ð ð ð&6ð 6ð 6ð 6ð6ð 6ð 6ð 6ð 6ð 6r,   rA   )Ú
__future__r   r[   r   r   Útypingr   r   rn   r   Útorch.utils._python_dispatchr   Útorch.utils._pytreer   Ú
torch.cudar	   r   r7   rA   r5   r,   r#   ú<module>rž      s7  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ø )Ð )Ð )Ð )Ð )Ð )ð ð (Ø'Ð'Ð'Ð'Ð'Ð'ð$<ð $<ð $<ð $<ð $<ñ $<ô $<ð $<ðNOð Oð Oð Oð Oñ Oô Oð Oðd-6ð -6ð -6ð -6ð -6Ð+ñ -6ô -6ð -6ð -6ð -6r,   