U
    hâËd€h  ã                   @   s2  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Zd dlmZ d dl	m	Z	 d dl
mZ d dlmZmZmZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ  d d
l!m"Z# d dl$m%Z% dZ&zd dl'Z'W n e(k
rô   Y nX dZ&ddgZ)d\Z*Z+Z,dZ-dZ.d\Z/Z0d\Z1Z2dZ3d\Z4Z5dZ6d\Z7Z8d\Z9Z:d\Z;Z<dZ=dZ>dZ?dZ@dZAd ZBd!ZCd"ZDd#ZEd$ZFd%ZGd&ZHd'ZId(\ZJZKd)ZLd*ZMd+ZNd,ZOd-ZPd.ZQd/ZRd0ZSd1\ZTZUd2ZVd3ZWd4\ZXZYd5\ZZZ[d6Z\d7\Z]Z^d8Z_d9\Z`Zad:\ZbZcd;Zdd<Zed=Zfd>Zgd?Zhg Zig Zjd@dA„ ZkdBd„ ZldFdDd„ZmendEk�r.emƒ  dS )Gé    N)Úredirect_stdout)Údatetime)ÚStringIO)Úcheck_outputÚPIPEÚCalledProcessError)Ú__version__)Úcudar   )Úcudadrv)Údriver)Úruntime)ÚconfigFTÚget_sysinfoÚdisplay_sysinfo)ZStartz	Start UTCZRuntimeúNumba VersionÚMachine)úCPU Nameú	CPU Count)zCPUs AllowedzList CPUs AllowedúCPU Features)z	CFS Quotaz
CFS PeriodzCFS Restriction)z	Mem TotalzMem Available)úPlatform NameúPlatform Release)úOS Nameú
OS VersionúOS Specific VersionúLibc VersionzPython CompilerzPython ImplementationzPython VersionzPython Localeúllvmlite VersionúLLVM VersionzCUDA Device InitúCUDA Driver VersionúCUDA Runtime VersionzNVIDIA CUDA BindingszNVIDIA CUDA Bindings In Use)zCUDA Detect OutputzCUDA Lib Testz1NVIDIA CUDA Minor Version Compatibility Availablez.NVIDIA CUDA Minor Version Compatibility Neededz.NVIDIA CUDA Minor Version Compatibility In UseúNumPy VersionúNumPy Supported SIMD featuresúNumPy Supported SIMD dispatchúNumPy Supported SIMD baselinezNumPy AVX512_SKX detected)z
SVML StatezSVML Lib LoadedzLLVM SVML PatchedúSVML Operational)zTBB ThreadingzTBB Threading Error)zOpenMP ThreadingzOpenMP Threading ErrorzOpenMP vendor)zWorkqueue ThreadingzWorkqueue Threading ErrorzNumba Env Vars)zConda Buildz	Conda Env)zConda PlatformzConda Python VersionzConda Root WritablezInstalled PackageszPsutil AvailableZErrorsZWarningsc                    sº  G dd„ dt ƒ}G dd„ dt ƒ}|dƒ|dƒf|dƒ|dƒfttttttd	œd
œd|dƒ|dƒfttdœd
œddttdœtdtdidœdœ}i ‰ | | i ¡‰ˆ dd¡}t�rt	 
¡ }ˆ  t|jt|ji¡ t	 ¡ }t|dƒræ| ¡ ng }|�r0t|ƒˆ t< d dd„ |D ƒ¡ˆ t< nt d¡ |ˆ dd¡7 }g }|D �]^}	t|	dƒ�rtj |	d ¡�rîzPt|	d dƒ�8}
|
 ¡ }|�r d |	d |d f¡|d< | |¡ W 5 Q R X W n> tk
�rê } zt d|› �¡ W Y ¢�q8W 5 d }~X Y nX nt d  |	d ¡¡ �q8nŽzt|	td!�}W nB tt fk
�rZ } zt d"|› �¡ W Y ¢�q8W 5 d }~X Y nX t|	d#ƒ�r„d$ d%d„ | !¡ D ƒ¡d& }| | "¡  !¡ ¡ �q8ˆ d'i ¡}|D ]\}| #¡ | $¡ @ }|�rèt|ƒdk�rè|| %¡  }|ˆ |< nt|ƒdk�rªt&d(|› �ƒ �qª‡ fd)d*„}‡ ‡fd+d,„}z|ƒ  t�s6|ƒ  W n4 t'k
�rl } zt d-|› �¡ W 5 d }~X Y nX t(d.d/„ it)d0d/„ it)d1d/„ idœ}| | i ¡}ˆ  d2d3„ | *¡ D ƒ¡ ˆ S )4Nc                   @   s   e Zd ZdZdS )z&get_os_spec_info.<locals>.CmdBufferOutTN)Ú__name__Ú
__module__Ú__qualname__Úbuffer_output_flag© r(   r(   úQ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/misc/numba_sysinfo.pyÚCmdBufferOutq   s   r*   c                   @   s   e Zd ZdZdS )z%get_os_spec_info.<locals>.CmdReadFileTN)r$   r%   r&   Úread_file_flagr(   r(   r(   r)   ÚCmdReadFilet   s   r,   )ú'/sys/fs/cgroup/cpuacct/cpu.cfs_quota_us)ú(/sys/fs/cgroup/cpuacct/cpu.cfs_period_us)z/proc/meminfo)z/proc/self/status)z	MemTotal:zMemAvailable:zCpus_allowed:zCpus_allowed_list:r-   r.   )ÚcmdÚcmd_optionalÚkwdsr(   )ÚwmicÚOSÚgetÚTotalVirtualMemorySize)r2   r3   r4   ÚFreeVirtualMemory)r5   r6   ))Zsysctlz
hw.memsizeZvm_stat)zhw.memsize:zfree:é   i   )r/   r0   r1   Úunits)ÚLinuxÚWindowsÚDarwinr/   Úcpu_affinityú c                 s   s   | ]}t |ƒV  qd S ©N©Ústr)Ú.0Únr(   r(   r)   Ú	<genexpr>·   s     z#get_os_spec_info.<locals>.<genexpr>zWWarning (psutil): psutil cannot be imported. For more accuracy, consider installing it.r0   r+   r   ÚrzError (file read): zWarning (no file): {})ÚstderrzError (subprocess): r'   ó    c                 s   s   | ]
}|V  qd S r>   r(   )rA   Úliner(   r(   r)   rC   Ü   s     ó   
r1   zAmbiguous output: c                     s„   ˆ   td¡ ¡ } | r$t| d ƒˆ t< ˆ   td¡ ¡ } | rHt| d ƒˆ t< ˆ   td¡dkr€ˆ   td¡}ˆ   td¡}|| }|ˆ t< d S )NÚ éÿÿÿÿ)r4   Ú
_cfs_quotaÚsplitÚfloatÚ_cfs_periodÚ_cfs_restrict)rL   Z	cfs_quotaZ
cfs_periodZruntime_amount)Úos_spec_infor(   r)   Úformatê   s    z get_os_spec_info.<locals>.formatc                     sÎ   t dtdi} |  ˆ di ¡¡ t tfD ]8}d dd„ ˆ  |d¡D ƒ¡}t|pNdƒ| |  ˆ |< q&ˆ  td¡ ¡ }|rª|d }| d¡d }tt	t|p–dd	ƒƒƒ 
d
¡ˆ t< ˆ  td¡ ¡ }|rÊ|d ˆ t< d S )Ni   r8   rI   c                 s   s   | ]}|  ¡ r|V  qd S r>   )Úisdigit)rA   Údr(   r(   r)   rC   ý   s      z<get_os_spec_info.<locals>.format_optional.<locals>.<genexpr>r   rJ   ú,é   Ú1)Ú
_mem_totalÚ_mem_availableÚupdater4   ÚjoinÚintÚ_cpus_allowedrL   r@   ÚbinÚcountÚ
_cpus_list)r8   ÚkÚdigitsrL   rB   ©rP   Úparamsr(   r)   Úformat_optionalø   s     z)get_os_spec_info.<locals>.format_optionalzError (format shell output): c                   S   s   d  t ¡ ¡S )Nr=   )rZ   ÚplatformÚlibc_verr(   r(   r(   r)   Ú<lambda>  ó    z"get_os_spec_info.<locals>.<lambda>c                   S   s   d  dd„ t ¡ D ƒ¡S )Nr=   c                 s   s   | ]
}|V  qd S r>   r(   )rA   Úsr(   r(   r)   rC     s    ú5get_os_spec_info.<locals>.<lambda>.<locals>.<genexpr>)rZ   re   Ú	win32_verr(   r(   r(   r)   rg     s   
ÿc                   S   s   d  dd„ tt ¡ ƒD ƒ¡S )NrI   c                 s   s    | ]}|D ]}|pd V  q
qdS )r=   Nr(   )rA   ri   Úir(   r(   r)   rC     s      rj   )rZ   Útuplere   Úmac_verr(   r(   r(   r)   rg     s   

ÿc                 S   s   i | ]\}}||ƒ “qS r(   r(   )rA   r`   Úfr(   r(   r)   Ú
<dictcomp>  s      z$get_os_spec_info.<locals>.<dictcomp>)+rm   rW   rX   r\   r_   rK   rN   r4   Ú_psutil_importÚpsutilZvirtual_memoryrY   ÚtotalÚ	availableÚProcessÚhasattrr<   ÚlenrZ   Ú_warning_logÚappendÚosÚpathÚexistsÚopenÚ	readlinesÚextendÚOSErrorÚ
_error_logrQ   r   r   r   Ú
splitlinesÚdecodeÚkeysrL   ÚpopÚprintÚ	ExceptionÚ_libc_versionÚ_os_spec_versionÚitems)Úos_namer*   r,   Zshell_paramsZcmd_selectedÚvmÚpZcpus_allowedÚoutputr/   ro   ÚoutÚer1   rG   Úmatchr`   rQ   rd   Zos_specific_funcsZkey_funcr(   rb   r)   Úget_os_spec_infoe   sØ    þþù÷þýúý  þõà2  þÿ


" ÿ ÿ ÿør’   c            %   "   C   s¦  t t ¡ tt ¡ tt ¡ tt	 
¡ tt ¡ ttjdd�tt ¡ tt ¡ tt ¡ tt ¡ tt ¡ tt ¡ tdd„ tj ¡ D ƒtt t!d "dd„ t	j#D ƒ¡t$t%t&t'i} zt	 (¡ }W n2 t)k
rÜ } zt* +d|› �¡ W 5 d }~X Y n&X t,d	d
„ | ¡ D ƒƒ}d "|¡| t-< z d "dd
„ t. /¡ D ƒ¡| t0< W n4 t1k
�rV } zt* +d|› �¡ W 5 d }~X Y nX zt2 3¡ d  W n´ t1k
�r } z’d| t4< d}d}d}d}t5|dd ƒ}|d k	�rà||k�r¾|| }	n ||k�rÒ|| }	n|d | }	n|d t6|ƒ }	t7 +d|	t6t8|ƒƒf ¡ W 5 d }~X Y �n˜X �zTd| t4< t9ƒ }
t:|
ƒ� t2 ;¡  W 5 Q R X |
 <¡ | t=< |
 >¡  t? @¡ }tA @¡ }d| | tB< d| | tC< t9ƒ }
t:|
ƒ� tDjEjFtGjdd� W 5 Q R X |
 <¡ | tH< |
 >¡  zddlImI} d}W n tJk
�rö   d}Y nX || tK< tLtDjMjNƒ}|| tO< z$ddlPmQ} ddlRmS} d| tT< W n tJk
�rV   d| tT< Y nX ||k| tU< tLtVjWƒ| tX< W n> t1k
�r² } zt7 +dt8|ƒ› d|› �¡ W 5 d }~X Y nX tYjjZ| t[< zddl\m]}m^}m_} W n tJk
�rö   d| t`< Y n<X dd
„ | ¡ D ƒ}|| ta< || tb< || tc< | dd d¡| t`< d}zVtGj ed!¡�rRt	 fd"¡ n8tGj ed#¡�rlt	 fd$¡ ntGj ed%¡�r†t	 fd&¡ nd}W n t1k
�r¦   d}Y nX t5t	jgd'd ƒ}|�rÂ|ƒ nd| th< tVji| tj< || tk< tl| tj | tk | th fƒ| tm< d(d)„ }z*dd*lnmo} dd+lpmq} |ƒ  d| tr< W n: tJk
�rf } zd| tr< ||d,ƒ| ts< W 5 d }~X Y nX z"dd-lnmt} d| tu< |jv| tw< W n: tJk
�rÄ } zd| tu< ||d.ƒ| tx< W 5 d }~X Y nX zdd/lnmy} d| tz< W n: tJk
�r } zd| tz< ||d0ƒ| t{< W 5 d }~X Y nX d1}zt||ƒ}W n– t1k
�rÀ } zvt7 +d2|› d3�¡ tGj}d4d5d6f}zt||ƒ}W n4 t1k
�rž } zt* +d7|› �¡ W 5 d }~X Y nX | ~¡  ¡ | t€< W 5 d }~X Y n¨X t� ‚| ~¡ ¡} tƒt„t…t†t‡d8œ}!|! ¡ D ]\}"}#|  d|"d9¡| |#< �qèd:}zt||ƒ}W n4 tˆk
�rH } zt* +d;|› �¡ W 5 d }~X Y n X | ~¡  ¡ }$d<d
„ |$D ƒ| t€< |  ‰tŠ| t ƒ¡ t*| t‹< t7| tŒ< t ¡ | t    �¡ | tŽ< | S )=NT)Úaliasedc                 S   s    i | ]\}}|  d ¡r||“qS )ZNUMBA_©Ú
startswith©rA   r`   Úvr(   r(   r)   rp   3  s    
ÿ zget_sysinfo.<locals>.<dictcomp>Ú.c                 s   s   | ]}t |ƒV  qd S r>   r?   ©rA   rl   r(   r(   r)   rC   6  s     zget_sysinfo.<locals>.<genexpr>zError (CPU features): c                 S   s   g | ]\}}|r|‘qS r(   r(   )rA   ÚkeyÚvaluer(   r(   r)   Ú
<listcomp>A  s      zget_sysinfo.<locals>.<listcomp>r=   c                 S   s   g | ]}t |ƒ‘qS r(   r?   r™   r(   r(   r)   rœ   I  s     zError (locale): r   Fz#CUDA driver library cannot be foundzCUDA is disabledz( or no CUDA enabled devices are present.z#CUDA device initialisation problem.Úmsgz	 Message:z&Warning (cuda): %s
Exception class: %sz%s.%s)Zprint_paths)r	   )Úcompile_ptx)ÚCubinLinkerzYWarning (cuda): Probing CUDA failed (device and driver present, runtime problem?)
(cuda) z: )Ú__cpu_features__Ú__cpu_dispatch__Ú__cpu_baseline__c                 S   s   g | ]\}}|r|‘qS r(   r(   r–   r(   r(   r)   rœ   �  s      Z
AVX512_SKXÚlinuxz
libsvml.soÚdarwinzlibsvml.dylibÚwinZsvml_dispmdZhas_svmlc                 S   s`   zFdd„ | j  d¡D ƒ\}}}tj |¡d }||krDd||f W S W n tk
rZ   Y nX dS )Nc                 S   s   g | ]}|  ¡ ‘qS r(   )Ústrip)rA   Úxr(   r(   r)   rœ   Ã  s     z4get_sysinfo.<locals>.parse_error.<locals>.<listcomp>ú:r7   z%s: %szUnknown import problem.)r�   rL   rz   r{   r‡   )r�   Úbackendr{   ÚproblemÚsymbolZextn_dsor(   r(   r)   Úparse_error¿  s    z get_sysinfo.<locals>.parse_error)Útbbpool)Ú_check_tbb_version_compatibler­   )Úomppoolr¯   )Ú	workqueuer°   )ÚcondaÚinfoz--jsonz)Warning: Conda not available.
 Error was Ú
z-mÚpipÚlistzError (pip): )Zconda_build_versionZconda_env_versionre   Úpython_versionZroot_writablezN/A)r±   rµ   zError (conda): c                 S   s   g | ]}|  d ¡s|‘qS )ú#r”   )rA   Úlr(   r(   r)   rœ     s     
 )�Ú_startr   ÚnowÚ
_start_utcÚutcnowÚ_machinere   ÚmachineÚ	_cpu_nameÚllvmbindZget_host_cpu_nameÚ
_cpu_countÚmultiprocessingÚ	cpu_countÚ_platform_nameÚ_platform_releaseÚreleaseÚ_os_nameÚsystemÚ_os_versionÚversionÚ_python_compÚpython_compilerÚ_python_implÚpython_implementationÚ_python_versionr¶   Ú_numba_env_varsrz   ÚenvironrŠ   Ú_numba_versionÚversion_numberÚ_llvm_versionrZ   Zllvm_version_infoÚ_llvmlite_versionÚllvmlite_versionÚ_psutilrq   Zget_host_cpu_featuresÚRuntimeErrorr�   ry   ÚsortedÚ_cpu_featuresÚlocaleÚgetdefaultlocaleÚ_python_localer‡   ÚcuZlist_devicesÚ_cu_dev_initÚgetattrr@   rx   Útyper   r   ÚdetectÚgetvalueÚ_cu_detect_outÚcloseÚcudriverÚget_versionÚ	curuntimeÚ_cu_drv_verÚ
_cu_rt_verr
   ZlibsÚtestÚsysÚ_cu_lib_testr	   ÚImportErrorÚ_cu_nvidia_bindingsÚboolr   ZUSE_NV_BINDINGÚ_cu_nvidia_bindings_usedZptxcompilerrž   ZcubinlinkerrŸ   Ú_cu_mvc_availableÚ_cu_mvc_neededr   Z'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYÚ_cu_mvc_in_useÚnpZfull_versionÚ_numpy_versionZnumpy.core._multiarray_umathr    r¡   r¢   Ú_numpy_AVX512_SKX_detectedÚ_numpy_supported_simd_featuresÚ_numpy_supported_simd_dispatchÚ_numpy_supported_simd_baseliner4   r•   Zload_library_permanentlyÚtargetsÚ_llvm_svml_patchedZ
USING_SVMLÚ_svml_stateÚ_svml_loadedÚallÚ_svml_operationalZnumba.np.ufuncr­   Znumba.np.ufunc.parallelr®   Ú_tbb_threadÚ
_tbb_errorr¯   Ú_openmp_threadZopenmp_vendorÚ_openmp_vendorÚ_openmp_errorr°   Ú_wkq_threadÚ
_wkq_errorr   Ú
executablerƒ   r‚   Ú	_inst_pkgÚjsonÚloadsÚ_conda_build_verÚ_conda_env_verÚ_conda_platformÚ_conda_python_verÚ_conda_root_writabler   rY   r’   Ú_errorsÚ	_warningsÚtotal_secondsÚ_runtime)%Zsys_infoZfeature_mapr�   ÚfeaturesZmsg_not_foundZmsg_disabled_by_userZmsg_endZmsg_generic_problemr�   Úerr_msgrŽ   Z
cu_drv_verZ	cu_rt_verr	   Znvidia_bindings_availableZnv_binding_usedrž   rŸ   r    r¡   r¢   Zfeat_filteredZsvml_lib_loadedÚfuncr¬   r­   r®   r¯   r°   r/   Z	conda_outÚreqsZjsondr„   Zconda_kZ	sysinfo_kÚdatar(   r(   r)   r   #  sz         
           î"
ÿ"




ÿ


ÿÿ
ÿ

ý
   ""û"é-   c           	   Z      s<  G dd„ dt ƒ}G dd„ dtƒ}G dd„ dtƒ}| d kr>tƒ } dˆ› d�‰ d	}d
dd|  td¡fd|  td¡fd|  td¡fddd|  td¡fd|  td¡fd|  t	d¡fd|  t
d¡fd|  td¡fd|  td¡fddd ‡fdd„ttj|  td¡dˆ d�ƒD ƒ¡fdd|  td ¡| �p"df|  td!¡d"k�sD|  td#¡�rHd$nd%|  td ¡| �p^dfdd&d'|  td¡fd(|  td¡fd)|  td¡fd*|  td¡fd+|  td¡fd,|  td¡fdd-|d.d/„ |  ¡ D ƒƒdd0d1|  td¡fd2|  td¡fdd3d4|  td¡fdd5d6|  td¡fd7|  t d¡fd8|  t!d¡fd9|  t"d¡fd:|  t#d¡fd;|  t$d¡fd<|  t%d¡fd=|  t&d¡fd>|  t'd¡fd?|  t(d¡fdd@dA|  t)d¡fdB||  t*g ¡�p¸dCƒfdD||  t+g ¡�pÐdCƒfdE||  t,g ¡�pèdCƒfdF|  t-d¡fddGdH|  t.d¡fdI|  t/d¡fdJ|  t0d¡fdK|  t1d¡fddLdM|  t2d¡f|  t2d¡�rZdNndO|  t3d¡› �fdP|  t4d¡f|  t4d#¡�ršdQ|  t5d¡› �ndO|  t6d¡› �fdR|  t7d¡f|  t7d#¡�rÌdSndO|  t8d¡› �fddT||  t9i ¡ƒ�pödCddU|dVd/„ |  ¡ D ƒƒ�pdWddX||  t:dY¡ƒd|  t;g ¡�r:dZnd[f||  t;g ¡ƒd|  t<g ¡�r`d\nd]f||  t<g ¡ƒd
d^fX}|D ]¸}t=|d_ƒ�ržt>|d`diŽ n–t=|daƒ�rÐt>t‡ fdbd„| ¡ D ƒƒd`diŽ ndt=|dcƒ�r|D ],}t>t‡ fddd„| ¡ D ƒƒdddeœŽ �qàn$t?|ƒdfk�r,t>ˆ | ƒ nt>|Ž  �q~d S )gNc                   @   s   e Zd ZdZdS )z#display_sysinfo.<locals>.DisplayMapTN)r$   r%   r&   Údisplay_map_flagr(   r(   r(   r)   Ú
DisplayMap  s   r  c                   @   s   e Zd ZdZdS )z#display_sysinfo.<locals>.DisplaySeqTN)r$   r%   r&   Údisplay_seq_flagr(   r(   r(   r)   Ú
DisplaySeq  s   r  c                   @   s   e Zd ZdZdS )z'display_sysinfo.<locals>.DisplaySeqMapsTN)r$   r%   r&   Údisplay_seqmaps_flagr(   r(   r(   r)   ÚDisplaySeqMaps  s   r   z%-zs : %-si   )zP--------------------------------------------------------------------------------)z__Time Stamp__zReport started (local time)ú?zUTC start timezRunning time (s))rI   )z__Hardware Information__r   r   r   zNumber of accessible CPUszList of accessible CPUs coresz(CFS Restrictions (CPUs worth of runtime)ÚNoner   r³   c                 3   s*   | ]"\}}|rd ˆ d  | n|V  qdS )r=   é   Nr(   )rA   rl   r¸   )Úsep_posr(   r)   rC   3  s   ÿz"display_sysinfo.<locals>.<genexpr>éO   )ÚwidthzMemory Total (MB)r   rI   r;   FzMemory Available (MB)zFree Memory (MB))z__OS Information__r   r   r   r   r   r   )z__Python Information__c                 S   s    i | ]\}}|  d ¡r||“qS )ÚPythonr”   r–   r(   r(   r)   rp   K  s     
  z#display_sysinfo.<locals>.<dictcomp>)z__Numba Toolchain Versions__r   r   )z__LLVM Information__r   )z__CUDA Information__zCUDA Device Initializedr   r   zCUDA NVIDIA Bindings AvailablezCUDA NVIDIA Bindings In Usez*CUDA Minor Version Compatibility Availablez'CUDA Minor Version Compatibility Neededz'CUDA Minor Version Compatibility In Use)zCUDA Detect Output:)zCUDA Libraries Test Output:)z__NumPy Information__r   r    )zNone found.r!   r"   z!NumPy AVX512_SKX support detected)z__SVML Information__zSVML State, config.USING_SVMLzSVML Library Loadedz llvmlite Using SVML Patched LLVMr#   )z__Threading Layer Information__zTBB Threading Layer Availablez+-->TBB imported successfully.z+--> Disabled due to z OpenMP Threading Layer Availablez+-->Vendor: z#Workqueue Threading Layer Availablez$+-->Workqueue imported successfully.)z*__Numba Environment Variable Information__)z__Conda Information__c                 S   s    i | ]\}}|  d ¡r||“qS )ZCondar”   r–   r(   r(   r)   rp   Š  s    
ÿ )zConda not available.)z__Installed Packages__)z Couldn't retrieve packages info.z__Error log__zNo errors reported.z__Warning log__zNo warnings reported.)aµ  If requested, please copy and paste the information between
the dashed (----) lines, or from a given specific section as
appropriate.

=============================================================
IMPORTANT: Please ensure that you are happy with sharing the
contents of the information present, any information that you
wish to keep private you should remove before sharing.
=============================================================
r  Úsepr  c                 3   s   | ]\}}ˆ ||f V  qd S r>   r(   r–   ©Úfmtr(   r)   rC   ¥  s     r  c                 3   s"   | ]\}}ˆ d | |f V  qdS )ú	Nr(   r–   r)  r(   r)   rC   ¨  s     )r(  Úendé   )@Údictrm   r   r4   r¹   r»   r  r½   r¿   rÁ   r\   r_   rO   rZ   Ú	enumerateÚtextwrapÚwraprÚ   rW   rÇ   r×   rX   rÄ   rÅ   rÉ   r‰   rˆ   rŠ   rÒ   rÕ   rÔ   rß   ré   rê   rï   rñ   rò   ró   rô   rä   rí   rö   rø   rù   rú   r÷   rý   rþ   rü   r   r  r  r  r  r  r  r  rÐ   r	  r  r  rv   r†   rw   )	r²   r$  r  r  r   ÚMBÚtemplateÚtrS   r(   )r*  r$  r)   r     s>   
ÿ
þÿþ	ÿ
ÿ þ
ÿ
ÿ
ÿ
ÿÿÿÿÿÿÿ
ÿÿ
ÿþÿÿÿ‹~& ÿÚ__main__)Nr  )or
  rÛ   rÂ   rz   re   r0  rì   Ú
contextlibr   r   Úior   Ú
subprocessr   r   r   Únumpyrõ   Zllvmlite.bindingZbindingrÀ   Zllvmliter   rÖ   Znumbar	   rÞ   rÓ   Z
numba.cudar
   Znumba.cuda.cudadrv.driverr   ræ   Znumba.cuda.cudadrv.runtimer   rè   Z
numba.corer   rq   rr   rî   Ú__all__r¹   r»   r  rÒ   r½   r¿   rÁ   r\   r_   rÚ   rK   rN   rO   rW   rX   rÄ   rÅ   rÇ   rÉ   r‰   rˆ   rË   rÍ   rÏ   rÝ   rÕ   rÔ   rß   ré   rê   rï   rñ   rä   rí   rò   ró   rô   rö   rø   rù   rú   r÷   rý   rþ   rü   r   r  r  r  r  r  r  r  rÐ   r  r  r  r  r  r	  r×   r  r  r�   rx   r’   r   r   r$   r(   r(   r(   r)   Ú<module>   s¦   
 ? r
 
