U
    d_                     @   s\   d dl Z d dlZdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd ZdS )    Nc              	   C   sp   d|  d }t jtjd t|dB}| D ]2\}}t|| |d| |d| q.W 5 Q R X d S )NZdebug_operator_onnxifi_z.txt)	thresholdwz{}
)	npZset_printoptionssysmaxsizeopenitemsprintwriteformat)ZtestnameZ
items_dictfilenamefkeyvalue r   E/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/fakelowp/test_utils.pyprint_test_debug_info	   s    
r   c                 C   s   | j D ]}td| q| jD ]}td| q | jD ]H}td|j |jD ]}td| qT|jD ]}td| qnq:d S )Nz	Input: {}z
Output: {}zOp {}z  input: {}z  output: {})Zexternal_inputr	   r   Zexternal_outputoptypeinputoutput)netir   xyr   r   r   	print_net   s    




r   c                 C   s   ddt t |    S N      ?)r   expfloat64r   r   r   r   _sigmoid   s    r!   c                 C   s   t t | S N)r   tanhr   r    r   r   r   _tanh!   s    r$   c                 C   s   t | t|  S r"   )r   r   r!   r    r   r   r   _swish$   s    r%   c                 C   s"   t | dt t | d   S )Nr   gZd;?)r   r   r   r    r   r   r   _gelu_by_sigmoid'   s    r&   c                 C   sH   | dkrt |S | dkr t|S | dkr0t|S | dkr@t|S |S d S )NZSwishZSigmoidZTanhZGelu)r%   r!   r$   r&   )opnamer   r   r   r   	_acc_func+   s    r(   c                 C   sB   t | }|dk}|| d| d  }t t |}d|d  S )Ng      ?   g       @
   )r   absfloorlog2)r   Zabs_xmaskkr   r   r   
_get_ulp167   s
    
r0   c                 C   s(   t | t|}dt| }|| | S r   )r(   r   r   r0   )r'   ZxvecZy_nnpiZy_accZscaler   r   r   compute_ulp_error>   s    r1   )r   Znumpyr   r   r   r!   r$   r%   r&   r(   r0   r1   r   r   r   r   <module>   s   	