
    9iz                     R    S r SSKrSSKJrJrJrJ	r
  S rS rS r	S rSqSqSqS	 rg)
z
This module contains pre-dispatch wrappers for functorch operations
that enable proper tracing in PT2 non-strict export/compile fx graph.
    N)_add_batch_dim_remove_batch_dim_vmap_decrement_nesting_vmap_increment_nestingc                     SSK Jn  U" 5       nU(       a'  [        R                  R	                  [
        U 4XU5      $ [        XU5      nU$ )zb
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	   torch	overrideshandle_torch_functionr   _add_batch_dim_impl)self	batch_dimlevelr	   moderess         \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/_functorch/predispatch.pyr   r      sH    
 P68D44TGTe
 	
 du
5CJ    c                     SSK Jn  U" 5       nU(       a'  [        R                  R	                  [
        U 4XX#5      $ [        XX#5      nU$ )ze
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   
batch_sizeout_dimr	   r   r   s          r   r   r   )   sH    
 P68D44wZ
 	
 !j
BCJr   c                     SSK Jn  U" 5       nU(       a&  [        R                  R	                  [
        U 4X5      $ [        X5      nU$ )d
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   
randomnessr	   r   r   s        r   r   r   ;   sD    
 P68D44#j]J
 	
 'z
>CJr   c                      SSK Jn   U " 5       nU(       a$  [        R                  R	                  [
        S5      $ [        5       $ )r   r   r    )r
   r	   r   r   r   r   _vmap_decrement_nesting_impl)r	   r   s     r   r   r   L   s;    
 P68D44#
 	
 ())r   Fc                  .  ^ SSK Jn   U " 5       nU(       a$  [        R                  R	                  [
        S5      $ [        (       a  g[        c  SSKnUR                  5       q[           [        (       a
   SSS5        gSSK
nUR                  R                  SS5      S:X  a  OSq SSS5        g[        R                  R                  SS	S
5      qSSKJm  U4S jnU" [        R$                  R&                  R(                  R*                  5        U" [        R$                  R&                  R,                  R*                  5        U" [        R$                  R&                  R.                  R*                  5        U" [        R$                  R&                  R0                  R*                  5        U" [        R$                  R&                  R2                  R*                  5        U" [        R$                  R&                  R4                  R*                  5        U" [        R$                  R&                  R6                  R*                  5        U" [        R$                  R&                  R8                  R*                  5        SqSSS5        g! , (       d  f       g= f)z@
Lazy loading of vmap decompositions with pre-dispatch support.
r   r   r   NPYTORCH_JIT1TatenIMPLFuncTorchBatched)decomposition_tablec                 `   > U T;   a  [         R                  U TU    5        g [        SU  35      e)Nz!could not find decomposition for )VMAP_DECOMPOSITIONS_LIBimplRuntimeError)decompr'   s    r   #_register_python_decomposition_vmapElazy_load_decompositions.<locals>._register_python_decomposition_vmap   s5    ,,',,V5H5PQ"%Fvh#OPPr   )r
   r	   r   r   r   lazy_load_decompositionsDECOMPOSITIONS_LOADEDDECOMPOSITIONS_LOCK	threadingLockosenvirongetlibraryLibraryr)   torch._decompr'   opsr$   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   r2   r4   r-   r'   s        @r   r/   r/   c   s    P68D445MrRR  "'nn.	   
	 	

}c2c9i$(! 
	 #(--"7"7F.#
 	6	Q 	,EIINN,L,L,T,TU+IINN22::	
 	,EIINN,N,N,V,VW+EIINN,K,K,S,ST+EIINN,M,M,U,UV+EIINN,L,L,T,TU+EIINN,N,N,V,VW+EIINN,?,?,G,GH $K 
		s   'J=(J.GJ
J)__doc__r   torch._C._functorchr   r   r   r   r   r    r   r   r0   r1   r)   r/   r   r   r   <module>rF      sF   
  $$"*$    ;%r   