U
    <ºcA  ã                   @   sÞ   d dl Z d dlZd dlZd dlZzd dlZd dlmZ W n ek
rL   Y nX dZ	dZ
dZdZdZdZd	Ze  d
d¡Ze
eddde dddeeddde dddeeddde dddiZdd„ Zdd„ ZedkrÚeƒ  dS )é    N)ÚCommandsz&/tmp/pytorch_blas_compare_environmentsZ
mkl_2020_3Z
mkl_2020_0Z	open_blasZeigen)z
USE_CUDA=0z
USE_ROCM=0)ZcffiZcmakeZ
hypothesisZninjaZnumpyZpyyamlÚ
setuptoolsZtyping_extensionsÚ
SubEnvSpec)Úgeneric_installsÚspecial_installsÚenvironment_variablesÚexpected_blas_symbolsÚexpected_mkl_version© )Úintel)z
mkl=2020.3zmkl-include=2020.3)zBLAS=MKL)Zmkl_blas_sgemmz2020.0.3)r   )z
mkl=2020.0zmkl-include=2020.0z2020.0.0)Zopenblas)zBLAS=OpenBLAS)Z	exec_blasc                  G   s:   t jjj| Ž \}}}|r6tdt| ƒ› d|› d|› ƒ‚|S )zConvenience method.zconda error: z  retcode: Ú
)ÚcondaÚcliZ
python_apiÚrun_commandÚOSErrorÚstr)ÚargsÚstdoutÚstderrÚretcoder
   r
   úU/tmp/pip-unpacked-wheel-gikjz4vx/torch/utils/benchmark/examples/blas_compare_setup.pyÚ	conda_runR   s    r   c                  C   s  t j t¡rtdƒ t t¡ t  t¡ tj	ddt j 
t j t¡¡d d¡ ¡ } t ¡ D ]¶\}}t j t|¡}td|› d|› dƒ ttjd	d
|dƒ tdƒ tjd|› dtjtjd}|jrètd|j d¡› d|j d¡› ƒ‚tdƒ ttjd
|ft|j žŽ  |jrB|j\}}td|› ƒ ttjd
|d|f|žŽ  |jrütdƒ tjd|› dd |j¡› dtjtjd}|jr¨td|j d¡› d|j d¡› ƒ‚tjd|› ddtjtjdj d¡ ¡   ¡ }|jD ]}	|	|ksÜt!|	› dƒ‚qÜtd|› dƒ tjd|› d| › ddtjtjd}
tdƒ tjd|› ddtjtjd}|jr‚td|j d¡› d|j d¡› ƒ‚|j d¡}t|ƒ |jD ](}	d |	krœ|	|ksœt!d!|	› ƒ‚qœ|j"D ]}||ksÌt!‚qÌ|j#d k	rd"|j#› |kst!‚td#|› ƒ qZd S )$Nz$Cleaning: removing old working root.zgit rev-parse --show-toplevelT)ÚshellÚcwdzutf-8zCreating env: z: (ú)z--no-default-packagesz--prefixzpython=3z"Testing that env can be activated:zsource activate )r   r   r   z-Failed to source base environment:
  stdout: z
  stderr: zInstalling packages:z"Installing packages from channel: z-czSetting environment variables.z && conda env config vars set ú z/Failed to set environment variables:
  stdout: z && envz not in envszBuilding PyTorch for env: `ú`z && cd z# && python setup.py install --cmakezChecking configuration:a[   && python -c "import torch;from torch.utils.benchmark import Timer;print(torch.__config__.show());setup = 'x=torch.ones((128, 128));y=torch.ones((128, 128))';counts = Timer('torch.mm(x, y)', setup).collect_callgrind(collect_baseline=False);stats = counts.as_standardized().stats(inclusive=True);print(stats.filter(lambda l: 'blas' in l.lower()))"ZBLASz*PyTorch build did not respect `BLAS=...`: z'- Intel(R) Math Kernel Library Version zBuild complete: )$ÚosÚpathÚexistsÚWORKING_ROOTÚprintÚshutilÚrmtreeÚmakedirsÚ
subprocessÚcheck_outputÚdirnameÚrealpathÚ__file__ÚdecodeÚstripÚSUB_ENVSÚitemsÚjoinr   Úconda_commandsZCREATEÚrunÚPIPEÚ
returncoder   r   r   ÚINSTALLÚBASE_PKG_DEPSr   r   r   Ú
splitlinesÚAssertionErrorr   r	   )Zgit_rootÚenv_nameZenv_specZenv_pathZbase_sourceZchannelZchannel_depsZenv_setZactual_env_varsÚeZ	build_runZ	check_runZcheck_run_stdoutÚsr
   r
   r   Úmain[   sÌ    

ýü üüÿ þý
  ýýûÿ
üû
ú	
	óÿ


r:   Ú__main__)Úcollectionsr   r"   r%   Zconda.cli.python_apir   r   r/   ÚImportErrorr    Z
MKL_2020_3Z
MKL_2020_0Z	OPEN_BLASZEIGENZGENERIC_ENV_VARSr4   Ú
namedtupler   r,   r   r:   Ú__name__r
   r
   r
   r   Ú<module>   sb    ÿ û û ûï"	 