§
    1@Äjö
  ã                   ó¬   — d dl Zd dlmZ  edd¦  «        ZdZ G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z e¦   «         Z	d„ Z
dd„Zd„ ZdS )é    N)Ú
namedtupleÚ_MemoryInfoz
free,total)é   é   c                   ó*   — e Zd Zd„ Zed„ ¦   «         ZdS )ÚFakeCUDADevicec                 ó   — d| _         d S )Nz(GPU-00000000-0000-0000-0000-000000000000)Úuuid©Úselfs    úUC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/simulator/cudadrv/devices.pyÚ__init__zFakeCUDADevice.__init__
   s   € Ø>ˆŒ	ˆ	ˆ	ó    c                 ó   — t           S ©N©Ú_SIMULATOR_CCr   s    r   Úcompute_capabilityz!FakeCUDADevice.compute_capability   ó   € åÐr   N)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   © r   r   r   r   	   s>   € € € € € ð?ð ?ð ?ð ðð ñ „Xðð ð r   r   c                   ó†   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zd	„ Zd
„ Zd„ Zdd„ZdS )ÚFakeCUDAContextz`
    This stub implements functionality only for simulating a single GPU
    at the moment.
    c                 ó:   — || _         t          ¦   «         | _        d S r   )Ú
_device_idr   Ú_device)r   Ú	device_ids     r   r   zFakeCUDAContext.__init__   s   € Ø#ˆŒÝ%Ñ'Ô'ˆŒˆˆr   c                 ó   — d S r   r   r   s    r   Ú	__enter__zFakeCUDAContext.__enter__   ó   € Øˆr   c                 ó   — d S r   r   )r   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__zFakeCUDAContext.__exit__   r#   r   c                 ó.   — d                      | ¬¦  «        S )Nz<Managed Device {self.id}>r   )Úformatr   s    r   Ú__str__zFakeCUDAContext.__str__!   s   € Ø+×2Ò2¸Ð2Ñ=Ô=Ð=r   c                 ó   — | j         S r   )r   r   s    r   ÚidzFakeCUDAContext.id$   s
   € àŒÐr   c                 ó   — | j         S r   )r   r   s    r   ÚdevicezFakeCUDAContext.device(   s
   € àŒ|Ðr   c                 ó   — t           S r   r   r   s    r   r   z"FakeCUDAContext.compute_capability,   r   r   c                 ó   — d S r   r   r   s    r   ÚresetzFakeCUDAContext.reset0   r#   r   c                 óV   — t          t          d¦  «        t          d¦  «        ¦  «        S )z½
        Cross-platform free / total host memory is hard without external
        dependencies, e.g. `psutil` - so return infinite memory to maintain API
        type compatibility
        Úinf)r   Úfloatr   s    r   Úget_memory_infozFakeCUDAContext.get_memory_info3   s    € õ �5 ™<œ<­¨u©¬Ñ6Ô6Ð6r   c                 ó.   — t          j        |d¬¦  «        S )z¦
        Allocates memory on the simulated device
        At present, there is no division between simulated
        host memory and simulated device memory.
        Úu1)Údtype)ÚnpÚndarray)r   Úszs     r   ÚmemalloczFakeCUDAContext.memalloc;   s   € õ Œz˜" DÐ)Ñ)Ô)Ð)r   Fc                 ó,   — |                       |¦  «        S )zAllocates memory on the host)r=   )r   r<   ÚmappedÚportableÚwcs        r   ÚmemhostalloczFakeCUDAContext.memhostallocC   s   € à�}Š}˜RÑ Ô Ð r   N)FFF)r   r   r   Ú__doc__r   r"   r(   r+   r   r-   r/   r   r2   r6   r=   rB   r   r   r   r   r      sì   € € € € € ðð ð(ð (ð (ðð ð ðð ð ð>ð >ð >ð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xððð ð ð7ð 7ð 7ð*ð *ð *ð!ð !ð !ð !ð !ð !r   r   c                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
dS )	ÚFakeDeviceListzÓ
    This stub implements a device list containing a single GPU. It also
    keeps track of the GPU status, i.e. whether the context is closed or not,
    which may have been set by the user calling reset()
    c                 ó>   — t          d¦  «        f| _        d| _        d S )Nr   F)r   ÚlstÚclosedr   s    r   r   zFakeDeviceList.__init__N   s   € Ý# AÑ&Ô&Ð(ˆŒØˆŒˆˆr   c                 ó*   — d| _         | j        |         S )NF©rH   rG   )r   Údevnums     r   Ú__getitem__zFakeDeviceList.__getitem__R   s   € ØˆŒØŒx˜ÔÐr   c                 óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nz, c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )Ústr)Ú.0Úds     r   ú
<listcomp>z*FakeDeviceList.__str__.<locals>.<listcomp>W   s   € Ð3Ð3Ð3 Q�#˜a™&œ&Ð3Ð3Ð3r   )ÚjoinrG   r   s    r   r+   zFakeDeviceList.__str__V   s%   € Ø�yŠyÐ3Ð3¨$¬(Ð3Ñ3Ô3Ñ4Ô4Ð4r   c                 ó*   — t          | j        ¦  «        S r   )ÚiterrG   r   s    r   Ú__iter__zFakeDeviceList.__iter__Y   s   € Ý�D”H‰~Œ~Ðr   c                 ó*   — t          | j        ¦  «        S r   )ÚlenrG   r   s    r   Ú__len__zFakeDeviceList.__len__\   s   € Ý�4”8‰}Œ}Ðr   c                 ó.   — | j         rd S | j        d         S )Nr   rJ   r   s    r   ÚcurrentzFakeDeviceList.current_   s   € àŒ;ð 	Ø�4ØŒx˜Œ{Ðr   N)r   r   r   rC   r   rL   r+   rV   rY   r   r[   r   r   r   rE   rE   H   s„   € € € € € ðð ð
ð ð ð ð  ð  ð5ð 5ð 5ðð ð ðð ð ð ðð ñ „Xðð ð r   rE   c                  ó*   — dt           d         _        d S )NTr   )ÚgpusrH   r   r   r   r2   r2   i   s   € Ø…Dˆ„G„N€N€Nr   c                 ó    — t          | ¦  «        S r   )r   )rK   s    r   Úget_contextr_   m   s   € Ý˜6Ñ"Ô"Ð"r   c                 ó   — | S )zP
    In the simulator, a context is always "available", so this is a no-op.
    r   )Úfuncs    r   Úrequire_contextrb   q   s	   € ð €Kr   )r   )Únumpyr:   Úcollectionsr   r   r   r   r   rE   r]   r2   r_   rb   r   r   r   ú<module>re      sý   ðØ Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "àˆj˜¨Ñ5Ô5€à€ðð ð ð ð ñ ô ð ð3!ð 3!ð 3!ð 3!ð 3!ñ 3!ô 3!ð 3!ðlð ð ð ð ñ ô ð ð< €~ÑÔ€ðð ð ð#ð #ð #ð #ðð ð ð ð r   