Ë
    Èš§j^#  ã                   ó®  — d dl Z d dlZ	 d dlZg d¢Z e j                  de¬«      Z
 e j                  d«      Zd dlmZ dZddgZd„ Zd„ Ze j                  j%                  d	 e ee«      «      e¬
«      d„ «       Zdd„Ze j                  j%                  d	 e ee«      «      e¬
«      e j                  j%                  dee¬
«      e j                  j%                  dg d¢«      d„ «       «       «       Ze j                  j%                  d	 e ee«      «      e¬
«      e j                  j%                  dee¬
«      d„ «       «       Ze j                  j%                  d	 e ee«      «      e¬
«      e j                  j%                  dee¬
«      d„ «       «       Ze j                  j%                  d	 e ee«      «      e¬
«      e j                  j%                  dee¬
«      d„ «       «       Ze j                  j%                  d	 e ee«      «      e¬
«      e j                  j%                  dee¬
«      d„ «       «       Zy# e$ r e j                  j                  ZY �ŒEw xY w)é    N)Úuint8Úint16Úfloat32zpyarrow.cuda)Úexc_typez
numba.cuda)ÚDeviceNDArrayc                 ó
  — t         j                  j                  d«       t        j	                  «       }|j                  «       }t        j                  «       }t        j                  j                  |«      }||f||fg| _	        y )NiÒ  )
ÚnpÚrandomÚseedÚcudaÚContextÚto_numbaÚnb_cudaÚcurrent_contextÚ
from_numbaÚcontext_choices)ÚmoduleÚctx1Únb_ctx1Únb_ctx2Úctx2s        úhC:\Users\Luka\AppData\Local\Temp\pip-target-o84fipzb\lib\python\pyarrow/tests/test_cuda_numba_interop.pyÚsetup_moduler   $   s_   € Ü‡I�I‡N�N�4ÔÜ�<‰<‹>€DØ�m‰m‹o€GÜ×%Ñ%Ó'€GÜ�<‰<×"Ñ" 7Ó+€DØ# W˜o°°g¨Ð?€FÕó    c                 ó   — | ` y ©N)r   )r   s    r   Úteardown_moduler   -   s   € ØÑr   Úc)Úidsc                 ó°  — t         |    \  }}|j                  |j                  j                  k(  sJ ‚|j                  |j                  «       j                  j                  k(  sJ ‚t        j
                  j                  |«      }|j                  |j                  k(  sJ ‚d}|j                  |«      }|j                  |j                  j                  k(  sJ ‚y )Né
   )	r   ÚhandleÚvaluer   r   r   r   Ú
new_bufferÚcontext)r   ÚctxÚnb_ctxr   ÚsizeÚbufs         r   Útest_contextr*   1   s«   € ô " !Ñ$�K€CˆØ�:‰:˜Ÿ™×,Ñ,Ò,Ð,Ð,Ø�:‰:˜Ÿ™›×.Ñ.×4Ñ4Ò4Ð4Ð4Ü�<‰<×"Ñ" 6Ó*€DØ�:‰:˜Ÿ™Ò$Ð$Ð$Ø€DØ
�.‰.˜Ó
€CØ�:‰:˜Ÿ™×+Ñ+Ò+Ð+Ñ+r   c                 óè  — t        j                  |«      }|dk(  rx| dk\  sJ ‚t        j                  | |j                  z  «      }t        j
                  ||¬«      }t         j                  j                  dd| t         j                  ¬«      |dd ||fS |dk(  rQt        | d|¬«      \  }}|j                  | |j                  z  «      }|j                  |d|j                  ¬	«       ||fS t        d
«      ‚)z5Return a host or device buffer with random data.
    Úhostr   ©Údtypeéÿ   )ÚlowÚhighr(   r.   NÚdevice)Útargetr.   )ÚpositionÚnbyteszinvalid target value)r	   r.   ÚpaÚallocate_bufferÚitemsizeÚ
frombufferr
   Úrandintr   Úmake_random_bufferr$   Úcopy_from_hostr(   Ú
ValueError)r(   r3   r.   r&   r)   ÚarrÚdbufs          r   r;   r;   >   sá   € ô �H‰H�U‹O€EØ�ÒØ�qŠyÐˆyÜ× Ñ   e§n¡nÑ!4Ó5ˆÜ�m‰m˜C uÔ-ˆÜ—‘×"Ñ" q¨s¸Ü)+¯©ð #ó 3ˆ‰Aˆà�CˆxˆØ	�8Ò	Ü% d°6ÀÔG‰ˆˆSØ�~‰~˜d U§^¡^Ñ3Ó4ˆØ×Ñ˜C¨!°C·H±HÐÔ=Ø�DˆyÐÜ
Ð+Ó
,Ð,r   r.   r(   )r   é   é   iè  c                 óÄ  — t         |    \  }}t        |d||¬«      \  }}t        j                  |«      }|j	                  |«      }|j
                  |j
                  k(  sJ ‚t        j                  |j                  «       |¬«      }	t        j                  j                  ||	«       |dk\  �r�t        |dz  d d «      t        |dz  |dz   d «      fD ]^  }
|j	                  ||
   «      }t        j                  |j                  «       |¬«      }	t        j                  j                  ||
   |	«       Œ` 	 t        j                  t        d¬«      5  |j	                  |d d d…   «       d d d «       |dz  }||z  }||z  |k(  sJ ‚|j	                  |j                  ||«      «      }|j
                  |j
                  k(  sJ ‚t        j                  |j                  «       |¬«      }	t        j                  j                  ||	«       t        j                  t        d¬«      5  |j	                  |j                  ||«      d d …d d d…f   «       d d d «       d}|dz  }|||z  z  }||z  |z  |k(  sJ ‚|j	                  |j                  |||«      «      }|j
                  |j
                  k(  sJ ‚t        j                  |j                  «       |¬«      }	t        j                  j                  ||	«       t        j                  t        d¬«      5  |j	                  |j                  |||«      d d d…   «       d d d «        G d	„ d
«      }|j	                   ||«      «      }|j
                  |j
                  k(  sJ ‚t        j                  |j                  «       |¬«      }	t        j                  j                  ||	«       y # 1 sw Y   �ŒZxY w# 1 sw Y   �ŒƒxY w# 1 sw Y   Œ¥xY w)Nr2   ©r3   r.   r&   r-   rA   é   zarray data is non-contiguous)Úmatché   c                   ó"   — e Zd Zd„ Zed„ «       Zy)útest_from_object.<locals>.MyObjc                 ó   — || _         y r   )Údarr)ÚselfrJ   s     r   Ú__init__z(test_from_object.<locals>.MyObj.__init__“   s	   € ØˆD�Ir   c                 ó.   — | j                   j                  S r   )rJ   Ú__cuda_array_interface__)rK   s    r   rN   z8test_from_object.<locals>.MyObj.__cuda_array_interface__–   s   € à—9‘9×5Ñ5Ð5r   N)Ú__name__Ú
__module__Ú__qualname__rL   ÚpropertyrN   © r   r   ÚMyObjrH   ’   s   „ ò	ð 
ñ	6ó 
ñ	6r   rT   )r   r;   r   Ú	to_deviceÚbuffer_from_objectr(   r	   r9   Úcopy_to_hostÚtestingÚassert_equalÚsliceÚpytestÚraisesr=   Úreshape)r   r.   r(   r&   r'   r>   ÚcbufrJ   Úcbuf2Úarr2ÚsÚrdarrÚs1Ús2Ús3rT   s                   r   Útest_from_objectrf   Q   sZ  € ô
 " !Ñ$�K€CˆÜ" 4°ÀÈ3ÔO�I€Cˆô ×Ñ˜SÓ!€DØ×"Ñ" 4Ó(€EØ�:‰:˜Ÿ™Ò"Ð"Ð"Ü�=‰=˜×+Ñ+Ó-°UÔ;€DÜ‡J�J×Ñ˜C Ô&ð ˆqƒyä˜˜a™  tÓ,Ü˜˜a™ 4¨¡7 ¨TÓ2ó4ˆAà×*Ñ*¨4°©7Ó3ˆEÜ—=‘= ×!3Ñ!3Ó!5¸UÔCˆDÜ�J‰J×#Ñ# C¨¡F¨DÕ1ð	4ð ô �]‰]œ:Ø"@öCà×"Ñ" 4©¨!¨¡9Ô-÷Cð
 �1‰WˆØ�2‰XˆØ�B‰w˜$ŠÐˆØ×&Ñ& t§|¡|°B¸Ó';Ó<ˆØ�z‰z˜TŸY™YÒ&Ð&Ð&Ü�}‰}˜U×/Ñ/Ó1¸Ô?ˆÜ
�
‰
×Ñ  TÔ*ä�]‰]œ:Ø"@öCà×"Ñ" 4§<¡<°°BÓ#7º¹3¸Q¸3¸Ñ#?Ô@÷Cð
 ˆØ�1‰WˆØ�B�r‘E‰]ˆØ�B‰w˜‰|˜tÒ#Ð#Ð#Ø×&Ñ& t§|¡|°B¸¸BÓ'?Ó@ˆØ�z‰z˜TŸY™YÒ&Ð&Ð&Ü�}‰}˜U×/Ñ/Ó1¸Ô?ˆÜ
�
‰
×Ñ  TÔ*ä�]‰]œ:Ø"@öCà×"Ñ" 4§<¡<°°B¸Ó#;¹C¸a¸CÑ#@ÔA÷C÷6ñ 6ð ×"Ñ"¡5¨£;Ó/€EØ�:‰:˜Ÿ™Ò"Ð"Ð"Ü�=‰=˜×+Ñ+Ó-°UÔ;€DÜ‡J�J×Ñ˜C Õ&÷YCñ Cú÷Cñ Cú÷Cð Cús$   ÅN<È,O	Ì	)OÎ<OÏ	OÏOc                 óx  — t         |    \  }}t        j                  |«      }d}|j                  ||j                  z  «      }t        |f|j                  f||¬«      }d|d d d|dd  t        j                  j                  |j                  «       d d d«       t        j                  j                  |j                  «       dd  d«       t        j                  j                  |«      }t        j                  |j                  «       |¬«      }t        j                  j                  ||j                  «       «       y )Nr!   ©Úgpu_dataéc   é   éX   r-   )r   r	   r.   Úmemallocr8   r   rX   rY   rW   r   Ú
CudaBufferr   r9   )	r   r.   r&   r'   r(   ÚmemrJ   r^   r`   s	            r   Útest_numba_memallocrp       s   € ô " !Ñ$�K€CˆÜ�H‰H�U‹O€Eð €DØ
�/‰/˜$ §¡Ñ/Ó
0€CÜ˜$˜ 5§>¡>Ð"3°UÀSÔI€DØ€Dˆˆ!€HØ€Dˆˆ€HÜ‡J�J×Ñ˜D×-Ñ-Ó/°°Ð3°RÔ8Ü‡J�J×Ñ˜D×-Ñ-Ó/°°Ð3°RÔ8ô �?‰?×%Ñ% cÓ*€DÜ�=‰=˜×*Ñ*Ó,°EÔ:€DÜ‡J�J×Ñ˜D $×"3Ñ"3Ó"5Õ6r   c                 ó  — t         |    \  }}d}t        |d||¬«      \  }}|j                  «       }t        |j                  |j
                  |j                  |¬«      }t        j                  j                  |j                  «       |«       y )Nr!   r2   rC   rh   )r   r;   r   r   ÚshapeÚstridesr.   r	   rX   rY   rW   )	r   r.   r&   r'   r(   r>   r^   ro   rJ   s	            r   Útest_pyarrow_memallocrt   ·   sq   € ô " !Ñ$�K€CˆØ€DÜ" 4°ÀÈ3ÔO�I€Cˆð �-‰-‹/€CÜ˜Ÿ™ C§K¡K°·±ÀSÔI€DÜ‡J�J×Ñ˜D×-Ñ-Ó/°Õ5r   c                 óf  — t         |    \  }}d}t        j                  d   5  t        |d||¬«      \  }}|j                  j
                  |j
                  j                  k(  sJ ‚|j                  «       }t        |j                  |j                  |j                  |¬«      }t        j                  j                  |j                  «       |«       d|d<   |j                  j!                  «        t        j"                  |j                  «       |¬«      }	|	d   dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr!   r   r2   rC   rh   rj   r-   )r   r   Úgpusr;   r%   r"   r#   r   r   rr   rs   r.   r	   rX   rY   rW   Úsynchronizer9   )
r   r.   r&   r'   r(   r>   r^   ro   rJ   r`   s
             r   Útest_numba_contextrx   Å   së   € ô " !Ñ$�K€CˆØ€DÜ	�‰�a‹Ü& t°HØ-2¸ô=‰	ˆˆTà�|‰|×"Ñ" f§m¡m×&9Ñ&9Ò9Ð9Ð9Ø�m‰m‹oˆÜ˜SŸY™Y¨¯©°S·Y±YÈÔMˆÜ
�
‰
×Ñ × 1Ñ 1Ó 3°SÔ9ØˆˆQ‰Ø�‰× Ñ Ô"Ü�}‰}˜T×.Ñ.Ó0¸Ô>ˆØ�A‰w˜"Š}Ð‰}÷ 
�‰ús   ¢C;D'Ä'D0c                 ó
  — t         |    \  }}t        j                  d„ «       }d}t        |d||¬«      \  }}d}|j                  |dz
  z   |z  }	|j                  «       }
t        |j                  |j                  |j                  |
¬«      } ||	|f   |«       |j                  j                  «        t        j                  |j                  «       |j                  ¬«      }t        j                  j!                  ||dz   «       y )	Nc                 óh   — t         j                  d«      }|| j                  k  r| |xx   dz  cc<   y y )Nr@   )r   Úgridr(   )Úan_arrayÚposs     r   Úincrement_by_onez*test_pyarrow_jit.<locals>.increment_by_oneÞ   s.   € ä�l‰l˜1‹oˆØ�—‘ÒØ�S‹M˜QÑŒMð r   r!   r2   rC   é    r@   rh   r-   )r   r   Újitr;   r(   r   r   rr   rs   r.   r%   rw   r	   r9   rW   rX   rY   )r   r.   r&   r'   r~   r(   r>   r^   ÚthreadsperblockÚblockspergridro   rJ   Úarr1s                r   Útest_pyarrow_jitr„   Ø   sá   € ô " !Ñ$�K€Cˆä‡[�[ñó ðð €DÜ" 4°ÀÈ3ÔO�I€CˆØ€OØ—X‘X °1Ñ!4Ñ5¸/ÑI€MØ
�-‰-‹/€CÜ˜Ÿ™ C§K¡K°·±ÀSÔI€DØ4Ð�] OÐ3Ñ4°TÔ:Ø‡L�L×ÑÔÜ�=‰=˜×*Ñ*Ó,°C·I±IÔ>€DÜ‡J�J×Ñ˜D #¨¡'Õ*r   )r,   r   N)r[   Úpyarrowr6   Únumpyr	   ÚImportErrorÚmarkÚ
pytestmarkÚdtypesÚimportorskipr   r   Únumba.cuda.cudadrv.devicearrayr   r   Úcontext_choice_idsr   r   ÚparametrizeÚrangeÚlenr*   r;   rf   rp   rt   rx   r„   rS   r   r   Ú<module>r‘      s–  ðó$ Û ð#Ûò 
'€Ø€v×Ñ˜>°KÔ@€Ø
ˆ&×
Ñ
˜lÓ
+€å 8ð €Ø$ lÐ3Ð ò@òð ‡�×Ñ˜™e¡CÐ(:Ó$;Ó<Ø/ð ó 1ñ,ó1ð,ó-ð& ‡�×Ñ˜™e¡CÐ(:Ó$;Ó<Ø/ð ó 1à‡�×Ñ˜ &¨fÐÓ5Ø‡�×Ñ˜¢Ó1ñH'ó 2ó 6ó1ðH'ðV ‡�×Ñ˜™e¡CÐ(:Ó$;Ó<Ø/ð ó 1à‡�×Ñ˜ &¨fÐÓ5ñ7ó 6ó1ð7ð( ‡�×Ñ˜™e¡CÐ(:Ó$;Ó<Ø/ð ó 1à‡�×Ñ˜ &¨fÐÓ5ñ6ó 6ó1ð6ð ‡�×Ñ˜™e¡CÐ(:Ó$;Ó<Ø/ð ó 1à‡�×Ñ˜ &¨fÐÓ5ñó 6ó1ðð  ‡�×Ñ˜™e¡CÐ(:Ó$;Ó<Ø/ð ó 1à‡�×Ñ˜ &¨fÐÓ5ñ+ó 6ó1ñ+øðK ò #Ø—‘×"Ñ"ƒJð#ús   ŠH5 È5IÉI