+
    –°³j]‘  ã                   óp  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RIH	t
 ^ RIH	u Hu Ht ^ RIH	u Hu Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IH t  ^ RI!H"t"H#t#H$t$H%t% ^ RIH&t& ^ RI'H(t( ^ RI)H*t* ^ RI+H,t,H-t- ^ RI.H/t/H0t0H1t1 ^ RI2H3t3H4t4H5t5 ^ RI6H7t7 ^ RI8H9t9  ^ RI:H;t< ]P~                  P€                  t@]P‚                  ! ]B4      tC]CPˆ                  tER R ltF]F]CnD        R R ltGR R ltHR R ltIR R ltJR  R! ltKR" R# ltL ! R$ R%4      tMR#   ]= d
    ^ RI:H>t<  L€i ; i)&é    N)ÚSequence)Úcast)Úfill_defaults)Ú
LazyString)Úrun_dtensor_rng_op)Ú_are_we_tracing)Ú
DeviceMesh)ÚDTensorSpecÚ
TensorMeta)Úargminmax_handler)ÚOpInfoÚOpSchemaÚOutputShardingÚOutputSpecType)Úis_rng_supported_mesh)Úredistribute_local_tensor)ÚShardingPropagator)Úconvolution_backward_handlerÚconvolution_handler)Ú#_format_implicit_redistribution_msgÚExplicitRedistributionContextÚtry_find_mesh_from_args)ÚPartialÚ	PlacementÚ	Replicate)Úget_active_debug_mode)Úreturn_and_correct_aliasing)Ú_cxx_pytree)Ú_pytreec                ó(   € V ^8„  d   QhR\         RR/# )é   ÚlevelÚreturnN)Úint)Úformats   "Úc/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/tensor/_dispatch.pyÚ__annotate__r'   7   s   € ÷ /ñ /¤ð /¨ñ /ó    c                 óX   € \        V 4       \        P                  P                  4        R # ©N)Ú_orig_setLevelÚtorchÚ_CÚ_reinit_DTensor_dispatch_logger)r"   s   &r&   Ú_setLevel_and_reinitr/   7   s   € Ü�5ÔÜ	‡H�H×,Ñ,Ö.r(   c                óR   € V ^8„  d   QhR\         R\        P                  R,          /# )r!   Úoutput_specr#   N)ÚobjectÚ
contextlibÚAbstractContextManager)r%   s   "r&   r'   r'   ?   s'   € ÷ 8ñ 8Üð8ä×&Ñ& tÕ,ñ8r(   c                 ón   € \        4       '       d   V f   \        P                  ! 4       # ^ RIHp V! 4       # )N)Ú*_ignore_fresh_unbacked_symbols_tls_context)r   r3   ÚnullcontextÚ%torch.fx.experimental.symbolic_shapesr6   )r1   r6   s   & r&   Ú2_ignore_fresh_unbacked_symbols_for_dtensor_tracingr9   ?   s1   € ô ×Ò Ò 3Ü×%Ò%Ó'Ð'õñ 6Ó7Ð7r(   c          	      ó�   € V ^8„  d   QhRRR\         \        ,          R\         \        ,          R\        \        ,          R,          /# )r!   Útensorzdtensor.DTensorÚsizeÚstrider#   N)r   r$   Úlist)r%   s   "r&   r'   r'   P   sA   € ÷ ñ Øðä
”3�-ðô ”S�Mðô 
Œ#…Y�Õñ	r(   c           	     ó   € \        V4      V P                  4       8w  d   R# \        \        V P	                  4       V P                  4       4      4      p. pR.\        V4      ,          p\        W4       F‚  p\        V4       UUu. uF2  w  rxWW,          '       d   K  \        V4      \        V4      8X  g   K0  VNK4  	  p	pp\        V	4      ^8w  d    R# RWY^ ,          &   VP                  V	^ ,          4       K„  	  V# u uppi )ak  Return dims such that ``tensor.permute(dims)`` has the requested layout.

AOTAutograd regenerates an output that aliases an input by calling
as_strided on the input, which a sharded tensor cannot answer in general --
it has no single global storage to index into. A permutation of the base
dims (transpose, t, permute, Tensor.T) is the exception: it maps onto
aten.permute, which does have a sharding strategy.

Returns None when the request is not a permutation, or when two dims have
the same (size, stride) and the permutation is therefore ambiguous -- the
layouts would be identical but the placements need not be.
NFT)	ÚlenÚdimr>   Úzipr<   r=   Ú	enumerateÚtupleÚappend)
r;   r<   r=   ÚbaseÚdimsÚusedÚtargetÚiÚbÚ
candidatess
   &&&       r&   Ú_as_strided_permutationrM   P   sÎ   € ô" ˆ4ƒy�F—J‘J“LÔ Ùä”�F—K‘K“M 6§=¡=£?Ó3Ó4€DØ€DØˆ7”S˜“YÕ€DÜ�dÖ#ˆä# Dœ/ô
Ù)‘$�!°·±ŒA¼UÀ1»XÌÈvËÑ=V�AˆA™/ð 	ñ 
ô ˆz‹?˜aÔÚØ"ˆ˜�]ÑØ�‰�J˜q•MÖ"ñ $ð €Kùó
s   ÂC:ÂC:Â5C:c                ó    € V ^8„  d   QhR\         P                  P                  R\        \        R3,          R\
        \        \        3,          /# )r!   Úop_callÚargs.Úkwargs©r,   Ú_opsÚ
OpOverloadrD   r2   ÚdictÚstr)r%   s   "r&   r'   r'   r   sG   € ÷ @ñ @Ü�Z‰Z×"Ñ"ð@ä
”˜�Õ
ð@ô ””f�Õñ@r(   c                 ó  € \        V P                  W4      w  rV'       d   \        hVw  r4rVVe   VP                  4       V8X  d³   VP	                  4       \        V4      8X  dR   VP                  4       \        V4      8X  d4   \        P                  P                  P                  P                  V4      # \        W4V4      pVe4   \        P                  P                  P                  P                  W74      # \        R4      h)Nz%as_strided not supported with DTensor)r   Ú_schemaÚAssertionErrorÚstorage_offsetr<   rD   r=   r,   ÚopsÚatenÚaliasÚdefaultrM   ÚpermuteÚRuntimeError)rO   rP   rQ   r;   r<   r=   rZ   rG   s   &&&     r&   Úas_strided_handlerra   r   s¾   € ô
 ! §¡°$Ó?�L€DßÜÐØ+/Ñ(€F�&ØÒ ×!6Ñ!6Ó!8¸NÔ!JØ�;‰;‹=œE $›KÔ'¨F¯M©M«O¼uÀV»}Ô,LÜ—9‘9—>‘>×'Ñ'×/Ñ/°Ó7Ð7Ü& v°VÓ<ˆØÒÜ—9‘9—>‘>×)Ñ)×1Ñ1°&Ó?Ð?Ü
Ð>Ó
?Ð?r(   c                ó¬   € V ^8„  d   QhR\         P                  P                  R\        \        R3,          R\
        \        \        3,          R\        /# ©r!   rO   rP   .rQ   r#   ©r,   rS   rT   rD   r2   rU   rV   Úbool)r%   s   "r&   r'   r'   „   sL   € ÷ "ñ "Ü�Z‰Z×"Ñ"ð"ä
”˜�Õ
ð"ô ””f�Õð"ô 
ñ	"r(   c                 ó¸   € \        \        P                  V^ ,          4      p\        \        P                  V^,          4      pVP                  VP                  8H  # ©r   )r   r,   ÚTensorÚshape)rO   rP   rQ   ÚlhsÚrhss   &&&  r&   Úis_same_size_handlerrl   „   s?   € ô
 Œu�|‰|˜T !�WÓ
%€CÜ
Œu�|‰|˜T !�WÓ
%€CØ�9‰9˜Ÿ	™	Ñ!Ð!r(   c                ó¬   € V ^8„  d   QhR\         P                  P                  R\        \        R3,          R\
        \        \        3,          R\        /# rc   rd   )r%   s   "r&   r'   r'   Ž   sL   € ÷ ,ñ ,Ü�Z‰Z×"Ñ"ð,ä
”˜�Õ
ð,ô ””f�Õð,ô 
ñ	,r(   c                 óx   € \        \        P                  V^ ,          4      pVP                  P	                  4       # rg   )r   ÚdtensorÚDTensorÚ_local_tensorÚ	is_pinned)rO   rP   rQ   r;   s   &&& r&   Úis_pinned_handlerrs   Ž   s-   € ô
 ”'—/‘/ 4¨¥7Ó+€FØ×Ñ×)Ñ)Ó+Ð+r(   c                ó¤   € V ^8„  d   QhR\         P                  P                  R\        \        R3,          R\
        \        \        3,          RR/# )r!   rO   rP   .rQ   r#   NrR   )r%   s   "r&   r'   r'   —   sL   € ÷ )#ñ )#Ü�Z‰Z×"Ñ"ð)#ä
”˜�Õ
ð)#ô ””f�Õð)#ð 
ñ	)#r(   c           
      óº  € \         P                  P                  P                  WV4      p\        P
                  ! \        \        \        ,          VP                  4      VP                  4      p\        \        \        R 3,          V4      pV ! V/ VP                  B  \        \        \         P                  ,          V^ ,          4      ^ ,          pVP                  pVP                  p. pV FF  p	\        V	\         4      '       d   VP#                  V	4       K,  VP#                  \%        R4      4       KH  	  \        \&        P(                  V^,          4      p
\+        V\        V4      \-        V
P/                  4       V
P1                  4       V
P2                  R7      R7      p\         P                  ! V
VRR7      pVP5                  4       pV
P7                  V4       R# ).Úmax©ri   r=   Údtype)ÚmeshÚ
placementsÚtensor_metaF)Úlocal_tensorÚspecÚrequires_gradN)ro   rp   Ú_op_dispatcherÚunwrap_to_op_infoÚpytreeÚtree_unflattenr   r>   r2   Ú
local_argsÚargs_tree_specrD   Úlocal_kwargsrz   Údevice_meshÚ
isinstancer   rE   r   r,   rh   r
   r   r<   r=   rx   Úfull_tensorÚcopy_)rO   rP   rQ   Úop_infoÚlocal_tensor_argsÚgrad_dtensorÚgrad_placementsry   Úfound_inf_placementsÚ	placementÚtarget_tensorr}   Úfound_inf_dtensorÚ	found_infs   &&&           r&   Úfound_inf_reduce_handlerr“   —   sy  € ô
 �o‰o×,Ñ,×>Ñ>¸wÈfÓU€GÜ×-Ò-ÜŒT”&�\˜7×-Ñ-Ó.Ø×ÑóÐô œU¤6¨3 ;Õ/Ð1BÓCÐÙÐÐ7 '×"6Ñ"6Ò7äœœWŸ_™_Õ-¨t°A­wÓ7¸Õ:€LØ"×-Ñ-€OØ×#Ñ#€Dà,.ÐÛ$ˆ	Ü�i¤×+Ò+Ø ×'Ñ'¨	Ö2à ×'Ñ'¬°«Ö7ñ	 %ô œŸ™ t¨A¥wÓ/€MÜØÜÐ-Ó.ÜØ×$Ñ$Ó&Ø ×'Ñ'Ó)Ø×%Ñ%ô
ô€Dô  ŸšØ"ØØôÐð
 "×-Ñ-Ó/€IØ×Ñ˜	Ö"r(   c                   ó&  a € ] tR t^Ãt o RtV 3R lR lt]V 3R lR l4       t]P                  V 3R lR l4       tV 3R lR	 lt	V 3R
 lR lt
V 3R lR lt]V 3R lR l4       tV 3R lR ltV 3R lR lt]V 3R lR l4       tV 3R lR ltRtV tR# )ÚOpDispatcheraÑ  
Op dispatching class instance to handle args/kwargs pre-processing (un-wrapping), sharding
propagation, redistribute local args, local compute, and post-processing (re-wrapping). It
also handles any op specific logic if necessary.

NOTE: Given the runtime overhead of Tensor subclass (__torch_dispatch__), the OpDispatcher
is designed to minimize the CPU overhead by using the tricks of proper unflattening, faster
pytree if needed, and leveraging various caching mechanisms implemented in the sharding
propagation and redistribute modules. The CPU overhead is critical to eager mode performance,
one need to carefully measure the CPU overhead when making significant changes to the
OpDispatcher and ShardingPropagator.
c                ó   <€ V ^8„  d   QhRR/# )r!   r#   N© )r%   Ú__classdict__s   "€r&   r'   ÚOpDispatcher.__annotate__Ñ   s   ø€ ÷ 
ñ 
˜$ñ 
r(   c                óx  € \        4       V n        \        P                  P                  \        P
                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                  \        P                  P                   0V n        \        P$                  P                  \&        \        P(                  P                  \*        \        P,                  P                  \.        \        P0                  P                  \2        \        P4                  P                  \6        \        P8                  P                  \:        \        P<                  P                  \>        \        P@                  P                  \>        /V n!        R # r*   )"r   Úsharding_propagatorr\   Únative_dropoutr^   Únormal_ÚrandÚ	rand_likeÚrandnÚ
randn_likeÚrandint_likeÚ	low_dtypeÚlow_dtype_outÚuniform_Ú	bernoulliÚ
bernoulli_ÚfloatÚ_random_opsÚis_same_sizerl   rr   rs   Úconvolutionr   Úconvolution_backwardr   Ú*_amp_foreach_non_finite_check_and_unscale_r“   Ú
as_stridedra   Úargminr   ÚargmaxÚ_custom_op_handlers©Úselfs   &r&   Ú__init__ÚOpDispatcher.__init__Ñ   sQ  € Ü#5Ó#7ˆÔ ô ×Ñ×'Ñ'Ü�L‰L× Ñ Ü�I‰I×ÑÜ�N‰N×"Ñ"Ü�J‰J×ÑÜ�O‰O×#Ñ#Ü×Ñ×%Ñ%Ü×Ñ×'Ñ'Ü×Ñ×+Ñ+Ü�M‰M×!Ñ!Ü�N‰N×"Ñ"Ü�O‰O×!Ñ!ð
ˆÔô ×Ñ×%Ñ%Ô';Ü�N‰N×"Ñ"Ô$5Ü×Ñ×$Ñ$Ô&9Ü×%Ñ%×-Ñ-Ô/KÜ×;Ñ;×CÑCÔE]Ü�O‰O×#Ñ#Ô%7Ü�K‰K×ÑÔ!2Ü�K‰K×ÑÔ!2ð	$
ˆÖ r(   c                ó    <€ V ^8„  d   QhRS[ /# )r!   r#   ©re   )r%   r˜   s   "€r&   r'   r™   þ   s   ø€ ÷ Bñ B©Tñ Br(   c                ó>   € \         P                  P                  4       # r*   )r,   r-   Ú'_get_dtensor_allow_implicit_replicationr²   s   &r&   Ú_allow_implicit_replicationÚ(OpDispatcher._allow_implicit_replicationý   s   € ä�x‰x×?Ñ?ÓAÐAr(   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r!   Úvaluer#   Nr·   )r%   r˜   s   "€r&   r'   r™     s   ø€ ÷ Gñ G±ð G¸$ñ Gr(   c                ó@   € \         P                  P                  V4      # r*   )r,   r-   Ú'_set_dtensor_allow_implicit_replication)r³   r½   s   &&r&   rº   r»     s   € ä�x‰x×?Ñ?ÀÓFÐFr(   c                ó�   <€ V ^8„  d   QhRS[ P                  P                  RS[S[R3,          RS[S[S[3,          RS[RS[RS[/# )r!   rO   rP   .rQ   rŠ   Ú	try_cacher#   )	r,   rS   rT   rD   r2   rU   rV   r   re   )r%   r˜   s   "€r&   r'   r™     sk   ø€ ÷ @ñ @á—‘×&Ñ&ð@ñ ‘F˜C�KÕ ð@ñ ‘S™&�[Õ!ð	@ñ
 ð@ñ, ð-@ñ. 
ñ/@r(   c                óT  € VP                   f   \        R4      h V'       d7   \        4       '       g'   V P                  P	                  VP                   4      pM%V P                  P                  VP                   4      p\        P                  '       dU   \        P                  \        P                  4      '       d,   \        P                  RVP                   VP                  4       V#   \         d€    \        P                  P!                  TP#                  4       \        P                  P$                  P&                  4      '       d(   TP(                  ! T/ TB pT\*        J d   \        R hTu # h \,         d+   p\/        T RTP                   ;'       g    T 24      ThR p?ii ; i)Nzwop_info.schema should not be None in sharding propagation. This function should only be called after unwrap_to_op_info.z,sharding_prop MISS (C++ fast path): %s -> %sz"

Sharding propagation failed for )ÚschemarY   r   r›   Úpropagate_op_shardingÚ propagate_op_sharding_non_cachedÚloggerÚhandlersÚisEnabledForÚloggingÚDEBUGÚdebugr1   ÚNotImplementedErrorr,   r-   Ú%_dispatch_has_kernel_for_dispatch_keyÚnameÚDispatchKeyÚCompositeImplicitAutogradÚ	decomposeÚNotImplementedÚ	Exceptionr`   )	r³   rO   rP   rQ   rŠ   rÁ   ÚresultÚoutÚes	   &&&&&&   r&   Ú)_propagate_op_sharding_dispatch_slow_pathÚ6OpDispatcher._propagate_op_sharding_dispatch_slow_path  sT  € ð6 �>‰>Ò!Ü ðOóð ð 	÷ ¤×!2Ò!2Ø×1Ñ1×GÑGÈÏÉÓW‘à×1Ñ1×RÑRØ—N‘Nó�ô ��ˆ¤6×#6Ñ#6´w·}±}×#EÒ#EÜ—‘ØBØ—N‘Nà×&Ñ&ô	ð ˆMøÜ"ô 	Ü�x‰x×=Ñ=Ø—‘“¤§¡× 4Ñ 4× NÑ N÷ò ð
 ×'Ò'¨Ð8°Ñ8�Øœ.Ó(Ü(¨dÐ2Ø’
àÜô 	ÜØ�#Ð9¸'¿.¹.×:SÐ:SÈGÐ9TÐUóàðûð	ús<   ›C* £A0C* Â(C* Â=,C* Ã*A F'Å%F'Å2	F'Å<F'Å=%F"Æ"F'c                ón   <€ V ^8„  d   QhRS[ P                  P                  RS[S[R3,          RS[RS[/# )r!   rO   rP   .rŠ   r#   )r,   rS   rT   rD   r2   r   )r%   r˜   s   "€r&   r'   r™   G  sL   ø€ ÷ Bñ Bá—‘×&Ñ&ðBñ ‘F˜C�KÕ ðBñ ð	Bñ
 
ñBr(   c           	     ó.  € VP                   pVf   \        R4      hVf   \        R4      h\        4       pVe*   VP                  e   VP	                  VP                  4       VP
                  pVP                  4       pR pV'       Ed«   VP                  '       db   VP                  f   \        h\        VP                  4      ;_uu_ 4        V P                  VVP                  VP                  4       R R R 4       VP                  '       dE   \        P                  ! \        \         \"        ,          VP$                  4      VP                  4      MVP$                  p	\        \&        \"        R3,          V	4      p	WP(                  9   Edå   \*        P,                  '       g_   \/        V4      '       dN   \1        4       '       * p
V
'       g   \2        P5                  R^R7       \*        P6                  ! Wj4      \*        n        \        \8        P:                  V^ ,          4      \        \<        P>                  V	^ ,          4      rËVP@                  PC                  RR 4      pVe'   \E        V\<        PF                  4      '       g   \        h\*        P,                  '       Ed™   VPH                  '       Eg†   \*        P,                  PJ                  '       Ede   VfI   VPL                  PN                  R8w  g.   \1        4       '       g”   \O        V4      \<        P>                  Jdw   \*        P,                  PQ                  VPR                  VR7      ;_uu_ 4        \        VP                  4      ;_uu_ 4        V! V	/ VP@                  B pR R R 4       R R R 4       V# \E        \*        P,                  \*        P6                  4      '       g   \        h\*        P,                  PU                  VPR                  4      w  rï\        VP                  4      ;_uu_ 4        \W        VVV.V	O5/ VP@                  B pR R R 4       V# \        VP                  4      ;_uu_ 4        V! V	/ VP@                  B pR R R 4       V# VP                  '       dx   VP                  ej   VP                  PX                  V8w  dO   \        VP                  4      ;_uu_ 4        VP                  PX                  ! V	/ VP@                  B pR R R 4       V# \        VP                  4      ;_uu_ 4        V! V	/ VP@                  B pR R R 4       V# VP                  pVPZ                  P\                  pVf   R pV# R	 R
 lp\E        V\^        4      '       d   V! V4      pV# \E        V\`        4      '       dl   V Uu. uF  pVe	   V! V4      MR NK  	  pp\E        V\         4      '       g   \        hR V9   d,   \c        V^ ,          PN                  4      p\e        RV R24      hV#   + '       g   i     EL; i  + '       g   i     EL¡; i  + '       g   i     T# ; i  + '       g   i     T# ; i  + '       g   i     T# ; i  + '       g   i     T# ; i  + '       g   i     T# ; iu upi )Nz"output sharding should not be Nonezop_info should never be None.zÿDTensor RNG tracker is being lazily initialized during tracing. RNG states may not be synchronized across ranks, which can lead to silent incorrectness. Please call `torch.manual_seed()` with the same seed on all ranks before compiling DTensor random ops.©Ú
stacklevelÚ	generatorÚcuda)rÝ   c                óD   € V ^8„  d   QhR\         R\        P                  /# )r!   r}   r#   )r
   r,   rh   )r%   s   "r&   r'   ÚHOpDispatcher._dispatch_get_local_results_slow_path.<locals>.__annotate__í  s"   € ÷ Nñ N¬ð N¼¿¹ñ Nr(   c                 ó  € V P                   em   V P                   P                  pV P                   P                  p\        V4      ^ 8X  d   \        P
                  ! RVR7      # \        P                  ! . VR7      # \        V  R24      h)N)rx   z has no tensor metadata.r—   )r{   ri   rx   r@   r,   Úzerosr;   r`   )r}   ri   rx   s   &  r&   Údefault_tensorÚJOpDispatcher._dispatch_get_local_results_slow_path.<locals>.default_tensorí  sr   € Ø×'Ñ'Ò3Ø $× 0Ñ 0× 6Ñ 6˜Ø $× 0Ñ 0× 6Ñ 6˜Ü˜u›:¨œ?ä#(§;¢;¨r¸Ô#?Ð?ô $)§<¢<°¸%Ô#@Ð@ä*¨d¨VÐ3KÐ+LÓMÐMr(   zreturn type z in DTensor op is not supported)3Úoutput_shardingrY   r   r1   Úrecord_output_placementsÚcompute_meshÚ_is_current_rank_part_of_meshÚneeds_redistributeÚredistribute_schemar9   Úredistribute_local_argsÚ use_val_from_redistribute_schemar„   r�   r‚   r   r>   r2   rƒ   rD   r©   ÚrandomÚ_rng_trackerr   r   rÆ   ÚinfoÚOffsetBasedRNGTrackerro   rp   r,   rh   r…   Úpopr‡   Ú	GeneratorÚis_metaÚdistribute_region_enabledÚdeviceÚtypeÚ_distribute_regionÚ_specÚ_compute_rng_offsetsr   ÚoprX   Úreturnsr
   r   rV   rÌ   )r³   rO   rP   rŠ   rå   Ú
debug_modery   ÚparticipatingÚlocal_resultsr‹   Úrun_state_syncÚ	first_argÚfirst_local_argÚmaybe_user_generatorÚstart_offset_incrÚend_offset_incrr}   Úret_listrã   ÚsÚret_types   &&&&                 r&   Ú%_dispatch_get_local_results_slow_pathÚ2OpDispatcher._dispatch_get_local_results_slow_pathG  s	  € ð "×1Ñ1ˆØÒ"Ü Ð!EÓFÐFØŠ?Ü Ð!?Ó@Ð@ô +Ó,ˆ
ØÒ! o×&AÑ&AÒ&MØ×/Ñ/°×0KÑ0KÔLà×#Ñ#ˆØ×:Ñ:Ó<ˆØˆßˆ=à×1×1Ð1ð #×6Ñ6Ò>Ü(Ð(ÜGØ#×/Ñ/÷õ ð ×0Ñ0ØØ'×;Ñ;Ø'×HÑHô÷ð ×)×)Ð)ô ×%Ò%Üœœf� w×'9Ñ'9Ó:à×*Ñ*ôð ×'Ñ'ð ô !%¤U¬6°3¨;Õ%7Ð9JÓ KÐØ×*Ñ*Õ*Ü×*×*Ð*Ô/DÀT×/JÒ/Jô *9Ó):Ô%:�Nß)ÜŸ™ð^ð ()ð $ô ô +1×*FÒ*FØó+”FÔ'ô
 œŸ™¨$¨q­'Ó2ÜœŸ™Ð'8¸Õ';Ó<ð +ð (/×';Ñ';×'?Ñ'?ÀÈTÓ'RÐ$à(Ò0Ü!Ð"6¼¿¹×HÒHä(Ð(ô ×'×'Ñ'Ø+×3×3Ñ3Ü×+Ñ+×E×EÑEð -Ò8Ø*×1Ñ1×6Ñ6¸&Ô@ä /× 1Ò 1Ü $ _Ó 5¼U¿\¹\Ó Iô $×0Ñ0×CÑCØ%ŸO™OÐ7Kð D÷ õ ô "TØ /× ;Ñ ;÷"õ "ñ 18Ø%6ð1"Ø:A×:NÑ:Nñ1" ÷"÷ðJ Ðôu  *Ü"×/Ñ/´×1MÑ1M÷ ò  ô #1Ð0ä"×/Ñ/×DÑDÀYÇ_Á_ÓUñ ;Ð)ô PØ+×7Ñ7÷õ ô -?Ø 1Ø /Ø 'ð-ð "3ò	-ð
 #*×"6Ñ"6ñ-˜M÷ðf ÐôO LØ'×3Ñ3÷õ ñ )0Ø.ð)Ø29×2FÑ2Fñ)˜÷ðN Ðð} $×6×6Ð6Ø'×;Ñ;ÒGØ'×;Ñ;×>Ñ>À'ÔIô LØ'×3Ñ3÷õ ð )8×(KÑ(K×(NÒ(NØ.ð)Ø29×2FÑ2Fñ)˜÷ðr Ðôe LØ'×3Ñ3÷õ ñ )0Ø.ð)Ø29×2FÑ2Fñ)˜÷ðd ÐðK #×.Ñ.ˆDØ—‘×.Ñ.ˆHàŠ|ð !%�ð> Ðõ9Nô ˜d¤K×0Ò0á$2°4Ó$8�Mð Ðô   ¤h×/Ò/ñ OSó%ÙNRÈ¨Qª]™ qÔ)ÀÒDÉdð "ð %ô & m´T×:Ò:Ü,Ð,Ø˜}Ô,Ü#& x°¥{×'7Ñ'7Ó#8˜Ü1Ø*¨8¨*Ð4SÐTóð ð Ð÷O÷ ð ú÷J"÷ "ð "ú÷ö ðJ Ðú÷gö ðf Ðú÷Oö ðN Ðú÷sö ðr Ðú÷eö ðd Ðüò%sf   Ã(XÍX.Í/X	ÎX.ÐYÑYÓ'Y*ÔY>ÖZØX	ØX+Ø%	X.Ø.X?	ÙY	ÙY'	Ù*Y;	Ù>Z	c                ó¨   <€ V ^8„  d   QhRS[ P                  P                  RS[S[R3,          RS[S[S[3,          RS[RS[RS[RS[	R	S[	R
S[	RS[/
# )r!   rO   rP   .rQ   rç   rå   rþ   rý   Úis_inplace_opÚis_out_variant_opr#   )
r,   rS   rT   rD   r2   rU   rV   r	   r   re   )r%   r˜   s   "€r&   r'   r™     s—   ø€ ÷ Sñ Sá—‘×&Ñ&ðSñ ‘F˜C�KÕ ðSñ ‘S™&�[Õ!ð	Sñ
 !ðSñ (ðSñ ðSñ ðSñ ðSñ  ðSñ 
ñSr(   c
                ó¦  € \        4       p
V
e*   VP                  e   V
P                  VP                  4       VP                  fº   V\        P                  P
                  8X  d›   Ve   \        V\        4      '       g   \        h\        P                  ! Ve   \        V4      M^VP                  R7      p\        P                  ! V\        P                  P                   R7       \        VP#                  4       4      pV'       d»   VP                  e«   VP                  p\        V\$        4      '       g   \        h\        V^ ,          \&        P(                  4      '       g   \        hV^ ,          P*                  P,                  VP,                  8X  d
   V^ ,          # WÂ^ ,          n        \/        WW2^ ,          4      # R# V	'       Ed   \        VP                  \0        4      '       g   VP                  3MVP                  p. p^ pVP2                  P4                   Fw  pVP6                  '       g   K  \9        \&        P(                  VVP:                  ,          4      p\9        \$        Wß,          4      Vn        VP=                  V4       V^,          pKy  	  \?        V4      ^8  d   \        R4      h\?        V4      ^8”  d   \1        V4      # V^ ,          # V\        P                  P
                  8w  d   \        V4      hV PA                  WeP                  4      pV'       d.   VP2                  PC                  4       '       d   \/        WVV4      # V# )z<
Tail of main dispatching logic, called from C++ fast path.
N)rõ   )rú   z,out variant should have at least one out arg)"r   r1   ræ   r\   Úequalr^   r‡   re   rY   r,   r;   r$   Údevice_typeÚdistÚ
all_reduceÚReduceOpÚMINÚitemr
   ro   rp   rø   rz   r   rD   rX   Ú	argumentsÚis_outr   rÎ   rE   r@   ÚwrapÚ_is_view_op)r³   rO   rP   rQ   rç   rå   rþ   rý   r  r  rü   Úrr1   Úoutput_specsÚout_dtsÚspec_idxÚargumentÚout_dtÚrets   &&&&&&&&&&         r&   Ú_dispatch_fast_path_python_tailÚ,OpDispatcher._dispatch_fast_path_python_tail  sw  € ô" +Ó,ˆ
ØÒ! o×&AÑ&AÒ&MØ×/Ñ/°×0KÑ0KÔLà×&Ñ&Ò.Øœ$Ÿ*™*×,Ñ,Ô,ð &Ò-´¸MÌ4×1PÒ1PÜ(Ð(Ü—L’LØ*7Ò*C”C˜Ô&ÈØ'×3Ñ3ô�ô —’ ¤d§m¡m×&7Ñ&7Õ8Ü $ Q§V¡V£X£�çà×*Ñ*Ò6Ø-×9Ñ9�Ü! +¬{×;Ò;Ü(Ð(Ü! $ q¥'¬7¯?©?×;Ò;Ü(Ð(ð ˜•7—=‘=×+Ñ+¨{×/EÑ/EÔEØ �7�Nð !,�Q•”Ü2°7À&ÈqÍ'ÓRÐRáßÐô " /×"=Ñ"=¼u×EÒEð !×,Ñ,Ñ.à$×0Ñ0ð ð
 ˆGØˆHØ#ŸO™O×5Ô5�Ø—?—?’?Ü!¤'§/¡/°6¸(¿-¹-Õ3HÓI�FÜ#'¬°\Õ5KÓ#L�F”LØ—N‘N 6Ô*Ø •M’Hñ 6ô �7‹|˜aÔÜ$Ð%SÓTÐTÜ%(¨£\°AÔ%5”5˜“>ÐE¸7À1½:ÐEàœ$Ÿ*™*×,Ñ,Ô,Ü$ WÓ-Ð-Ø—)‘)˜M×+FÑ+FÓGˆCß §¡×!<Ñ!<×!>Ò!>Ü2°7À&È#ÓNÐNà�
r(   c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r!   rŠ   Úsuggested_input_schemarì   r#   N)r   r   re   )r%   r˜   s   "€r&   r'   r™   a  s1   ø€ ÷ ?3ñ ?3Ùð?3á (ð?3ñ +/ð?3ð 
ñ	?3r(   c           
     ó,  € \        4       pV P                  e+   \        \        P                  ! VP
                  4      4      pMVP
                  p. p\        V P                  4       EF8  w  rgWF,          p\        V\        4      '       dè   \        \        P                  V P                  V,          4      p	Wx8w  d£   Ve   VP                  WgV4      M\        P                   ! 4       p
\"        P$                  ! TT\'        \(        V P*                  ;'       g    VP,                  4      4       V
;_uu_ 4        \/        V	VV4      pR R R 4       VP1                  X4       K÷  VP1                  V	4       EK  V'       d   VP1                  V4       EK'  VP1                  V4       EK;  	  V'       dG   \3        \5        V P                  4      \5        V4      4       F  pVP1                  WF,          4       K  	  \        V4      V n        R #   + '       g   i     LÉ; ir*   )r   r„   rD   r�   Útree_leavesÚargs_schemarC   Úflat_args_schemar‡   r
   r   r,   rh   rƒ   Úrecord_redistribute_callsr3   r7   r   Úobserve_redistributionr   r   rÃ   rú   r   rE   Úranger@   )rŠ   r#  rì   rü   Úflatten_args_schema_to_reshardÚnew_local_argsrJ   Úarg_specÚreshard_arg_specr|   Úredistribute_contextÚresharded_local_tensors   &&&         r&   rë   Ú$OpDispatcher.redistribute_local_args`  s¾  € ô +Ó,ˆ
ð ×!Ñ!Ò-Ü-2Ü×"Ò"Ð#9×#EÑ#EÓFó.Ñ*ð .D×-OÑ-OÐ*à')ˆÜ$ W×%=Ñ%=×>‰KˆAØ=Õ@ÐÜ˜(¤K×0Ò0Ü#¤E§L¡L°'×2DÑ2DÀQÕ2GÓH�ØÔ/ð
 &Ò1ð #×<Ñ<ØÐ)9ôô (×3Ò3Ó5ð )ô 2×HÒHØ à(Ü"Ü?Ø#ŸN™N×GÐGÐ.D×.GÑ.Góô	÷ .Ò-Ü1JØ(Ø$à,ó	2Ð.÷ .ð #×)Ñ)Ð*@ÖAà"×)Ñ)¨,×7ç3ð #×)Ñ)Ð*:×;à"×)Ñ)¨(×3ñM ?÷R ,ÜÜ�G×,Ñ,Ó-¬sÐ3QÓ/Rö�ð ×%Ñ%Ð&DÕ&GÖHñô
 # >Ó2ˆÖ÷3 .×-ús   Ä4HÈHc                ó„   <€ V ^8„  d   QhRS[ P                  P                  RS[S[R3,          RS[S[S[3,          RS[/# rc   )r,   rS   rT   rD   r2   rU   rV   r   )r%   r˜   s   "€r&   r'   r™   ¢  sU   ø€ ÷ Iñ Iá—‘×&Ñ&ðIñ ‘F˜C�KÕ ðIñ ‘S™&�[Õ!ð	Iñ
 
ñIr(   c                ó(   € V P                  WVR 4      # )T)Ú_unwrap_to_op_info_impl)r³   rO   rP   rQ   s   &&&&r&   r€   ÚOpDispatcher.unwrap_to_op_info¢  s   € ð ×+Ñ+¨G¸6À4ÓHÐHr(   c          
      óŠ   <€ V ^8„  d   QhRS[ P                  P                  RS[S[R3,          RS[S[S[3,          RS[RS[/# )r!   rO   rP   .rQ   Úcreate_schemar#   )	r,   rS   rT   rD   r2   rU   rV   re   r   )r%   r˜   s   "€r&   r'   r™   ª  s`   ø€ ÷ mñ má—‘×&Ñ&ðmñ ‘F˜C�KÕ ðmñ ‘S™&�[Õ!ð	mñ
 ðmñ 
ñmr(   c           
     ó(  a€ V P                   P                  P                  VR 4      pVf'   V P                   P                  P                  VR 4      pR R loVR J;'       d    VP                  ;'       g;    \
        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      pV'       d   \        P                  ! V4      w  rxTp	MTR r‰. p
/ p. p/ pR pV	 Fø  p\        V\        P                  4      '       dK   VP                  VP                  4       V
P                  VP                  4       Vf   VP                  pKk  Km  \        V\        P                   4      '       dJ   T;'       g    \#        W4      pV
P                  V P%                  WV4      4       VP                  V4       KÖ  V
P                  V4       VP                  V4       Kú  	  VP'                  4        F´  w  pp\        V\        P                  4      '       d3   VP                  VV&   VP                  VV&   Vf   VP                  pKV  KX  \        V\        P                   4      '       d3   T;'       g    \#        W4      pV P%                  VVV4      VV&   VVV&   Kª  VVV&   VVV&   K¶  	  Vf   \)        RV R24      h\+        TV'       d7   \-        TV'       d   \        P.                  ! W¨4      M
\1        V
4      VVR7      MR V
\1        V4      VV4      pV# )	Nc                ó0   € V ^8„  d   QhR\         R\        /# )r!   Úargr#   )r2   re   )r%   s   "r&   r'   Ú:OpDispatcher._unwrap_to_op_info_impl.<locals>.__annotate__½  s   € ÷ 	ñ 	¤&ð 	¬Tñ 	r(   c                 ó¦   € \        V \        \        34      '       d5   \        ;QJ d    R  V  4       F  '       g   K   R# 	  R# ! R  V  4       4      # R# )c              3   óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5ir*   )r‡   r,   rh   )Ú.0r  s   & r&   Ú	<genexpr>ÚQOpDispatcher._unwrap_to_op_info_impl.<locals>._contains_tensor.<locals>.<genexpr>¿  s   é € ÐJÁc¸dœ: d¬E¯L©L×9Ð9Ãcùs   ‚')TF)r‡   r>   rD   Úany)r:  s   &r&   Ú_contains_tensorÚ>OpDispatcher._unwrap_to_op_info_impl.<locals>._contains_tensor½  s?   € Ü˜#¤¤e˜}×-Ò-ß“sÑJÁcÓJ—s”sÐJ’sÐJ�sÑJÁcÓJÓJÐJÙr(   c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir*   r—   )r>  r:  rB  s   & €r&   r?  Ú7OpDispatcher._unwrap_to_op_info_impl.<locals>.<genexpr>Ä  s   øé € Ð7±$¨3Ñ! #×&Ð&³$ùs   ƒTFz*found no DeviceMesh from dtensor args for Ú!)Úschema_info)r›   Úop_to_schema_infoÚgetÚ)op_to_schema_info_for_single_dim_strategyÚneeds_pytreerA  r�   Útree_flattenr‡   ro   rp   rE   rq   rø   r†   r,   rh   r   Ú%_try_replicate_spec_for_scalar_tensorÚitemsrY   r   r   r‚   rD   )r³   rO   rP   rQ   r7  Úruntime_schema_inforK  Ú	tree_argsÚ	args_specÚ	args_listr&  Úkwargs_schemarƒ   r…   rç   r:  ÚkÚvrŠ   rB  s   &&&&&              @r&   r4  Ú$OpDispatcher._unwrap_to_op_info_implª  só  ø€ ð #×6Ñ6×HÑH×LÑLØ�Tó
Ðð Ò&à×(Ñ(×RÑR×VÑVØ˜Tóð  õ	ð   tÐ+×PÐPÐ0C×0PÑ0P÷8ð 8ç‹SÔ7±$Ó7�S�SŠSÔ7±$Ó7Ó7ð 	÷ ä#)×#6Ò#6°tÓ#<Ñ ˆIØ*3‰Ià#'¨�yà$&ˆØ+-ˆØ#%ˆ
Ø*,ˆØ*.ˆãˆCÜ˜#œwŸ™×/Ò/Ø×!Ñ! #×"3Ñ"3Ô4Ø×"Ñ" 3§9¡9Ô-ØÒ'à#&§?¡?’Lñ (ô ˜C¤§¡×.Ò.Ø+÷  ð  Ô/FØó0�ð ×"Ñ"Ø×>Ñ>Ø lóôð
 ×!Ñ! #Ö&ð ×"Ñ" 3Ô'Ø×!Ñ! #Ö&ñ) ð, —L‘L–N‰DˆAˆqÜ˜!œWŸ_™_×-Ò-Ø"#§/¡/�˜Q‘Ø#$§7¡7�˜aÑ ØÒ'à#$§=¡=’Lñ (ô ˜AœuŸ|™|×,Ò,Ø+÷  ð  Ô/FØó0�ð $(×#MÑ#MØØØ ó$�˜aÑ ð
 #$�˜Q“ð $%�˜aÑ Ø"#�˜Q“ñ) #ð, ÒÜ Ø<¸W¸IÀQÐGóð ô Ø÷ ô Ø÷ !ô ×)Ò)¨+ÔAä˜{Ó+àØ/õ
ð ØÜ�*ÓØØó%
ˆð( ˆr(   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# )r!   Úresr}   r#   )r2   r   )r%   r˜   s   "€r&   r'   r™     s"   ø€ ÷ ñ ‘&ð ¡ð ±6ñ r(   c                óh  € \        V \        P                  4      '       dj   VeH   \        V\        4      '       g   \	        RV R24      h\
        P                  ! WV P                  R7      # V P                  ^ 8w  d   \	        R4      hV # \        V \        \        34      '       d�   Ve   \        V\        \        34      '       g   \	        RV R24      h. p\        W4       F)  w  r4VP                  \        P                  W44      4       K+  	  \        V \        4      '       d   \        V4      # T# V # )NzBoutput spec does not match with output! Expected DTensorSpec, got Ú.)r~   zoutput tensor should be scalar!zAoutput spec does not match with output! Expected list/tuple, got )r‡   r,   rh   r
   rY   ro   rp   r~   Úndimr>   rD   rB   rE   r•   r  )rX  r}   Úres_listrÖ   r  s   &&   r&   r  ÚOpDispatcher.wrap  s  € ä�cœ5Ÿ<™<×(Ò(ØÒÜ! $¬×4Ò4Ü(Ø\Ð]aÐ\bÐbcÐdóð ô —’ sÀ×@QÑ@QÔRÐRð —8‘8˜q”=Ü(Ð)JÓKÐKØ�
Ü˜œd¤E˜]×+Ò+ØÒ$¬°D¼4Ä¸-×)HÒ)HÜ$ØWÐX\ÐW]Ð]^Ð_óð ð ˆHÜ˜Cž‘�à—‘¤× 1Ñ 1°!Ó 7Ö8ñ 'ô '1°´e×&<Ò&<”5˜“?ÐJÀ(ÐJð ˆJr(   c                ón   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  RS[RS[/# )r!   rO   Ú
tensor_argrç   r#   )r,   rS   rT   rh   r	   r
   )r%   r˜   s   "€r&   r'   r™   8  sA   ø€ ÷ " ñ " á—‘×&Ñ&ð" ñ —L‘Lð" ñ !ð	" ñ
 
ñ" r(   c           
     ó˜  € VP                  4       ^8X  d*   VP                  ^8X  d   \        P                  ! R^R7       VP                  4       ^8X  g   V P                  '       dY   \        V\        4       3VP                  ,          \        VP                  VP                  4       VP                  R7      R7      pV# \        V R24      h)é   záFound a non-scalar tensor with numel=1 and ndim!=0, we are implicitly creating a replicated DTensor for it. However, please consider changing it to a scalar tensor or explicitly create a DTensor under distributed environment.rÛ   rw   )r{   zó: got mixed torch.Tensor and DTensor, need to convert all torch.Tensor to DTensor before calling distributed operators! Please see https://docs.pytorch.org/docs/main/distributed.tensor.html#mixed-tensor-and-dtensor-operations for more details.)Únumelr[  ÚwarningsÚwarnrº   r
   r   r   ri   r=   rx   r`   )r³   rO   r_  rç   Úreplication_specs   &&&& r&   rM  Ú2OpDispatcher._try_replicate_spec_for_scalar_tensor8  sÁ   € ð ×ÑÓ Ô" z§¡¸!Ô';Ü�MŠMðPð õð ×ÑÓ Ô" d×&F×&FÐ&Fä*ØÜ“� ×!2Ñ!2Õ2Ü&Ø$×*Ñ*Ø%×,Ñ,Ó.Ø$×*Ñ*ôô Ðð   Ðô Ø�)ð %ð %óð r(   )r±   r©   r›   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r´   Úpropertyrº   Úsetterr×   r  r   Ústaticmethodrë   r€   r4  r  rM  Ú__static_attributes__Ú__classdictcell__)r˜   s   @r&   r•   r•   Ã   sº   ø‡ € ñ÷
ð 
ðX ÷Bó ðBð !×'Ñ'÷Gó (ðG÷@ð @÷DBð B÷HSð Sðj ÷?3ó ð?3÷BIð I÷mð mð^ ÷ó ð÷<" ö " r(   r•   )Nr3   rÉ   rc  Úcollections.abcr   Útypingr   r,   Útorch.distributedÚdistributedr  Útorch.distributed.tensor._apir;   Ú_apiro   Ú torch.distributed.tensor._randomÚ_randomrí   Útorch._library.utilsr   Útorch._loggingr   Útorch._prims.rng_primsr   Ú)torch.distributed._functional_collectivesr   Útorch.distributed.device_meshr	   Ú&torch.distributed.tensor._dtensor_specr
   r   Ú)torch.distributed.tensor._nonlinear_reduxr   Ú#torch.distributed.tensor._op_schemar   r   r   r   r   Ú&torch.distributed.tensor._redistributer   Ú'torch.distributed.tensor._sharding_propr   Ú!torch.distributed.tensor._tp_convr   r   Útorch.distributed.tensor._utilsr   r   r   Ú(torch.distributed.tensor.placement_typesr   r   r   Útorch.utils._debug_moder   Útorch.utils._python_dispatchr   Útorch.utilsr   r�   ÚImportErrorr   r[   r\   Ú	getLoggerrg  rÆ   ÚsetLevelr+   r/   r9   rM   ra   rl   rs   r“   r•   r—   r(   r&   Ú<module>rŒ     sñ   ðã Û Û Ý $Ý ã Ý  ß /Ó /ß 1Ó 1Ý .Ý %Ý 5Ý EÝ 4ß JÝ G÷ó õ CÝ LÝ F÷÷ñ ÷
 SÑ RÝ 9Ý Dð.Ý1ð ‡y�y‡~�~€Ø	×	Ò	˜8Ó	$€ð —‘€õ/ð
 '€„õ8õ"õD@õ$"õ,õ)#÷XW
 ó W
 øðo ô .ß-ð.ús   Â.D% Ä%D5Ä4D5