U
    Māhö  ć                   @   s*   d dl Z d dlZdd Ze jdd ZdS )é    Nc              
   O   sX   t  H t d” | ||}t|tjr>|jjdkr>tj ”  |W  5 Q R £ S Q R X 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   śF/var/www/html/venv/lib/python3.8/site-packages/torch/testing/_utils.pyŚwrapper_set_seed   s    


r   c                  c   sŖ   t jj ” 8 t j ” " t  ” } t j ” r6t j ” }W 5 Q R X W 5 Q R X z
d V  W 5 t jj ” < t j ” & t j ” rt j 	|” t  	| ” W 5 Q R X W 5 Q R X X d S )N)
r   ŚutilsZ_mode_utilsZno_dispatchZ_CZ_DisableFuncTorchZget_rng_stateŚcudaZis_availableZset_rng_state)Z	rng_stateZcuda_rng_stater   r   r   r      s    



r   )Ś
contextlibr   r   Ścontextmanagerr   r   r   r   r   Ś<module>   s   