
    /jK                        U d Z ddlmZ ddlmZ ddlZddlmZm	Z
mZmZ erddlZddZddZ	ddZd dZdaded<   daded<   daded<   d!dZdS )"z
This module contains pre-dispatch wrappers for functorch operations
that enable proper tracing in PT2 non-strict export/compile fx graph.
    )annotations)TYPE_CHECKINGN)_add_batch_dim_remove_batch_dim_vmap_decrement_nesting_vmap_increment_nestingselftorch.Tensor	batch_dimintlevelreturnc                    ddl m}  |            }|dk     r
| j        |z   n|}|r)t          j                            t          | f| ||          S t          | ||          }|S )zn
    Thin wrapper around torch._C._add_batch_dim that is used to proxy in
    PT2 export/compile fx graph
    r   +_maybe_find_pre_dispatch_tf_mode_for_export)torch._export.utilsr   ndimtorch	overrideshandle_torch_functionr   _add_batch_dim_impl)r	   r   r   r   moderess         a/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/_functorch/predispatch.pyr   r      s    
 POOOOO6688D)2Q	I%%II 
44TGT9e
 
 	
 dIu
5
5CJ    
batch_sizeout_dimc                    ddl m}  |            }|r*t          j                            t
          | f| |||          S t          | |||          }|S )zq
    Thin wrapper around torch._C._remove_batch_dim that is used to proxy in
    PT2 export/compile fx graph
    r   r   )r   r   r   r   r   r   _remove_batch_dim_impl)r	   r   r   r   r   r   r   s          r   r   r   0   sp     POOOOO6688D 
44weZ
 
 	
 !uj'
B
BCJr   
randomnessstrc                    ddl m}  |            }|r(t          j                            t
          | f| |          S t          | |          }|S )p
    Thin wrapper around torch._C._vmap_increment_nesting that is used
    to proxy in export/compile graph
    r   r   )r   r   r   r   r   r   _vmap_increment_nesting_impl)r   r    r   r   r   s        r   r   r   D   sh    
 POOOOO6688D 
44#j]J

 
 	
 'z:
>
>CJr   c                     ddl m}   |             }|r%t          j                            t
          d          S t                      S )r#   r   r    )r   r   r   r   r   r   _vmap_decrement_nesting_impl)r   r   s     r   r   r   U   s[    
 POOOOO6688D 
44#
 
 	
 ()))r   FboolDECOMPOSITIONS_LOADEDzthreading.Lock | NoneDECOMPOSITIONS_LOCKztorch.library.Library | NoneVMAP_DECOMPOSITIONS_LIBNonec                 ,   ddl m}   |             }|r%t          j                            t
          d          S t          rdS t          ddl} |j	                    at          5  t          r	 ddd           dS ddl
}|j                            dd          dk    rnda	 ddd           dS t          j                            dd	d
          addlm dfd} |t          j        j        j        j                    |t          j        j        j        j                    |t          j        j        j        j                    |t          j        j        j        j                    |t          j        j        j        j                    |t          j        j        j        j                    |t          j        j        j        j                    |t          j        j        j        j                   daddd           dS # 1 swxY w Y   dS )zH
    Lazy loading of vmap decompositions with pre-dispatch support.
    r   r   r&   NPYTORCH_JIT1TatenIMPLFuncTorchBatched)decomposition_tabledecomptorch._ops.OpOverloadr   r,   c                    t           t          d          | v r#t                               | |                     d S t          d|            )Nz(VMAP_DECOMPOSITIONS_LIB must not be Nonez!could not find decomposition for )r+   AssertionErrorimplRuntimeError)r4   r3   s    r   #_register_python_decomposition_vmapzElazy_load_decompositions.<locals>._register_python_decomposition_vmap   s]    &.$%OPPP,,,',,V5H5PQQQQQ"#Ov#O#OPPPr   )r4   r5   r   r,   )r   r   r   r   r   lazy_load_decompositionsr)   r*   	threadingLockosenvirongetlibraryLibraryr+   torch._decompr3   opsr0   mse_loss_backwarddefaultsmooth_l1_loss_backwardhuber_loss_backwardnll_loss_forwardnll_loss2d_forwardnll_loss_backwardnll_loss2d_backwardaddr)r   r   r<   r>   r:   r3   s        @r   r;   r;   l   s    POOOOO6688D S445MrRRR   ",in..	 '% '%  	'% '% '% '% '% '% '% '% 				
}c22c999$(!'% '% '% '% '% '% '% '% #(-"7"7F.#
 #
 	655555	Q 	Q 	Q 	Q 	Q 	Q 	,+EIN,L,TUUU++IN2:	
 	
 	
 	,+EIN,N,VWWW++EIN,K,STTT++EIN,M,UVVV++EIN,L,TUUU++EIN,N,VWWW++EIN,?,GHHH $O'% '% '% '% '% '% '% '% '% '% '% '% '% '% '% '% '% '%s   #	H	9'H	-EH		HH)r	   r
   r   r   r   r   r   r
   )
r	   r
   r   r   r   r   r   r   r   r
   )r   r   r    r!   r   r   )r   r   )r   r,   )__doc__
__future__r   typingr   r   torch._C._functorchr   r   r   r   r   r'   r   r$   r<   r)   __annotations__r*   r+   r;   r&   r   r   <module>rS      s;    
 # " " " " "                             &   (   "* * * *$ $  # # # #-1  1 1 1 18<  < < < <=% =% =% =% =% =%r   