+
    :i
                         ^ RI t^ RIHt ]! RR4      tRt ! R R4      t ! R R4      t ! R	 R
4      t]! 4       t	R t
RR ltR tR# )    N)
namedtuple_MemoryInfoz
free,totalc                   6   a  ] tR t^	t o R t]R 4       tRtV tR# )FakeCUDADevicec                    R V n         R# )z(GPU-00000000-0000-0000-0000-000000000000Nuuidselfs   &b/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/cuda/simulator/cudadrv/devices.py__init__FakeCUDADevice.__init__
   s	    >	    c                    \         # N_SIMULATOR_CCr
   s   &r   compute_capability!FakeCUDADevice.compute_capability       r   r   N)	__name__
__module____qualname____firstlineno__r   propertyr   __static_attributes____classdictcell____classdict__s   @r   r   r   	   s     ?  r   r   c                      a  ] tR t^t o RtR tR tR tR t]	R 4       t
]	R 4       t]	R 4       tR	 tR
 tR tRR ltRtV tR# )FakeCUDAContextzT
This stub implements functionality only for simulating a single GPU
at the moment.
c                0    Wn         \        4       V n        R # r   )
_device_idr   _device)r   	device_ids   &&r   r   FakeCUDAContext.__init__   s    #%'r   c                    R # r    r
   s   &r   	__enter__FakeCUDAContext.__enter__       r   c                    R # r   r(   )r   exc_typeexc_valexc_tbs   &&&&r   __exit__FakeCUDAContext.__exit__   r+   r   c                &    R P                  V R7      # )z<Managed Device {self.id}>r
   )formatr
   s   &r   __str__FakeCUDAContext.__str__!   s    +222==r   c                    V P                   # r   )r#   r
   s   &r   idFakeCUDAContext.id$   s    r   c                    V P                   # r   )r$   r
   s   &r   deviceFakeCUDAContext.device(   s    ||r   c                    \         # r   r   r
   s   &r   r   "FakeCUDAContext.compute_capability,   r   r   c                    R # r   r(   r
   s   &r   resetFakeCUDAContext.reset0   r+   r   c                >    \        \        R4      \        R4      4      # )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_infoFakeCUDAContext.get_memory_info3   s     5<u66r   c                2    \         P                  ! VRR7      # )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   memallocFakeCUDAContext.memalloc;   s     zz"D))r   c                $    V P                  V4      # )zAllocates memory on the host)rL   )r   rK   mappedportablewcs   &&&&&r   memhostallocFakeCUDAContext.memhostallocC   s    }}R  r   )r$   r#   N)FFF)r   r   r   r   __doc__r   r)   r0   r4   r   r7   r:   r   r?   rD   rL   rR   r   r   r   s   @r   r!   r!      ss     (>      7*! !r   r!   c                   R   a  ] tR t^Ht o RtR tR tR tR tR t	]
R 4       tRtV tR	# )
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                6    \        ^ 4      3V n        RV n        R# )r   FN)r!   lstclosedr
   s   &r   r   FakeDeviceList.__init__N   s    #A&(r   c                6    R V n         V P                  V,          # )FrY   rX   )r   devnums   &&r   __getitem__FakeDeviceList.__getitem__R   s    xxr   c                t    R P                  V P                   Uu. uF  p\        V4      NK  	  up4      # u upi )z, )joinrX   str)r   ds   & r   r4   FakeDeviceList.__str__V   s+    yy$((3(Q#a&(3443s   5c                ,    \        V P                  4      # r   )iterrX   r
   s   &r   __iter__FakeDeviceList.__iter__Y   s    DHH~r   c                ,    \        V P                  4      # r   )lenrX   r
   s   &r   __len__FakeDeviceList.__len__\   s    488}r   c                P    V P                   '       d   R # V P                  ^ ,          # r   r\   r
   s   &r   currentFakeDeviceList.current_   s    ;;;xx{r   r\   N)r   r   r   r   rT   r   r^   r4   rg   rk   r   rn   r   r   r   s   @r   rV   rV   H   s7     
 5  r   rV   c                  *    R \         ^ ,          n        R# )TN)gpusrY   r(   r   r   r?   r?   i   s    DGNr   c                     \        V 4      # r   )r!   )r]   s   &r   get_contextrs   m   s    6""r   c                    V # )zH
In the simulator, a context is always "available", so this is a no-op.
r(   )funcs   &r   require_contextrv   q   s	     Kr   )      )r   )numpyrI   collectionsr   r   r   r   r!   rV   rq   r?   rs   rv   r(   r   r   <module>r{      sT     "5 3! 3!l < #r   