Ë
    L²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y)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_nestingc                óº   — ddl m}  |«       }|dk  r| j                  |z   n|}|r(t        j                  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)ÚselfÚ	batch_dimÚlevelr   ÚmodeÚress         ú[/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_functorch/predispatch.pyr   r      sb   € õ
 Pá6Ó8€DØ)2°Qª�—	‘	˜IÒ%¸I€IáÜ�‰×4Ñ4Ü˜T˜G T¨9°eó
ð 	
ô ˜d I¨uÓ
5€CØ€Jó    c                ó’   — ddl m}  |«       }|r)t        j                  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   Ú
batch_sizeÚout_dimr   r   r   s          r   r   r   0   sP   € õ Pá6Ó8€DáÜ�‰×4Ñ4Ü ˜w¨¨e°ZÀó
ð 	
ô !  u¨j¸'Ó
B€CØ€Jr   c                óŠ   — ddl m}  |«       }|r't        j                  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   Ú
randomnessr   r   r   s        r   r   r   D   sH   € õ
 Pá6Ó8€DáÜ�‰×4Ñ4Ü# j ]°JÀ
ó
ð 	
ô ' z°:Ó
>€CØ€Jr   c                 ó|   — ddl m}   | «       }|r$t        j                  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á6Ó8€DáÜ�‰×4Ñ4Ü#Øó
ð 	
ô (Ó)Ð)r   FÚboolÚDECOMPOSITIONS_LOADEDzthreading.Lock | NoneÚDECOMPOSITIONS_LOCKztorch.library.Library | NoneÚVMAP_DECOMPOSITIONS_LIBc                 ó  ‡— ddl m}   | «       }|r$t        j                  j	                  t
        d«      S t        ryt        €ddl} |j                  «       at        5  t        r
	 ddd«       yddl
}|j                  j                  dd«      dk(  rnda	 ddd«       yt        j                  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&                  j0                  j*                  «        |t        j$                  j&                  j2                  j*                  «        |t        j$                  j&                  j4                  j*                  «        |t        j$                  j&                  j6                  j*                  «        |t        j$                  j&                  j8                  j*                  «       daddd«       y# 1 sw Y   yxY w)zH
    Lazy loading of vmap decompositions with pre-dispatch support.
    r   r
   r"   NÚPYTORCH_JITÚ1TÚatenÚIMPLÚFuncTorchBatched)Údecomposition_tablec                ó~   •— t         €t        d«      ‚| ‰v rt         j                  | ‰|    «       y t        d| › �«      ‚)Nz(VMAP_DECOMPOSITIONS_LIB must not be Nonez!could not find decomposition for )r'   ÚAssertionErrorÚimplÚRuntimeError)Údecompr.   s    €r   Ú#_register_python_decomposition_vmapzElazy_load_decompositions.<locals>._register_python_decomposition_vmap–   sG   ø€ Ü&Ð.Ü$Ð%OÓPÐPØÐ,Ñ,Ü'×,Ñ,¨VÐ5HÈÑ5PÕQä"Ð%FÀvÀhÐ#OÓPÐPr   )r3   ztorch._ops.OpOverloadÚreturnÚNone)r   r   r   r   r   Úlazy_load_decompositionsr%   r&   Ú	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   r8   r:   r4   r.   s        @r   r7   r7   l   s¿  ø€ õ Pá6Ó8€DáÜ�‰×4Ñ4Ô5MÈrÓRÐRõ Øô Ð"Ûà,˜iŸn™nÓ.Ðä	ñ '%Ý Ø÷'%ð '%ó 	à—
‘
—‘˜}¨cÓ2°cÒ9¸iØ$(Ð!Ø÷'%ð '%ô #(§-¡-×"7Ñ"7Ø�FÐ.ó#
Ðõ 	6õ	Qñ 	,¬E¯I©I¯N©N×,LÑ,L×,TÑ,TÔUÙ+Ü�I‰I�N‰N×2Ñ2×:Ñ:ô	
ñ 	,¬E¯I©I¯N©N×,NÑ,N×,VÑ,VÔWÙ+¬E¯I©I¯N©N×,KÑ,K×,SÑ,SÔTÙ+¬E¯I©I¯N©N×,MÑ,M×,UÑ,UÔVÙ+¬E¯I©I¯N©N×,LÑ,L×,TÑ,TÔUÙ+¬E¯I©I¯N©N×,NÑ,N×,VÑ,VÔWÙ+¬E¯I©I¯N©N×,?Ñ,?×,GÑ,GÔHà $Ð÷O'%÷ '%ñ '%ús   ÁI6Á.'I6ÂGI6É6I?)r   útorch.Tensorr   Úintr   rK   r5   rJ   )
r   rJ   r   rK   r   rK   r   rK   r5   rJ   )r   rK   r    Ústrr5   rK   )r5   rK   )r5   r6   )Ú__doc__Ú
__future__r   Útypingr   r   Útorch._C._functorchr   r   r   r   r   r#   r   r   r8   r%   Ú__annotations__r&   r'   r7   r"   r   r   ú<module>rR      s�   ðòõ
 #å  ã ÷ó ñ Ûóð&Ø
ðØ"ðØ03ðØ>Aðàóó(ó"*ð$ $Ð �tÓ #Ø-1Ð Ð*Ó 1Ø8<Ð Ð5Ó <ô=%r   