ó
\K]c           @@ sÛ   d  d l  m Z m Z d  d l Z d  d l j j Z d  d l	 m
 Z
 m Z m Z d  d l	 m Z d  d l	 m Z d  d l	 m Z d  d l m Z m Z e d ƒ d	 e e j f d
 „  ƒ  Yƒ Z e d k r× e j ƒ  n  d S(   i    (   t   print_functiont   absolute_importN(   t   voidt   float32t   float64(   t   guvectorize(   t   cuda(   t   unittest_support(   t   skip_on_cudasimt   SerialMixins&   ufunc API unsupported in the simulatort   TestCUDAGufuncc           B@ s}   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C@ s   t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } d | _ d } t j | d d d t j ƒj | d d ƒ } t j | d d	 d t j ƒj | d d	 ƒ } | | | ƒ } t j | | ƒ } |  j	 t j
 | | ƒ ƒ d  S(
   Ns   (m,n),(n,p)->(m,p)t   targetR   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   t   shapet   range(	   t   At   Bt   Ct   mt   nt   pt   it   jt   k(    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt
   matmulcore   s    i   i   i   t   dtypei   (   R   R   R   t   max_blocksizet   npt   aranget   reshapet   utt   matrix_multiplyt
   assertTruet   allclose(   t   selfR   t   gufunct	   matrix_ctR   R   R   t   Gold(    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufunc_small   s    W	&	&	c   	      C@ s5  t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } d | _ d } t j | d d d t j ƒj | d d ƒ } t j | d d	 d t j ƒj | d d	 ƒ } t j | ƒ } | | | ƒ j	 ƒ  } t
 j | | ƒ } |  j t j | | ƒ ƒ d  S(
   Ns   (m,n),(n,p)->(m,p)R   R   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR   .   s    i   i   i   R   i   (   R   R   R   R   R   R   R   R   t	   to_devicet   copy_to_hostR   R   R   R    (	   R!   R   R"   R#   R   R   t   dBR   R$   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufunc_auto_transfer,   s    W
	&	&	c         C@ s   t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } d | _ d } t j | d d d	 t j ƒj | d d ƒ } t j | d d
 d	 t j ƒj | d d
 ƒ } | | | ƒ } t j | | ƒ } |  j	 t j
 | | ƒ ƒ d  S(   Ns   (m,n),(n,p)->(m,p)R   R   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR   K   s    i   ié  i   i   R   i   (   R   R   R   R   R   R   R   R   R   R   R    (   R!   R   R"   R#   R   R   R   R$   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufuncI   s    W
	&	&	c         C@ s&  t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } d | _ d } t j | d d d	 t j ƒj d d
 d d ƒ } t j | d d d	 t j ƒj d d
 d d ƒ } | | | ƒ } t j | | ƒ } |  j	 t j
 | | ƒ ƒ d  S(   Ns   (m,n),(n,p)->(m,p)R   R   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR   f   s    i   id   i   i   R   i   i   (   R   R   R   R   R   R   R   R   R   R   R    (   R!   R   R"   R#   R   R   R   R$   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufunc_hidimd   s    W
	22c         C@ s  t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } t j j d d d ƒ } t j j d d ƒ } t j | | ƒ } | | | ƒ } t j j	 | | ƒ | | t j
 | d ƒ ƒ } t j j	 | | ƒ d  S(	   Ns   (m,n),(n,p)->(m,p)R   R   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR      s    i
   i   i   (   i
   i   i   (   R   R   R   R   t   randomt   randnR   R   t   testingt   assert_allcloset   tile(   R!   R   R"   t   Xt   Yt   goldt   res1t   res2(    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufunc_new_axis}   s    W
c         C@ s)  t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } d | _ d } t j | d d d	 t j ƒj | d d ƒ } t j | d d
 d	 t j ƒj | d d
 ƒ } d | _ | | | ƒ } t j | | ƒ } |  j	 t j
 | | ƒ ƒ d  S(   Ns   (m,n),(n,p)->(m,p)R   R   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR   š   s    i   ié  i   i   R   i   i    (   R   R   R   R   R   R   R   R   R   R   R    (   R!   R   R"   R#   R   R   R   R$   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufunc_adjust_blocksize˜   s    W
	&	&		c         C@ s™  t  t t d  d  … d  d  … f t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } | } d | _ d } t j | d d d	 t j ƒj | d d ƒ } t j | d d
 d	 t j ƒj | d d
 ƒ } t j ƒ  } t j	 | | ƒ } t j	 | | ƒ } t j
 d d d	 | j d | ƒ }	 | | | d |	 d | ƒ}	 |	 j d | ƒ }
 | j ƒ  t j | | ƒ } |  j t j |
 | ƒ ƒ d  S(   Ns   (m,n),(n,p)->(m,p)R   R   c   	   
   S@ s¥   |  j  \ } } | j  \ } } x€ t | ƒ D]r } xi t | ƒ D][ } d | | | f <xB t | ƒ D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR   ¶   s    i   ié  i   i   R   i   R   t   streamt   out(   ié  i   i   (   R   R   R   R   R   R   R   R   R8   R&   t   device_arrayR   R'   t   synchronizeR   R   R   R    (   R!   R   R"   R#   R   R   R8   t   dAR(   t   dCR   R$   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_gufunc_stream´   s&    W
	&	&	!
c         C@ s„   t  t t t ƒ g d d d ƒd „  ƒ } t j d d t j ƒd } t j | ƒ } | | d | ƒ|  j t j | | ƒ ƒ d  S(	   Ns   (x)->(x)R   R   c         S@ s,   x% t  | j ƒ D] } |  | | | <q Wd  S(   N(   R   t   size(   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   copyÛ   s    i
   R   i   R9   (   R   R   R   R   R   t
   zeros_likeR   R    (   R!   R@   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt	   test_copyÙ   s    c         C@ s„   t  t t t ƒ g d d d ƒd „  ƒ } t j d d t j ƒd } t j | ƒ } | | d | ƒ|  j t j | | ƒ ƒ d  S(	   Ns   (x)->(x)R   R   c         S@ s,   x% t  | j ƒ D] } |  | | | <q Wd  S(   N(   R   R?   (   R   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR@   é   s    i   R   i   R9   (   R   R   R   R   R   RA   R   R    (   R!   R@   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_copy_oddç   s    c         C@ sº   t  t t d  d  … d  d  … f t d  d  … d  d  … f ƒ g d d d ƒd „  ƒ } t j d d t j ƒj d d ƒ d	 } t j | ƒ } | | d
 | ƒ|  j t j | | ƒ ƒ d  S(   Ns   (x, y)->(x, y)R   R   c         S@ sZ   xS t  | j d ƒ D]> } x5 t  | j d ƒ D]  } |  | | f | | | f <q. Wq Wd  S(   Ni    i   (   R   R   (   R   R   t   xt   y(    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   copy2d÷   s    i   R   i   i   i   R9   (	   R   R   R   R   R   R   RA   R   R    (   R!   RF   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_copy2dõ   s    >(c         C@ s˜   d „  } t  t t t ƒ g d d d d t ƒ| ƒ |  j t ƒ 4 } t  t t t ƒ g d d d d t ƒ| ƒ Wd  QX|  j d t | j	 ƒ ƒ d  S(   Nc         S@ s   d  S(   N(    (   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   foo  s    s   (x)->(x)R   R   t   nopythons   nopython flag must be True(
   R   R   R   t   Truet   assertRaisest	   TypeErrort   Falset   assertEqualt   strt	   exception(   R!   RH   t   raises(    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_nopython_flag  s    	 c         C@ sê   d „  } |  j  t ƒ : } t t t t ƒ g d d d d t d t ƒ| ƒ Wd  QXd } t | j ƒ } |  j	 | t
 | ƒ  | ƒ | t
 | ƒ j ƒ  j d ƒ } g  | D] } | j d	 ƒ ^ q© } |  j	 t d d g ƒ t | ƒ ƒ d  S(
   Nc         S@ s   d  S(   N(    (   R   R   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyRH     s    s   (x)->(x)R   R   t   what1t   ever2s/   The following target options are not supported:t   ,s   '" (   RK   RL   R   R   R   RJ   RM   RO   RP   RN   t   lent   stript   splitt   set(   R!   RH   RQ   t   headt   msgt   itemsR   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_invalid_flags  s    	"c      	   C@ s   t  t t t ƒ g d d d ƒd „  ƒ } t j d d t j ƒ} } |  j t ƒ  } | | | d | ƒWd  QX|  j t | j	 ƒ d ƒ d  S(	   Ns   (x)->(x)R   R   c         S@ s   d  S(   N(    (   t   inpR9   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyRH   #  s    i
   R   R9   s>   cannot specify 'out' as both a positional and keyword argument(
   R   R   R   R   t   zerosRK   t
   ValueErrorRN   RO   RP   (   R!   RH   R^   R9   RQ   (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   test_duplicated_output"  s    ,(   t   __name__t
   __module__R%   R)   R*   R+   R6   R7   R>   RB   RC   RG   RR   R]   Ra   (    (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyR
      s   							%					t   __main__(   t
   __future__R    R   t   numpyR   t   numpy.core.umath_testst   coret   umath_testsR   t   numbaR   R   R   R   R   R   t   unittestt   numba.cuda.testingR   R	   t   TestCaseR
   Rb   t   main(    (    (    sB   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_gufunc.pyt   <module>   s   ÿ !