o
    ei                     @   s   d dl Z d dlZd dlZd dlmZmZmZ zd dlmZ W n e	y)   dZY nw dd Z
G dd dZG dd	 d	Zd
d ZG dd deZee je ee je< dS )    N)_get_fp32_precision_getter_set_fp32_precision_setter
PropModule)_cudnnc                 C   s^   | 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r(t tjjS td|  )NRNN_RELURNN_TANHLSTMGRUzUnknown mode: )intr   RNNModernn_relurnn_tanhlstmgru
ValueError)mode r   b/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/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__*      
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__0   s   zUnserializable.__getstate__c                 C   s
   d | _ d S r   r   )r   stater   r   r   __setstate__5   r   zUnserializable.__setstate__N)__name__
__module____qualname__r   r   r   r    r   r   r   r   r   )   s
    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ContextPropc                 C   s   || _ || _d S r   )gettersetter)r   r%   r&   r   r   r   r   <   s   
zContextProp.__init__c                 C   s   |   S r   )r%   )r   objobjtyper   r   r   __get__@   s   zContextProp.__get__c                 C   s   |  | d S r   )r&   )r   r'   valr   r   r   __set__C   s   zContextProp.__set__N)r!   r"   r#   r   r)   r+   r   r   r   r   r$   ;   s    r$   c              	   C      dt tj  }|r| nd}||vs||  d u r8|dkr&td ||< nttj|||tjtdd||< ||  }|S Ndesc_r   cuda)self_tydevice	strtorchr/   current_devicer   r   _cudnn_init_dropout_stateuint8r1   dropouttraindropout_seeddropout_statedropout_desc_name	dropout_p
dropout_tsr   r   r   init_dropout_stateG   s"   
r@   c                       s>   e Zd Z fddZedd ZeeddeddZ	  Z
S )CudnnRNNModulec                    s*   t  || t| j_t| j_t| j_d S r   )superr   r   mr   r@   )r   rC   name	__class__r   r   r   _   s   zCudnnRNNModule.__init__c              	   C   r,   r-   r2   r8   r   r   r   r@   e   s"   
z!CudnnRNNModule.init_dropout_stater/   rnn)r!   r"   r#   r   staticmethodr@   r$   r   r   fp32_precision__classcell__r   r   rE   r   rA   ^   s    
rA   )systorch._Cr4   
torch.cudatorch.backendsr   r   r   r   ImportErrorr   r   r$   r@   rA   modulesr!   r   r   r   r   <module>   s   $