ó
\K]c           @   sv   d  d l  m Z e d d ƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e ƒ  Z d „  Z d	 d
 „ Z d „  Z	 d S(   iÿÿÿÿ(   t
   namedtuplet   _MemoryInfos
   free,totalt   FakeCUDAContextc           B   sb   e  Z d  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z	 d „  Z
 d „  Z RS(	   s`   
    This stub implements functionality only for simulating a single GPU
    at the moment.
    c         C   s   | |  _  d  S(   N(   t   _device(   t   selft   device(    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   __init__
   s    c         C   s   d  S(   N(    (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt	   __enter__   s    c         C   s   d  S(   N(    (   R   t   exc_typet   exc_valt   exc_tb(    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   __exit__   s    c         C   s   d j  d |  ƒ S(   Ns   <Managed Device {self.id}>R   (   t   format(   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   __str__   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   id   s    c         C   s   d S(   Ni   i   (   i   i   (    (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   compute_capability   s    c         C   s   d  S(   N(    (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   reset   s    c         C   s   t  t d ƒ t d ƒ ƒ S(   sµ   
        Cross-platform free / total host memory is hard without external dependencies,
        e.g. `psutil` - so return infinite memory to maintain API type compatibility
        t   inf(   R   t   float(   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   get_memory_info!   s    (   t   __name__t
   __module__t   __doc__R   R   R   R   t   propertyR   R   R   R   (    (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyR      s   					t   FakeDeviceListc           B   sJ   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z	 RS(   sÓ   
    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         C   s   t  d ƒ f |  _ t |  _ d  S(   Ni    (   R   t   lstt   Falset   closed(   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyR   /   s    c         C   s   t  |  _ |  j | S(   N(   R   R   R   (   R   t   devnum(    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   __getitem__3   s    	c         C   s)   d j  g  |  j D] } t | ƒ ^ q ƒ S(   Ns   , (   t   joinR   t   str(   R   t   d(    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyR   7   s    c         C   s   t  |  j ƒ S(   N(   t   iterR   (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   __iter__:   s    c         C   s   t  |  j ƒ S(   N(   t   lenR   (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   __len__=   s    c         C   s   |  j  r d  S|  j d S(   Ni    (   R   t   NoneR   (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   current@   s    	(
   R   R   R   R   R   R   R"   R$   R   R&   (    (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyR   )   s   					c           C   s   t  t d _ d  S(   Ni    (   t   Truet   gpusR   (    (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyR   J   s    i    c         C   s
   t  |  ƒ S(   N(   R   (   R   (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   get_contextN   s    c         C   s   |  S(   sP   
    In the simulator, a context is always "available", so this is a no-op.
    (    (   t   func(    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   require_contextR   s    N(
   t   collectionsR    R   t   objectR   R   R(   R   R)   R+   (    (    (    sC   lib/python2.7/site-packages/numba/cuda/simulator/cudadrv/devices.pyt   <module>   s   $		