§
    Ÿ²Åj  ã                   óš  — d Z ddlmZ ddlmZmZmZ ddlZddlm	Z
 ddlmZ g d	¢Zee
eedf         Zd
efd„Zd
efd„Zd
efd„Zd
efd„Zd
efd„Zd
efd„Zd
efd„Zd
efd„Zd
efd„Zd"ded
dfd„Z G d„ d¦  «        Z G d„ d¦  «        Z e¦   «         Zead"ded
efd„Z G d„ de¦  «        Z ded
efd„Z!d
efd„Z"ded
dfd „Z#d
efd!„Z$dS )#zj
This package implements abstractions found in ``torch.cuda``
to facilitate writing device-agnostic code.
é    )ÚAbstractContextManager)ÚAnyÚOptionalÚUnionNé   ©Údeviceé   )Úamp)
Úis_availableÚsynchronizeÚcurrent_deviceÚcurrent_streamÚstreamÚ
set_deviceÚdevice_countÚStreamÚStreamContextÚEventÚreturnc                  óH   — t           j        j                             ¦   «         S )z/Returns a bool indicating if CPU supports AVX2.)ÚtorchÚ_CÚ_cpuÚ_is_avx2_supported© ó    úCC:\Projects\Historical\venv\Lib\site-packages\torch/cpu/__init__.pyr   r       s   € åŒ8Œ=×+Ò+Ñ-Ô-Ð-r   c                  óH   — t           j        j                             ¦   «         S )z1Returns a bool indicating if CPU supports AVX512.)r   r   r   Ú_is_avx512_supportedr   r   r   r    r    %   s   € åŒ8Œ=×-Ò-Ñ/Ô/Ð/r   c                  óH   — t           j        j                             ¦   «         S )z6Returns a bool indicating if CPU supports AVX512_BF16.)r   r   r   Ú_is_avx512_bf16_supportedr   r   r   r"   r"   *   s   € åŒ8Œ=×2Ò2Ñ4Ô4Ð4r   c                  óH   — t           j        j                             ¦   «         S )z/Returns a bool indicating if CPU supports VNNI.)r   r   r   Ú_is_avx512_vnni_supportedr   r   r   Ú_is_vnni_supportedr%   /   s   € õ Œ8Œ=×2Ò2Ñ4Ô4Ð4r   c                  óH   — t           j        j                             ¦   «         S )z3Returns a bool indicating if CPU supports AMX_TILE.)r   r   r   Ú_is_amx_tile_supportedr   r   r   r'   r'   5   ó   € åŒ8Œ=×/Ò/Ñ1Ô1Ð1r   c                  óH   — t           j        j                             ¦   «         S )z3Returns a bool indicating if CPU supports AMX FP16.)r   r   r   Ú_is_amx_fp16_supportedr   r   r   r*   r*   :   r(   r   c                  óH   — t           j        j                             ¦   «         S )zInitializes AMX instructions.)r   r   r   Ú	_init_amxr   r   r   r,   r,   ?   s   € åŒ8Œ=×"Ò"Ñ$Ô$Ð$r   c                  óH   — t           j        j                             ¦   «         S )z2Returns a bool indicating if CPU supports Arm SVE.)r   r   r   Ú_is_arm_sve_supportedr   r   r   r.   r.   D   s   € åŒ8Œ=×.Ò.Ñ0Ô0Ð0r   c                  ó   — dS )z…Returns a bool indicating if CPU is currently available.

    N.B. This function only exists to facilitate device-agnostic code

    Tr   r   r   r   r   r   I   s	   € ð ˆ4r   r	   c                 ó   — dS )zñWaits for all kernels in all streams on the CPU device to complete.

    Args:
        device (torch.device or int, optional): ignored, there's only one CPU device.

    N.B. This function only exists to facilitate device-agnostic code.
    Nr   r   s    r   r   r   R   ó   € € € r   c                   ó,   — e Zd ZdZddeddfd„Zd	d„ZdS )
r   zH
    N.B. This class only exists to facilitate device-agnostic code
    éÿÿÿÿÚpriorityr   Nc                 ó   — d S ©Nr   )Úselfr4   s     r   Ú__init__zStream.__init__a   ó   € Øˆr   c                 ó   — d S r6   r   ©r7   r   s     r   Úwait_streamzStream.wait_streamd   r9   r   )r3   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr8   r<   r   r   r   r   r   \   sY   € € € € € ðð ðð  ð ¨dð ð ð ð ðð ð ð ð ð r   r   c                   ó6   — e Zd Zdefd„Zddd„Zdd„Zddd„ZdS )	r   r   c                 ó   — dS )NTr   ©r7   s    r   ÚqueryzEvent.queryi   s   € Øˆtr   Nc                 ó   — d S r6   r   r;   s     r   ÚrecordzEvent.recordl   r9   r   c                 ó   — d S r6   r   rE   s    r   r   zEvent.synchronizeo   r9   r   c                 ó   — d S r6   r   r;   s     r   Úwaitz
Event.waitr   r9   r   r6   r=   )r>   r?   r@   ÚboolrF   rH   r   rK   r   r   r   r   r   h   su   € € € € € ð�tð ð ð ð ðð ð ð ð ðð ð ð ðð ð ð ð ð ð r   r   c                 ó   — t           S )zÓReturns the currently selected :class:`Stream` for a given device.

    Args:
        device (torch.device or int, optional): Ignored.

    N.B. This function only exists to facilitate device-agnostic code

    )Ú_current_streamr   s    r   r   r   z   s
   € õ Ðr   c                   óN   — e Zd ZU dZee         ed<   d„ Zd„ Zde	de	de	dd	fd
„Z
d	S )r   zvContext-manager that selects a given stream.

    N.B. This class only exists to facilitate device-agnostic code

    Ú
cur_streamc                 ó,   — || _         t          | _        d S r6   )r   Ú_default_cpu_streamÚprev_streamr;   s     r   r8   zStreamContext.__init__�   s   € ØˆŒÝ.ˆÔÐÐr   c                 ó8   — | j         }|€d S t          | _        |ad S r6   )r   rN   rS   )r7   rP   s     r   Ú	__enter__zStreamContext.__enter__“   s'   € Ø”[ˆ
ØÐØˆFõ +ˆÔØ$ˆˆˆr   ÚtypeÚvalueÚ	tracebackr   Nc                 ó*   — | j         }|€d S | j        ad S r6   )r   rS   rN   )r7   rV   rW   rX   rP   s        r   Ú__exit__zStreamContext.__exit__œ   s"   € Ø”[ˆ
ØÐØˆFð Ô*ˆˆˆr   )r>   r?   r@   rA   r   r   Ú__annotations__r8   rU   r   rZ   r   r   r   r   r   †   s�   € € € € € € ðð ð ˜Ô Ð Ð Ñ ð/ð /ð /ð%ð %ð %ð+˜Sð +¨ð +¸ð +Àð +ð +ð +ð +ð +ð +r   r   r   c                 ó    — t          | ¦  «        S )z�Wrapper around the Context-manager StreamContext that
    selects a given stream.

    N.B. This function only exists to facilitate device-agnostic code
    )r   )r   s    r   r   r   ¥   s   € õ ˜Ñ Ô Ð r   c                  ó   — dS )z€Returns number of CPU devices (not cores). Always 1.

    N.B. This function only exists to facilitate device-agnostic code
    r
   r   r   r   r   r   r   ®   s	   € ð
 ˆ1r   c                 ó   — dS )zzSets the current device, in CPU we do nothing.

    N.B. This function only exists to facilitate device-agnostic code
    Nr   r   s    r   r   r   ¶   r1   r   c                  ó   — dS )zyReturns current device for cpu. Always 'cpu'.

    N.B. This function only exists to facilitate device-agnostic code
    Úcpur   r   r   r   r   r   ½   s	   € ð
 ˆ5r   r6   )%rA   Ú
contextlibr   Útypingr   r   r   r   Ú r	   Ú_devicer   Ú__all__ÚstrrB   Ú	_device_trL   r   r    r"   r%   r'   r*   r,   r.   r   r   r   r   rR   rN   r   r   r   r   r   r   r   r   r   ú<module>rh      sè  ððð ð
 .Ð -Ð -Ð -Ð -Ð -Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€à  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ðð ð €ð �'˜3  TÐ)Ô*€	ð.˜Dð .ð .ð .ð .ð
0˜dð 0ð 0ð 0ð 0ð
5 4ð 5ð 5ð 5ð 5ð
5˜Dð 5ð 5ð 5ð 5ð2 ð 2ð 2ð 2ð 2ð
2 ð 2ð 2ð 2ð 2ð
%�4ð %ð %ð %ð %ð
1˜tð 1ð 1ð 1ð 1ð
�dð ð ð ð ðð ˜	ð ¨Tð ð ð ð ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðð ð ð ð ñ ô ð ð �f‘h”hÐ Ø%€ð	ð 	˜9ð 	°ð 	ð 	ð 	ð 	ð+ð +ð +ð +ð +Ð*ñ +ô +ð +ð>!�6ð !Ð4ð !ð !ð !ð !ð�cð ð ð ð ð�yð  Tð ð ð ð ð˜ð ð ð ð ð ð r   