ó
    CC˜jº  ã                   óÎ  • S SK Jr  S SKJrJr  S SKrS SKJrJr  SSK	J
r
  SSKJrJr  SSKJr  SS	KJrJr  SS
KJrJr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!  S SK"J#r#  S\$S\RJ                  RL                  4S jr'S\4S jr(\#" SSS9S\$S\$SS4S j5       r)\)RT                  S\$S\$SS4S j5       r+\" \RX                  RZ                  R\                  R^                  5        \#" SSS9S\$S\$SS4S j5       r0\0RT                  S\$S\$SS4S j5       r+\" \RX                  RZ                  Rb                  R^                  5         " S  S!\5      r2 " S" S#\5      r3g)$é    )Ú	ExitStack)ÚAnyÚTYPE_CHECKINGN)Úhas_side_effectÚProxyé   )Úcreate_call_function)Úraise_type_errorÚunimplemented)Úget_external_object_by_index)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚCallFunctionNoArgsSourceÚImportSourceé   )ÚMemberÚVariableTracker)ÚConstantVariable)ÚContextWrappingVariable)ÚInstructionTranslatorBase)Ú	PyCodegen)Ú	custom_opÚindexÚreturnc                 óŠ   • [        U 5      n[        U[        R                  R                  5      (       d  [        SU  35      eU$ )Nz;use_mem_pool expected a torch.cuda.MemPool object at index )r   Ú
isinstanceÚtorchÚcudaÚMemPoolÚRuntimeError)r   Úmempools     Ú¬C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/variables/memory.pyÚ_get_mempool_by_indexr$      sA   € Ü*¨5Ó1€GÜ�gœuŸz™z×1Ñ1×2Ñ2ÜØIÈ%ÈÐQó
ð 	
ð €Nó    c            	      óR   • [        [        [        [        S5      S5      S5      5      $ )Nr   r   Úcurrent_device)r   r   r   © r%   r#   Ú_current_cuda_device_sourcer)   "   s&   € Ü#Ü”:œl¨7Ó3°VÓ<Ð>NÓOóð r%   zmempool::beginr(   )Úmutates_argsÚdevice_indexÚmempool_indexc                 ó€   • [        U5      n[        R                  R                  R	                  XR
                  5        g ©N)r$   r   r   ÚmemoryÚ&_cuda_beginAllocateCurrentThreadToPoolÚid©r+   r,   r"   s      r#   Úbegin_mempoolr3   ,   s(   € ä# MÓ2€GÜ	‡J�J×Ñ×<Ñ<¸\Ï:É:ÕVr%   c                 ó   • g r.   r(   ©r+   r,   s     r#   Ú_r6   2   ó   € àr%   zmempool::endc                 óæ   • [        U5      n[        R                  R                  R	                  XR
                  5        [        R                  R                  R                  XR
                  5        g r.   )r$   r   r   r/   Ú_cuda_endAllocateToPoolr1   Ú_cuda_releasePoolr2   s      r#   Úend_mempoolr;   :   sD   € ä# MÓ2€GÜ	‡J�J×Ñ×-Ñ-¨l¿J¹JÔGÜ	‡J�J×Ñ×'Ñ'¨·j±jÕAr%   c                 ó   • g r.   r(   r5   s     r#   r6   r6   A   r7   r%   c            
       óÌ   ^ • \ rS rSrSrS\S\R                  R                  S\	S\
SS4
U 4S	 jjrS\4S
 jrS\4S jrSSS\4S jrS\" \5      0rS\4S jrSU 4S jjrSrU =r$ )ÚCUDAMemPoolVariableéI   z'Represents a torch.cuda.MemPool object.ÚproxyÚvalueÚuser_object_indexÚkwargsr   Nc                 óJ   >• [         TU ]  " S0 UD6  Xl        X l        X0l        g )Nr(   )ÚsuperÚ__init__r@   rA   rB   )Úselfr@   rA   rB   rC   Ú	__class__s        €r#   rF   ÚCUDAMemPoolVariable.__init__L   s%   ø€ ô 	‰ÒÑ"˜6Ò"ØŒ
ØŒ
Ø!2Õr%   c                 ó6   • [         R                  R                  $ r.   )r   r   r    ©rG   s    r#   Úpython_typeÚCUDAMemPoolVariable.python_typeX   s   € Ü�z‰z×!Ñ!Ð!r%   c                 ó   • U R                   $ r.   )rA   rK   s    r#   Úget_real_python_backed_valueÚ0CUDAMemPoolVariable.get_real_python_backed_value[   ó   € Ø�z‰zÐr%   Útxr   c                 óÜ   • U R                   (       a2  [        U R                   R                  [        R                  5      5        [
        R                  " U R                  R                  5      $ r.   )	Úsourcer   Ú
make_guardr   ÚID_MATCHr   ÚcreaterA   r1   )rG   rR   s     r#   Ú_idÚCUDAMemPoolVariable._id^   s?   € Ø�;�;Ü˜$Ÿ+™+×0Ñ0´×1FÑ1FÓGÔHÜ×&Ò& t§z¡z§}¡}Ó5Ð5r%   r1   c                 ó   • U R                   $ r.   )r@   rK   s    r#   Úas_proxyÚCUDAMemPoolVariable.as_proxyg   rQ   r%   c                 óü   >^• U R                   (       a  [        TU ]	  T5      $ TR                  U4S j5        TR	                  TR                  U R                  5      5        TR                  [        SS5      5        g )Nc                  ól   >• T R                  [        R                  R                  R                  S5      $ )Nr   )Úload_import_fromr   Ú_dynamoÚgraph_bytecode_inputsÚ__name__)Úcodegens   €r#   Ú<lambda>Ú1CUDAMemPoolVariable.reconstruct.<locals>.<lambda>o   s&   ø€ �G×,Ñ,Ü—‘×3Ñ3×<Ñ<Ø.ôr%   r   F)	rT   rE   ÚreconstructÚadd_push_nullÚappend_outputÚcreate_load_constrB   Úextend_outputr	   )rG   rc   rH   s    `€r#   rf   ÚCUDAMemPoolVariable.reconstructj   sd   ù€ Ø�;�;Ü‘7Ñ& wÓ/Ð/à×Ñôô	
ð 	×Ñ˜g×7Ñ7¸×8NÑ8NÓOÔPØ×ÑÔ2°1°eÓ<Õ=r%   )r@   rB   rA   ©rc   r   r   N)rb   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r    Úintr   rF   ÚtyperL   ÚobjectrO   r   rX   r   Ú
tp_membersr[   rf   Ú__static_attributes__Ú__classcell__©rH   s   @r#   r>   r>   I   s™   ø† Ù1ð
3àð
3ð �z‰z×!Ñ!ð
3ð ð	
3ð
 ð
3ð 
÷
3ð"˜Tô "ð¨fô ð6Ð1ð 6°oô 6ð 	‰f�S‹kð€Jð˜%ô ÷>õ >r%   r>   c                   óÂ   ^ • \ rS rSrSrS\S\S\SS4U 4S jjr\	 SS	S
S\
S\
S-  S\SS 4
S jj5       rS	S
S\
4S jrS	S
S\
S\
4S jrS\4S jrS\4S jrSS jrSrU =r$ )ÚCUDAMemPoolContextVariableéx   z7Represents the torch.cuda.use_mem_pool context manager.r"   r+   rC   r   Nc                 óD   >• Xl         X l        [        TU ]  " SSS S.UD6  g )Nr(   )Útarget_valuesÚinitial_values)r"   r+   rE   rF   )rG   r"   r+   rC   rH   s       €r#   rF   Ú#CUDAMemPoolContextVariable.__init__{   s'   ø€ ð ŒØ(ÔÜ‰ÒÐI r¸$ÑIÀ&ÓIr%   rR   r   Údevicec                 óþ  • [        U[        5      (       d  [        U S5        Ub"  [        U[        5      (       a\  UR                  cO  [        [        5       R                  [        R                  5      5        [        R                  R                  5       nO\UR                  5       (       a8  [        R                  R                  R                  UR!                  5       5      nO[#        SSU 3S/ S9  [%        UW40 UD6$ )Nz@torch.cuda.use_mem_pool() expected a torch.cuda.MemPool argumentz0torch.cuda.use_mem_pool with non-constant devicezdevice=zWDynamo requires the device argument to torch.cuda.use_mem_pool to be a Python constant.©Úgb_typeÚcontextÚexplanationÚhints)r   r>   r
   r   rA   r   r)   rU   r   ÚEQUALS_MATCHr   r   r'   Úis_python_constantÚ_utilsÚ_get_device_indexÚas_python_constantr   ry   )rR   r"   r   rC   r+   s        r#   rW   Ú!CUDAMemPoolContextVariable.create…   s×   € ô ˜'Ô#6×7Ñ7ÜØØRôð
 ‰>Ü�vÔ/×0Ñ0°V·\±\Ñ5IäÜ+Ó-×8Ñ8¼×9RÑ9RÓSôô !Ÿ:™:×4Ñ4Ó6‰LØ×&Ñ&×(Ñ(Ü Ÿ:™:×,Ñ,×>Ñ>Ø×)Ñ)Ó+ó‰Lô ØJØ! & Ð*ØuØò	ô *¨'°<ÑJÀ6ÑJÐJr%   c                 óP  ^• [        5       mTR                  [        R                  R                  R                  U R                  R                  U R                  S.5      5        TR                  [        R                  R                  R                  5       5        U R                  UU4S j5        UR                  R                  S[        R                  R                  R                  U R                  U R                  R                  40 5        [        R                   " S 5      $ )N)r"   Úmempool_devicec                  ó$   >• T R                  5       $ r.   )Úclose)Ústacks   €r#   rd   Ú2CUDAMemPoolContextVariable.enter.<locals>.<lambda>²   s   ø€ ¨%¯+©+¬-r%   Úcall_function)r   Úenter_contextr   ÚfxÚ	tracebackÚannotater"   rB   r+   Úpreserve_node_metaÚset_cleanup_hookÚoutputÚcreate_proxyÚopsÚbeginr   rW   )rG   rR   r�   s     @r#   ÚenterÚ CUDAMemPoolContextVariable.enter§   sÕ   ø€ Ü“ˆØ×ÑÜ�H‰H×Ñ×'Ñ'à#Ÿ|™|×=Ñ=Ø&*×&7Ñ&7ñóô	
ð 	×ÑœEŸH™H×.Ñ.×AÑAÓCÔDØ×Ñ˜bÔ"7Ô8Ø
�	‰	×ÑØÜ�I‰I×Ñ×#Ñ#Ø×Ñ §¡× >Ñ >Ð?Øô		
ô  ×&Ò& tÓ,Ð,r%   Úargsc                 ó  • UR                   R                  S[        R                  R                  R
                  U R                  U R                  R                  40 5        U R                  5         [        R                  " S 5      $ )Nr’   )r™   rš   r   r›   r"   Úendr+   rB   Úcleanup_assertr   rW   )rG   rR   rŸ   s      r#   ÚexitÚCUDAMemPoolContextVariable.exit»   sf   € ð 	�	‰	×ÑØÜ�I‰I×Ñ×!Ñ!Ø×Ñ §¡× >Ñ >Ð?Øô		
ð 	×ÑÔÜ×&Ò& tÓ,Ð,r%   c                 ó   • g)Nz
torch.cudar(   rK   s    r#   Úmodule_nameÚ&CUDAMemPoolContextVariable.module_nameÇ   s   € Ør%   c                 ó   • g)NÚuse_mem_poolr(   rK   s    r#   Úfn_nameÚ"CUDAMemPoolContextVariable.fn_nameÊ   s   € Ør%   c                 ó.   • [        S[        U 5      S/ S9  g )Nz#torch.cuda.use_mem_pool graph breakzCDynamo doesn't support graph breaks inside torch.cuda.use_mem_pool.r�   )r   Ústr)rG   rc   s     r#   Úreconstruct_typeÚ+CUDAMemPoolContextVariable.reconstruct_typeÍ   s   € ô 	Ø9Ü˜“IØ]Øó		
r%   )r+   r"   r.   rl   )rb   rm   rn   ro   rp   r>   rq   r   rF   Ústaticmethodr   rW   r�   r£   r­   r¦   rª   r®   ru   rv   rw   s   @r#   ry   ry   x   sÝ   ø† ÙAðJà$ðJð ðJð ð	Jð
 
÷Jð ð *.ñKØ'ðKà ðKð   $Ñ&ðKð ð	Kð
 
&ôKó ðKðB-Ð3ð -¸ô -ð(
-Ø-ð
-Ø6Eð
-à	ô
-ð˜Sô ð˜ô ÷	
ò 	
r%   ry   )4Ú
contextlibr   Útypingr   r   r   Útorch.fxr   r   Úbytecode_transformationr	   Úexcr
   r   ra   r   Úguardsr   r   rT   r   r   r   Úbaser   r   Úconstantr   Úctx_managerr   Útorch._dynamo.symbolic_convertr   rc   r   Útorch._library.custom_opsr   rq   r   r    r$   r)   r3   Úregister_faker6   r›   r"   rœ   Údefaultr;   r¡   r>   ry   r(   r%   r#   Ú<module>r¾      s‰  ðÝ  ß %ã ß +å :ß 1Ý @ß 0ß GÑ Gß )Ý &Ý 0ö ÝHå#å /ð ð ¨¯©×);Ñ);ô ðÐ%=ô ñ Ð¨"Ñ-ðW ð W°Cð W¸Dó Wó .ðWð
 ×Ñð	�Cð 	¨ð 	°ó 	ó ð	ñ �—	‘	×!Ñ!×'Ñ'×/Ñ/Ô 0ñ ˆ>¨Ñ+ðB˜cð B°#ð B¸$ó Bó ,ðBð ×Ñð	�Cð 	¨ð 	°ó 	ó ð	ñ �—	‘	×!Ñ!×%Ñ%×-Ñ-Ô .ô,>˜/ô ,>ô^^
Ð!8õ ^
r%   