
    J/Ph                         d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZmZ dZdZej        d             Zej        d	             Z G d
 de          Zedk    r ej                     dS dS )    N)cuda)unittest)skip_on_cudasimCUDATestCase)xoroshiro128p_uniform_float32xoroshiro128p_normal_float32xoroshiro128p_uniform_float64xoroshiro128p_normal_float64      c                     t          j        d          }t          |          D ]G}||z  |z   }|t          k    rt	          | |          ||<   )|t
          k    rt          | |          ||<   Hd S Nr   )r   gridrangeUNIFORMr   NORMALr   statesoutcountdistribution	thread_idiidxs          c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_random.pyrng_kernel_float32r          	!I5\\ G G%!#7""4VYGGCHHV##3FIFFCHG G    c                     t          j        d          }t          |          D ]G}||z  |z   }|t          k    rt	          | |          ||<   )|t
          k    rt          | |          ||<   Hd S r   )r   r   r   r   r	   r   r
   r   s          r   rng_kernel_float64r        r   r   c                       e Zd Zd Zd Zd Zd Zd Z ed          d             Z	d Z
d	 Z ed          d
             ZdS )TestCudaRandomXoroshiro128pc                     t           j                            dd          }|                                }|                     t          t          j        |                    d           d S )N
   r   seed)r   randomcreate_xoroshiro128p_statescopy_to_hostassertEquallennpunique)selfr   ss      r   test_createz'TestCudaRandomXoroshiro128p.test_create.   sY    88!8DD!!RYq\\**B/////r   c                 <   t           j                            dd          }|                                }t           j                            ddd          }|                                }t          j                            |dd          |d d                    d S )Nr$   r   r%      )r&   subsequence_start)r   r'   r(   r)   r,   testingassert_array_equal)r.   r   s1s2s       r   test_create_subsequence_startz9TestCudaRandomXoroshiro128p.test_create_subsequence_start3   s    88!8DD  ""88!KL 9 N N  "" 	
%%bfb"g66666r   c                    t          j                    }t           j                            dd|          }|                                }|                     t          t          j        |                    d           d S )Nr$   r   )r&   stream)	r   r;   r'   r(   r)   r*   r+   r,   r-   )r.   r;   r   r/   s       r   test_create_streamz.TestCudaRandomXoroshiro128p.test_create_stream>   so    88!@F 9 H H!!RYq\\**B/////r   c                 :   t           j                            dd          }t          j        dt          j                  } |d         ||dt                     |                     |                                dd	
           |                     |	                                dd	
           |                     |
                                dd
           |                     |                                ddt          j        d          z  z  d
           d S )N@   r   r%      dtyper       rC           gMbP?delta      ?g      ?gQ?r   r2   g~jtx?)r   r'   r(   r,   zerosfloat32r   assertAlmostEqualminmaxmeanstdmathsqrtr.   kernel_funcrA   r   r   s        r   check_uniformz)TestCudaRandomXoroshiro128p.check_uniformE   s    88a8HHh{"*555E63G444swwyy#T:::swwyy#T:::sxxzz3f===swwyy#TYq\\1A*B$OOOOOr   c                 P    |                      t          t          j                   d S N)rS   r   r,   rI   r.   s    r   test_uniform_float32z0TestCudaRandomXoroshiro128p.test_uniform_float32O   s!    -rz:::::r   z!skip test for speed under cudasimc                 P    |                      t          t          j                   d S rU   )rS   r    r,   float64rV   s    r   test_uniform_float64z0TestCudaRandomXoroshiro128p.test_uniform_float64R   s!    -rz:::::r   c                 N   t           j                            dd          }t          j        d|          } |d         ||dt
                     |                     |                                dd	
           |                     |                                dd
           d S )Nr>   r   r%   r?   r@   rB   rC   rD   gMbp?rE   rG   gMb`?)	r   r'   r(   r,   rH   r   rJ   rM   rN   rQ   s        r   check_normalz(TestCudaRandomXoroshiro128p.check_normalV   s    88a8HHh{%000E63F333sxxzz3d;;;swwyy#T:::::r   c                 P    |                      t          t          j                   d S rU   )r\   r   r,   rI   rV   s    r   test_normal_float32z/TestCudaRandomXoroshiro128p.test_normal_float32_   s!    ,bj99999r   c                 P    |                      t          t          j                   d S rU   )r\   r    r,   rY   rV   s    r   test_normal_float64z/TestCudaRandomXoroshiro128p.test_normal_float64b   s!    ,bj99999r   N)__name__
__module____qualname__r0   r9   r<   rS   rW   r   rZ   r\   r^   r`    r   r   r"   r"   -   s        0 0 0
	7 	7 	70 0 0P P P; ; ; _899; ; :9;; ; ;: : : _899: : :9: : :r   r"   __main__)rO   numpyr,   numbar   numba.cuda.testingr   r   r   numba.cuda.randomr   r   r	   r
   r   r   jitr   r    r"   ra   mainrd   r   r   <module>rl      s;              ' ' ' ' ' ' < < < < < < < <@ @ @ @ @ @ @ @ @ @ @ @ 	
 	G 	G 
	G 	G 	G 
	G7: 7: 7: 7: 7:, 7: 7: 7:t zHMOOOOO r   