a
    d                     @   sR   d dl Zzd dlmZ W n ey.   dZY n0 dd ZG dd dZdd ZdS )	    N)_cudnnc                 C   sb   | dkrt tjjS | dkr(t tjjS | dkr<t tjjS | dkrPt tjjS td| d S )NZRNN_RELUZRNN_TANHZLSTMZGRUzUnknown mode: {})	intr   ZRNNModeZrnn_reluZrnn_tanhZlstmZgru	Exceptionformat)mode r   a/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/torch/backends/cudnn/rnn.pyget_cudnn_mode   s    r	   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Unserializablec                 C   s
   || _ d S Ninner)selfr   r   r   r   __init__   s    zUnserializable.__init__c                 C   s   | j S r   r   r   r   r   r   get    s    zUnserializable.getc                 C   s   dS )Nz<unserializable>r   r   r   r   r   __getstate__#   s    zUnserializable.__getstate__c                 C   s
   d | _ d S r   r   )r   stater   r   r   __setstate__(   s    zUnserializable.__setstate__N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r
      s   r
   c              	   C   s   dt tj  }|r| nd}||vs6||  d u rp|dkrLtd ||< n$ttj|||tjtdd||< ||  }|S )NZdesc_r   cuda)Zself_tydevice)	strtorchr   Zcurrent_devicer   r
   Z_cudnn_init_dropout_stateZuint8r   )ZdropoutZtrainZdropout_seedZdropout_stateZdropout_desc_nameZ	dropout_pZ
dropout_tsr   r   r   init_dropout_state,   s    r   )Z
torch.cudar   Ztorch._Cr   ImportErrorr	   r
   r   r   r   r   r   <module>   s   
