Ë
    P/æj£-  ã                   óˆ  — U d dl Z d dlmZmZmZmZmZmZmZm	Z	 d dl
Z
d dlmZmZ eeegef      ed<   e
j                   j#                  «       rd dlmZ ndZe	e
j*                  eedf   Zi Zeeef   ed<   i Zeeef   ed<    G d„ d	e«      Z G d
„ de¬«      Z G d„ d«      Z G d„ de«      Zeeegef      ed<   e
j>                  j#                  «       rd dlm Z! ndZ! G d„ de«      Z"i Z#eeee   f   ed<   da$de	ee
j*                  f   dee   fd„Z%de	ee
j*                  f   dee   fd„Z&deeeee   f      fd„Z'd„ Z(y)é    N)ÚAnyÚCallableÚDictÚIterableÚOptionalÚTupleÚTypeÚUnion)Ú
_EventBaseÚ_StreamBaseÚget_cuda_stream)Ú_cuda_getCurrentRawStreamÚ caching_worker_device_propertiesÚcaching_worker_current_devicesc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚDeviceInterfaceMetac                 ó  •— |d   }d|v r2t        j                  |d   «      rt        |d   t        «      sJ d«       ‚d|v r2t        j                  |d   «      rt        |d   t        «      sJ d«       ‚t        ‰| �  | g|¢­i |¤ŽS )Né   ÚEventz>DeviceInterface member Event should be inherit from _EventBaseÚStreamz@DeviceInterface member Stream should be inherit from _StreamBase)ÚinspectÚisclassÚ
issubclassr   r   ÚsuperÚ__new__)ÚmetaclsÚargsÚkwargsÚclass_memberÚ	__class__s       €úa/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/device_interface.pyr   zDeviceInterfaceMeta.__new__   s¦   ø€ Ø˜A‘wˆØ�lÑ"Ü—?‘? <°Ñ#8Ô9¼jØ˜WÑ%¤zô?ð PàOóPð ð �|Ñ#Ü—?‘? <°Ñ#9Ô:¼zØ˜XÑ&¬ô@ð RàQóRð ô ‰w‰˜wÐ8¨Ò8°Ñ8Ð8ó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__)r    s   @r!   r   r      s   ø„ ÷
9ð 
9r"   r   c                   ó´  — e Zd ZdZ G d„ d«      Z G d„ d«      Zed„ «       Zedefd„«       Z	ede
de
fd	„«       Zede
de
fd
„«       Zed„ «       Zedefd„«       Zedej"                  fd„«       Zed„ «       Zedej"                  fd„«       Zede
de
de
fd„«       Zede
de
fd„«       Zeddefd„«       Zeddefd„«       Zeddefd„«       Zeddefd„«       Zy)ÚDeviceInterfacezž
    This is a simple device runtime interface for Inductor. It enables custom
    backends to be integrated with Inductor in a device-agnostic semantic.
    c                   ó   — e Zd Zdefd„Zy)úDeviceInterface.deviceÚdevicec                 ó   — t         ‚©N©ÚNotImplementedError)Úclsr+   s     r!   r   zDeviceInterface.device.__new__+   s   € Ü%Ð%r"   N)r#   r$   r%   Ú	_device_tr   © r"   r!   r+   r*   *   s   „ ð	& ô 	&r"   r+   c                   óT   — e Zd ZdZedefd„«       Zedefd„«       Zeddefd„«       Z	y)	úDeviceInterface.Workera  
        Worker API to query device properties that will work in multi processing
        workers that cannot use the GPU APIs (due to processing fork() and
        initialization time issues). Properties are recorded in the main process
        before we fork the workers.
        r+   c                 ó   — t         ‚r-   r.   ©r+   s    r!   Ú
set_devicez!DeviceInterface.Worker.set_device6   ó   € ä%Ð%r"   Úreturnc                  ó   — t         ‚r-   r.   r2   r"   r!   Úcurrent_devicez%DeviceInterface.Worker.current_device:   r8   r"   Nc                 ó   — t         ‚r-   r.   r6   s    r!   Úget_device_propertiesz,DeviceInterface.Worker.get_device_properties>   r8   r"   r-   )
r#   r$   r%   Ú__doc__ÚstaticmethodÚintr7   r;   r1   r=   r2   r"   r!   ÚWorkerr4   .   sX   „ ñ	ð 
ð	&˜sò 	&ó 
ð	&ð 
ð	& ò 	&ó 
ð	&ð 
ñ	&¨)ò 	&ó 
ñ	&r"   rA   c                  ó   — t         ‚r-   r.   r2   r"   r!   r;   zDeviceInterface.current_deviceB   ó   € ä!Ð!r"   c                 ó   — t         ‚r-   r.   r6   s    r!   r7   zDeviceInterface.set_deviceF   rC   r"   r9   c                 ó   — t         ‚r-   r.   r6   s    r!   Úmaybe_exchange_devicez%DeviceInterface.maybe_exchange_deviceJ   rC   r"   c                 ó   — t         ‚r-   r.   r6   s    r!   Úexchange_devicezDeviceInterface.exchange_deviceN   rC   r"   c                  ó   — t         ‚r-   r.   r2   r"   r!   Údevice_countzDeviceInterface.device_countR   rC   r"   c                  ó   — t         ‚r-   r.   r2   r"   r!   Úis_availablezDeviceInterface.is_availableV   rC   r"   Ústreamc                 ó   — t         ‚r-   r.   ©rM   s    r!   rM   zDeviceInterface.streamZ   rC   r"   c                  ó   — t         ‚r-   r.   r2   r"   r!   Úcurrent_streamzDeviceInterface.current_stream^   rC   r"   c                 ó   — t         ‚r-   r.   rO   s    r!   Ú
set_streamzDeviceInterface.set_streamb   rC   r"   Ú	stream_idÚdevice_indexÚdevice_typec                 ó   — t         ‚r-   r.   )rT   rU   rV   s      r!   Ú_set_stream_by_idz!DeviceInterface._set_stream_by_idf   rC   r"   Ú
device_idxc                 ó   — t         ‚r-   r.   )rY   s    r!   Úget_raw_streamzDeviceInterface.get_raw_streamj   rC   r"   Nc                 ó   — t         ‚r-   r.   r6   s    r!   ÚsynchronizezDeviceInterface.synchronizen   rC   r"   c                 ó   — t         ‚r-   r.   r6   s    r!   r=   z%DeviceInterface.get_device_propertiesr   rC   r"   c                 ó   — t         ‚r-   r.   r6   s    r!   Úget_compute_capabilityz&DeviceInterface.get_compute_capabilityv   rC   r"   Úincluding_emulationc                 ó   — t         ‚r-   r.   ©ra   s    r!   Úis_bf16_supportedz!DeviceInterface.is_bf16_supportedz   rC   r"   r-   ©F)r#   r$   r%   r>   r+   rA   r?   r;   r1   r7   r@   rF   rH   rJ   ÚboolrL   Útorchr   rM   rQ   rS   rX   r[   r]   r=   r`   rd   r2   r"   r!   r(   r(   $   sÆ  „ ñ÷
&ñ &÷&ñ &ð( ñ"ó ð"ð ð"˜9ò "ó ð"ð ð" cð "¨cò "ó ð"ð ð" ð "¨ò "ó ð"ð ñ"ó ð"ð ð"˜$ò "ó ð"ð ð"�u—|‘|ò "ó ð"ð ñ"ó ð"ð ð"˜5Ÿ<™<ò "ó ð"ð ð" Sð "¸ð "È#ò "ó ð"ð ð" 3ð "¨3ò "ó ð"ð ñ"˜Iò "ó ð"ð ñ" iò "ó ð"ð ñ" yò "ó ð"ð ñ"¨tò "ó ñ"r"   r(   )Ú	metaclassc                   óJ   — e Zd ZdZdee   dee   ddfd„Zd„ Z	de
d	e
d
e
fd„Zy)ÚDeviceGuarda_  
    This class provides a context manager for device switching. This is a stripped
    down version of torch.{device_name}.device.

    The context manager changes the current device to the given device index
    on entering the context and restores the original device on exiting.
    The device is switched using the provided device interface.
    Údevice_interfaceÚindexr9   Nc                 ó.   — || _         || _        d| _        y )Néÿÿÿÿ)rk   ÚidxÚprev_idx)Úselfrk   rl   s      r!   Ú__init__zDeviceGuard.__init__‰   s   € ð !1ˆÔØˆŒØˆ�r"   c                 ór   — | j                   �+| j                  j                  | j                   «      | _        y y r-   )ro   rk   rH   rp   )rq   s    r!   Ú	__enter__zDeviceGuard.__enter__�   s-   € Ø�8‰8ÐØ ×1Ñ1×AÑAÀ$Ç(Á(ÓKˆD�Mð  r"   ÚtypeÚvalueÚ	tracebackc                 óp   — | j                   �*| j                  j                  | j                  «      | _         y)NF)ro   rk   rF   rp   )rq   ru   rv   rw   s       r!   Ú__exit__zDeviceGuard.__exit__”   s+   € Ø�8‰8ÐØ×,Ñ,×BÑBÀ4Ç=Á=ÓQˆDŒHØr"   )r#   r$   r%   r>   r	   r(   r   r@   rr   rt   r   ry   r2   r"   r!   rj   rj      sM   „ ñðØ $ _Ñ 5ðØ>FÀs¹mðà	óòLð˜Sð ¨ð ¸ô r"   rj   c                   ó‚  — e Zd Zej                  j
                  Zej                  j                  Zej                  j                  Z G d„ d«      Z e	ej                  j                  «      Z
 e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                   «      Z e	ej                  j"                  «      Z e	ej                  j$                  «      Z e	e«      Z e	ej                  j*                  «      Z e	ej                  j.                  «      Z e	ej                  j2                  «      Ze	defd„«       Ze	ddefd„«       Zy)	ÚCudaInterfacec                   óP   — e Zd Zedefd„«       Zedefd„«       Zeddefd„«       Zy)úCudaInterface.Workerr+   c                 ó   — | t         d<   y ©NÚcuda©r   r6   s    r!   r7   zCudaInterface.Worker.set_device£   s   € à5;Ô*¨6Ò2r"   r9   c                  ó`   — dt         v r	t         d   S t        j                  j                  «       S r   )r   rg   r€   r;   r2   r"   r!   r;   z#CudaInterface.Worker.current_device§   s)   € àÔ7Ñ7Ü5°fÑ=Ð=Ü—:‘:×,Ñ,Ó.Ð.r"   Nc                 óä  — | �\t        | t        «      r&t        j                  | «      } | j                  dk(  sJ ‚t        | t        j                  «      r| j
                  } | €t        j                  j                  «       } dt        vrZt        t        j                  j                  «       «      D �cg c]!  }t        j                  j                  |«      ‘Œ# }}|t        d<   t        d   |    S c c}w r   )Ú
isinstanceÚstrrg   r+   ru   rl   r{   rA   r;   r   Úranger€   rJ   r=   ©r+   ÚiÚdevice_props      r!   r=   z*CudaInterface.Worker.get_device_properties­   sÎ   € àÐ!Ü˜f¤cÔ*Ü"Ÿ\™\¨&Ó1�FØ!Ÿ;™;¨&Ò0Ð0Ð0Ü˜f¤e§l¡lÔ3Ø#Ÿ\™\�FØˆ~Ü&×-Ñ-×<Ñ<Ó>�àÔ=Ñ=ô #¤5§:¡:×#:Ñ#:Ó#<Ó=öàô —J‘J×4Ñ4°QÕ7ð�ð ð <GÔ0°Ñ8ä3°FÑ;¸FÑCÐCùòó   Â0&C-r-   ©	r#   r$   r%   r?   r@   r7   r;   r1   r=   r2   r"   r!   rA   r}   ¢   sT   „ Ø	ð	<˜sò 	<ó 
ð	<ð 
ð	/ ò 	/ó 
ð	/ð
 
ñ	D¨)ò 	Dó 
ñ	Dr"   rA   r9   c                  ó>   — t         j                  j                  «       S r-   )rg   r€   rL   r2   r"   r!   rL   zCudaInterface.is_availableÐ   s   € ä�z‰z×&Ñ&Ó(Ð(r"   Nr+   c                 ó  — t         j                  j                  €*t         j                  j	                  | «      \  }}|dz  |z   S t         j                  j                  | «      j                  j                  dd«      d   S )Né
   ú:é   r   )rg   ÚversionÚhipr€   Úget_device_capabilityr=   ÚgcnArchNameÚsplit)r+   ÚmajorÚmins      r!   r`   z$CudaInterface.get_compute_capabilityÔ   sh   € ä�=‰=×ÑÐ$ÜŸ™×9Ñ9¸&ÓA‰JˆE�3Ø˜2‘: Ñ#Ð#ä—:‘:×3Ñ3°FÓ;×GÑG×MÑMÈcÐSTÓUÐVWÑXÐXr"   r-   )r#   r$   r%   rg   r€   r+   r   r   rA   r?   r;   r7   rJ   rM   rQ   rS   rX   r]   r=   r   r[   Ú_exchange_devicerH   Ú_maybe_exchange_devicerF   rd   rf   rL   r1   r`   r2   r"   r!   r{   r{   š   sv  „ Ø�Z‰Z×Ñ€Fð �J‰J×Ñ€EØ�Z‰Z×Ñ€F÷Dñ Dñ> " %§*¡*×";Ñ";Ó<€NÙ˜eŸj™j×3Ñ3Ó4€JÙ §
¡
× 7Ñ 7Ó8€LÙ˜%Ÿ*™*×+Ñ+Ó,€FÙ! %§*¡*×";Ñ";Ó<€NÙ˜eŸj™j×3Ñ3Ó4€JÙ$ U§Z¡Z×%AÑ%AÓBÐÙ˜uŸz™z×5Ñ5Ó6€KÙ(¨¯©×)IÑ)IÓJÐÙ! /Ó2€NÙ" 5§:¡:×#>Ñ#>Ó?€OÙ(¨¯©×)JÑ)JÓKÐÙ$ U§Z¡Z×%AÑ%AÓBÐð ð)˜$ò )ó ð)ð ñY yò Yó ñYr"   r{   Úget_xpu_stream)Ú_xpu_getCurrentRawStreamc                   óf  — e Zd Zej                  j
                  Zej                  j                  Zej                  j                  Z G d„ d«      Z e	ej                  j                  «      Z
 e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                  «      Z e	ej                  j                   «      Z e	ej                  j"                  «      Z e	ej                  j$                  «      Z e	e«      Z e	ej                  j*                  «      Z e	ej                  j.                  «      Ze	defd„«       Ze	d
defd„«       Ze	ddedefd	„«       Zy)ÚXpuInterfacec                   óP   — e Zd Zedefd„«       Zedefd„«       Zeddefd„«       Zy)úXpuInterface.Workerr+   c                 ó   — | t         d<   y ©NÚxpur�   r6   s    r!   r7   zXpuInterface.Worker.set_deviceê   s   € à4:Ô*¨5Ò1r"   r9   c                  ó`   — dt         v r	t         d   S t        j                  j                  «       S r¡   )r   rg   r¢   r;   r2   r"   r!   r;   z"XpuInterface.Worker.current_deviceî   s)   € àÔ6Ñ6Ü5°eÑ<Ð<Ü—9‘9×+Ñ+Ó-Ð-r"   Nc                 óä  — | �\t        | t        «      r&t        j                  | «      } | j                  dk(  sJ ‚t        | t        j                  «      r| j
                  } | €t        j                  j                  «       } dt        vrZt        t        j                  j                  «       «      D �cg c]!  }t        j                  j                  |«      ‘Œ# }}|t        d<   t        d   |    S c c}w r¡   )r„   r…   rg   r+   ru   rl   r�   rA   r;   r   r†   r¢   rJ   r=   r‡   s      r!   r=   z)XpuInterface.Worker.get_device_propertiesô   sÎ   € àÐ!Ü˜f¤cÔ*Ü"Ÿ\™\¨&Ó1�FØ!Ÿ;™;¨%Ò/Ð/Ð/Ü˜f¤e§l¡lÔ3Ø#Ÿ\™\�FØˆ~Ü%×,Ñ,×;Ñ;Ó=�àÔ<Ñ<ô #¤5§9¡9×#9Ñ#9Ó#;Ó<öàô —I‘I×3Ñ3°AÕ6ð�ð ð ;FÔ0°Ñ7ä3°EÑ:¸6ÑBÐBùòrŠ   r-   r‹   r2   r"   r!   rA   rŸ   é   sT   „ Ø	ð	;˜sò 	;ó 
ð	;ð 
ð	. ò 	.ó 
ð	.ð
 
ñ	C¨)ò 	Có 
ñ	Cr"   rA   r9   c                  ó>   — t         j                  j                  «       S r-   )rg   r¢   rL   r2   r"   r!   rL   zXpuInterface.is_available  s   € ä�y‰y×%Ñ%Ó'Ð'r"   Nr+   c                 óD   — t         j                  j                  | «      }|S r-   )rg   r¢   r“   )r+   Úccs     r!   r`   z#XpuInterface.get_compute_capability  s   € ä�Y‰Y×,Ñ,¨VÓ4ˆØˆ	r"   ra   c                 ó>   — t         j                  j                  «       S r-   )rg   r¢   rd   rc   s    r!   rd   zXpuInterface.is_bf16_supported  s   € ä�y‰y×*Ñ*Ó,Ð,r"   r-   re   )r#   r$   r%   rg   r¢   r+   r   r   rA   r?   r;   r7   rJ   rM   rQ   rS   rX   r]   r=   rš   r[   r˜   rH   r™   rF   rf   rL   r1   r`   rd   r2   r"   r!   r�   r�   ä   s|  „ Ø�Y‰Y×Ñ€FØ�I‰I�O‰O€EØ�Y‰Y×Ñ€F÷Cñ Cñ> " %§)¡)×":Ñ":Ó;€NÙ˜eŸi™i×2Ñ2Ó3€JÙ §	¡	× 6Ñ 6Ó7€LÙ˜%Ÿ)™)×*Ñ*Ó+€FÙ! %§)¡)×":Ñ":Ó;€NÙ˜eŸi™i×2Ñ2Ó3€JÙ$ U§Y¡Y×%@Ñ%@ÓAÐÙ˜uŸy™y×4Ñ4Ó5€KÙ(¨¯©×)HÑ)HÓIÐÙ! .Ó1€NÙ" 5§9¡9×#=Ñ#=Ó>€OÙ(¨¯©×)IÑ)IÓJÐð ð(˜$ò (ó ð(ð ñ yò ó ðð ñ-¨tð -Àò -ó ñ-r"   r�   Údevice_interfacesFr+   rk   c                 ó`   — t        | t        j                  «      rt        | «      } |t        | <   y r-   )r„   rg   r+   r…   r©   )r+   rk   s     r!   Úregister_interface_for_devicer«   (  s&   € ô �&œ%Ÿ,™,Ô'Ü�V“ˆØ 0Ô�fÒr"   r9   c                 óª   — t        | t        j                  «      rt        | «      } t        s
t        «        | t        v r	t        |    S t        d| › �«      ‚)NzNo interface for device )r„   rg   r+   r…   Ú_device_initializedÚinit_device_regr©   r/   r6   s    r!   Úget_interface_for_devicer¯   0  sI   € Ü�&œ%Ÿ,™,Ô'Ü�V“ˆÝÜÔØÔ"Ñ"Ü  Ñ(Ð(Ü
Ð 8¸¸ÐAÓ
BÐBr"   c                  óJ   — t         s
t        «        t        j                  «       S r-   )r­   r®   r©   Úitemsr2   r"   r!   Ú get_registered_device_interfacesr²   :  s   € ÝÜÔÜ×"Ñ"Ó$Ð$r"   c                  óD  — t        dt        «       t        t        j                  j                  «       «      D ]  } t        d| › �t        «       Œ t        dt        «       t        t        j                  j                  «       «      D ]  } t        d| › �t        «       Œ day )Nr€   zcuda:r¢   zxpu:T)	r«   r{   r†   rg   r€   rJ   r�   r¢   r­   )rˆ   s    r!   r®   r®   @  s†   € ä! &¬-Ô8Ü”5—:‘:×*Ñ*Ó,Ó-ò BˆÜ%¨¨a¨S k´=ÕAðBô " %¬Ô6Ü”5—9‘9×)Ñ)Ó+Ó,ò @ˆÜ%¨¨Q¨C j´,Õ?ð@ð Ñr"   ))r   Útypingr   r   r   r   r   r   r	   r
   rg   Útorch._streambaser   r   r@   Ú__annotations__r€   Ú_is_compiledÚtorch._Cr   r   r+   r…   r1   r   r   ru   r   r(   rj   r{   r¢   r›   rš   r�   r©   r­   r«   r¯   r²   r®   r2   r"   r!   ú<module>r¹      s’  ðä ß N× NÓ Nã ß 5ð ˜( C 5¨# :Ñ.Ñ/Ó /Ø‡:�:×ÑÔÞEà€Oà�%—,‘,  S¨$Ð.Ñ/€	ð 46Ð   $ s¨C x¡.Ó 5Ø13Ð   S¨# X¡Ó 3ô9˜$ô 9ôX"Ð 3õ X"÷vñ ô6@Y�Oô @YðF ˜ 3 %¨ *Ñ-Ñ.Ó .Ø‡9�9×ÑÔÞCà€Nô=-�?ô =-ð@ 79Ð �4˜˜T /Ñ2Ð2Ñ3Ó 8ØÐ ð1Ø�#�u—|‘|Ð#Ñ$ð1Ø8<¸_Ñ8Mó1ðC U¨3°·±Ð+<Ñ%=ð CÀ$ÀÑBWó Cð%¨(°5¸¸dÀ?Ñ>SÐ9SÑ3TÑ*Uó %ó
r"   