o
    à¥µi  ã                   @   sZ   d dl Z zd dlm  mZ W n ey   dZY nw dd„ Zdd„ ZG dd„ deƒZ	dS )é    Nc                  C   s<   dt  ¡ i} tdurt ¡ | d< t j ¡ rt j ¡ | d< | S )zC
    Get random number generator state of torch, xla and cuda.
    Útorch_rng_stateNÚxla_rng_stateÚcuda_rng_state)ÚtorchÚget_rng_stateÚxmÚcudaÚis_available©Ústate© r   úb/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/preprocessors/ofa/utils/random_help.pyr      s   
r   c                 C   sF   t  | d ¡ tdurt | d ¡ t j ¡ r!t j | d ¡ dS dS )zC
    Set random number generator state of torch, xla and cuda.
    r   Nr   r   )r   Úset_rng_stater   r   r	   r
   r   r   r   r      s   
ÿr   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Úset_torch_seedz1
    Set random seed to torch, xla and cuda.
    c                 C   sP   t |tƒsJ ‚tƒ | _t |¡ td urt |¡ tj 	¡ r&tj |¡ d S d S ©N)
Ú
isinstanceÚintr   Ú	rng_stater   Úmanual_seedr   r   r   r	   )ÚselfÚseedr   r   r   Ú__init__'   s   


ÿzset_torch_seed.__init__c                 C   s   | S r   r   )r   r   r   r   Ú	__enter__1   s   zset_torch_seed.__enter__c                 G   s   t | jƒ d S r   )r   r   )r   Úexcr   r   r   Ú__exit__4   s   zset_torch_seed.__exit__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   "   s
    
r   )
r   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelr   ÚImportErrorr   r   Úobjectr   r   r   r   r   Ú<module>   s   ÿ