Ë
    Èš§j‚‘  ã                   ó  — d Z ddlZddlZddlZddlZ	 ddlZ ej                  de¬«      Z ej                  «       Zedk(  Zej                  j!                  e dez  ¬«      ZdZdZd„ Zd	„ Zd
„ Zej                  j/                  dg d¢«      d„ «       Zd„ Zd4d„Zej                  j/                  dg d¢«      d„ «       Zej                  j/                  dg d¢«      d„ «       Zd„ Zej                  j/                  dg d¢«      d„ «       Zej                  j/                  dg d¢«      d„ «       Zej                  j/                  dg d¢«      d„ «       Z ej                  j/                  dg d¢«      d„ «       Z!ej                  j/                  dddg«      ej                  j/                  dg d¢«      d„ «       «       Z"ej                  j/                  dg d¢«      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/eej                  j/                  dg d¢«      d(„ «       «       Z0d)„ Z1d*„ Z2d+„ Z3d,„ Z4ej                  j/                  dd-d.g«      d/„ «       Z5d0„ Z6d1„ Z7d2„ Z8d3„ Z9y# e$ r ej                  j                  Z
Y �Œow xY w)5z
UNTESTED:
read_message
é    Nzpyarrow.cuda©Úexc_typezlinux-x86_64z'CUDA IPC not supported in platform `%s`)Úreasonc                 óª   — t         j                  d«      | _        t         j                  t         j                  j                  «       dz
  «      | _        y )Nr   é   )ÚcudaÚContextÚglobal_contextÚget_num_devicesÚglobal_context1©Úmodules    úZC:\Users\Luka\AppData\Local\Temp\pip-target-o84fipzb\lib\python\pyarrow/tests/test_cuda.pyÚsetup_moduler   1   s5   € Ü ŸL™L¨›O€FÔÜ!Ÿ\™\¬$¯,©,×*FÑ*FÓ*HÈ1Ñ*LÓM€FÕó    c                 ó   — | ` y ©N)r
   r   s    r   Úteardown_moduler   6   s   € ØÑr   c                  óÊ  — t         j                  j                  «       dkD  sJ ‚t        j                  dk(  sJ ‚t
        j                  t         j                  j                  «       dz
  k(  sJ ‚t        j                  } | j                  rJ ‚dt        | «      v sJ ‚t        j                  }|| j                  k(  sJ ‚|j                  rJ ‚|j                  dk(  sJ ‚|j                  t        j                  j                  k(  sJ ‚t        j                   t"        d¬«      5  t         j                  t         j                  j                  «       «       d d d «       y # 1 sw Y   y xY w)Nr   r   z)<pyarrow.MemoryManager device: CudaDevicez5device_number argument must be non-negative less than©Úmatch)r   r	   r   r
   Údevice_numberr   Úmemory_managerÚis_cpuÚreprÚdeviceÚ	device_idÚdevice_typeÚpaÚDeviceAllocationTypeÚCUDAÚpytestÚraisesÚ
ValueError)ÚmmÚdevs     r   Útest_Contextr'   :   s  € Ü�<‰<×'Ñ'Ó)¨AÒ-Ð-Ð-Ü×'Ñ'¨1Ò,Ð,Ð,Ü×(Ñ(¬D¯L©L×,HÑ,HÓ,JÈQÑ,NÒNÐNÐNä	×	&Ñ	&€BØ�yŠyÐˆ=Ø6¼$¸r»(ÑBÐBÐBä
×
Ñ
€CØ�"—)‘)ÒÐÐà�zŠzÐˆ>Ø�=‰=˜AÒÐÐØ�?‰?œb×5Ñ5×:Ñ:Ò:Ð:Ð:ä	�‰”zð:ö
<ô 	�‰”T—\‘\×1Ñ1Ó3Ô4÷
<÷ 
<ñ 
<ús   Ä2EÅE"Úsize)r   r   éè  c                 ó`  — t         j                  | «      }t        j                  |t        j                  ¬«      }d|| dz  d| z  dz   |j                  «       }t        j                  |t        j                  ¬«      }t        j                  j                  ||«       |j                  | k(  sJ ‚y )N©Údtyper   é   é   )	r   Únew_host_bufferÚnpÚ
frombufferÚuint8ÚcopyÚtestingÚassert_equalr(   )r(   ÚbufÚarrÚarr_cpÚarr2s        r   Útest_manage_allocate_free_hostr:   P   sƒ   € ä
×
Ñ
˜tÓ
$€CÜ
�-‰-˜¤2§8¡8Ô
,€CØ€Cˆˆa‰��$‘˜‘	ÐØ�X‰X‹Z€FÜ�=‰=˜¤B§H¡HÔ-€DÜ‡J�J×Ñ˜D &Ô)Ø�8‰8�tÒÐÑr   c                  óª   — t         j                  } t         j                  d«      }t         j                  | dz   k(  sJ ‚~t         j                  | k(  sJ ‚y )Né€   )r
   Úbytes_allocatedÚ
new_buffer)r=   Úcudabufs     r   Útest_context_allocate_delr@   [   sM   € Ü$×4Ñ4€OÜ×'Ñ'¨Ó,€GÜ×)Ñ)¨_¸sÑ-BÒBÐBÐBØÜ×)Ñ)¨_Ò<Ð<Ñ<r   c                 ó¼  — |dk(  rú| dk\  sJ ‚t        j                  | «      }|j                  | k(  sJ ‚t        j                  |t        j
                  ¬«      }|j                  | k(  sJ ‚t        j                  j                  dd| t        j
                  ¬«      |dd |j                  «       dkD  s| dk(  sJ ‚t        j                  |t        j
                  ¬«      }t        j                  j                  ||«       ||fS |dk(  rNt        | d¬	«      \  }}t        j                  | «      }|j                  | k(  sJ ‚|j                  |d| ¬
«       ||fS t        d«      ‚)z5Return a host or device buffer with random data.
    Úhostr   r+   r   éÿ   )ÚlowÚhighr(   r,   Nr   ©Útarget©ÚpositionÚnbyteszinvalid target value)r   Úallocate_bufferr(   r0   r1   r2   ÚrandomÚrandintÚsumr4   r5   Úmake_random_bufferr
   r>   Úcopy_from_hostr$   )r(   rG   r6   r7   Úarr_Údbufs         r   rO   rO   c   s4  € ð �ÒØ�qŠyÐˆyÜ× Ñ  Ó&ˆØ�x‰x˜4ÒÐÐÜ�m‰m˜C¤r§x¡xÔ0ˆØ�x‰x˜4ÒÐÐÜ—‘×"Ñ" q¨s¸ÄRÇXÁXÐ"ÓNˆ‰AˆØ�w‰w‹y˜1Š} ¨¢	Ð)Ð)Ü�}‰}˜S¬¯©Ô1ˆÜ
�
‰
×Ñ  TÔ*Ø�CˆxˆØ	�8Ò	Ü% d°6Ô:‰ˆˆSÜ×(Ñ(¨Ó.ˆØ�y‰y˜DÒ Ð Ð Ø×Ñ˜C¨!°DÐÔ9Ø�DˆyÐÜ
Ð+Ó
,Ð,r   c                 ó  — t        | «      \  }}t        j                  |«      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       t        j                  t        «      5  t        |«       d d d «       t        j                  |«      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       t        j                  |j                  «       «      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       |j                  d|j                  «      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       | dkD  r¢|j!                  || dz  d  «       t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  t	        j"                  || dz  d  || dz  d  f«      |«       |j!                  |d | dz   «       t        j                  |«      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       |j!                  || dz  d  «       t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       |j                  d|j                  dz   «      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       |j                  | dz  | dz   «      }|j                  | | dz  z
  k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  || dz  d  |«       | dz  }d| z  dz  }t        j                  |||¬«      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t        j                  |j                  ||¬«      «      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t        j                  |||¬«      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t        j                  ||||z    «      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t        j                  |j                  «       ||¬«      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t        j%                  | «      }|j                  | k(  sJ ‚t        j                  |«      }|j                  ||«      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t&        j)                  | «      }t	        j
                  |t        j                  ¬«      }	||	d d  t        j                  |«      }|j                  | k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       t        j                  |||¬«      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       t        j                  |j                  ||¬«      «      }|j                  |k(  sJ ‚t	        j
                  |j                  «       t        j                  ¬«      }t        j                  j                  ||||z    |«       y # 1 sw Y   �	ŒWxY w)	Nr+   r   r   é   é
   r-   )Úoffsetr(   ©rV   Úlength)rO   r
   Úbuffer_from_datar(   r0   r1   Úcopy_to_hostr2   r4   r5   r"   r#   ÚBufferErrorÚ
memoryviewÚtobytesÚslicerP   Úconcatenater>   r   r/   )
r(   r7   r6   r?   r9   Úcudabuf2Úarr3ÚsoffsetÚssizerQ   s
             r   Útest_context_device_bufferrd   z   s¯  € ô " $Ó'�H€CˆÜ×-Ñ-¨cÓ2€GØ�<‰<˜4ÒÐÐÜ�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C Ô&ô 
�‰”{Õ	#Ü�7Ô÷ 
$ô ×-Ñ-¨cÓ2€GØ�<‰<˜4ÒÐÐÜ�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C Ô&ô ×-Ñ-¨c¯k©k«mÓ<€GØ�<‰<˜4ÒÐÐÜ�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C Ô&ð �}‰}˜Q §¡Ó-€HØ�=‰=˜DÒ Ð Ð Ü�=‰=˜×.Ñ.Ó0¼¿¹ÔA€DÜ‡J�J×Ñ˜C Ô&àˆa‚xØ×Ñ  D¨!¡G H Ô.Ü�}‰}˜W×1Ñ1Ó3¼2¿8¹8ÔDˆÜ
�
‰
×Ñ¤§¡°°D¸!±G°H°¸sÀ4ÈÁ7À8¸}Ð/MÓ NØ $ô	&à×Ñ  H T¨1¡W Ô.ô ×.Ñ.¨wÓ7€HØ�=‰=˜DÒ Ð Ð Ü�=‰=˜×.Ñ.Ó0¼¿¹ÔA€DÜ‡J�J×Ñ˜C Ô&à×Ñ˜C  a¡ ˜MÔ*Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C Ô&ð �}‰}˜Q §¡¨R¡Ó0€HØ�=‰=˜DÒ Ð Ð Ü�=‰=˜×.Ñ.Ó0¼¿¹ÔA€DÜ‡J�J×Ñ˜C Ô&à�}‰}˜T 1™W d¨2¡gÓ.€HØ�=‰=˜D 4¨¡7™NÒ*Ð*Ð*Ü�=‰=˜×.Ñ.Ó0¼¿¹ÔA€DÜ‡J�J×Ñ˜C  a¡ ˜M¨4Ô0ð �A‰g€GØˆd‰F�A‰I€EÜ×-Ñ-¨c¸'Ø38ð .ó :€Gà�<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°%©Ð8¸$Ô?ä×-Ñ-¨c¯i©i¸wØ?Dð /8ó /Fó G€Gà�<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°%©Ð8¸$Ô?ô ×-Ñ-¨c¸'ÈÐ-ÓN€GØ�<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°%©Ð8¸$Ô?ä×-Ñ-¨c°'¸'À%¹-Ð.HÓI€GØ�<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°%©Ð8¸$Ô?ô ×-Ñ-¨c¯k©k«mØ5<Ø38ð .ó :€Gð �<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°%©Ð8¸$Ô?ô ×'Ñ'¨Ó-€GØ�<‰<˜4ÒÐÐô ×-Ñ-¨cÓ2€GØ�}‰}˜W eÓ,€HØ�=‰=˜EÒ!Ð!Ð!Ü�=‰=˜×.Ñ.Ó0¼¿¹ÔA€DÜ‡J�J×Ñ˜C ¨°©Ð6¸Ô=ô ×
Ñ
˜tÓ
$€CÜ�=‰=˜¤B§H¡HÔ-€DØ€D‰€GÜ×-Ñ-¨cÓ2€GØ�<‰<˜4ÒÐÐÜ�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C Ô&ô ×-Ñ-¨c¸'ÈÐ-ÓN€GØ�<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°©Ð6¸Ô=ä×-Ñ-Ø�	‰	˜¨ˆ	Ó/ó1€Gà�<‰<˜5Ò Ð Ð Ü�=‰=˜×-Ñ-Ó/´r·x±xÔ@€DÜ‡J�J×Ñ˜C ¨°©Ð6¸Õ=÷g 
$Ñ	#ús   Â!hèhc                 ó  — t         }t        | d¬«      \  }}|j                  }t        j	                  | |j                  j
                  z  «      }|t        j                  ||¬«      d d  |j                  |«      }|j                  |j                  k(  sJ ‚t        j                  |j                  «       |¬«      }t        j                  j                  ||«       |j                  |«      }|j                  |j                  k(  sJ ‚t        j                  |j                  «       |¬«      }t        j                  j                  ||«       t        j                  t        j                   d¬«      5  |j                  t        j"                  d«      «       d d d «       t        j                  t        j                   d¬«      5  |j                  t        j$                  g d¢«      «       d d d «       y # 1 sw Y   Œ^xY w# 1 sw Y   y xY w)	Nr   rF   r+   z$buffer is not backed by a CudaBufferr   s   123z8cannot create device buffer view from .* 'numpy.ndarray')r   rT   r.   )r
   rO   r,   r   r/   Úitemsizer0   r1   Úbuffer_from_objectr(   rZ   r4   r5   r"   r#   r   ÚArrowTypeErrorÚ	py_bufferÚarray)r(   Úctxr7   Úcbufr,   ÚhbufÚcbuf2r9   s           r   Útest_context_from_objectro   ú   s‹  € ä
€CÜ" 4°Ô9�I€CˆØ�I‰I€Eô ×Ñ  s§y¡y×'9Ñ'9Ñ 9Ó:€DØ*-„B‡M�M�$˜eÔ$¡QÐ'Ø×"Ñ" 4Ó(€EØ�:‰:˜Ÿ™Ò"Ð"Ð"Ü�=‰=˜×+Ñ+Ó-°UÔ;€DÜ‡J�J×Ñ˜C Ô&ð ×"Ñ" 5Ó)€EØ�:‰:˜Ÿ™Ò"Ð"Ð"Ü�=‰=˜×+Ñ+Ó-°UÔ;€DÜ‡J�J×Ñ˜C Ô&ô 
�‰”r×(Ñ(ØDö
Gà×ÑœrŸ|™|¨FÓ3Ô4÷
Gô
 
�‰”r×(Ñ(ð5ö
7ð 	×ÑœrŸx™xª	Ó2Ô3÷
7ð 
7÷
Gð 
Gú÷

7ð 
7ús   Å0%G2Ç'G>Ç2G;Ç>Hc                  ó  — t         } t        j                  t        j                  «      }d}t        j                  ||j                  z  «      }t        j                  |«      }| j                  |j                  |j                  |«      }t        j                  |«      |dz   k(  sJ ‚~t        j                  |«      |k(  sJ ‚| j                  |j                  |j                  |«      }~|j                  «        t        j                  ||j                  z  «      }| j                  |j                  |j                  «      }~t        j                  t        j                   d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY w)NrU   r   zCuda error r   )r
   r0   r,   r2   r   r/   rf   ÚsysÚgetrefcountÚforeign_bufferÚaddressr(   rZ   r"   r#   r   ÚArrowIOError)rk   r,   r(   rm   ÚrcÚfbufs         r   Útest_foreign_bufferrx     s.  € Ü
€CÜ�H‰H”R—X‘XÓ€EØ€DÜ×Ñ  u§~¡~Ñ 5Ó6€Dô 
�‰˜Ó	€BØ×Ñ˜dŸl™l¨D¯I©I°tÓ<€DÜ�?‰?˜4Ó  B¨¡FÒ*Ð*Ð*ØÜ�?‰?˜4Ó  BÒ&Ð&Ð&ð ×Ñ˜dŸl™l¨D¯I©I°tÓ<€DØØ×ÑÔô ×Ñ  u§~¡~Ñ 5Ó6€DØ×Ñ˜dŸl™l¨D¯I©IÓ6€DØÜ	�‰”r—‘Ø+ö
.à×ÑÔ÷
.÷ 
.ñ 
.ús   Å(FÆFc                 óê  — t        | «      \  }}|j                  «       |j                  «       k(  sJ ‚t        j	                  |«      }|j
                  | k(  sJ ‚|j                  rJ ‚|j                  «       |j                  «       k(  sJ ‚| dkD  r|j                  dkD  sJ ‚t        | «      D ]  }||   ||   k(  rŒJ ‚ t        d «      t        | dz  | dz  «      fD ]+  }||   j                  «       ||   j                  «       k(  rŒ+J ‚ |j                  | dz  | dz  «      }|j                  |k(  sJ ‚t        j                  t        d¬«      5  t        j                  «        d d d «       y # 1 sw Y   y xY w)Nr   r-   rT   z-Do not call CudaBuffer's constructor directlyr   )rO   r]   Ú
to_pybytesr
   rY   r(   r   rt   Úranger^   Úparentr"   r#   Ú	TypeErrorr   Ú
CudaBuffer)r(   r7   r6   rl   ÚiÚsÚsbufs          r   Útest_CudaBufferr‚   5  s[  € ä! $Ó'�H€CˆØ�;‰;‹=˜CŸN™NÓ,Ò,Ð,Ð,Ü×*Ñ*¨3Ó/€DØ�9‰9˜ÒÐÐØ�{Š{Ðˆ?Ø�;‰;‹=˜DŸO™OÓ-Ò-Ð-Ð-Øˆa‚xØ�|‰|˜aÒÐÐä�4Ž[ˆØ�A‰w˜#˜a™&Ó Ð Ð ð ô �$‹KÜ�$˜‘'˜4 ™7Ó#óˆð �A‰w×!Ñ!Ó# s¨1¡v§~¡~Ó'7Ó7Ð7Ð7ð	ð �:‰:�d˜A‘g˜t Q™wÓ'€DØ�;‰;˜$ÒÐÐä	�‰”yØLö
Nä�‰Ô÷
N÷ 
Nñ 
Nús   ÅE)Å)E2c                 ó  — t        | «      \  }}|j                  «       |j                  «       k(  sJ ‚t        j	                  | «      }|t        j                  |t
        j                  ¬«      d d  |j                  | k(  sJ ‚|j                  sJ ‚|j                  «       |j                  «       k(  sJ ‚t        | «      D ]  }||   ||   k(  rŒJ ‚ t        d «      t        | dz  | dz  «      fD ]+  }||   j                  «       ||   j                  «       k(  rŒ+J ‚ |j                  | dz  | dz  «      }|j                  |k(  sJ ‚~t        j                  t        d¬«      5  t        j!                  «        d d d «       y # 1 sw Y   y xY w)Nr+   r-   rT   z-Do not call HostBuffer's constructor directlyr   )rO   r]   rz   r   r/   r0   r1   r2   r(   r   r{   r^   r|   r"   r#   r}   Ú
HostBuffer)r(   r7   r6   rm   r   r€   r�   s          r   Útest_HostBufferr…   Q  s^  € ä! $Ó'�H€CˆØ�;‰;‹=˜CŸN™NÓ,Ò,Ð,Ð,Ü×Ñ Ó%€DØ-0„B‡M�M�$œbŸh™hÔ'©Ð*Ø�9‰9˜ÒÐÐØ�;Š;Ðˆ;Ø�;‰;‹=˜DŸO™OÓ-Ò-Ð-Ð-Ü�4Ž[ˆØ�A‰w˜#˜a™&Ó Ð Ð ð ô �$‹KÜ�$˜‘'˜4 ™7Ó#óˆð �A‰w×!Ñ!Ó# s¨1¡v§~¡~Ó'7Ó7Ð7Ð7ð	ð �:‰:�d˜A‘g˜t Q™wÓ'€DØ�;‰;˜$ÒÐÐàä	�‰”yØLö
Nä�‰Ô÷
N÷ 
Nñ 
Nús   ÅE<Å<Fc                 óX  — t        j                  d«      }| |j                  z  }t        j                  |d¬«      }t        |t        j                  «      sJ ‚t        |t        j                  «      rJ ‚t        j                  ||¬«      }|j                  | k(  sJ ‚t        | «      |d d  t        j                  ||¬«      }t         j                  j                  ||«       t        j                  |«      }t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚|j                  |k(  sJ ‚|j                   rJ ‚|j#                  |d|¬«       |j%                  d|¬«      }t        j                  ||¬«      }t         j                  j                  ||«       y )NÚuint16T)Ú	resizabler+   r   rH   )r0   r,   rf   r   rK   Ú
isinstanceÚBufferr   r~   r1   r(   r{   r4   r5   r
   r>   r   rP   rZ   )	r(   ÚdtrJ   r6   r7   rQ   Údevice_bufferÚbuf2r9   s	            r   Útest_copy_from_to_hostrŽ   l  sZ  € ô 
�‰�(Ó	€BØ�B—K‘KÑ€FÜ
×
Ñ
˜V¨tÔ
4€CÜ�cœ2Ÿ9™9Ô%Ð%Ð%Ü˜#œtŸ™Ô/Ð/Ð/Ü
�-‰-˜ 2Ô
&€CØ�8‰8�tÒÐÐÜ�4‹[€C‰€FÜ�=‰=˜ BÔ'€DÜ‡J�J×Ñ˜C Ô&ô #×-Ñ-¨fÓ5€MÜ�m¤T§_¡_Ô5Ð5Ð5Ü�m¤R§Y¡YÔ/Ð/Ð/Ø×Ñ Ò'Ð'Ð'Ø×#Ò#Ð#Ð#Ø× Ñ  ¨q¸Ð Ô@ð ×%Ñ%¨q¸Ð%Ó@€DÜ�=‰=˜ RÔ(€DÜ‡J�J×Ñ˜C Õ&r   c                 ó˜  — t        | d¬«      \  }}|j                  «       }|j                  sJ ‚t        j                  j                  |t        j                  |t        j                  ¬«      «       |j                  | dz  ¬«      }|j                  sJ ‚t        j                  j                  || dz  d  t        j                  |t        j                  ¬«      «       |j                  | dz  | dz  ¬«      }|j                  sJ ‚t        j                  j                  || dz  | dz  | dz  z    t        j                  |t        j                  ¬«      «       |j                  | dz  d¬«      }|j                  sJ ‚|j                  dk(  sJ ‚| d	z   d
fd| dz   dfdfD ]<  \  }}t        j                  t        d¬«      5  |j                  ||¬«       d d d «       Œ> d| dz   f| d	z  | dz   d	z  dz   f| dffD ]<  \  }}t        j                  t        d¬«      5  |j                  ||¬«       d d d «       Œ> t        j                  | dz  «      }|j                  |¬«       t        j                  j                  |d | dz   t        j                  |t        j                  ¬«      «       | dk  ry |j                  |d¬«       t        j                  j                  |dd| dz  z    t        j                  |t        j                  ¬«      «       |j                  |d¬«       t        j                  j                  |d d t        j                  |t        j                  ¬«      d d «       |j                  |dd¬«       t        j                  j                  |dd t        j                  |t        j                  ¬«      d d «       d| dz   fd| dz
  fd| d	z  f| dz  | dz  dz   ffD ]=  \  }}t        j                  t        d¬«      5  |j                  |||¬«       d d d «       Œ? y # 1 sw Y   �Œ”xY w# 1 sw Y   �ŒHxY w# 1 sw Y   ŒdxY w)Nr   rF   r+   r-   ©rI   é   rH   r   rT   éÿÿÿÿ©éþÿÿÿr’   r   ©éýÿÿÿr   ú!position argument is out-of-ranger   ú8requested more to copy than available from device buffer)r6   é   )r6   rI   )r6   rJ   é   )r6   rJ   rI   é   rU   é   z,requested copy does not fit into host buffer)r6   rI   rJ   )rO   rZ   r   r0   r4   r5   r1   r2   r(   r"   r#   r$   r   rK   )r(   r7   rR   r6   rI   rJ   s         r   Útest_copy_to_hostr�   ˆ  så  € ä" 4°Ô9�I€Cˆà
×
Ñ
Ó
€CØ�:Š:Ðˆ:Ü‡J�J×Ñ˜C¤§¡¨s¼"¿(¹(Ô!CÔDà
×
Ñ
 T¨1¡WÐ
Ó
-€CØ�:Š:Ðˆ:Ü‡J�J×Ñ˜C  a¡ ˜M¬2¯=©=¸ÄBÇHÁHÔ+MÔNà
×
Ñ
 T¨1¡W°T¸1±WÐ
Ó
=€CØ�:Š:Ðˆ:Ü‡J�J×Ñ˜C  a¡¨¨a©°°a±©Ð8ÜŸM™M¨#´R·X±XÔ>ô@ð ×
Ñ
 T¨1¡W°QÐ
Ó
7€CØ�:Š:Ðˆ:Ø�8‰8�qŠ=Ðˆ=ð 
ˆa‰�ˆ�h  a¡¨ ¨WóÑˆ�6ô �]‰]œ:Ø!DöFà×Ñ x¸ÐÔ?÷Fð Fðð 
ˆD�‰Fˆ�d˜A‘g  Q¡¨™{¨1™}Ð-°°a¨yóÑˆ�6ô �]‰]œ:ð#BöDð ×Ñ x¸ÐÔ?÷Dð Dðô ×
Ñ
˜T 1™WÓ
%€CØ×Ñ˜#ÐÔÜ‡J�J×Ñ˜C   q¡˜M¬2¯=©=¸ÄBÇHÁHÔ+MÔNàˆb‚yØà×Ñ˜#¨ÐÔ+Ü‡J�J×Ñ˜C  2 d¨A¡g¡:Ð.ÜŸM™M¨#´R·X±XÔ>ô@ð 	×Ñ˜# bÐÔ)Ü‡J�J×Ñ˜C  ˜H¤b§m¡m°C¼r¿x¹xÔ&HÈÈ"Ð&MÔNà×Ñ˜# b°1ÐÔ5Ü‡J�J×Ñ˜C  $˜KÜŸM™M¨#´R·X±XÔ>¸sÀÐCôEð ��R‘ˆL˜2˜t A™v˜,Ø��a‘ˆL˜4 ™7 D¨!¡G¨A¡IÐ.óÑˆ�6ô �]‰]œ:ð#9ö;ð ×Ñ #°ÀÐÔH÷;ð ;ñ	÷=Fñ Fú÷Dñ Dú÷6;ð ;ús$   Æ=P&ÈP3ÐQ Ð&P0	Ð3P=	Ñ Q		Údest_ctxÚsameÚanotherc                 óØ  ‡‡— t        |d¬«      \  }Š|j                  «       }| dk(  r?t        } ‰j                  j                  | j                  k(  r"t        j                  d«       n‰j                  } | j                  |«      Šˆˆfd„} |«       |k(  sJ ‚|dkD  r[ ||dz  ¬«      |d |dz   |d | dz   z   k(  sJ ‚ |«       |k(  sJ ‚ |d|d	z  ¬
«      |d d |d |d	z   z   |||d	z  z
  dz
   d  z   k(  sJ ‚|d	z   dfd|dz   dfdfD ]3  \  }}t        j                  t        d¬«      5   |||¬
«       d d d «       Œ5 d|dz   ffD ]3  \  }}t        j                  t        d¬«      5   |||¬
«       d d d «       Œ5 |dk  ry |d	z  |dz   d	z  dz   ffD ]3  \  }}t        j                  t        d¬«      5   |||¬
«       d d d «       Œ5 y # 1 sw Y   ŒËxY w# 1 sw Y   Œ™xY w# 1 sw Y   ŒXxY w)Nr   ©r(   rG   r    znot a multi-GPU systemc                  ó¶   •—  ‰j                   ‰g| ¢­i |¤Ž ‰j                  «       }t        j                  |t        j                  ¬«      j                  «       S ©Nr+   )Úcopy_from_devicerZ   r0   r1   r2   Útolist©ÚargsÚkwargsÚrbufr6   rR   s      €€r   Úputz"test_copy_from_device.<locals>.putÕ  sI   ø€ Øˆ×Ñ˜cÐ3 DÒ3¨FÒ3Ø× Ñ Ó"ˆÜ�}‰}˜T¬¯©Ô2×9Ñ9Ó;Ð;r   r-   r�   r   rT   rH   r’   r“   r   r•   r—   r   r˜   ú6requested more to copy than available in device buffer)
rO   r¦   r   Úcontextr   r"   Úskipr>   r#   r$   )	rž   r(   r7   Úlstr«   rI   rJ   r6   rR   s	          @@r   Útest_copy_from_devicer°   È  sH  ù€ ô " t°HÔ=�H€CˆØ
�*‰*‹,€CØ�9ÒÜ"ˆØ�;‰;×$Ñ$¨×(>Ñ(>Ò>Ü�K‰KÐ0Õ1à—;‘;ˆØ×Ñ˜tÓ$€Dõ<ñ ‹5�CŠ<Ðˆ<Øˆa‚xÙ˜D !™GÔ$¨¨H¨T°1©W¨°c¸)¸D¸5À!¹8°nÑ(DÒDÐDÐDÙ‹u˜Š|Ðˆ|Ù˜A d¨A¡gÔ.Ø��ˆG�c˜(˜4 ™7�mÑ# c¨D°°q±©L¸©NÐ*;Ð*<Ð&=Ñ=ò>ð 	>ð >ð �!‰V�RˆL˜( T¨!¡V¨Q K°óÑˆ�6ô �]‰]œ:Ø!DöFá˜¨&Õ1÷Fð Fðð 
ˆD�‰FˆóÑˆ�6ô �]‰]œ:ð#BöDñ ˜¨&Õ1÷Dð Dðð ˆa‚xØð 
ˆq‰�4˜‘6˜A‘+˜a‘-Ð óÑˆ�6ô �]‰]œ:ð#@öBñ ˜¨&Õ1÷Bð Bñ÷Fð Fú÷Dð Dú÷Bð Bús$   Ä'GÅ%GÆ2G ÇG	ÇG	Ç G)	c                 ó@  ‡‡— t        | d¬«      \  }Š|j                  «       }t        j                  | «      Šˆˆfd„} |«       |k(  sJ ‚| dkD  r[ || dz  ¬«      |d | dz   |d |  dz   z   k(  sJ ‚ |«       |k(  sJ ‚ |d| dz  ¬«      |d d |d | dz   z   || | dz  z
  dz
   d  z   k(  sJ ‚| dz   d	fd
| dz   dfdfD ]3  \  }}t	        j
                  t        d¬«      5   |||¬«       d d d «       Œ5 d| dz   ffD ]3  \  }}t	        j
                  t        d¬«      5   |||¬«       d d d «       Œ5 | dk  ry | dz  | dz   dz  dz   ffD ]3  \  }}t	        j
                  t        d¬«      5   |||¬«       d d d «       Œ5 y # 1 sw Y   ŒËxY w# 1 sw Y   Œ™xY w# 1 sw Y   ŒXxY w)NrB   r¢   c                  ó¶   •—  ‰j                   ‰g| ¢­i |¤Ž ‰j                  «       }t        j                  |t        j                  ¬«      j                  «       S r¤   )rP   rZ   r0   r1   r2   r¦   r§   s      €€r   r«   z test_copy_from_host.<locals>.put  sI   ø€ Øˆ×Ñ˜CÐ1 $Ò1¨&Ò1Ø× Ñ Ó"ˆÜ�}‰}˜T¬¯©Ô2×9Ñ9Ó;Ð;r   r-   r�   r   rT   rH   r’   r“   r   r•   r—   r   z6requested more to copy than available from host bufferr¬   )rO   r¦   r
   r>   r"   r#   r$   )r(   r7   r¯   r«   rI   rJ   r6   rR   s         @@r   Útest_copy_from_hostr³   û  s  ù€ ä! t°FÔ;�H€CˆØ
�*‰*‹,€CÜ×$Ñ$ TÓ*€Dõ<ñ ‹5�CŠ<Ðˆ<Øˆa‚xÙ˜D !™GÔ$¨¨H¨T°1©W¨°c¸)¸D¸5À!¹8°nÑ(DÒDÐDÐDÙ‹u˜Š|Ðˆ|Ù˜A d¨A¡gÔ.Ø��ˆG�c˜(˜4 ™7�mÑ# c¨D°°q±©L¸©NÐ*;Ð*<Ð&=Ñ=ò>ð 	>ð >ð �!‰V�RˆL˜( T¨!¡V¨Q K°óÑˆ�6ô �]‰]œ:Ø!DöFá˜¨&Õ1÷Fð Fðð 
ˆD�‰FˆóÑˆ�6ô �]‰]œ:ð#@öBñ ˜¨&Õ1÷Bð Bðð ˆa‚xØð 
ˆq‰�4˜‘6˜A‘+˜a‘-Ð óÑˆ�6ô �]‰]œ:ð#@öBñ ˜¨&Õ1÷Bð Bñ÷Fð Fú÷Bð Bú÷Bð Bús$   ÃE<ÄFÅ&FÅ<F	ÆF	ÆF	c                  óÆ  — t         j                  d«      } | j                  t        j                  j
                  k(  sJ ‚t        | j                  t        j                  «      sJ ‚t        | j                  t        j                  «      sJ ‚| j                  sJ ‚| j                  j                  sJ ‚| j                  t        j                  «       j                  k(  sJ ‚| j                  j                  sJ ‚t        dd¬«      \  }} | j                  t        j                  j                  k(  sJ ‚t        | j                  t        j                  «      sJ ‚| j                  t        j                  j                  k(  sJ ‚t        | j                  t        j                  «      sJ ‚| j                  rJ ‚| j                  j                  rJ ‚| j                  j                  rJ ‚y )NrU   r   r¢   )r   r/   r   r   r    Ú	CUDA_HOSTr‰   r   ÚDevicer   ÚMemoryManagerr   Údefault_cpu_memory_managerrO   r!   r
   )r6   Ú_s     r   Útest_buffer_devicerº   '  sr  € Ü
×
Ñ
˜rÓ
"€CØ�?‰?œb×5Ñ5×?Ñ?Ò?Ð?Ð?Ü�c—j‘j¤"§)¡)Ô,Ð,Ð,Ü�c×(Ñ(¬"×*:Ñ*:Ô;Ð;Ð;Ø�:Š:Ðˆ:Ø�:‰:×ÒÐÐØ�:‰:œ×6Ñ6Ó8×?Ñ?Ò?Ð?Ð?ð ×Ñ×$Ò$Ð$Ð$ä R°Ô9�F€A€sØ�?‰?œb×5Ñ5×:Ñ:Ò:Ð:Ð:Ü�c—j‘j¤"§)¡)Ô,Ð,Ð,Ø�:‰:œ×6Ñ6×=Ñ=Ò=Ð=Ð=Ü�c×(Ñ(¬"×*:Ñ*:Ô;Ð;Ð;Ø�zŠzÐˆ>Ø�z‰z× Ò Ð Ð Ø×!Ñ!×(Ò(Ð(Ð(Ð(r   c                  óÆ  ‡— d„ Šd
ˆfd„	} d\  }} | ||«        | |||dz  «        ‰d«      \  }}|j                  t        j                  dt        j                  ¬«      «       |j	                  dt        j                  dt        j                  ¬«      «       |j                  t        j                  dt        j                  ¬«      «       |j                  «        t        j                  |j                  «       t        j                  «      }t        j                  j                  |d d t        j                  dt        j                  ¬«      «       t        j                  j                  |dd	 t        j                  dt        j                  ¬«      «       t        j                  j                  |d	d  t        j                  dt        j                  ¬«      «       y )Nc                 ó^   — t         j                  | «      }t        j                  |«      }||fS r   )r
   r>   r   ÚBufferWriter)r(   rl   Úwriters      r   Úallocatez#test_BufferWriter.<locals>.allocate>  s,   € Ü×(Ñ(¨Ó.ˆÜ×"Ñ" 4Ó(ˆØ�Vˆ|Ðr   c                 ó6  •—  ‰| «      \  }}t        | d¬«      \  }}|dkD  r||_        |j                  «       }|dk(  sJ ‚|j                  |j	                  |¬«      «       |j                  «       |k(  sJ ‚|j                  d«       |j                  «       }|dk(  sJ ‚|| k  r<t        || |z
  «      }|j                  |j	                  ||¬«      «       ||z  }|| k  rŒ<|j                  «        |j                  | k(  sJ ‚|j                  j                  «        |j                  «       }	|j                  j                  «        |	j                  | k(  sJ ‚t        j                  |	t        j                  ¬«      }
t        j                  j!                  ||
«       y )NrB   r¢   r   ©rX   rW   r+   )rO   Úbuffer_sizeÚtellÚwriter^   ÚseekÚminÚflushr(   r­   ÚsynchronizerZ   r0   r1   r2   r4   r5   )Ú
total_sizeÚ	chunksizerÂ   rl   r¾   r7   r6   rI   Úbytes_to_writer�   r9   r¿   s              €r   Útest_writesz&test_BufferWriter.<locals>.test_writesC  s_  ø€ Ù 
Ó+‰ˆˆfÜ%¨:¸fÔE‰ˆˆSà˜Š?Ø!,ˆFÔà—;‘;“=ˆØ˜1Š}Ðˆ}Ø�‰�S—Y‘Y i�YÓ0Ô1Ø�{‰{‹} 	Ò)Ð)Ð)Ø�‰�AŒØ—;‘;“=ˆØ˜1Š}Ðˆ}à˜Ò#Ü  ¨J¸Ñ,AÓBˆNØ�L‰L˜Ÿ™¨(¸>˜ÓJÔKØ˜Ñ&ˆHð ˜Ó#ð
 	�‰ŒØ�y‰y˜JÒ&Ð&Ð&Ø�‰× Ñ Ô"Ø× Ñ Ó"ˆØ�‰× Ñ Ô"Ø�y‰y˜JÒ&Ð&Ð&Ü�}‰}˜T¬¯©Ô2ˆÜ
�
‰
×Ñ  TÕ*r   )i   r)   é   éd   r+   é2   é   éK   )r   )
rÄ   r0   Úaranger2   ÚwriteatrÇ   r1   rZ   r4   r5   )rÌ   rÉ   Ú
chunk_sizerl   r¾   r7   r¿   s         @r   Útest_BufferWriterrÕ   =  s5  ø€ òõ
+ð: +Ñ€J�
Ù�
˜JÔ'Ù�
˜J¨
°bÑ(8Ô9á˜C“=�L€Dˆ&Ø
‡L�L”—‘˜3¤b§h¡hÔ/Ô0Ø
‡N�N�2”r—y‘y ¬2¯8©8Ô4Ô5Ø
‡L�L”—‘˜2¤R§X¡XÔ.Ô/Ø
‡L�L„Nä
�-‰-˜×)Ñ)Ó+¬R¯X©XÓ
6€CÜ‡J�J×Ñ˜C  ˜H¤b§i¡i°¼"¿(¹(Ô&CÔDÜ‡J�J×Ñ˜C  2˜J¬¯	©	°"¼B¿H¹HÔ(EÔFÜ‡J�J×Ñ˜C  ˜H¤b§i¡i°¼"¿(¹(Ô&CÕDr   c                  ó  — d} t         j                  | «      }t        j                  |«      }t	        | d¬«      \  }}|j
                  dk(  sJ ‚d|_        |j
                  dk(  sJ ‚|j                  |j                  d¬«      «       |j                  «       dk(  sJ ‚|j                  |j                  d¬«      «       d|_        |j
                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  |j                  dd	¬
«      «       |j                  dk(  sJ ‚|j                  |j                  dd¬
«      «       |j                  dk(  sJ ‚|j                  |j                  dd¬
«      «       |j                  |j                  dd¬
«      «       |j                  «        |j                  «       }|j                  | k(  sJ ‚t        j                  |t        j                  ¬«      }t        j                   j#                  ||«       y )Nr)   rB   r¢   r   rÎ   rÁ   rU   éÈ   i,  rW   i6  iþ  i†  i„  r+   )r
   r>   r   r½   rO   rÂ   rÄ   r^   rÃ   Únum_bytes_bufferedrÇ   rZ   r(   r0   r1   r2   r4   r5   )r(   rl   r¾   r7   r6   r�   r9   s          r   Útest_BufferWriter_edge_casesrÙ   p  s¶  € à€DÜ×$Ñ$ TÓ*€DÜ×Ñ˜tÓ$€FÜ! t°FÔ;�H€Cˆà×Ñ Ò"Ð"Ð"Ø€FÔØ×Ñ Ò$Ð$Ð$à
‡L�L�—‘ !�Ó$Ô%Ø�;‰;‹=˜AÒÐÐà
‡L�L�—‘ "�Ó%Ô&Ø€FÔØ×Ñ Ò$Ð$Ð$Ø×$Ñ$¨Ò)Ð)Ð)à
‡L�L�—‘ "¨S�Ó1Ô2Ø×$Ñ$¨Ò)Ð)Ð)à
‡L�L�—‘ #¨c�Ó2Ô3Ø×$Ñ$¨Ò)Ð)Ð)à
‡L�L�—‘ #¨c�Ó2Ô3Ø
‡L�L�—‘ #¨c�Ó2Ô3à
‡L�L„Nà×ÑÓ€DØ�9‰9˜ÒÐÐÜ�=‰=˜¤R§X¡XÔ.€DÜ‡J�J×Ñ˜C Õ&r   c                  ó.  — d} t        | d¬«      \  }}t        j                  |«      }|j                  d«       |j	                  «       dk(  sJ ‚|j                  d«      }t        |«      dk(  sJ ‚|j	                  «       dk(  sJ ‚|j                  d«       t        j                  dt        j                  ¬«      }|j                  |«      }|d	k(  sJ ‚|j	                  «       dk(  sJ ‚t        j                  j                  |dd  |d d	 «       |j                  d
«       |j	                  «       d
k(  sJ ‚|j                  «       }t        j                  |j                  «       t        j                  ¬«      }t        j                  j                  ||«       y )Nr)   r   r¢   i¶  rÎ   rÏ   i�  r+   rÑ   r   )rO   r   ÚBufferReaderrÅ   rÃ   ÚreadÚlenr0   Úzerosr2   Úreadintor4   r5   Úread_bufferr1   rZ   )r(   r7   rl   ÚreaderÚdatar9   Únr�   s           r   Útest_BufferReaderrä   ”  sD  € Ø€DÜ"¨°XÔ>�I€Cˆä×Ñ˜tÓ$€FØ
‡K�K�ÔØ�;‰;‹=˜CÒÐÐà�;‰;�sÓ€DÜˆt‹9˜Š?Ðˆ?Ø�;‰;‹=˜DÒ Ð Ð à
‡K�K�ÔÜ�8‰8�CœrŸx™xÔ(€DØ�‰˜Ó€AØ�Š7€Nˆ7Ø�;‰;‹=˜DÒ Ð Ð Ü‡J�J×Ñ˜C  ˜I t¨C¨R yÔ1à
‡K�K�„NØ�;‰;‹=˜AÒÐÐØ×ÑÓ€DÜ�=‰=˜×*Ñ*Ó,´B·H±HÔ=€DÜ‡J�J×Ñ˜C Õ&r   c                  ó   — t        dd¬«      \  } }t        j                  |«      }|j                  d«       |j	                  «       }t        |«      dk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       }t        j                  |j                  «       t        j                  ¬«      }t        j                  j                  | |«       y )Nr   r   r¢   r+   )rO   r   rÛ   rÅ   rÜ   rÝ   rÃ   rà   r0   r1   rZ   r2   r4   r5   )r7   rl   rá   râ   r�   r9   s         r   Útest_BufferReader_zero_sizeræ   ®  s›   € Ü"¨°(Ô;�I€CˆÜ×Ñ˜tÓ$€FØ
‡K�K�„NØ�;‰;‹=€DÜˆt‹9˜Š>Ðˆ>Ø�;‰;‹=˜AÒÐÐØ×ÑÓ€DÜ�=‰=˜×*Ñ*Ó,´B·H±HÔ=€DÜ‡J�J×Ñ˜C Õ&r   c                 ó  — t        j                  t        j                  dt        j                  «       «      t        j                  dt        j                  «       «      g«      }t        j                  t
        j                  j                  dd| t
        j                  ¬«      «      }t        j                  t
        j                  j                  dd| t
        j                  ¬«      «      }t        j                  ||g|¬«      }|S )NÚf0Úf1r   rC   )r(   r,   ©Úschema)	r   rë   ÚfieldÚint16rj   r0   rL   rM   Úrecord_batch)rX   rë   Úa0Úa1Úbatchs        r   Úmake_recordbatchrò   º  s©   € Ü�Y‰YœŸ™ ¤r§x¡x£zÓ2ÜŸ™ ¤r§x¡x£zÓ2ð4ó 5€Fä	�‰”"—)‘)×#Ñ# A s°¼r¿x¹xÐ#ÓHÓ	I€BÜ	�‰”"—)‘)×#Ñ# A s°¼r¿x¹xÐ#ÓHÓ	I€BÜ�O‰O˜R ˜H¨VÔ4€EØ€Lr   c                  óX  — t        d«      } | j                  «       }t        j                  | t        «      }t        j                  || j                  «      }t        |t        j                  «      sJ ‚| j                  |j                  k(  sJ ‚| j                  |j                  k(  sJ ‚| j                  |j                  k(  sJ ‚|j                  «       }|j                  |«      sJ ‚t        j                  j                  || j                  «      }|j                  |j                  «       «      sJ ‚| j                  |j                  k(  sJ ‚| j                  |j                  k(  sJ ‚| j                  d«      j                  |j                  d«      «      sJ ‚| j                  |«      sJ ‚y )NrU   r   )rò   Ú	serializer   Úserialize_record_batchr
   Úread_record_batchrë   r‰   r   ÚRecordBatchÚnum_columnsÚnum_rowsrZ   ÚequalsÚipcÚcolumn)rñ   rm   rl   Úcbatchr6   Úbatch2s         r   Útest_batch_serializerÿ   Ã  sZ  € Ü˜RÓ €EØ�?‰?Ó€DÜ×&Ñ& u¬nÓ=€Dô ×#Ñ# D¨%¯,©,Ó7€FÜ�fœbŸn™nÔ-Ð-Ð-Ø�<‰<˜6Ÿ=™=Ò(Ð(Ð(Ø×Ñ × 2Ñ 2Ò2Ð2Ð2Ø�>‰>˜VŸ_™_Ò,Ð,Ð,ð ×
Ñ
Ó
€CØ�;‰;�sÔÐÐÜ�V‰V×%Ñ% c¨5¯<©<Ó8€FØ�;‰;�v×'Ñ'Ó)Ô*Ð*Ð*à×Ñ × 2Ñ 2Ò2Ð2Ð2Ø�>‰>˜VŸ_™_Ò,Ð,Ð,Ø�<‰<˜‹?×!Ñ! &§-¡-°Ó"2Ô3Ð3Ð3Ø�<‰<˜ÔÐÑr   c            	      ó”  — t        j                  g d¢t        j                  «       ¬«      } t        j                  ddgdgg d gt        j                  t        j                  «       «      ¬«      }t        j                  g d¢t        j
                  dt        j                  «       fdt        j                  «       fg«      ¬«      }t         j                  j                  g d	¢t        j                  d
dg«      ¬«      }t         j                  j                  g d¢|¬«      }t         j                  j                  g d¢|¬«      }| |||||g}t        j                  t        |«      D ��cg c]  \  }}d|› �|j                  f‘Œ c}}«      }	t        j                  ||	¬«      }
t         j                  j                  |
g«      }|S c c}}w )N)r   r   é*   N©Útyper   r   rT   ))ÚabT)ÚcdeF)NNNÚstrsÚbools)r   r   r   NÚfooÚbar)ÚindicesÚ
dictionary)rT   r   rT   N)rT   r   r   NÚfrê   )r   rj   rí   Úlist_Úint32ÚstructÚutf8Úbool_ÚDictionaryArrayÚfrom_arraysrë   Ú	enumerater  rî   ÚTableÚfrom_batches)rï   rð   Úa2Úa3Úa4Úa5Úarraysr   r7   rë   rñ   Útables               r   Ú
make_tabler  Û  s�  € Ü	�‰Ò"¬¯©«Ô	4€BÜ	�‰�A�q�6˜A˜3  DÐ)´·±¼¿¹»Ó0DÔ	E€BÜ	�‰ÒDÜ—y‘y 6¬2¯7©7«9Ð"5Ø#*¬B¯H©H«JÐ"7ð"9ó :ô
;€Bô
 
×	Ñ	×	'Ñ	'ÚÜ—8‘8˜U E˜NÓ+ð 
(ó 
-€Bô 
×	Ñ	×	'Ñ	'ÚØð 
(ó 
€Bô 
×	Ñ	×	'Ñ	'ÚØð 
(ó 
€Bð �"�b˜"˜b "Ð%€FÜ�Y‰Yä Ô'ôá'‰FˆAˆsð ˆQˆCˆ�#—(‘(ÒØ'òó €Fô �O‰O˜F¨6Ô2€EÜ�H‰H×!Ñ! 5 'Ó*€EØ€Lùós   Å(G
c                  ó@  — t        «       } t        j                  «       }t        j                  j	                  || j
                  «      5 }|j                  | «       d d d «       t        j                  |j                  «       j                  «       «      }t        j                  t        |«      «      }|j                  |t        |«      ¬«       t        j                  j                  t        j!                  |«      «      j#                  «       }|| ||fS # 1 sw Y   ŒºxY w)N)rJ   )r  r   ÚBufferOutputStreamrû   Ú
new_streamrë   Úwrite_tableri   Úgetvaluerz   r
   r>   rÝ   rP   Úopen_streamr   rÛ   Úread_all)ÚhtableÚsinkÚoutrm   rR   Údtables         r   Úmake_table_cudar)  ÷  sÌ   € Ü‹\€Fä× Ñ Ó"€DÜ	�‰×	Ñ	˜4 §¡Ô	/°3Ø�‰˜Ô÷ 
0ä�<‰<˜Ÿ™›×2Ñ2Ó4Ó5€Dô ×$Ñ$¤S¨£YÓ/€DØ×Ñ˜¤S¨£YÐÔ/ä�V‰V×Ñ¤× 1Ñ 1°$Ó 7Ó8×AÑAÓC€FØ�˜˜vÐ%Ð%÷ 
0Ð	/ús   Á	DÄDc                  óž  — t        «       \  } }}}|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚| j	                  |j                  «       «      sJ ‚|j	                  t        j                  j                  |j                  «       «      j                  «       «      sJ ‚y r   )
r)  rë   rù   rø   rú   rZ   r   rû   r#  r$  )rm   r%  rR   r(  s       r   Útest_table_deserializer+    s°   € ô "1Ó!2Ñ€Dˆ&�$˜à�=‰=˜FŸM™MÒ)Ð)Ð)Ø�?‰?˜fŸo™oÒ-Ð-Ð-Ø×Ñ ×!3Ñ!3Ò3Ð3Ð3à�;‰;�t×(Ñ(Ó*Ô+Ð+Ð+à�=‰=œŸ™×+Ñ+Ø×ÑÓóç�hƒjôð ñ r   c                  ó  — t        «       \  } }}}t        j                  j                  |j                  |j
                  «      }|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚| j                  |j                  «       «      sJ ‚|j                  t        j                  j                  |j                  «       «      j                  «       «      sJ ‚y r   )r)  r   r  r  ÚcolumnsÚcolumn_namesrë   rù   rø   rú   rZ   rû   r#  r$  )rm   r%  rR   r(  Údtable2s        r   Ú%test_create_table_with_device_buffersr0    sÒ   € ô "1Ó!2Ñ€Dˆ&�$˜ä�h‰h×"Ñ" 6§>¡>°6×3FÑ3FÓG€Gà�=‰=˜GŸN™NÒ*Ð*Ð*Ø�?‰?˜g×.Ñ.Ò.Ð.Ð.Ø×Ñ ×!4Ñ!4Ò4Ð4Ð4à�;‰;�t×(Ñ(Ó*Ô+Ð+Ð+à�=‰=œŸ™×+Ñ+Ø×ÑÓóç�hƒjôð ñ r   c                 ó
  — t         j                  j                  d«      }t         j                  j                  j	                  | «      }|j                  |«      }|j                  j                  «        |j                  «       }|j                  |j                  k(  s&J t        |j                  |j                  f«      «       ‚t        j                  ||j                  ¬«      }t        j                  j                  ||«       y )Nr   r+   )r   r   r	   ÚIpcMemHandleÚfrom_bufferÚopen_ipc_bufferr­   rÈ   rZ   r(   r   r0   r1   r,   r4   r5   )Úhandle_bufferÚexpected_arrÚother_contextÚ
ipc_handleÚipc_bufr6   r7   s          r   Úother_process_for_test_IPCr:  )  s·   € Ü—G‘G—O‘O AÓ&€MÜ—‘×%Ñ%×1Ñ1°-Ó@€JØ×+Ñ+¨JÓ7€GØ‡O�O×ÑÔ!Ø
×
Ñ
Ó
 €CØ�8‰8�|×(Ñ(Ò(ÐM¬$°·±¸,×:KÑ:KÐ/LÓ*MÓMÐ(Ü
�-‰-˜ <×#5Ñ#5Ô
6€CÜ‡J�J×Ñ˜C Õ.r   c                 ó"  — dd l }|j                  d«      }t        | d¬«      \  }}|j                  «       }|j	                  «       }|j                  t        ||f¬«      }|j                  «        |j                  «        |j                  dk(  sJ ‚y )Nr   Úspawnr   r¢   )rG   r¨   )
ÚmultiprocessingÚget_contextrO   Úexport_for_ipcrô   ÚProcessr:  ÚstartÚjoinÚexitcode)r(   r=  rk   r7   rl   r8  r5  Úps           r   Útest_IPCrE  4  sƒ   € ó Ø
×
%Ñ
% gÓ
.€CÜ"¨°XÔ>�I€CˆØ×$Ñ$Ó&€JØ×(Ñ(Ó*€MØ�‰Ô5Ø'¨Ð-ð 	ó 	/€Aà‡G�G„IØ‡F�F„HØ�:‰:˜Š?Ð‰?r   c                  ó¸  — t        dd¬«      \  } }|j                  }||j                  fD �]¬  }t        j                  g d¢«      }|j                  |«      }|j                  «       d   j                  rJ ‚|j                  «       d   j                  t        j                  j                  k(  sJ ‚|j                  «       d   j                  |j                  k(  sJ ‚|j                  t        j                  «       «      }|j                  |«      sJ ‚t        j                  d|i«      }|j                  |«      }|d   j                  «       d   }	|	j                  rJ ‚|	j                  t        j                  j                  k(  sJ ‚|	j                  |j                  k(  sJ ‚|j                  t        j                  «       «      }
|
j                  |«      r�Œ­J ‚ y )NrU   r   r¢   )r   r   rT   r   Úcol)rO   r   r   r   rj   Úcopy_toÚbuffersr   r   r    r!   r¸   rú   rî   )r¹   r6   Úmm_cudaÚdestr7   Úarr_cudaÚarr_roundtriprñ   Ú
batch_cudaÚbuf_cudaÚbatch_roundtrips              r   Útest_copy_torQ  C  s’  € Ü R°Ô9�F€A€sØ× Ñ €Gà˜'Ÿ.™.Ô)ˆÜ�h‰h’yÓ!ˆØ—;‘;˜tÓ$ˆØ×#Ñ#Ó% aÑ(×/Ò/Ð/Ð/Ø×ÑÓ! !Ñ$×0Ñ0´B×4KÑ4K×4PÑ4PÒPÐPÐPØ×ÑÓ! !Ñ$×+Ñ+¨w¯~©~Ò=Ð=Ð=à ×(Ñ(¬×)FÑ)FÓ)HÓIˆØ×#Ñ# CÔ(Ð(Ð(ä—‘ ¨ Ó-ˆØ—]‘] 4Ó(ˆ
Ø˜eÑ$×,Ñ,Ó.¨qÑ1ˆØ—?’?Ð"Ð"Ø×#Ñ#¤r×'>Ñ'>×'CÑ'CÒCÐCÐCØ�‰ '§.¡.Ò0Ð0Ð0à$×,Ñ,¬R×-JÑ-JÓ-LÓMˆØ×%Ñ% eÖ,Ð,Ð,ñ% *r   c                  óX  — t        j                  dt        ¬«      } | j                  }|j	                  d«      }t        |j                  d|«      «      }|j	                  d«      }t        |j                  d|«      «      }t        j                  t        j                  «       «      }t        j                  dgddgg|¬	«      }t        d
d¬«      \  }}	|	j                  }
|j                  |
«      }|j                  |«       |j                  dk(  sJ ‚|j                   t"        j$                  k(  sJ ‚|j                  j&                  dk(  sJ ‚~t        j(                  j+                  ||«      }|j,                  t        j                  t        j                  «       «      k(  sJ ‚|j                  t        j.                  «       «      }|j1                  |«      sJ ‚~t        j2                  t4        d¬«      5  t        j(                  j+                  ||«       d d d «       |j                  |
«      }|j                  ||«       ~t        j(                  j+                  ||«      }|j,                  t        j                  t        j                  «       «      k(  sJ ‚|j                  t        j.                  «       «      }|j1                  |«      sJ ‚~t        j2                  t4        d¬«      5  t        j(                  j+                  ||«       d d d «       y # 1 sw Y   ŒÿxY w# 1 sw Y   y xY w)Núpyarrow.cffir   ústruct ArrowSchema*Ú	uintptr_tústruct ArrowDeviceArray*r   rT   r  r  rU   r   r¢   ú!Cannot import released ArrowArrayr   ú"Cannot import released ArrowSchema)r"   ÚimportorskipÚImportErrorÚffiÚnewÚintÚcastr   r  r  rj   rO   r   rH  Ú_export_to_c_devicer   r   r
   r   rX   ÚArrayÚ_import_from_c_devicer  r¸   rú   r#   r$   )Úcffir[  Úc_schemaÚ
ptr_schemaÚc_arrayÚ	ptr_arrayÚtypr7   r¹   r6   rJ  ÚcarrÚcarr_newÚarr_news                 r   Útest_device_interface_arrayrk  \  sq  € Ü×Ñ˜~¼ÔD€DØ
�(‰(€Cà�w‰wÐ,Ó-€HÜ�S—X‘X˜k¨8Ó4Ó5€JØ�g‰gÐ0Ó1€GÜ�C—H‘H˜[¨'Ó2Ó3€Iä
�(‰(”2—8‘8“:Ó
€CÜ
�(‰(�Q�C˜!˜R˜�>¨Ô
,€Cô   R°Ô9�F€A€sØ× Ñ €GØ�;‰;�wÓ€Dð 	×Ñ˜YÔ'ð ×Ñ !Ò#Ð#Ð#Ø×Ñ¤× <Ñ <Ò<Ð<Ð<Ø�=‰=×Ñ 1Ò$Ð$Ð$ð 	Ü�x‰x×-Ñ-¨i¸Ó=€HØ�=‰=œBŸH™H¤R§X¡X£ZÓ0Ò0Ð0Ð0Ø×Ñœr×<Ñ<Ó>Ó?€GØ�>‰>˜#ÔÐÐàä	�‰”zÐ)LÖ	MÜ
�‰×&Ñ& y°#Ô6÷ 
Nð �;‰;�wÓ€DØ×Ñ˜Y¨
Ô3àÜ�x‰x×-Ñ-¨i¸ÓD€HØ�=‰=œBŸH™H¤R§X¡X£ZÓ0Ò0Ð0Ð0Ø×Ñœr×<Ñ<Ó>Ó?€GØ�>‰>˜#ÔÐÐàä	�‰”zÐ)MÖ	NÜ
�‰×&Ñ& y°*Ô=÷ 
OÐ	N÷ 
NÐ	Mú÷ 
OÐ	Nús   Ç5!LË*!L ÌLÌ L)c                  ód  — t        j                  dt        ¬«      } | j                  }|j	                  d«      }t        |j                  d|«      «      }|j	                  d«      }t        |j                  d|«      «      }t        d«      }|j                  }t        j                  |t        «      }t        j                  ||«      }	|	j                  |«       |j                  dk(  sJ ‚|j                  t        j                   k(  sJ ‚|j"                  j$                  dk(  sJ ‚~	t&        j(                  j+                  ||«      }
|
j                  |k(  sJ ‚|
j-                  t'        j.                  «       «      }|j1                  |«      sJ ‚~
t        j2                  t4        d¬	«      5  t&        j(                  j+                  ||«       d d d «       t        j                  ||«      }	|	j                  ||«       ~	t&        j(                  j+                  ||«      }
|
j                  |k(  sJ ‚|
j-                  t'        j.                  «       «      }|j1                  |«      sJ ‚~
t        j2                  t4        d
¬	«      5  t&        j(                  j+                  ||«       d d d «       t'        j6                  «       j9                  |«       t        j2                  t4        d¬	«      5  t&        j(                  j+                  ||«       d d d «       y # 1 sw Y   �ŒGxY w# 1 sw Y   Œ~xY w# 1 sw Y   y xY w)NrS  r   rT  rU  rV  rU   rT   rW  r   rX  z%ArrowSchema describes non-struct type)r"   rY  rZ  r[  r\  r]  r^  rò   rë   r   rõ   r
   rö   r_  r   r   r   rj   rX   r   r÷   ra  rH  r¸   rú   r#   r$   r  Ú_export_to_c)rb  r[  rc  rd  re  rf  rñ   rë   rl   rý   Ú
cbatch_newÚ	batch_news               r   Ú!test_device_interface_batch_arrayrp  ‘  s�  € Ü×Ñ˜~¼ÔD€DØ
�(‰(€Cà�w‰wÐ,Ó-€HÜ�S—X‘X˜k¨8Ó4Ó5€JØ�g‰gÐ0Ó1€GÜ�C—H‘H˜[¨'Ó2Ó3€Iä˜RÓ €EØ�\‰\€FÜ×&Ñ& u¬nÓ=€DÜ×#Ñ# D¨&Ó1€Fð ×Ñ˜yÔ)ð ×Ñ !Ò#Ð#Ð#Ø×Ñ¤× <Ñ <Ò<Ð<Ð<Ø�=‰=×Ñ 2Ò%Ð%Ð%ð 	Ü—‘×5Ñ5°iÀÓH€JØ×Ñ Ò&Ð&Ð&Ø×"Ñ"¤2×#@Ñ#@Ó#BÓC€IØ×Ñ˜EÔ"Ð"Ð"àä	�‰”zÐ)LÖ	MÜ
�‰×,Ñ,¨Y¸Ô?÷ 
Nô ×#Ñ# D¨&Ó1€FØ
×Ñ˜y¨*Ô5àÜ—‘×5Ñ5°iÀÓL€JØ×Ñ Ò&Ð&Ð&Ø×"Ñ"¤2×#@Ñ#@Ó#BÓC€IØ×Ñ˜EÔ"Ð"Ð"àä	�‰”zÐ)MÖ	NÜ
�‰×,Ñ,¨Y¸
ÔC÷ 
Oô ‡H�HƒJ×Ñ˜JÔ'Ü	�‰”zØDö
Fä
�‰×,Ñ,¨Y¸
ÔC÷
Fð 
F÷) 
NÑ	Mú÷ 
OÐ	Nú÷

Fð 
Fús$   Æ'!LÉ<!LË#!L&ÌLÌL#Ì&L/c                  ó¤  — t        d«      } t        j                  | t        «      }t        j	                  || j
                  «      }| d   }|d   }t        |«      t        |«      k(  sJ ‚t        d«      } t        j                  | t        «      }t        j	                  || j
                  «      }| d   }|d   }t        |«      t        |«      k(  sJ ‚y )NrU   rè   rÎ   ©rò   r   rõ   r
   rö   rë   Ústr)rñ   rl   rý   r7   rh  s        r   Útest_print_arrayrt  É  s¶   € Ü˜RÓ €EÜ×&Ñ& u¬nÓ=€DÜ×#Ñ# D¨%¯,©,Ó7€FØ
�‰+€CØ�$‰<€DÜˆt‹9œ˜C›Ò Ð Ð ä˜SÓ!€EÜ×&Ñ& u¬nÓ=€DÜ×#Ñ# D¨%¯,©,Ó7€FØ
�‰+€CØ�$‰<€DÜˆt‹9œ˜C›Ò Ð Ñ r   rU   rÎ   c                 ó˜  — t         j                  | dz  «      }t        j                  |t        j                  ¬«      }t        | «      |d d  t        j                  t        | «      t        j                  «       «      }t        j                  j                  t        j                  «       | d |g«      }t        |«      t        |«      k(  sJ ‚y )Nr‘   r+   )r   r/   r0   r1   Úint64r{   r   rj   r`  Úfrom_buffersrs  )r(   r6   Únp_arrr7   rh  s        r   Útest_print_array_hostry  Ù  s‰   € ä
×
Ñ
˜t A™vÓ
&€CÜ�]‰]˜3¤b§h¡hÔ/€FÜ�d“€F‰1€Iä
�(‰(”5˜“;¤§¡£
Ó
+€CÜ�8‰8× Ñ ¤§¡£¨T°D¸#°;Ó?€DÜˆt‹9œ˜C›Ò Ð Ñ r   c                 óX  — g }g }t        |«      D ]o  }t        | «      }t        j                  |t        «      }t        j                  ||j                  «      }|j                  |d   «       |j                  |d   «       Œq t        j                  |«      t        j                  |«      fS )Nrè   )
r{   rò   r   rõ   r
   rö   rë   Úappendr   Úchunked_array)Ún_elements_per_chunkÚn_chunksÚarrsÚcarrsr¹   rñ   rl   rý   s           r   Úmake_chunked_arrayr�  ä  s�   € Ø€DØ€EÜ�8Ž_ˆÜ Ð!5Ó6ˆÜ×*Ñ*¨5´.ÓAˆÜ×'Ñ'¨¨e¯l©lÓ;ˆØ�‰�E˜$‘KÔ Ø�‰�V˜D‘\Õ"ð ô ×Ñ˜DÓ!¤2×#3Ñ#3°EÓ#:Ð:Ð:r   c                  ó¤   — t        dd«      \  } }t        |«      t        | «      k(  sJ ‚t        dd«      \  } }t        |«      t        | «      k(  sJ ‚y )NrU   r.   rÎ   é   )r�  rs  )r7   rh  s     r   Útest_print_chunked_arrayr„  ñ  sN   € Ü" 2 qÓ)�I€CˆÜˆt‹9œ˜C›Ò Ð Ð ä" 3¨Ó+�I€CˆÜˆt‹9œ˜C›Ò Ð Ñ r   c                  ó|  — t        d«      } t        j                  | t        «      }t        j	                  || j
                  «      }t        |«      t        | «      k(  sJ ‚t        d«      } t        j                  | t        «      }t        j	                  || j
                  «      }t        |«      t        | «      k(  sJ ‚y )NrU   rÎ   rr  )rñ   rl   rý   s      r   Útest_print_record_batchr†  ù  s’   € Ü˜RÓ €EÜ×&Ñ& u¬nÓ=€DÜ×#Ñ# D¨%¯,©,Ó7€FÜˆv‹;œ#˜e›*Ò$Ð$Ð$ä˜SÓ!€EÜ×&Ñ& u¬nÓ=€DÜ×#Ñ# D¨%¯,©,Ó7€FÜˆv‹;œ#˜e›*Ò$Ð$Ñ$r   c                  óT   — t        «       \  } }} }t        |«      t        |«      k(  sJ ‚y r   )r)  rs  )r¹   r  Úctables      r   Útest_print_tabler‰    s)   € Ü)Ó+Ñ€A€uˆa�Üˆv‹;œ#˜e›*Ò$Ð$Ñ$r   )rB   ):Ú__doc__rq   Ú	sysconfigr"   Úpyarrowr   Únumpyr0   rZ  ÚmarkÚ
pytestmarkrY  r   Úget_platformÚplatformÚhas_ipc_supportÚskipifÚcuda_ipcr
   r   r   r   r'   Úparametrizer:   r@   rO   rd   ro   rx   r‚   r…   rŽ   r�   r°   r³   rº   rÕ   rÙ   rä   ræ   rò   rÿ   r  r)  r+  r0  r:  rE  rQ  rk  rp  rt  ry  r�  r„  r†  r‰  © r   r   Ú<module>r—     s÷  ðñ$ó
 Û ã ã ð#Ûð
 €v×Ñ˜>°KÔ@€à!ˆ9×!Ñ!Ó#€à˜nÑ,€à�;‰;×ÑØÐØ4¸ÑAð ó C€ð €Ø€òNò
ò5ð, ‡�×Ñ˜¢Ó.ñó /ðò=ó-ð. ‡�×Ñ˜¢Ó.ñ|>ó /ð|>ð~ ‡�×Ñ˜¢Ó.ñ4ó /ð4ò>ð6 ‡�×Ñ˜¢Ó.ñó /ðð6 ‡�×Ñ˜¢Ó.ñó /ðð4 ‡�×Ñ˜¢Ó.ñ'ó /ð'ð6 ‡�×Ñ˜¢Ó.ñ<Ió /ð<Ið~ ‡�×Ñ˜ f¨iÐ%8Ó9Ø‡�×Ñ˜¢Ó.ñ.2ó /ó :ð.2ðb ‡�×Ñ˜¢Ó.ñ(2ó /ð(2òV)ò,0Eòf!'òH'ò4	'òò ò0ò8&ò ò ò$/ð 
Ø‡�×Ñ˜¢Ó.ñ
ó /ó 
ð
ò-ò22>òj5Dòp!ð  ‡�×Ñ˜ " c Ó+ñ!ó ,ð!ò
;ò!ò	%ó%øðM ò #Ø—‘×"Ñ"ƒJð#ús   ”I) É)JÊJ