Ë
    ìmxiZ"  ã                   óª  — d dl Z d dlZ	 d dlZg d¢Z e j                  d«      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 �ŒCw xY w)é    N)Úuint8Úint16Úfloat32zpyarrow.cudaz
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        ú\/home/htdocs/ttos/venv/lib/python3.12/site-packages/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'   r2   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)Nr1   ©r2   r-   r%   r,   r@   é   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)ÚselfrI   s     r   Ú__init__z(test_from_object.<locals>.MyObj.__init__“   s	   € ØˆD�Ir   c                 ó.   — | j                   j                  S r   )rI   Ú__cuda_array_interface__)rJ   s    r   rM   z8test_from_object.<locals>.MyObj.__cuda_array_interface__–   s   € à—9‘9×5Ñ5Ð5r   N)Ú__name__Ú
__module__Ú__qualname__rK   ÚpropertyrM   © r   r   ÚMyObjrG   ’   s   „ ò	ð 
ñ	6ó 
ñ	6r   rS   )r   r:   r   Ú	to_deviceÚbuffer_from_objectr'   r   r8   Úcopy_to_hostÚtestingÚassert_equalÚsliceÚpytestÚraisesr<   Úreshape)r   r-   r'   r%   r&   r=   ÚcbufrI   Úcbuf2Úarr2ÚsÚrdarrÚs1Ús2Ús3rS   s                   r   Útest_from_objectre   Q   sm  € ô
 " !Ñ$�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ò 	2ˆAà×*Ñ*¨4°©7Ó3ˆEÜ—=‘= ×!3Ñ!3Ó!5¸UÔCˆDÜ�J‰J×#Ñ# C¨¡F¨DÕ1ð		2ð ô �]‰]œ:Ø"@ôCñ 	.à×"Ñ" 4©¨!¨¡9Ô-÷	.ð
 �1‰WˆØ�2‰XˆØ�B‰w˜$ŠÐˆØ×&Ñ& t§|¡|°B¸Ó';Ó<ˆØ�z‰z˜TŸY™YÒ&Ð&Ð&Ü�}‰}˜U×/Ñ/Ó1¸Ô?ˆÜ
�
‰
×Ñ  TÔ*ä�]‰]œ:Ø"@ôCñ 	Aà×"Ñ" 4§<¡<°°BÓ#7º¹3¸Q¸3¸Ñ#?Ô@÷	Að
 ˆØ�1‰WˆØ�B�r‘E‰]ˆØ�B‰w˜‰|˜tÒ#Ð#Ð#Ø×&Ñ& t§|¡|°B¸¸BÓ'?Ó@ˆØ�z‰z˜TŸY™YÒ&Ð&Ð&Ü�}‰}˜U×/Ñ/Ó1¸Ô?ˆÜ
�
‰
×Ñ  TÔ*ä�]‰]œ:Ø"@ôCñ 	Bà×"Ñ" 4§<¡<°°B¸Ó#;¹C¸a¸CÑ#@ÔA÷	B÷6ñ 6ð ×"Ñ"¡5¨£;Ó/€EØ�:‰:˜Ÿ™Ò"Ð"Ð"Ü�=‰=˜×+Ñ+Ó-°UÔ;€DÜ‡J�J×Ñ˜C Õ&÷Y	.ñ 	.ú÷	Añ 	Aú÷	Bð 	Bú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-   Úmemallocr7   r   rW   rX   rV   r   Ú
CudaBufferr   r8   )	r   r-   r%   r&   r'   ÚmemrI   r]   r_   s	            r   Útest_numba_memallocro       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    r1   rB   rg   )r   r:   r   r   ÚshapeÚstridesr-   r   rW   rX   rV   )	r   r-   r%   r&   r'   r=   r]   rn   rI   s	            r   Útest_pyarrow_memallocrs   ·   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   r1   rB   rg   ri   r,   )r   r   Úgpusr:   r$   r!   r"   r   r   rq   rr   r-   r   rW   rX   rV   Úsynchronizer8   )
r   r-   r%   r&   r'   r=   r]   rn   rI   r_   s
             r   Útest_numba_contextrw   Å   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    r1   rB   é    r?   rg   r,   )r   r   Újitr:   r'   r   r   rq   rr   r-   r$   rv   r   r8   rV   rW   rX   )r   r-   r%   r&   r}   r'   r=   r]   ÚthreadsperblockÚblockspergridrn   rI   Ú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)rZ   Úpyarrowr5   Únumpyr   ÚImportErrorÚmarkÚ
pytestmarkÚdtypesÚimportorskipr   r   Únumba.cuda.cudadrv.devicearrayr   r   Úcontext_choice_idsr   r   ÚparametrizeÚrangeÚlenr)   r:   re   ro   rs   rw   rƒ   rR   r   r   ú<module>r�      s”  ðó$ Û ð#Ûò 
'€Ø€v×Ñ˜>Ó*€Ø
ˆ&×
Ñ
˜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   ŠH3 È3IÉI