ó
\K]c        	   @  sÓ   d  d l  m Z m Z d  d l Z d  d l m Z d Z d Z d d Z d Z	 e e	 Z
 d Z d Z e e Z d	 Z e d
 d d d d d d d g ƒ Z d „  Z i  Z d e d <d e d <d e d <d e d <d S(   iÿÿÿÿ(   t   divisiont   print_functionN(   t
   namedtuplei   i@   i   i
   i   i   t   _limitst   allowed_wave_due_to_sgprt   allowed_wave_due_to_vgprt   allowed_wavet   allowed_vgpr_per_workitemt	   occupancyt   reasonst   suggestionsc         C  s„  d „  } | d k r | n d } | d k r3 | n d } |  t  } | | t ƒ } | t } t | } t | } t | t | ƒ }	 | t | t ƒ }
 t ƒ  } | | k  r¼ | j d ƒ n  | | k  rØ | j d ƒ n  |	 | k  rô | j d ƒ n  |  t k r| j d ƒ n  g  t	 | ƒ D] } t
 | ^ q} | r?d n | t  } | t } t d | d | d |	 d |
 d	 | d
 | d | ƒ S(   Nc         S  s   t  t j |  ƒ ƒ S(   N(   t   intt   matht   ceil(   t   x(    (    s6   lib/python2.7/site-packages/numba/roc/gcn_occupancy.pyt   _ceil   s    i    i   R   R   R   t
   group_sizeR   R   R	   R
   (   t   simd_per_cut	   wave_sizet   sgpr_per_simdt   vgpr_per_simdt   mint   max_wave_countt   sett   addt   max_group_sizet   sortedt   _suggestionst   max_inflight_wave_per_cuR   (   R   t   vgpr_per_workitemt   sgpr_per_waveR   t   workitem_per_simdt   required_wave_count_per_simdt   required_vgpr_per_waveR   R   R   R   R	   t   rR
   t   inflight_wave_per_cuR   (    (    s6   lib/python2.7/site-packages/numba/roc/gcn_occupancy.pyt   get_limiting_factors   s<    	



	#

s;   * Cannot allocate enough sGPRs for all resident wavefronts.s;   * Cannot allocate enough vGPRs for all resident wavefronts.s?   * Launch requires too many wavefronts. Try reducing group-size.s   * Exceeds max group size (256).R   i   (   t
   __future__R    R   R   t   collectionsR   R   R   t   vector_register_file_sizet   byte_per_VGPRR   R   R   R   R   R   R$   R   (    (    (    s6   lib/python2.7/site-packages/numba/roc/gcn_occupancy.pyt   <module>   s0   


		+


