B
      ›\x@  ã               @   sP   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„ Zdd„ Z	dd„ Z
dS )	é    )Úprint_functionÚdivisionÚabsolute_importNc        G   
   C   s`  dd l } dd l}dd l}ddlm} ddlm} ddlm} ddlm	} ddlm
} ddlm}m}	 dd l}
dd l}dd lm} dd l}ddlm} dd	lm} dd
lm}m} zšyVd}tdƒ tdƒ t| ¡ ƒ tdƒ tdƒ |  ¡ }t|d|  ¡ f ƒ t|d| ¡ f ƒ |dkr°d}yÌd}t|dƒ´}| ¡   ¡ }x |D ]˜}| !|¡rJ| !d| ¡r®d| "d¡d  #¡  }t$|dƒ}t%t&|ƒ 'd¡ƒ}t|d|f ƒ n2| !d| ¡rJ| "d¡d  #¡ }t|d|f ƒ qJW W d Q R X W n* t(k
r   t|d| )¡ f ƒ Y nX yld d!„ }d"}t$||ƒd ƒ}d#}t$||ƒd ƒ}|d$krht|d% ƒ n t*|ƒt*|ƒ } t|d&| f ƒ W n" t(k
r¬   t|d' ƒ Y nX nt|d| )¡ f ƒ y| +¡ }!W n" t,k
rò   t|d( ƒ Y n>X t-d)d*„ |! .¡ D ƒƒ}"|
 /d+ 0|"¡d,¡}#t|d- ƒ t|#ƒ tdƒ td.ƒ t|d/| j d0d1f ƒ t|d2|  1¡ f ƒ t|d3|f ƒ t|d4|  2¡ f ƒ yš|dkr¦|  3¡ }$n0|d5krº|  4¡ }$n|d6krÎ|  5¡ }$nt,d7ƒ‚d 0d8d*„ t6| 7|$¡ƒD ƒ¡}%t|d9|%f ƒ |dkr(t|d:d+ 0|  8¡ ¡f ƒ W n   td;ƒ Y nX tdƒ td<ƒ t|d=|  9¡ f ƒ t|d>|  :¡ f ƒ t|d?|  ;¡ f ƒ t|d@d+ 0dAd*„ | <¡ D ƒ¡f ƒ tdƒ tdBƒ t|dCdD 0dEd*„ |j=D ƒ¡f ƒ tdƒ tdFƒ y| >¡ d  W n¨ t(k
rª }& zˆdG}'dH}(dI})dJ}*t?|&dKd ƒ}+|+d k	rr|'|+krP|'|) },n |(|+krd|(|) },n|*dL |+ },n|*d+ t%|&ƒ },tdM|,t%t@|&ƒƒf ƒ W d d }&~&X Y njX yR| A¡  | Bd¡}-| C| D|-¡¡ t|dN|-jEf ƒ tdOƒ |jFjGtHj dPdQ W n   tdRƒ Y nX tdƒ tdSƒ | I¡ }.t|dT|.f ƒ g }/y|	 J¡  |/ KdU¡ W n   Y nX y| L¡  M¡ }0|/ KdV¡ W n   Y nX |.sêddWlNmO}1 y
|1jI W n, t(k
rÔ }& zt%|&ƒ}+W d d }&~&X Y nX dX}+t|dY|+f ƒ |/rt|dZd[ 0|/¡f ƒ yädd\lNmO}1mP}2 d]d^„ }3td_tQ|1jRƒ ƒ x^tS|1jRƒD ]P\}4}5td`|4 ƒ tda|3|5jTƒ ƒ tdb|3|5jUƒ ƒ tdc|5jV ƒ tdƒ q>W g }6x4|1jRD ]*}7|7jWrž|7jVddkrž|6 K|3|7jUƒ¡ qžW t|de|2ƒ  d[ 0|6¡f ƒ W n4 tXk
r }& ztdfƒ t|&ƒ W d d }&~&X Y nX tdƒ tdgƒ d0}8yVtHj  !dh¡rP| Ydi¡ n8tHj  !dj¡rj| Ydk¡ ntHj  !dl¡r„| Ydm¡ ndP}8W n   dP}8Y nX t?|jZdnd ƒ}9|9d k	rº|9ƒ ndP}:|j[oÎ|:oÎ|8};t|do|j[f ƒ t|dp|8f ƒ t|dq|:f ƒ t|dr|;f ƒ tdƒ tdsƒ dtdu„ }<yddvl\m]}= t|dw ƒ W nF t^k
	rŒ }& z&t|dx ƒ t|dy|<|&dzƒf ƒ W d d }&~&X Y nX ydd{l\m_}> t|d| ƒ W nF t^k
	rð }& z&t|d} ƒ t|dy|<|&d~ƒf ƒ W d d }&~&X Y nX yddl\m`}? t|d€ ƒ W nF t^k

rT }& z&t|d ƒ t|dy|<|&d‚ƒf ƒ W d d }&~&X Y nX tdƒ tdƒƒ dP}@x8tajb .¡ D ]*\}A}B|A !d„¡
rvt||A|Bf ƒ d0}@
qvW |@
s²td…ƒ tdƒ td†ƒ d‡dˆd‰g}0y||0ƒ}CW n0 tXk
r }& ztdŠ|& ƒ W d d }&~&X Y núX d 0|C cd‹¡  ¡ ¡}D| d|D¡}EdŒddŽddg}Fx>|FD ]6}Ayt||A|E|A f ƒ W n tek
rn   Y nX q<W d‡d‘g}0y||0ƒ}CW n2 |k
r¼ }& ztd’|&jf ƒ W d d }&~&X Y nFX tdƒ td“ƒ |C cd‹¡  ¡ }Dx$|DD ]}A|Ad d”krât|Aƒ qâW tdƒ W n< tXk
rH }& ztd•ƒ td–ƒ t|&ƒ W d d }&~&X Y nX W d td—d˜ ƒ X d S )™Nr   )Úconfig)Úcuda)Úcudadrv)Údriver)Úroc)ÚhlcÚlibhlc)Údatetime)Úchain)Úcheck_outputÚCalledProcessErrorz%-45s : %-szP--------------------------------------------------------------------------------z__Time Stamp__Ú z__Hardware Information__ZMachinezCPU NameZLinuxZCpus_allowedz/proc/self/statusÚrtz%s:z0x%sú:é   é   Ú1zNumber of accessible CPU coresz%s_list:zListed accessible CPUs coresz	CPU countc          	   S   s"   t | dƒ}| ¡  ¡ S Q R X d S )Nr   )ÚopenÚreadÚ
splitlines)ÚlocÚf© r   ú0lib/python3.7/site-packages/numba/numba_entry.pyÚscrape_lines?   s    z"get_sys_info.<locals>.scrape_linesz(/sys/fs/cgroup/cpuacct/cpu.cfs_period_usz'/sys/fs/cgroup/cpuacct/cpu.cfs_quota_uséÿÿÿÿ)zCFS restrictionsÚNonez(CFS restrictions (CPUs worth of runtime))zCFS restrictionszInformation not available)zCPU FeaturesZNAc             S   s   g | ]\}}|r|‘qS r   r   )Ú.0ÚkeyÚvaluer   r   r   ú
<listcomp>V   s    z get_sys_info.<locals>.<listcomp>ú éP   )zCPU Featuresr   z__OS Information__ZPlatformT)ZaliasedZReleasezSystem NameZVersionZWindowsZDarwinzUnknown system.c             S   s   g | ]}|d kr|nd‘qS )r   r$   r   )r    Úxr   r   r   r#   k   s   zOS specific infoz
glibc infoz5Error: System name incorrectly identified or unknown.z__Python Information__zPython CompilerzPython ImplementationzPython VersionzPython Locale c             S   s   g | ]}|d k	r|‘qS )Nr   )r    r&   r   r   r   r#   €   s    z__LLVM information__zLLVM versionÚ.c             S   s   g | ]}t |ƒ‘qS r   )Ústr)r    Úkr   r   r   r#   ‡   s    z__CUDA Information__z#CUDA driver library cannot be foundzCUDA is disabledz( or no CUDA enabled devices are present.z)Error: CUDA device intialisation problem.Úmsgz	 Message:z%s
Error class: %szCUDA driver versionzCUDA libraries:F)Zprint_pathszIError: Probing CUDA failed (device and driver present, runtime problem?)
z__ROC Information__zROC availablezlibrocmlite libraryzROC command line tools)ÚhsazNo ROC toolchains found.zError initialising ROC due tozAvailable Toolchainsz, )r+   Ú
dgpu_countc             S   s   t | tƒr|  d¡S | S )Nzutf-8)Ú
isinstanceÚbytesÚdecode)r&   r   r   r   Ú<lambda>Î   s    zget_sys_info.<locals>.<lambda>z
Found %s HSA Agents:zAgent id  : %sz    vendor: %sz      name: %sz      type: %sZGPUzFound %s discrete GPU(s)z:No HSA Agents found, encountered exception when searching:z__SVML Information__Zlinuxz
libsvml.soÚdarwinzlibsvml.dylibÚwinZsvml_dispmdZhas_svmlzSVML state, config.USING_SVMLzSVML library found and loadedz llvmlite using SVML patched LLVMzSVML operationalz__Threading Layer Information__c             S   s^   yDdd„ | j  d¡D ƒ\}}}tj |¡d }||krBd||f S W n tk
rX   Y nX dS )Nc             S   s   g | ]}|  ¡ ‘qS r   )Ústrip)r    r&   r   r   r   r#     s    z5get_sys_info.<locals>.parse_error.<locals>.<listcomp>r   r   z%s: %szUnknown import problem.)r*   ÚsplitÚosÚpathÚBaseException)ÚeZbackendr6   ZproblemZsymbolZextn_dsor   r   r   Úparse_errorÿ   s    z!get_sys_info.<locals>.parse_error)Útbbpool)zTBB Threading layer availableT)zTBB Threading layer availableFz+--> Disabled due tor:   )Úomppool)z OpenMP Threading layer availableT)z OpenMP Threading layer availableFr;   )Ú	workqueue)z#Workqueue Threading layer availableT)z#Workqueue Threading layer availableFr<   z*__Numba Environment Variable Information__ZNUMBA_z	None set.z__Conda Information__ZcondaÚinfoz--jsonz,Conda not present/not working.
Error was %s
zutf-8Zconda_build_versionZconda_env_versionÚplatformÚpython_versionZroot_writableÚlistz*Error: Conda command failed. Error was %s
z__Current Conda Env__ú#z9Error: The system reporting tool has failed unexpectedly.zException was:z%saµ  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.
=============================================================
)gr>   ÚjsonÚmultiprocessingZnumbar   r   Z
numba.cudar   Znumba.cuda.cudadrv.driverr   r	   Znumba.roc.hlcr
   r   ÚtextwrapZctypesZllvmlite.bindingZbindingÚlocaler   Ú	itertoolsr   Ú
subprocessr   r   ÚprintZutcnowÚsystemÚmachineZget_host_cpu_namer   r   r   Ú
startswithr4   r3   Úintr(   ÚbinÚcountr7   Ú	cpu_countÚfloatZget_host_cpu_featuresÚRuntimeErrorÚsortedÚitemsZfillÚjoinÚreleaseÚversionZlinux_distributionZ	win32_verZmac_verr@   Úfrom_iterableZlibc_verZpython_compilerZpython_implementationr?   ZgetdefaultlocaleZllvm_version_infoZlist_devicesÚgetattrÚtypeZdetectZc_intZcuDriverGetVersionZbyrefr"   ZlibsZtestÚsysZis_availableZHLCÚappendZCmdLineZcheck_toolingZnumba.roc.hsadrv.driverr+   r,   ÚlenZagentsÚ	enumerateZvendor_nameÚnameZdeviceZis_componentÚ	ExceptionZload_library_permanentlyZtargetsZ
USING_SVMLZnumba.npyufuncr:   ÚImportErrorr;   r<   r5   Úenvironr/   ÚloadsÚKeyErrorÚoutput)Gr>   rB   rC   r   Zcur   Zcudriverr	   r
   r   ZtwZctZllvmbindrE   r   r   r   r   ZfmtZsystem_nameZstrmatchr   r   Z	proc_statr&   ZhexnumZacc_cpusZ_nZ_ar   Z
cfs_periodZ	cfs_quotaZruntime_amountZ
featuremapZfeaturesZcpu_featr=   Zbufr8   Zmsg_not_foundZmsg_disabled_by_userZmsg_endZmsg_generic_problemr*   Zerr_msgZdvZroc_is_availableZ
toolchainsÚcmdr+   r,   r/   ÚiZagentZ_dgpusÚaZhave_svml_libraryÚfuncZllvm_svml_patchedZsvml_operationalr9   r:   r;   r<   Z_envvar_foundr)   ÚvZ	conda_outÚdataZjsondÚkeysr   r   r   Úget_sys_info	   s    
















*


"""



 
rl   c              C   sž   t  ¡ } | jdddd | jdddd | jddd	d | jd
ddd | jdddd | jdddd | jdddd | jddddd | jdddd | S )Nz
--annotatezAnnotate sourceÚ
store_true)ÚhelpÚactionz--dump-llvmzPrint generated llvm assembly)ro   rn   z--dump-optimizedz Dump the optimized llvm assemblyz--dump-assemblyz Dump the LLVM generated assemblyz
--dump-cfgz([Deprecated] Dump the control flow graphz
--dump-astz[Deprecated] Dump the ASTz--annotate-htmlr   z Output source annotation as html)Únargsrn   z-sz	--sysinfoz+Output system information for bug reportingÚfilenameú?zPython source filename)ÚargparseÚArgumentParserÚadd_argument)Úparserr   r   r   Úmake_parserh  s&    
rw   c              C   s.  t ƒ } |  ¡ }|jr&tdƒ t d¡ |jr>tdƒ t d¡ |jr\tdƒ tƒ  t d¡ t	t
|jƒƒtjd< |jd k	r¼yddlm} W n tk
r¦   tdƒ‚Y nX t	|jd ƒtjd	< t	t
|jƒƒtjd
< t	t
|jƒƒtjd< t	t
|jƒƒtjd< |jrtj|jg}t |¡ ntdƒ t d¡ d S )NzCFG dump is removed.r   z5AST dump is removed.  Numba no longer depends on AST.zSystem info:r   ZNUMBA_DUMP_ANNOTATION)ÚTemplatez#Please install the 'jinja2' packageZNUMBA_DUMP_HTMLZNUMBA_DUMP_LLVMZNUMBA_DUMP_OPTIMIZEDZNUMBA_DUMP_ASSEMBLYz<numba: error: the following arguments are required: filename)rw   Ú
parse_argsZdump_cfgrH   rZ   ÚexitZdump_astZsysinforl   r(   rL   Zannotater5   ra   Zannotate_htmlZjinja2rx   r`   Z	dump_llvmZdump_optimizedZdump_assemblyrq   Ú
executablerG   Zcall)rv   Úargsrx   re   r   r   r   Úmain~  s6    



r}   )Z
__future__r   r   r   rZ   rs   r5   rG   rl   rw   r}   r   r   r   r   Ú<module>   s     a