a
    ¢º”h÷  ã                   @   s*   d dl Z d dlZdd„ Ze jdd„ ƒZdS )é    Nc                 O   sh   t ƒ N t d¡ | |i |¤Ž}t|tjƒrB|jjdkrBtj ¡  |W  d  ƒ S 1 sZ0    Y  dS )z¡Wrapper to set seed manually for some functions like dropout
    See: https://github.com/pytorch/pytorch/pull/62315#issuecomment-896143189 for more details.
    é*   ZlazyN)	Úfreeze_rng_stateÚtorchZmanual_seedÚ
isinstanceZTensorZdeviceÚtypeZ_lazyZ	mark_step)ÚopÚargsÚkwargsÚoutput© r   úB/var/www/auris/lib/python3.9/site-packages/torch/testing/_utils.pyÚwrapper_set_seed   s    

r   c                  c   sv  t jj ¡ V t j ¡ , t  ¡ } t j ¡ r6t j ¡ }W d   ƒ n1 sJ0    Y  W d   ƒ n1 sh0    Y  z€d V  W t jj ¡ Z t j ¡ 0 t j ¡ r¬t j 	|¡ t  	| ¡ W d   ƒ n1 sÊ0    Y  W d   ƒ n1 sè0    Y  n~t jj ¡ ^ t j ¡ 2 t j ¡ r&t j 	|¡ t  	| ¡ W d   ƒ n1 sF0    Y  W d   ƒ n1 sf0    Y  0 d S )N)
r   ÚutilsZ_mode_utilsZno_dispatchZ_CZ_DisableFuncTorchZget_rng_stateZcudaZis_availableZset_rng_state)Z	rng_stateZcuda_rng_stater   r   r   r      s    
F

Hýr   )Ú
contextlibr   r   Úcontextmanagerr   r   r   r   r   Ú<module>   s   