U
    Mh
	                     @   sT   d dl Z d dlZd dlZd dlZdd Ze jdd Ze jdddZdd	d
ZdS )    Nc                   C   s$   t jj sdS t jj s dS dS )NFT)torchbackendsZmkldnnZis_availableZopsZ_is_mkldnn_bf16_supported r   r   W/var/www/html/venv/lib/python3.8/site-packages/torch/testing/_internal/common_mkldnn.pybf32_is_not_fp32   s
    r   c               	   c   s.   t  } zt d d V  W 5 t |  X d S )NZhighest)r   get_float32_matmul_precisionset_float32_matmul_precision)old_matmul_precisionr   r   r   bf32_off   s
    

r
   h㈵>c              	   c   s@   t  }| j}zt d || _d V  W 5 t | || _X d S )NZmedium)r   r   	precisionr   )selfbf32_precisionr	   Zold_precisionr   r   r   bf32_on   s    


r   c                    s&   dd  fddfdd}|S )Nc              	   S   s   t   |  W 5 Q R X d S N)r
   r   Zfunction_callr   r   r   with_bf32_disabled1   s    z+bf32_on_and_off.<locals>.with_bf32_disabledc              	      s    t |   |  W 5 Q R X d S r   )r   r   )r   r   r   with_bf32_enabled5   s    z*bf32_on_and_off.<locals>.with_bf32_enabledc                    s8   t j}t|  t fdd}|S )Nc                     s   t | D ]\}}| |< q
t }d krB|o@t d jdk}d kr\|oZ d tjk}|r d  fdd  d  fdd n
f   d S )NdevicecpuZdtyper   c                      s
    f S r   r   r   fkwargsr   r   <lambda>G       zCbf32_on_and_off.<locals>.wrapper.<locals>.wrapped.<locals>.<lambda>c                      s
    f S r   r   r   r   r   r   r   H   r   )zipr   r   r   typefloat)argsr   kvZcond)	arg_namesr   r   r   )r   r   wrapped=   s    
z1bf32_on_and_off.<locals>.wrapper.<locals>.wrapped)inspect	signature
parameterstuplekeys	functoolswraps)r   paramsr"   )r   r   )r!   r   r   wrapper9   s
    z bf32_on_and_off.<locals>.wrapperr   )r   r+   r   )r   r   r   r   bf32_on_and_off0   s    r,   )r   )r   )	
contextlibr(   r#   r   r   contextmanagerr
   r   r,   r   r   r   r   <module>   s   
	