U
    ‰d  ã                   @   sh   d dl Z d dlZd dlmZ d dlmZmZmZ e  	ej
j d¡G dd„ dejƒƒZedkrde  ¡  dS )é    N)Ú
caffe2_pb2)ÚcoreÚ	workspaceÚ	test_utilz"Skipping as we do not have mkldnn.c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestMKLBasicc                 C   sÊ   t j dd¡ t j¡}t tj¡}t	 
d|¡ t	j
d||d t d¡}| dd¡ |jdd|d t	 |¡ t	 |¡ t jjt	 d¡t	 d¡d	d	d
 t	 | ¡ jddd¡}td |d |d ¡ƒ d S )Né€   i   ÚXÚX_mkl©Údevice_optionÚtestÚYÚY_mklg»½×Ùß|Û=©ZatolZrtolé   éd   Tz$Relu CPU runtime {}, MKL runtime {}.é   )ÚnpÚrandomZrandnÚastypeÚfloat32r   ÚDeviceOptionr   ÚMKLDNNr   ÚFeedBlobÚNetZReluÚ	CreateNetÚRunNetÚtestingÚassert_allcloseÚ	FetchBlobÚBenchmarkNetÚProtoÚnameÚprintÚformat)Úselfr   Úmkl_doÚnetÚruntime© r)   úD/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/mkl/mkl_speed_test.pyÚtestReLUSpeed   s"    


üzTestMKLBasic.testReLUSpeedc                 C   sZ  t j dddd¡ t j¡d }t j dddd¡ t j¡d }t j d¡ t j¡d }t tj¡}t	 
d|¡ t	 
d|¡ t	 
d	|¡ t	j
d
||d t	j
d||d t	j
d||d t d¡}|jddd	gddddd |jd
ddgdddd|d t	 |¡ t	 |¡ t jjt	 d¡t	 d¡ddd t	 | ¡ jddd¡}td |d |d ¡ƒ d S )Nr   é   é   g      à?éÀ   é   r   ÚWÚbr	   r
   ZW_mklZb_mklr   r   )ÚpadÚstrideÚkernelr   )r2   r3   r4   r   g{®Gáz„?r   r   Tz$Conv CPU runtime {}, MKL runtime {}.r   )r   r   Zrandr   r   r   r   r   r   r   r   r   ZConvr   r   r   r   r   r    r!   r"   r#   r$   )r%   r   r0   r1   r&   r'   r(   r)   r)   r*   ÚtestConvSpeed.   s8    
   ÿ

üzTestMKLBasic.testConvSpeedN)Ú__name__Ú
__module__Ú__qualname__r+   r5   r)   r)   r)   r*   r      s    r   Ú__main__)ZunittestZnumpyr   Zcaffe2.protor   Zcaffe2.pythonr   r   r   ZskipIfÚCZ
has_mkldnnZTestCaser   r6   Úmainr)   r)   r)   r*   Ú<module>   s   B