
    /j                         d dl Z d dlZd dlZd dlmZmZmZ 	 d dlmZ n# e	$ r dZY nw xY wd Z
 G d d          Z G d d          Zd	 Z G 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                 F   | 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)modes    ]/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/backends/cudnn/rnn.pyget_cudnn_moder      s    z6>*+++			6>*+++	6>&'''	6>%&&&0$00111    c                   &    e Zd Zd Zd Zd Zd ZdS )Unserializablec                     || _         d S Ninner)selfr   s     r   __init__zUnserializable.__init__*   s    


r   c                     | j         S r   r   r   s    r   getzUnserializable.get-   s
    zr   c                     dS )Nz<unserializable> r    s    r   __getstate__zUnserializable.__getstate__0   s
     "!r   c                     d | _         d S r   r   )r   states     r   __setstate__zUnserializable.__setstate__5   s    


r   N)__name__
__module____qualname__r   r!   r$   r'   r#   r   r   r   r   )   sP            " " "
    r   r   c                        e Zd Zd Zd Zd ZdS )ContextPropc                 "    || _         || _        d S r   )gettersetter)r   r.   r/   s      r   r   zContextProp.__init__<   s    r   c                 *    |                                  S r   )r.   )r   objobjtypes      r   __get__zContextProp.__get__@   s    {{}}r   c                 0    |                      |           d S r   )r/   )r   r1   vals      r   __set__zContextProp.__set__C   s    Cr   N)r(   r)   r*   r   r3   r6   r#   r   r   r,   r,   ;   sA                r   r,   c                    dt          t          j                                                  z   }|r| nd}||vs||                                         ^|dk    rt          d           ||<   nEt          t          j        |||t          j        t          j        d                              ||<   ||                                         }|S Ndesc_r   cuda)self_tydevice	strtorchr:   current_devicer!   r   _cudnn_init_dropout_stateuint8r<   dropouttraindropout_seeddropout_statedropout_desc_name	dropout_p
dropout_tss          r   init_dropout_staterK   G   s    #ej&?&?&A&A"B"BB 'aI..'(,,..6>>/=d/C/CM+,,/=/ !K <//  	0 	0M+, 015577Jr   c                   t     e Zd Z fdZed             Z e edd           edd                    Z	 xZ
S )CudnnRNNModulec                     t                                          ||           t          | j        _        t          | j        _        t
          | j        _        d S r   )superr   r   mr   rK   )r   rP   name	__class__s      r   r   zCudnnRNNModule.__init___   sA    D!!! . .$6!!!r   c                    dt          t          j                                                  z   }|r| nd}||vs||                                         ^|dk    rt          d           ||<   nEt          t          j        |||t          j        t          j        d                              ||<   ||                                         }|S r8   r=   rC   s          r   rK   z!CudnnRNNModule.init_dropout_statee   s    #c%**C*C*E*E&F&FF$+GG!	]22+,0022:A~~3A$3G3G/003A3!$ %$|F33  	4 	4/0 ##4599;;
r   r:   rnn)r(   r)   r*   r   staticmethodrK   r,   r   r   fp32_precision__classcell__)rR   s   @r   rM   rM   ^   sz        7 7 7 7 7   \, ![""6511""6511 NNNNNr   rM   )systorch._Cr?   
torch.cudatorch.backendsr   r   r   r   ImportErrorr   r   r,   rK   rM   modulesr(   r#   r   r   <module>r^      sU   



                  FFF2 2 2(       $	 	 	 	 	 	 	 	  .! ! ! ! !Z ! ! !H 's{8'<hGGH   s    ))