§
    ž²Åjs3  ã                   ó  — U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZ d dlZeeegef                  ed<   e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	¦  «        Z G d
„ d¦  «        Z G d„ de¦  «        Zeeegef                  ed<   ej                             ¦   «         rd dlmZ ndZ G d„ de¦  «        Ze G d„ 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'dS )é    N)Ú	dataclass)ÚAnyÚCallableÚDictÚIterableÚOptionalÚTupleÚTypeÚUnionÚget_cuda_stream)Ú_cuda_getCurrentRawStreamÚ caching_worker_device_propertiesÚcaching_worker_current_devicesc                   ó^  — e Zd ZdZ G d„ d¦  «        Z G d„ 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ed#de
defd"„¦   «         ZdS )%Ú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dS )úDeviceInterface.deviceÚdevicec                 ó   — t           ‚©N©ÚNotImplementedError©Úclsr   s     úOC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/device_interface.pyÚ__new__zDeviceInterface.device.__new__   s   € Ý%Ð%ó    N)Ú__name__Ú
__module__Ú__qualname__Ú	_device_tr   © r   r   r   r      s/   € € € € € ð	& ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&r   r   c                   ó   — e Zd Zd„ ZdS )úDeviceInterface.Eventc                 ó    — t          d¦  «        ‚)NzYEvent should be inherited from torch.Event, otherwise, it couldn't be captured by dynamo.r   ©r   ÚargsÚkwargss      r   r   zDeviceInterface.Event.__new__!   s   € Ý%Økñô ð r   N©r   r   r    r   r"   r   r   ÚEventr$       ó#   € € € € € ð	ð 	ð 	ð 	ð 	r   r*   c                   ó   — e Zd Zd„ ZdS )úDeviceInterface.Streamc                 ó    — t          d¦  «        ‚)Nz[Stream should be inherited from torch.Stream, otherwise, it couldn't be captured by dynamo.r   r&   s      r   r   zDeviceInterface.Stream.__new__'   s   € Ý%Ømñô ð r   Nr)   r"   r   r   ÚStreamr-   &   r+   r   r/   c                   óh   — 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	dS )	ú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_device4   ó   € å%Ð%r   Úreturnc                  ó   — t           ‚r   r   r"   r   r   Úcurrent_devicez%DeviceInterface.Worker.current_device8   r5   r   Nc                 ó   — t           ‚r   r   r3   s    r   Úget_device_propertiesz,DeviceInterface.Worker.get_device_properties<   r5   r   r   )
r   r   r    Ú__doc__ÚstaticmethodÚintr4   r8   r!   r:   r"   r   r   ÚWorkerr1   ,   s˜   € € € € € ð	ð 	ð 
ð	&˜sð 	&ð 	&ð 	&ñ 
Œð	&ð 
ð	& ð 	&ð 	&ð 	&ñ 
Œð	&ð 
ð	&ð 	&¨)ð 	&ð 	&ð 	&ñ 
Œð	&ð 	&ð 	&r   r>   c                  ó   — t           ‚r   r   r"   r   r   r8   zDeviceInterface.current_device@   ó   € å!Ð!r   c                 ó   — t           ‚r   r   r3   s    r   r4   zDeviceInterface.set_deviceD   r@   r   r6   c                 ó   — t           ‚r   r   r3   s    r   Úmaybe_exchange_devicez%DeviceInterface.maybe_exchange_deviceH   r@   r   c                 ó   — t           ‚r   r   r3   s    r   Úexchange_devicezDeviceInterface.exchange_deviceL   r@   r   c                  ó   — t           ‚r   r   r"   r   r   Údevice_countzDeviceInterface.device_countP   r@   r   c                  ó   — t           ‚r   r   r"   r   r   Úis_availablezDeviceInterface.is_availableT   r@   r   Ústreamc                 ó   — t           ‚r   r   ©rJ   s    r   rJ   zDeviceInterface.streamX   r@   r   c                  ó   — t           ‚r   r   r"   r   r   Úcurrent_streamzDeviceInterface.current_stream\   r@   r   c                 ó   — t           ‚r   r   rL   s    r   Ú
set_streamzDeviceInterface.set_stream`   r@   r   Ú	stream_idÚdevice_indexÚdevice_typec                 ó   — t           ‚r   r   )rQ   rR   rS   s      r   Ú_set_stream_by_idz!DeviceInterface._set_stream_by_idd   r@   r   Ú
device_idxc                 ó   — t           ‚r   r   ©rV   s    r   Úget_raw_streamzDeviceInterface.get_raw_streamh   r@   r   Nc                 ó   — t           ‚r   r   r3   s    r   ÚsynchronizezDeviceInterface.synchronizel   r@   r   c                 ó6   — | j                              |¦  «        S r   )r>   r:   r   s     r   r:   z%DeviceInterface.get_device_propertiesp   s   € àŒz×/Ò/°Ñ7Ô7Ð7r   c                 ó   — t           ‚r   r   r3   s    r   Úget_compute_capabilityz&DeviceInterface.get_compute_capabilityt   r@   r   FÚincluding_emulationc                 ó   — t           ‚r   r   ©r_   s    r   Úis_bf16_supportedz!DeviceInterface.is_bf16_supportedx   r@   r   c                 ó   — t           ‚r   r   r3   s    r   Úmemory_allocatedz DeviceInterface.memory_allocated|   r@   r   r   ©F)r   r   r    r;   r   r*   r/   r>   r<   r8   r!   r4   r=   rC   rE   rG   ÚboolrI   ÚtorchrJ   rN   rP   rU   rY   r[   Úclassmethodr:   r^   rb   rd   r"   r   r   r   r      sQ  € € € € € ðð ð
&ð &ð &ð &ð &ñ &ô &ð &ðð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ð&ð &ð &ð &ð &ñ &ô &ð &ð( ð"ð "ñ „\ð"ð ð"˜9ð "ð "ð "ñ „\ð"ð ð" cð "¨cð "ð "ð "ñ „\ð"ð ð" ð "¨ð "ð "ð "ñ „\ð"ð ð"ð "ñ „\ð"ð ð"˜$ð "ð "ð "ñ „\ð"ð ð"�u”|ð "ð "ð "ñ „\ð"ð ð"ð "ñ „\ð"ð ð"˜5œ<ð "ð "ð "ñ „\ð"ð ð" Sð "¸ð "È#ð "ð "ð "ñ „\ð"ð ð" 3ð "¨3ð "ð "ð "ñ „\ð"ð ð"ð "˜Ið "ð "ð "ñ „\ð"ð ð8ð 8¨9ð 8ð 8ð 8ñ „[ð8ð ð"ð " yð "ð "ð "ñ „\ð"ð ð"ð "¨tð "ð "ð "ñ „\ð"ð ð"ð " ð "°cð "ð "ð "ñ „\ð"ð "ð "r   r   c                   óX   — 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dS )Ú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Úindexr6   Nc                 ó0   — || _         || _        d| _        d S )Néÿÿÿÿ)rk   ÚidxÚprev_idx)Úselfrk   rl   s      r   Ú__init__zDeviceGuard.__init__‹   s   € ð !1ˆÔØˆŒØˆŒˆˆr   c                 ó`   — | j         �&| j                             | j         ¦  «        | _        d S d S r   )ro   rk   rE   rp   )rq   s    r   Ú	__enter__zDeviceGuard.__enter__’   s0   € ØŒ8ÐØ Ô1×AÒAÀ$Ä(ÑKÔKˆDŒMˆMˆMð  Ðr   ÚtypeÚvalueÚ	tracebackc                 ó\   — | j         �$| j                             | j        ¦  «        | _         dS )NF)ro   rk   rC   rp   )rq   ru   rv   rw   s       r   Ú__exit__zDeviceGuard.__exit__–   s)   € ØŒ8ÐØÔ,×BÒBÀ4Ä=ÑQÔQˆDŒHØˆur   )r   r   r    r;   r
   r   r   r=   rr   rt   r   ry   r"   r   r   rj   rj   �   sŽ   € € € € € ðð ðØ $ _Ô 5ðØ>FÀs¼mðà	ðð ð ð ðLð Lð 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        j        ¦  «        Z e	ej        j        ¦  «        Ze	defd„¦   «         Ze	ddefd„¦   «         ZdS )	ÚCudaInterfacec                   ód   — e Zd Zedefd„¦   «         Zedefd„¦   «         Zeddefd„¦   «         ZdS )úCudaInterface.Workerr   c                 ó   — | t           d<   d S ©NÚcuda©r   r3   s    r   r4   zCudaInterface.Worker.set_device¥   s   € à5;Õ*¨6Ñ2Ð2Ð2r   r6   c                  ój   — dt           v rt           d         S t          j                             ¦   «         S r   )r   rg   r€   r8   r"   r   r   r8   z#CudaInterface.Worker.current_device©   s-   € àÕ7Ð7Ð7Ý5°fÔ=Ð=Ý”:×,Ò,Ñ.Ô.Ð.r   Nc                 óª  — | �Wt          | t          ¦  «        r!t          j        | ¦  «        } | j        dk    sJ ‚t          | t          j        ¦  «        r| j        } | €t          j                             ¦   «         } dt          vr?d„ t          t          j                             ¦   «         ¦  «        D ¦   «         }|t          d<   t          d         |          S )Nr€   c                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r"   )rg   r€   r:   ©Ú.0Úis     r   ú
<listcomp>z>CudaInterface.Worker.get_device_properties.<locals>.<listcomp>»   s8   € ð ð ð àõ ”J×4Ò4°QÑ7Ô7ðð ð r   )Ú
isinstanceÚstrrg   r   ru   rl   r{   r>   r8   r   Úranger€   rG   ©r   Údevice_props     r   r:   z*CudaInterface.Worker.get_device_properties¯   sÎ   € àÐ!Ý˜f¥cÑ*Ô*ð 1Ý"œ\¨&Ñ1Ô1�FØ!œ;¨&Ò0Ð0Ð0Ð0Ý˜f¥e¤lÑ3Ô3ð *Ø#œ\�FØˆ~Ý&Ô-×<Ò<Ñ>Ô>�àÕ=Ð=Ð=ðð å"¥5¤:×#:Ò#:Ñ#<Ô#<Ñ=Ô=ðñ ô �ð <GÕ0°Ñ8å3°FÔ;¸FÔCÐCr   r   ©	r   r   r    r<   r=   r4   r8   r!   r:   r"   r   r   r>   r}   ¤   s”   € € € € € Ø	ð	<˜sð 	<ð 	<ð 	<ñ 
Œð	<ð 
ð	/ ð 	/ð 	/ð 	/ñ 
Œð	/ð
 
ð	Dð 	D¨)ð 	Dð 	Dð 	Dñ 
Œð	Dð 	Dð 	Dr   r>   r6   c                  ó>   — t           j                             ¦   «         S r   )rg   r€   rI   r"   r   r   rI   zCudaInterface.is_availableÓ   s   € åŒz×&Ò&Ñ(Ô(Ð(r   Nr   c                 óô   — t           j        j        €*t           j                             | ¦  «        \  }}|dz  |z   S t           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×   se   € åŒ=ÔÐ$Ýœ×9Ò9¸&ÑAÔA‰JˆE�3Ø˜2‘: Ñ#Ð#å”:×3Ò3°FÑ;Ô;ÔG×MÒMÈcÐSTÑUÔUÐVWÔXÐXr   r   )r   r   r    rg   r€   r   r*   r/   r>   r<   r8   r4   rG   rJ   rN   rP   rU   r[   r:   r   rY   Ú_exchange_devicerE   Ú_maybe_exchange_devicerC   rd   rb   rf   rI   r!   r^   r"   r   r   r{   r{   œ   sÙ  € € € € € ØŒZÔ€Fð ŒJÔ€EØŒZÔ€FðDð Dð Dð Dð Dñ Dô Dð Dð> "�\ %¤*Ô";Ñ<Ô<€NØ�˜eœjÔ3Ñ4Ô4€JØ�< ¤
Ô 7Ñ8Ô8€LØˆ\˜%œ*Ô+Ñ,Ô,€FØ!�\ %¤*Ô";Ñ<Ô<€NØ�˜eœjÔ3Ñ4Ô4€JØ$˜ U¤ZÔ%AÑBÔBÐØ�,˜uœzÔ5Ñ6Ô6€KØ(˜L¨¬Ô)IÑJÔJÐØ!�\ /Ñ2Ô2€NØ"�l 5¤:Ô#>Ñ?Ô?€OØ(˜L¨¬Ô)JÑKÔKÐØ#�| E¤JÔ$?Ñ@Ô@ÐØ$˜ U¤ZÔ%AÑBÔBÐð ð)˜$ð )ð )ð )ñ „\ð)ð ðYð Y yð Yð Yð Yñ „\ðYð Yð Yr   r{   Úget_xpu_stream)Ú_xpu_getCurrentRawStreamc                   óÚ  — 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        j        ¦  «        Ze	defd„¦   «         Ze	ddefd„¦   «         Ze	dd	edefd
„¦   «         ZdS )ÚXpuInterfacec                   ód   — e Zd Zedefd„¦   «         Zedefd„¦   «         Zeddefd„¦   «         ZdS )úXpuInterface.Workerr   c                 ó   — | t           d<   d S ©NÚxpur�   r3   s    r   r4   zXpuInterface.Worker.set_deviceí   s   € à4:Õ*¨5Ñ1Ð1Ð1r   r6   c                  ój   — dt           v rt           d         S t          j                             ¦   «         S r¤   )r   rg   r¥   r8   r"   r   r   r8   z"XpuInterface.Worker.current_deviceñ   s-   € àÕ6Ð6Ð6Ý5°eÔ<Ð<Ý”9×+Ò+Ñ-Ô-Ð-r   Nc                 óª  — | �Wt          | t          ¦  «        r!t          j        | ¦  «        } | j        dk    sJ ‚t          | t          j        ¦  «        r| j        } | €t          j                             ¦   «         } dt          vr?d„ t          t          j                             ¦   «         ¦  «        D ¦   «         }|t          d<   t          d         |          S )Nr¥   c                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r"   )rg   r¥   r:   r…   s     r   rˆ   z=XpuInterface.Worker.get_device_properties.<locals>.<listcomp>  s8   € ð ð ð àõ ”I×3Ò3°AÑ6Ô6ðð ð r   )r‰   rŠ   rg   r   ru   rl   r    r>   r8   r   r‹   r¥   rG   rŒ   s     r   r:   z)XpuInterface.Worker.get_device_properties÷   sÎ   € àÐ!Ý˜f¥cÑ*Ô*ð 0Ý"œ\¨&Ñ1Ô1�FØ!œ;¨%Ò/Ð/Ð/Ð/Ý˜f¥e¤lÑ3Ô3ð *Ø#œ\�FØˆ~Ý%Ô,×;Ò;Ñ=Ô=�àÕ<Ð<Ð<ðð å"¥5¤9×#9Ò#9Ñ#;Ô#;Ñ<Ô<ðñ ô �ð ;FÕ0°Ñ7å3°EÔ:¸6ÔBÐBr   r   rŽ   r"   r   r   r>   r¢   ì   s”   € € € € € Ø	ð	;˜sð 	;ð 	;ð 	;ñ 
Œð	;ð 
ð	. ð 	.ð 	.ð 	.ñ 
Œð	.ð
 
ð	Cð 	C¨)ð 	Cð 	Cð 	Cñ 
Œð	Cð 	Cð 	Cr   r>   r6   c                  ó>   — t           j                             ¦   «         S r   )rg   r¥   rI   r"   r   r   rI   zXpuInterface.is_available  s   € åŒy×%Ò%Ñ'Ô'Ð'r   Nr   c                 óD   — t           j                             | ¦  «        }|S r   )rg   r¥   r–   )r   Úccs     r   r^   z#XpuInterface.get_compute_capability  s   € åŒY×,Ò,¨VÑ4Ô4ˆØˆ	r   Fr_   c                 ó>   — t           j                             ¦   «         S r   )rg   r¥   rb   ra   s    r   rb   zXpuInterface.is_bf16_supported#  s   € åŒy×*Ò*Ñ,Ô,Ð,r   r   re   )r   r   r    rg   r¥   r   r*   r/   r>   r<   r8   r4   rG   rJ   rN   rP   rU   r[   r:   r�   rY   r›   rE   rœ   rC   rd   rf   rI   r!   r^   rb   r"   r   r   r    r    ç   sì  € € € € € ØŒYÔ€FØŒIŒO€EØŒYÔ€FðCð Cð Cð Cð Cñ Cô Cð Cð> "�\ %¤)Ô":Ñ;Ô;€NØ�˜eœiÔ2Ñ3Ô3€JØ�< ¤	Ô 6Ñ7Ô7€LØˆ\˜%œ)Ô*Ñ+Ô+€FØ!�\ %¤)Ô":Ñ;Ô;€NØ�˜eœiÔ2Ñ3Ô3€JØ$˜ U¤YÔ%@ÑAÔAÐØ�,˜uœyÔ4Ñ5Ô5€KØ(˜L¨¬Ô)HÑIÔIÐØ!�\ .Ñ1Ô1€NØ"�l 5¤9Ô#=Ñ>Ô>€OØ(˜L¨¬Ô)IÑJÔJÐØ#�| E¤IÔ$>Ñ?Ô?Ðð ð(˜$ð (ð (ð (ñ „\ð(ð ðð  yð ð ð ñ „\ðð ð-ð -¨tð -Àð -ð -ð -ñ „\ð-ð -ð -r   r    c                   ó   — e Zd ZU eed<   dS )ÚCpuDevicePropertiesÚmulti_processor_countN)r   r   r    r=   Ú__annotations__r"   r   r   r®   r®   (  s   € € € € € € àÐÐÑÐÐr   r®   c                   óÜ   — e Zd Z G d„ dej        ¦  «        Zedefd„¦   «         Zeddede	fd„¦   «         Z
edefd„¦   «         Zed	„ ¦   «         Zeddefd
„¦   «         Z G d„ d¦  «        ZdS )ÚCpuInterfacec                   ó*   — e Zd Zdd„Zdefd„Zdd„ZdS )	úCpuInterface.EventTc                 ó   — d| _         d S )Ng        ©Útime)rq   Úenable_timings     r   rr   zCpuInterface.Event.__init__/  s   € ØˆDŒIˆIˆIr   r6   c                 ó&   — |j         | j         z
  dz  S )Niè  r¶   )rq   Ú	end_events     r   Úelapsed_timezCpuInterface.Event.elapsed_time2  s   € Ø”N T¤YÑ.°$Ñ6Ð6r   Nc                 ó6   — t          j        ¦   «         | _         d S r   )r·   Úperf_counter)rq   rJ   s     r   ÚrecordzCpuInterface.Event.record5  s   € ÝÔ)Ñ+Ô+ˆDŒIˆIˆIr   )Tr   )r   r   r    rr   Úfloatr»   r¾   r"   r   r   r*   r´   .  sW   € € € € € ð	ð 	ð 	ð 	ð	7¨Uð 	7ð 	7ð 	7ð 	7ð	,ð 	,ð 	,ð 	,ð 	,ð 	,r   r*   r6   c                  ó   — dS )NTr"   r"   r   r   rI   zCpuInterface.is_available8  s   € àˆtr   Nr   c                 ó   — dS )NÚ r"   r3   s    r   r^   z#CpuInterface.get_compute_capability<  s   € àˆrr   c                 ó   — dS ©Nr   r"   rX   s    r   rY   zCpuInterface.get_raw_stream@  ó   € àˆqr   c                  ó   — dS rÄ   r"   r"   r   r   r8   zCpuInterface.current_deviceD  rÅ   r   c                 ó   — d S r   r"   r3   s    r   r[   zCpuInterface.synchronizeH  s   € àˆr   c                   ó,   — e Zd Zeddefd„¦   «         ZdS )úCpuInterface.WorkerNr   c                 óP   — dd l }|                     ¦   «         }t          |¦  «        S rÄ   )ÚmultiprocessingÚ	cpu_countr®   )r   rË   rÌ   s      r   r:   z)CpuInterface.Worker.get_device_propertiesM  s-   € à"Ð"Ð"Ð"à'×1Ò1Ñ3Ô3ˆIÝ& yÑ1Ô1Ð1r   r   )r   r   r    r<   r!   r:   r"   r   r   r>   rÉ   L  s>   € € € € € Ø	ð	2ð 	2¨)ð 	2ð 	2ð 	2ñ 
Œð	2ð 	2ð 	2r   r>   r   )r   r   r    rg   r*   r<   rf   rI   r!   rŠ   r^   r=   rY   r8   r[   r>   r"   r   r   r²   r²   -  s0  € € € € € ð,ð ,ð ,ð ,ð ,�”ñ ,ô ,ð ,ð ð˜$ð ð ð ñ „\ðð ðð  yð ¸Cð ð ð ñ „\ðð ð cð ð ð ñ „\ðð ðð ñ „\ðð ðð ˜Ið ð ð ñ „\ðð2ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2r   r²   Údevice_interfacesFr   rk   c                 ó\   — t          | t          j        ¦  «        r| j        } |t          | <   d S r   )r‰   rg   r   ru   rÍ   )r   rk   s     r   Úregister_interface_for_devicerÏ   Y  s0   € õ �&�%œ,Ñ'Ô'ð Ø”ˆØ 0Õ�fÑÐÐr   r6   c                 ó¾   — t          | t          j        ¦  «        r| j        } t          st          ¦   «          | t          v rt          |          S t          d| › �¦  «        ‚)NzNo interface for device )r‰   rg   r   ru   Ú_device_initializedÚinit_device_regrÍ   r   r3   s    r   Úget_interface_for_devicerÓ   a  s_   € Ý�&�%œ,Ñ'Ô'ð Ø”ˆÝð ÝÑÔÐØÕ"Ð"Ð"Ý  Ô(Ð(Ý
ÐA¸ÐAÐAÑ
BÔ
BÐBr   c                  ó^   — t           st          ¦   «          t                               ¦   «         S r   )rÑ   rÒ   rÍ   Úitemsr"   r   r   Ú get_registered_device_interfacesrÖ   k  s(   € Ýð ÝÑÔÐÝ×"Ò"Ñ$Ô$Ð$r   c                  ó   — t          dt          ¦  «         t          t          j                             ¦   «         ¦  «        D ]} t          d| › �t          ¦  «         Œt          dt          ¦  «         t          t          j                             ¦   «         ¦  «        D ]} t          d| › �t          ¦  «         Œt          dt          ¦  «         da	d S )Nr€   zcuda:r¥   zxpu:ÚcpuT)
rÏ   r{   r‹   rg   r€   rG   r    r¥   r²   rÑ   )r‡   s    r   rÒ   rÒ   q  s¾   € å! &­-Ñ8Ô8Ð8Ý•5”:×*Ò*Ñ,Ô,Ñ-Ô-ð Bð BˆÝ% k¨a k kµ=ÑAÔAÐAÐAå! %­Ñ6Ô6Ð6Ý•5”9×)Ò)Ñ+Ô+Ñ,Ô,ð @ð @ˆÝ% j¨Q j jµ,Ñ?Ô?Ð?Ð?å! %­Ñ6Ô6Ð6àÐÐÐr   )(r·   Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   rg   r=   r°   r€   Ú_is_compiledÚtorch._Cr   r   r   rŠ   r!   r   r   r   rj   r{   r¥   rž   r�   r    r®   r²   rÍ   rÑ   rÏ   rÓ   rÖ   rÒ   r"   r   r   ú<module>rÝ      sH  ðà €€€€Ø !Ð !Ð !Ð !Ð !Ð !Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nà €€€ð ˜( C 5¨# :Ô.Ô/Ð /Ð /Ñ /Ø„:×ÒÑÔð ØEÐEÐEÐEÐEÐEÐEà€Oà�%”,  S¨$Ð.Ô/€	ð 46Ð   $ s¨C x¤.Ð 5Ð 5Ñ 5Ø13Ð   S¨# X¤Ð 3Ð 3Ñ 3ðh"ð h"ð h"ð h"ð h"ñ h"ô h"ð h"ðVð ð ð ð ñ ô ð ð6AYð AYð AYð AYð AY�Oñ AYô AYð AYðH ˜ 3 %¨ *Ô-Ô.Ð .Ð .Ñ .Ø„9×ÒÑÔð ØCÐCÐCÐCÐCÐCÐCà€Nð>-ð >-ð >-ð >-ð >-�?ñ >-ô >-ð >-ðB ðð ð ð ð ñ ô ñ „ðð%2ð %2ð %2ð %2ð %2�?ñ %2ô %2ð %2ðP 79Ð �4˜˜T /Ô2Ð2Ô3Ð 8Ð 8Ñ 8ØÐ ð1Ø�#�u”|Ð#Ô$ð1Ø8<¸_Ô8Mð1ð 1ð 1ð 1ðC U¨3°´Ð+<Ô%=ð CÀ$ÀÔBWð Cð Cð Cð Cð%¨(°5¸¸dÀ?Ô>SÐ9SÔ3TÔ*Uð %ð %ð %ð %ðð ð ð ð r   