
     h                         d dl Z 	 d dlZ G d de j
                  j                        Z G d de j                  j                        Z
y# e$ r	 ddlmZ Y Lw xY w)    N   )curopec                   .    e Zd Zedd       Zed        Zy)cuRoPE2D_funcc                     | j                  |       || _        || _        t        j                  ||||       | j                  |       |S N)save_for_backward
saved_basesaved_F0_kernelsrope_2d
mark_dirty)ctxtokens	positionsbaseF0s        J/home/cameronsmith/repos/controll3r/dust3r/croco/models/curope/curope2d.pyforwardzcuRoPE2D_func.forward   sC    i(&)T27v    c                     | j                   d   | j                  | j                  }}}t        j                  ||||        | j                  |       |d d d fS )Nr   )saved_tensorsr
   r   r   r   r   )r   grad_resr   r   r   s        r   backwardzcuRoPE2D_func.backward   sS    !//2CNNCLL4	(ItbS:x tT))r   N)r   )__name__
__module____qualname__staticmethodr   r    r   r   r   r      s(      * *r   r   c                   &     e Zd Zd fd	Zd Z xZS )cuRoPE2Dc                 >    t         |           || _        || _        y r   )super__init__r   r   )selffreqr   	__class__s      r   r$   zcuRoPE2D.__init__!   s    	r   c                 ~    t         j                  |j                  dd      || j                  | j                         |S )Nr      )r   apply	transposer   r   )r%   r   r   s      r   r   zcuRoPE2D.forward&   s0    V--a2Ityy$''Sr   )g      Y@g      ?)r   r   r   r$   r   __classcell__)r'   s   @r   r!   r!       s    
r   r!   )torchr   r   ModuleNotFoundError autogradFunctionr   nnModuler!   r   r   r   <module>r4      sP    %
*U^^,, *(uxx 1  %$%s   A	 	AA