Ë
    èÿæi×[  ã                   ó   — d dl mZmZmZ d dlZd dlZd dlZd dlZd dlZd dl	Z
d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ  G d„ d	e«      Z G d
„ dee«      Zej?                  «        e dk(  r ejB                  «        yy)é    )Úprint_functionÚabsolute_importÚdivisionN)ÚnjitÚset_num_threadsÚget_num_threadsÚprangeÚconfigÚthreading_layerÚguvectorize)Úget_thread_id)ÚTypingError)ÚTestCaseÚskip_parfors_unsupportedÚtag)ÚTestInSubprocessc                   óª  — e Zd ZdZd„ Zd„ Zed„ «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d	„ «       «       Ze ej                  e
j                  dk  d«      d
„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«      d„ «       «       Ze ej                  e
j                  dk  d«       ej                  ej0                  j3                  d«       d«      d„ «       «       «       Zd„ Zed„ «       Zy)ÚTestNumThreadsFc                 ó6   — t        t        j                  «       y ©N©r   r
   ÚNUMBA_NUM_THREADS©Úselfs    úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_num_threads.pyÚsetUpzTestNumThreads.setUp   s   € ô 	œ×0Ñ0Õ1ó    c                 óÔ   — t        «       dk(  r(| j                  t        j                  ||k  «      «       y t        «       dv r!t        j                  j                  ||«       y J d«       ‚)NÚtbb)ÚompÚ	workqueueÚunreachable)r   Ú
assertTrueÚnpÚallÚtestingÚassert_equal)r   ÚexpectedÚresults      r   Ú
check_maskzTestNumThreads.check_mask   sS   € ô Ó Ò%Ø�O‰OœBŸF™F 6¨XÑ#5Ó6Õ7ÜÓÐ"6Ñ6Ü�J‰J×#Ñ# H¨fÕ5à#�mÓ#�1r   c                 ó  — t         d„ «       }d}|t        f|j                  t        ffD ]K  \  }}| j	                  |«      5 } |«        d d d «       | j                  |t        j                  «      «       ŒM y # 1 sw Y   Œ1xY w)Nc                  ó   — t        d«       y )NÚ
wrong_type)r   © r   r   Úfooz5TestNumThreads.test_set_num_threads_type.<locals>.foo)   s
   € ä˜LÕ)r   z2The number of threads specified must be an integer)r   r   Úpy_funcÚ	TypeErrorÚassertRaisesÚassertInÚstrÚ	exception)r   r/   r(   ÚfnÚerrtyÚraisess         r   Útest_set_num_threads_typez(TestNumThreads.test_set_num_threads_type&   sz   € ô 
ñ	*ó 
ð	*ð HˆØ¤Ð,¨s¯{©{¼IÐ.FÓG‰IˆB�Ø×"Ñ" 5Ô)¨VÙ”÷ *à�M‰M˜(¤C¨×(8Ñ(8Ó$9Õ:ñ Hß)Ð)ús   Á A8Á8B	é   zNot enough CPU coresc                 óÆ  — t         j                  }| j                  t        «       |«       t	        d«       | j                  t        «       d«       t	        |«       | j                  t        «       |«       | j                  t        «      5  t	        d«       d d d «       | j                  t        «      5  t	        |dz   «       d d d «       y # 1 sw Y   Œ6xY w# 1 sw Y   y xY w)Nr:   r   é   )r
   r   ÚassertEqualr   r   r2   Ú
ValueError)r   Úmax_threadss     r   Ú_test_set_num_threads_basicz*TestNumThreads._test_set_num_threads_basic3   s©   € ô ×.Ñ.ˆà×ÑœÓ*¨KÔ8Ü˜ÔØ×ÑœÓ*¨AÔ.Ü˜Ô$Ø×ÑœÓ*¨KÔ8à×ÑœzÕ*Ü˜AÔ÷ +ð ×ÑœzÕ*Ü˜K¨!™OÔ,÷ +Ð*÷ +Ð*ú÷ +Ð*ús   Â
CÂ3CÃCÃC c                 ój  — t         j                  }t        d„ «       }| j                   |«       |«       t	        d«       | j                   |«       d«       t	        |«       | j                   |«       |«       t        d„ «       }| j                   |d«      d«       | j                   ||«      |«       y )Nc                  ó   — t        «       S r   ©r   r.   r   r   Úget_nz=TestNumThreads._test_set_num_threads_basic_jit.<locals>.get_nI   ó   € ä"Ó$Ð$r   r:   c                 ó,   — t        | «       t        «       S r   ©r   r   ©Úns    r   Ú	set_get_nzATestNumThreads._test_set_num_threads_basic_jit.<locals>.set_get_nS   s   € ä˜AÔÜ"Ó$Ð$r   )r
   r   r   r=   r   )r   r?   rD   rJ   s       r   Ú_test_set_num_threads_basic_jitz.TestNumThreads._test_set_num_threads_basic_jitD   s¦   € ô ×.Ñ.ˆä	ñ	%ó 
ð	%ð 	×Ñ™› +Ô.Ü˜ÔØ×Ñ™› !Ô$Ü˜Ô$Ø×Ñ™› +Ô.ä	ñ	%ó 
ð	%ð 	×Ñ™ 1› qÔ)Ø×Ñ™ ;Ó/°Õ=r   c                 ó¾  — t         j                  }t        dgddd¬«      d„ «       }t        j                  dt        j
                  ¬«      } ||«       t        j                  j                  ||«       t        d	«       t        j                  dt        j
                  ¬«      } ||«       t        j                  j                  |d	«       t        |«       t        j                  dt        j
                  ¬«      } ||«       t        j                  j                  ||«       t        dgddd¬«      d
„ «       }t        j                  dt        j
                  ¬«      }d	|d<    ||«       t        j                  j                  |d	«       t        j                  dt        j
                  ¬«      }||d<    ||«       t        j                  j                  ||«       y )Núvoid(int64[:])ú(n)TÚparallel©ÚnopythonÚtargetc                 ó   — t        «       | d d  y r   rC   ©Úxs    r   rD   zETestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.get_n`   ó   € ô
 #Ó$ˆA‰a‰Dr   ©é@KL ©Údtyper:   c                 ó:   — t        | d   «       t        «       | d d  y ©Nr   rG   rH   s    r   rJ   zITestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.set_get_ns   ó   € ô
 ˜A˜a™DÔ!Ü"Ó$ˆA‰a‰Dr   r   )	r
   r   r   r$   ÚzerosÚint64r&   r'   r   )r   r?   rD   rU   rJ   s        r   Ú'_test_set_num_threads_basic_guvectorizez6TestNumThreads._test_set_num_threads_basic_guvectorize[   sl  € ô ×.Ñ.ˆä	Ð&Ð'ØØ"Ø&ô
(ñ	%ó	
(ð	%ô �H‰H�Z¤r§x¡xÔ0ˆÙˆaŒÜ
�
‰
×Ñ  ;Ô/Ü˜ÔÜ�H‰H�Z¤r§x¡xÔ0ˆÙˆaŒÜ
�
‰
×Ñ  1Ô%Ü˜Ô$Ü�H‰H�Z¤r§x¡xÔ0ˆÙˆaŒÜ
�
‰
×Ñ  ;Ô/ä	Ð&Ð'ØØ"Ø&ô
(ñ	%ó	
(ð	%ô �H‰H�Z¤r§x¡xÔ0ˆØˆˆ!‰Ù�!ŒÜ
�
‰
×Ñ  1Ô%Ü�H‰H�Z¤r§x¡xÔ0ˆØˆˆ!‰Ù�!ŒÜ
�
‰
×Ñ  ;Õ/r   c                 óR  — t        d«       t        d¬«      d„ «       }t        dgddd¬«      d	„ «       } |«       }t        j                  j                  |d«       t        j                  d
t        j                  ¬«      } ||«       t        j                  j                  |d«       y )Nr:   T©rO   c                  óp   — d} t        j                  | f«      }t        | «      D ]  }t        «       ||<   Œ |S ©Né   )r$   Úemptyr	   r   ©rU   ÚbufÚis      r   Ú	test_funczCTestNumThreads._test_set_num_threads_outside_jit.<locals>.test_func‹   s5   € àˆAÜ—(‘(˜A˜4“.ˆCÜ˜A–Y�Ü(Ó*��A’ð àˆJr   rM   rN   rO   rP   c                 ó   — t        «       | d d  y r   rC   rT   s    r   Útest_gufunczETestNumThreads._test_set_num_threads_outside_jit.<locals>.test_gufunc“   rV   r   rW   rY   )r   r   r   r$   r&   r'   r^   r_   )r   rj   rl   ÚoutrU   s        r   Ú!_test_set_num_threads_outside_jitz0TestNumThreads._test_set_num_threads_outside_jit„   s—   € ô
 	˜Ôä	�tÔ	ñ	ó 
ð	ô 
Ð&Ð'ØØ"Ø&ô
(ñ	%ó	
(ð	%ñ ‹kˆÜ
�
‰
×Ñ  QÔ'ä�H‰H�Z¤r§x¡xÔ0ˆÙ�AŒÜ
�
‰
×Ñ  1Õ%r   c                 ó|   — t        d¬«      d„ «       }d} ||«      }t        j                  j                  ||«       y )NTrb   c                 ó†   — d}t        j                  |f«      }t        | «       t        |«      D ]  }t	        «       ||<   Œ |S rd   )r$   rf   r   r	   r   )ÚnthreadsrU   rh   ri   s       r   rj   zBTestNumThreads._test_set_num_threads_inside_jit.<locals>.test_func¥   s=   € àˆAÜ—(‘(˜A˜4“.ˆCÜ˜HÔ%Ü˜A–Y�Ü(Ó*��A’ð àˆJr   r:   )r   r$   r&   r'   )r   rj   Úmaskrm   s       r   Ú _test_set_num_threads_inside_jitz/TestNumThreads._test_set_num_threads_inside_jit¡   s?   € ô 
�tÔ	ñ	ó 
ð	ð ˆÙ˜‹oˆÜ
�
‰
×Ñ  TÕ*r   c                 óØ   — t        dgddd¬«      d„ «       }t        j                  dt        j                  ¬«      }d	}||d
<    ||«       t        j                  j                  ||«       y )NrM   rN   TrO   rP   c                 ó:   — t        | d   «       t        «       | d d  y r\   rG   rT   s    r   rj   zJTestNumThreads._test_set_num_threads_inside_guvectorize.<locals>.test_func¶   r]   r   rW   rY   r:   r   )r   r$   r^   r_   r&   r'   )r   rj   rU   rr   s       r   Ú(_test_set_num_threads_inside_guvectorizez7TestNumThreads._test_set_num_threads_inside_guvectorize²   si   € ô 
Ð&Ð'ØØ"Ø&ô
(ñ	%ó	
(ð	%ô �H‰H�Z¤r§x¡xÔ0ˆØˆØˆˆ!‰Ù�!ŒÜ
�
‰
×Ñ  4Õ(r   c           	      ó>  — t        dt        dt        j                  dz   «      «      D ]ó  }t	        |«       t        d¬«      d„ «       } |«       }| j                  ||f|«       t        dgddd	¬
«      d„ «       }t        j                  ddt        j                  ¬«      j                  d«      }t        j                  dt        j                  ¬«      } |||«       | j                  ||«       | j                  |t        t        j                  |«      «      «       Œõ y )Nr:   é   r<   Trb   c                  ó¼   — d} t        j                  | f«      }t        | «      D ]  }t        «       ||<   Œ t	        t        j
                  |«      «      t        «       fS ©NrX   )r$   rf   r	   r   ÚlenÚuniquer   rg   s      r   rj   zITestNumThreads._test_get_num_threads_truth_outside_jit.<locals>.test_funcÍ   sJ   € à�Ü—h‘h ˜t“n�Ü ž�AÜ*›_�C˜’Fð #äœ2Ÿ9™9 S›>Ó*¬OÓ,=Ð=Ð=r   úvoid(int64[:], int64[:])ú(n), (m)rO   rP   c                 ó8   — t        «       | d d  t        «       |d<   y r\   )r   r   )rU   rm   s     r   rl   zKTestNumThreads._test_get_num_threads_truth_outside_jit.<locals>.test_gufuncØ   s   € ô
 %“�‘!�Ü(Ó*��A’r   rW   éÿÿÿÿrY   ©éd   iPÃ  ©r<   )ÚrangeÚminr
   r   r   r   r*   r   r$   Úfullr_   Úreshaper^   r{   r|   )r   rr   rj   rm   rl   rU   s         r   Ú'_test_get_num_threads_truth_outside_jitz6TestNumThreads._test_get_num_threads_truth_outside_jitÄ   sô   € ô ˜!œS ¤F×$<Ñ$<¸qÑ$@ÓAÖBˆDÜ˜DÔ!ô ˜4Ô ñ>ó !ð>ñ “+ˆCØ�O‰O˜T 4˜L¨#Ô.äÐ4Ð5Ø#Ø"&Ø *ô,ñ+ó	,ð+ô
 —‘˜
 B¬b¯h©hÔ7×?Ñ?ÀÓMˆAÜ—(‘(˜4¤r§x¡xÔ0ˆCÙ˜˜3ÔØ�O‰O˜D #Ô&Ø�O‰O˜D¤#¤b§i¡i°£lÓ"3Õ4ñ; Cr   c           	      ó2  ‡— t        dt        dt        j                  dz   «      «      D ]ì  Št	        d¬«      ˆfd„«       } |«       }| j                  ‰‰f|«       t        dgddd	¬
«      ˆfd„«       }t        j                  ddt        j                  ¬«      j                  d«      }t        j                  dt        j                  ¬«      } |||«       | j                  ‰|«       | j                  ‰t        t        j                  |«      «      «       Œî y )Nr:   rx   r<   Trb   c                  óÔ   •— t        ‰«       d} t        j                  | f«      }t        | «      D ]  }t	        «       ||<   Œ t        t        j                  |«      «      t        «       fS rz   )r   r$   rf   r	   r   r{   r|   r   )rU   rh   ri   rr   s      €r   rj   zHTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_funcï   sS   ø€ ä Ô%Ø�Ü—h‘h ˜t“n�Ü ž�AÜ*›_�C˜’Fð #äœ2Ÿ9™9 S›>Ó*¬OÓ,=Ð=Ð=r   r}   r~   rO   rP   c                 óP   •— t        ‰«       t        «       | d d  t        «       |d<   y r\   )r   r   r   )rU   rm   rr   s     €r   rl   zJTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_gufuncû   s$   ø€ ô
   Ô%Ü$“�‘!�Ü(Ó*��A’r   rW   r€   rY   r�   rƒ   )r„   r…   r
   r   r   r*   r   r$   r†   r_   r‡   r^   r{   r|   )r   rj   rm   rl   rU   rr   s        @r   Ú&_test_get_num_threads_truth_inside_jitz5TestNumThreads._test_get_num_threads_truth_inside_jitç   sí   ø€ ô ˜!œS ¤F×$<Ñ$<¸qÑ$@ÓAÖBˆDô ˜4Ô ó>ó !ð>ñ “+ˆCØ�O‰O˜T 4˜L¨#Ô.äÐ4Ð5Ø#Ø"&Ø *ô,ó+ó	,ð+ô —‘˜
 B¬b¯h©hÔ7×?Ñ?ÀÓMˆAÜ—(‘(˜4¤r§x¡xÔ0ˆCÙ˜˜3ÔØ�O‰O˜D #Ô&Ø�O‰O˜D¤#¤b§i¡i°£lÓ"3Õ4ñ= Cr   c                 ó.  ‡‡‡‡— t        «       dk(  r| j                  d«       t        j                  dz
  Št        j                  Šdt        j                  z  Št	        d¬«      d„ «       Šˆˆˆˆfd„}d	D �]  } ||«      } |‰«      \  }} |‰d¬
«      \  }}t
        j                  j                  ||«       t
        j                  j                  ||«       dt        j                  ‰«      ‰z  z   }|dk(  r|j                  ‰df«      }	nt        j                  |«      }	t
        j                  j                  |	|«       t        j                  ‰‰f«      }
t        d‰«      D ]  }||
|d d …f<   Œ t
        j                  j                  |
|«       �Œ  y )Nr!   úworkqueue is not threadsafer<   r:   Trb   c                 ó`   — | j                   \  }}t        |«      D ]  }t        «       | ||f<   Œ y r   )Úshaper	   r   ©rh   ÚfidÚMÚNri   s        r   Ú
child_funcz=TestNumThreads._test_nested_parallelism_1.<locals>.child_func  s-   € à—9‘9‰DˆAˆqÜ˜A–Y�Ü-Ó/��C˜�F’ñ r   c                 óD   •— | dk(  rdˆˆˆˆfd„	}|S | dk(  r	dˆˆˆˆfd„	}S )Nr   c                 óh   •— t        d¬«      ˆˆˆˆfd„«       }|r|j                  | «      S  || «      S )NTrb   c                 óÐ   •— d}t        j                  ‰‰f«      }t        | «       t        ‰«      D ]0  }d|‰z  z   }t        |«       |‰k  r	 ‰||«       |t	        «       z  }Œ2 ||fS ©Nr   r<   )r$   r^   r   r	   r   )	rq   Úaccrh   ri   Ú
local_maskr“   r”   r•   rr   s	        €€€€r   Ú
_test_funczbTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func.<locals>._test_func"  sn   ø€ à˜Ü Ÿh™h¨¨1 vÓ.˜Ü'¨Ô1Ü!'¨¦˜AØ)*¨Q°©X©˜Jä+¨JÔ7Ø)¨Aš~Ù *¨3°
Ô ;Ø¤?Ó#4Ñ4™Cð "+ð  # C˜x˜r   )r   r0   )rq   r0   rœ   r“   r”   r•   rr   s      €€€€r   rj   zNTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func!  s;   ø€ Ü 4Ô(ö(ó )ð(ñ Ø)×1Ñ1°(Ó;Ð;á)¨(Ó3Ð3r   r   c                 ó†  •‡ — ˆ	ˆ
ˆ fd„}t        j                  ‰‰	ft         j                  ¬«      }t        j                  ‰dft         j                  ¬«      }dt        j                  ‰«      ‰z  z   j	                  ‰df«      }dg}d}|s t        ||dd¬«      |«      }n t        ||d¬	«      |«      } ||||«       ||fS )
Nc                 óŠ   •— t        ‰«       t        |d   «       |d   ‰k  r ‰||d   «       | dxx   t        «       z  cc<   y r\   rG   )rš   rh   r›   r”   r•   rq   s      €€€r   rœ   zbTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func.<locals>._test_func6  sB   ø€ Ü'¨Ô1ä'¨
°1©Ô6Ø% a™=¨1Ò,Ù& s¨J°q©MÔ:Ø˜A›¤/Ó"3Ñ3œr   rY   r<   z%void(int64[:], int64[:, :], int64[:])z(p), (n, m), (p)TrO   rP   ©Úforceobj)r$   r^   r_   Úaranger‡   r   )rq   r0   rœ   rh   rš   r›   ÚsigÚlayoutr“   r”   r•   rr   s   `       €€€€r   rj   zNTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func5  sÇ   ù€ ö4ô Ÿ(™( A q 6´·±Ô:�CÜŸ(™( A q 6´·±Ô:�CØ"#¤b§i¡i°£l°TÑ&9Ñ"9×!BÑ!BÀAÀqÀ6Ó!J�JØBÐC�CØ/�FÙ"ð&D¤[°°fÀtØ8Bô&DØDNó&P™
ð&@¤[°°fØ:>ô&@Ø@Jó&L˜
á˜s C¨Ô4Ø ˜8�Or   )Fr.   )Ú	test_typerj   r“   r”   r•   rr   s     €€€€r   Úget_testz;TestNumThreads._test_nested_parallelism_1.<locals>.get_test  s:   ø€ Ø˜FÒ"÷4ð 4ðV Ðð1 ˜mÒ+÷$ð $ð. Ðr   ©r   r   )r0   r   )r   ÚskipTestr
   r   r   r$   r&   r'   r¡   r‡   Úsumr^   r„   )r   r¥   r¤   rj   Úgot_accÚgot_arrÚexp_accÚexp_arrÚmath_acc_expÚmath_accÚmath_arrri   r“   r”   r•   rr   s               @@@@r   Ú_test_nested_parallelism_1z)TestNumThreads._test_nested_parallelism_1  s`  û€ ô Ó Ò+Ø�M‰MÐ7Ô8ô ×'Ñ'¨!Ñ+ˆä×$Ñ$ˆØ”×(Ñ(Ñ(ˆä	�tÔ	ñ	0ó 
ð	0÷
-	ô^ 1ˆIÙ  Ó+ˆIÙ(¨›ÑˆG�WÙ(¨°tÔ<ÑˆG�WÜ�J‰J×#Ñ# G¨WÔ5Ü�J‰J×#Ñ# G¨WÔ5ð œrŸy™y¨›|¨dÑ2Ñ2ˆLØ˜MÒ)Ø'×/Ñ/°°A°Ó7‘äŸ6™6 ,Ó/�ä�J‰J×#Ñ# H¨gÔ6ä—x‘x  A Ó'ˆHÜ˜1˜a–[�à!"�˜šA˜’ð !ô �J‰J×#Ñ# H¨gÖ6ñ) 1r   c                 ór  ‡	‡
‡— t        «       dk(  r| j                  d«       t        j                  dz   Š
dt        j                  z  dz   Š	ˆ	ˆ
ˆfd„}t        j                  dz
  Ši }dD ]3  }dD ],  }|dk(  r|dk7  rŒt	        ‰«         |||«      ‰«      |||f<   Œ. Œ5 |d	   }|j                  «       D ]"  }t        j                  j                  ||«       Œ$ t        j                  ‰	‰
f«      }t        dt        j                  «      D ]  }|||d d …f<   Œ t        j                  j                  ||«       y )
Nr!   rŽ   r<   é   c                 óX  •‡‡— | dk(  rt        d¬«      }n| dk(  rt        d¬«      }n| dk(  rd„ }d„ «       Š|d	v r;|dk(  rt        d¬«      Šn|dk(  rt        d¬«      Šn|dk(  rd
„ Š‰ˆˆˆˆfd„«       }|S |dk(  rt        dgddd¬«      Šn|dk(  rt        dgdd¬«      Šˆˆˆˆˆfd„}|S )NrO   Trb   r   FÚnonec                 ó   — | S r   r.   rT   s    r   Ú	child_deczNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child_decx  s   € Ø�Hr   c                 óv   — | j                   \  }}t        |«       t        |«      D ]  }t        «       | ||f<   Œ y r   )r�   r   r	   r   r‘   s        r   ÚchildzJTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child{  s5   € à—y‘y‘��1Ü Ô$Ü ž�AÜ"1Ó"3�C˜˜Q˜’Kñ #r   ©rO   r   r´   c                 ó   — | S r   r.   rT   s    r   Útest_deczMTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_decˆ  s   € Ø ˜r   c                 óÔ   •— t        j                  ‰‰f«      }t        | «       t        ‰«      D ]6  }d|‰z  z   }|t        j
                  k  sŒ ‰||«       t        «       |k(  rŒ6J ‚ |S )Nr<   )r$   r^   r   r	   r
   r   r   )rq   rh   ri   r›   r“   r”   r¸   rr   s       €€€€r   rj   zNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func‹  sj   ø€ äŸ(™( A q 6Ó*�CÜ# HÔ-Ü# AžY˜Ø%&¨¨T©¡\˜
ð &¬×(@Ñ(@Ó@Ù! # zÔ2Ü#2Ó#4¸
Ó#BÐBÐ#Bð 'ð �Jr   r   zint64[:,:], int64[:]z(n, m), (k)rP   úguvectorize-objrŸ   c                 óØ   •‡ — ‰ˆˆ fd„«       }t        j                  ‰‰ft         j                  ¬«      }dt        j                  ‰«      ‰z  z   j	                  ‰df«      } |||«       |S )Nc                 ó†   •— t        ‰«       |d   t        j                  k  r ‰| |d   «       t        «       |d   k(  sJ ‚y y r\   )r   r
   r   r   )rh   r›   r¸   rq   s     €€r   rœ   zbTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func.<locals>._test_func¢  sH   ø€ ä'¨Ô1ð & a™=¬6×+CÑ+CÒCÙ! # z°!¡}Ô5Ü#2Ó#4¸
À1¹Ò#EÐEÑ#Eð Dr   rY   r<   )r$   r^   r_   r¡   r‡   )	rq   rœ   rh   r›   r“   r”   r¸   rr   r»   s	   `   €€€€€r   rj   zNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func¡  sf   ù€ ØôFó ðFô Ÿ(™( A q 6´·±Ô:�CØ"#¤b§i¡i°£l°TÑ&9Ñ"9×!BÑ!BÀAÀqÀ6Ó!J�JÙ˜s JÔ/Ø�Jr   r¦   )	Ú
child_typer¤   r¶   rj   r¸   r»   r“   r”   rr   s	       @@€€€r   Úget_implz;TestNumThreads._test_nested_parallelism_2.<locals>.get_implq  sö   ú€ à˜ZÒ'Ü ¨$Ô/‘	Ø˜vÒ%Ü ¨%Ô0‘	Ø˜vÒ%òð ñ4ó ð4ð Ð8Ñ8Ø 
Ò*Ü#¨TÔ2‘HØ &Ò(Ü#¨UÔ3‘HØ &Ò(ò!ð öó ððJ Ðð1  Ò-Ü*Ð,BÐ+CØ+8À4Ø2<ô >‘Hð Ð"3Ò3Ü*Ð,BÐ+CØ+8À4ô I�H÷ð ð  Ðr   )rO   r   r´   r   r½   r¹   r´   )r´   r´   )r   r§   r
   r   r   Úvaluesr$   r&   r'   r^   r„   )r   rÁ   Ú
res_arraysr¤   rÀ   Úpy_arrÚarrr¯   ri   r“   r”   rr   s            @@@r   Ú_test_nested_parallelism_2z)TestNumThreads._test_nested_parallelism_2f  s8  ú€ ô Ó Ò+Ø�M‰MÐ7Ô8ô ×$Ñ$ qÑ(ˆØ”×(Ñ(Ñ(¨1Ñ,ˆö@	ôD ×'Ñ'¨!Ñ+ˆàˆ
ó<ˆIã:�
Ø Ò'¨I¸Ò,?ØÜ Ô%ð5+±HØ 	ó5+Ø+/ó51�
˜9 jÐ0Ò1ñ	 ;ð<ð ˜NÑ+ˆØ×$Ñ$Ö&ˆCÜ�J‰J×#Ñ# C¨Õ0ð 'ô —8‘8˜Q ˜FÓ#ˆä�qœ&×2Ñ2Ö3ˆAØˆH�Qš�TŠNð 4ô 	�
‰
×Ñ ¨&Õ1r   é   c                 óv  ‡‡	— t        «       dk(  r| j                  d«       dŠt        d¬«      ˆfd„«       Š	t        d¬«      ˆ	fd„«       }d}‰|z  }|d	z   } ||«      \  }}| j                  ||«       | j	                  ||«       ˆ	fd
„} ||«      \  }}| j                  ||«       | j	                  ||«       y )Nr!   rŽ   i@B Trb   c                 óº   •— t        j                  ‰«      }d}t        | «       t        ‰«      D ]  }|dz  }t	        «       ||<   Œ |t        j
                  |«      fS r™   )r$   r^   r   r	   r   r|   )Úlocal_ntÚtidrš   ri   ÚBIGs       €r   Úworkz7TestNumThreads._test_nested_parallelism_3.<locals>.workÙ  sT   ø€ ä—(‘(˜3“-ˆCØˆCÜ˜HÔ%Ü˜C–[�Ø�q‘�Ü&›��A’ð !ð œŸ	™	 #›Ð&Ð&r   c                 óØ   •— t        | «       t        j                  | «      }d}t        | «      D ]#  } ‰| dz   «      \  }}t	        |«      ||<   ||z  }Œ% |t        j
                  |«      fS r™   )r   r$   r^   r	   r{   r|   )rq   ÚlensÚtotalri   Úmy_accÚtidsrÍ   s         €r   Útest_func_jitz@TestNumThreads._test_nested_parallelism_3.<locals>.test_func_jitã  sj   ø€ ä˜HÔ%Ü—8‘8˜HÓ%ˆDØˆEÜ˜HÖ%�Ù# H¨q¡LÓ1‘�˜Ü˜d›)��Q‘Ø˜‘‘ð &ð œ"Ÿ)™) D›/Ð)Ð)r   r:   r<   c                 óN  •‡ — t        dgddd¬«      ˆ ˆfd„«       }t        j                  ‰ dft        j                  ¬«      }t        j                  ‰ t        j                  ¬«      j	                  ‰ df«      } |||«       |j                  «       t        j                  |«      fS )	Nzint64[:], int64[:]z(n), (n)TrO   rP   c                 óX   •—  ‰‰dz   «      \  }}t        |«      |d<   | dxx   |z  cc<   y )Nr<   r   )r{   )rÐ   rÏ   rÑ   rÒ   rq   rÍ   s       €€r   Útest_func_guvectorizezbTestNumThreads._test_nested_parallelism_3.<locals>.test_guvectorize.<locals>.test_func_guvectorize÷  s2   ø€ ñ
  $ H¨q¡LÓ1‘�˜Ü˜d›)��Q‘Ø�a“˜FÑ"”r   r<   rY   )r   r$   r^   r_   r‡   r¨   r|   )rq   rÖ   rÐ   rÏ   rÍ   s   `   €r   Útest_guvectorizezCTestNumThreads._test_nested_parallelism_3.<locals>.test_guvectorizeö  s‰   ù€ ÜÐ.Ð/Ø#Ø"&Ø *ô,ô#ó	,ð#ô
 —H‘H˜h¨˜]´"·(±(Ô;ˆEÜ—8‘8˜H¬B¯H©HÔ5×=Ñ=¸xÈ¸mÓLˆDá! %¨Ô.à—9‘9“;¤§	¡	¨$£Ð/Ð/r   )r   r§   r   r=   r*   )
r   rÓ   ÚNTÚexpected_accÚexpected_thread_countr©   Úgot_tcr×   rÌ   rÍ   s
           @@r   Ú_test_nested_parallelism_3z)TestNumThreads._test_nested_parallelism_3Ï  sÏ   ù€ ô Ó Ò+Ø�M‰MÐ7Ô8ð ˆä	�tÔ	ó	'ó 
ð	'ô 
�tÔ	ó	*ó 
ð	*ð ˆØ˜R‘xˆØ " Q¡Ðá'¨Ó+‰ˆ�Ø×Ñ˜ wÔ/Ø�‰Ð-¨vÔ6ô	0ñ" +¨2Ó.‰ˆ�à×Ñ˜ wÔ/Ø�‰Ð-¨vÕ6r   Úlinuxz
Linux onlyc                 ó¬  ‡— t        j                  d«      }t        d„ «       Šˆfd„}d}| j                   ‰«       t        j
                  «       t        |«       | j                   ‰«       |«       |j                  «       }|j                  ||f¬«      }|j                  «        |j                  «        | j                  |j                  «       |«       y )NÚforkc                  ó   — t        «       S r   rC   r.   r   r   r/   z8TestNumThreads._test_threadmask_across_fork.<locals>.foo  rE   r   c                 ó2   •— | j                   ‰«       «       y r   )Úput)Úqueuer/   s    €r   Úwrapz9TestNumThreads._test_threadmask_across_fork.<locals>.wrap  s   ø€ Ø�I‰I‘c“eÕr   r<   )rR   Úargs)ÚmultiprocessingÚget_contextr   r=   r
   r   r   ÚQueueÚProcessÚstartÚjoinÚget)r   Úforkctxrä   rr   Úshared_queueÚpr/   s         @r   Ú_test_threadmask_across_forkz+TestNumThreads._test_threadmask_across_fork  s¯   ø€ ô "×-Ñ-¨fÓ5ˆä	ñ	%ó 
ð	%ô	ð ˆØ×Ñ™›¤× 8Ñ 8Ô9Ü˜ÔØ×Ñ™› Ô%Ø—}‘}“ˆà�O‰O 4¨|¨oˆOÓ>ˆØ	�‰Œ	Ø	�‰ŒØ×Ñ˜×)Ñ)Ó+¨TÕ2r   c                 ó6   — t        t        j                  «       y r   r   r   s    r   ÚtearDownzTestNumThreads.tearDown$  s   € Üœ×0Ñ0Õ1r   c                 ó|  — t        «       }d}t        d¬«      d„ «       }t        d¬«      d„ «       }| j                  |d«        ||«      \  }}| j                  |d«       t        j                  j                  |d«        ||«      \  }}| j                  |d«       t        j                  j                  |d«       y )Né   Frb   c                 ó‚   — t        «       }t        j                  | «      }t        | «      D ]  }t        «       ||<   Œ ||fS r   )r   r$   Úonesr	   )ÚsizeÚnjit_par_false_tidÚresri   s       r   Ú	par_falsezBTestNumThreads._test_get_thread_id_not_parallel.<locals>.par_false,  s;   € ä!.£ÐÜ—'‘'˜$“-ˆCÜ˜D–\�Ü&›��A’ð "à% sÐ*Ð*r   Tc                 ó‚   — t        «       }t        j                  | «      }t        | «      D ]  }t        «       ||<   Œ ||fS r   )r   r$   rö   r„   )r÷   Únjit_par_true_tidrù   ri   s       r   Úpar_truezATestNumThreads._test_get_thread_id_not_parallel.<locals>.par_true4  s;   € ä -£ÐÜ—'‘'˜$“-ˆCÜ˜4–[�Ü&›��A’ð !à$ cÐ)Ð)r   r   )r   r   r=   r$   r&   r'   )	r   Úpython_get_thread_idÚcheck_array_sizerú   rý   rø   Únjit_par_false_arrrü   Únjit_par_true_arrs	            r   Ú _test_get_thread_id_not_parallelz/TestNumThreads._test_get_thread_id_not_parallel'  sÃ   € ä,›ÐØÐä	�uÔ	ñ	+ó 
ð	+ô 
�tÔ	ñ	*ó 
ð	*ð 	×ÑÐ-¨qÔ1Ù1:Ð;KÓ1LÑ.ÐÐ.Ø×ÑÐ+¨QÔ/Ü
�
‰
×ÑÐ 2°AÔ6Ù/7Ð8HÓ/IÑ,ÐÐ,Ø×ÑÐ*¨AÔ.Ü
�
‰
×ÑÐ 1°1Õ5r   N)Ú__name__Ú
__module__Ú__qualname__Ú_numba_parallel_test_r   r*   r   r9   ÚunittestÚskipIfr
   r   r@   rK   r`   rn   rs   rv   rˆ   rŒ   r°   rÆ   rÜ   ÚsysÚplatformÚ
startswithrð   rò   r  r.   r   r   r   r      sù  „ Ø!Ðò2ò
$ð ñ
;ó ð
;ð Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ-ó Kó ð-ð Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ>ó Kó ð>ð* Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ%0ó Kó ð%0ðN Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ&ó Kó ð&ð6 Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ+ó Kó ð+ð Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ)ó Kó ð)ð  Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ5ó Kó ð5ðB Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ 5ó Kó ð 5ðH Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñS7ó Kó ðS7ðn Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJña2ó Kó ða2ðN Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJñ97ó Kó ð97ðv Ø€X‡_�_�V×-Ñ-°Ñ1Ð3IÓJØ€X‡_�_˜Ÿ™×0Ñ0°Ó9Ð9¸<ÓHñ3ó Ió Kó ð3ò*2ð ñ6ó ñ6r   r   c                   ó˜   — e Zd ZeZdZdD � ��cg c]  }|t        j                  k  sŒ|‘Œ c}}} Zd„ Z	e
d„ «       Ze
d„ «       Zyc c}}} w )ÚTestNumThreadsBackendsF)r<   r:   r²   rô   é   c                 óÄ   — t         j                  j                  «       }t        |«      |d<   t        |«      |d<   t        j
                  ddd|g}| j                  ||«      S )NÚNUMBA_THREADING_LAYERr   z-mznumba.runtestsz-v)ÚosÚenvironÚcopyr4   r	  Ú
executableÚrun_cmd)r   Útestr   Únum_threadsÚenv_copyÚcmdlines         r   Úrun_test_in_separate_processz3TestNumThreadsBackends.run_test_in_separate_processL  sX   € Ü—:‘:—?‘?Ó$ˆÜ,/°Ó,@ˆÐ(Ñ)Ü(+¨KÓ(8ˆÐ$Ñ%Ü—>‘> 4Ð)9¸4ÀÐFˆØ�|‰|˜G XÓ.Ð.r   c           	      óÐ   ‡‡‡	— | j                   }| j                  j                  }|›d|›d|›�Š	ˆˆ	ˆfd„}|dd  ›d‰›d‰›d�}t        | | t	        d«       ||«      «      «       y )NÚ.c                 óN  •— | j                  ‰‰‰«      \  }}| j                  rt        d|›d|›d�«       t        j                  d|«      }|� | j                  |j                  d«      «       | j                  d|«       | j                  d|v«       | j                  d|v«       y )	Nz
stdout:
 "z"
 stderr:
 "Ú"z\.\.\. skipped '(.*?)'r<   ÚOKÚFAILÚERROR)	r  Ú_DEBUGÚprintÚreÚsearchr§   Úgroupr3   r#   )r   ÚoÚeÚmÚbackendÚinjected_methodr  s       €€€r   Útest_templatez5TestNumThreadsBackends._inject.<locals>.test_templateY  sŽ   ø€ Ø×4Ñ4°_ÀgØ5@óB‰DˆAˆqà�{Š{Ýº1ºaÐ@ÔAô —	‘	Ð3°QÓ7ˆAØˆ}Ø—‘˜aŸg™g a›jÔ)Ø�M‰M˜$ Ô"Ø�O‰O˜F¨!˜OÔ,Ø�O‰O˜G¨1Ð,Õ-r   r<   Ú_Ú_threadsÚlong_running)r  Ú_classr  Úsetattrr   )
ÚclsÚnamer*  Úbackend_guardr  ÚthemodÚtheclsr,  Úinjected_testr+  s
     ` `    @r   Ú_injectzTestNumThreadsBackends._injectS  sa   ú€ à—‘ˆØ—‘×$Ñ$ˆÚ(.²¹Ð=ˆö	.ð /3°1°2ªhºÂÐMˆÜ��]Ø#”�NÓ#¡M°-Ó$@ÓAõ	Cr   c           	      ó  — | j                   j                  j                  «       D ][  }| j                  j	                  «       D ]<  \  }}| j
                  D ](  }|j                  d«      sŒ| j                  ||||«       Œ* Œ> Œ] y )NÚ_test_)r0  Ú__dict__r  ÚbackendsÚitemsr  r  r8  )r2  r3  r*  r4  r  s        r   ÚgeneratezTestNumThreadsBackends.generatek  sj   € à—J‘J×'Ñ'×,Ñ,Ö.ˆDØ*-¯,©,×*<Ñ*<Ö*>Ñ&�˜Ø#&§?¤?�KØŸ?™?¨8Ô4Ø Ø—K‘K  g¨}¸kÕJñ $3ñ +?ñ /r   N)r  r  r  r   r0  r"  r
   r   r  r  Úclassmethodr8  r>  )Ú.0ri   r
   s   000r   r  r  E  si   „ Ø€FØ€Fñ /ÕPÑ.˜°!´v×7OÑ7OÓ2O’1Ð.ÓP€Kò/ð ñCó ðCð. ñKó ñKùôE Qs
   �A¨Ar  Ú__main__)"Ú
__future__r   r   r   r	  r  r$  ræ   r  Únumpyr$   Únumbar   r   r   r	   r
   r   r   Únumba.np.ufunc.parallelr   Únumba.core.errorsr   Únumba.tests.supportr   r   r   Ú!numba.tests.test_parallel_backendr   r   r  r>  r  Úmainr.   r   r   Ú<module>rJ     s‚   ðç @Ñ @ã 
Û 	Û 	Û Û ã ÷1÷ 1ñ 1å 1Ý )ß GÑ GÝ >ôn6�Xô n6ôb-KÐ-¨xô -Kð` × Ñ Ô !àˆzÒØ€H‡M�M…Oð r   