+
    –°³jg€  ã                   ó  € ^ RI t ^ RIt^ RIHu Ht ^ RIHt ^ RIH	t	 ^RI
HtHt ^RIHt ] P                  ! ]4      tR R ltR R	 ltR
 R lt]	]]]3,          ,          ! 4       tR R ltR R ltR R ltR R ltR R ltR tR tR# )é    N)Úis_symbolic)Ú
OrderedSet)ÚconfigÚir)ÚVc                ód   € V ^8„  d   QhR\         P                  R\         P                  R\        /# )é   ÚxÚcomm_buffer_typeÚreturn)r   Ú	TensorBoxÚCommBufferTypeÚbool)Úformats   "Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/comm_lowering.pyÚ__annotate__r   7   s.   € ÷ ñ Ü	‡|�|ðÜ')×'8Ñ'8ðä	ñó    c                óú  € \        V 4      p\        V\        P                  4      '       d   R# \        V\        P                  4      '       d   VP                  4       '       g   R# VP                  4       p\        V\        P                  4      '       d   R# \        V\        P                  4      '       d   R# \        V\        P                  4      '       d"   \        VP                  4       4      '       g   R# R# )zY
Check if an input can be realized as a comm buffer of the specified
`comm_buffer_type`.
TF)Ú	_get_dataÚ
isinstancer   ÚLoopsÚBufferÚshould_allocateÚget_output_specÚCommBufferLayoutÚFixedLayoutÚFlexibleLayoutr   Ú	get_numel)r
   r   ÚdataÚlayouts   &&  r   Úcan_realize_as_comm_bufferr!   7   s§   € ô �Q‹<€Dä�$œŸ™×!Ò!Ùô �$œŸ	™	×"Ò"¨4×+?Ñ+?×+AÒ+AÙà×!Ñ!Ó#€FÜ�&œ"×-Ñ-×.Ò.Ùä�&œ"Ÿ.™.×)Ò)Ùä�&œ"×+Ñ+×,Ò,´[ÀÇÁÓAQ×5RÒ5RÙár   c                ó`   € V ^8„  d   QhR\         P                  R\         P                  RRRR/# )r	   r
   r   Ú
group_nameú,torch.distributed.distributed_c10d.GroupNamer   N©r   r   r   )r   s   "r   r   r   U   s:   € ÷ &ñ &Ü	‡|�|ð&ä×'Ñ'ð&ð ?ð&ð 
ñ	&r   c                ó$  € V P                  4        \        V 4      p\        V\        P                  4      '       g   \        R\        V4       24      hVP                  4       p\        V\        P                  4      '       d   R# \        V\        P                  \        P                  34      '       g   \        RV R24      h\        VP                  4       4      '       d   \        RV R24      h\        P                  ! VVVR7      Vn        R# )zÓ
Realize an input as a comm buffer of the specified `comm_buffer_type`.

Specifically, this realizes the underlying buffer if it's still unrealized
and changes the layout of the buffer to `ir.CommBufferLayout`.
zexpected an `ir.Buffer`, got Nz`A buffer can only be realized as a comm buffer if it has `FlexibleLayout` or `FixedLayout` (got ú).zGA buffer with symbolic shape cannot be converted to a comm buffer (got )r    r   r#   )Úrealizer   r   r   r   ÚAssertionErrorÚtyper   r   r   r   r   r   r    )r
   r   r#   Úbufferr    s   &&&  r   Úrealize_as_comm_bufferr,   U   sð   € ð ‡I�I„KÜ�q‹\€FÜ�fœbŸi™i×(Ò(ÜÐ<¼TÀ&»\¸NÐKÓLÐLà×#Ñ#Ó%€FÜ�&œ"×-Ñ-×.Ò.Ùô �fœr×0Ñ0´"·.±.ÐA×BÒBÜð:Ø:@¸ÀðEó
ð 	
ô
 �6×#Ñ#Ó%×&Ò&Üð"Ø"( ¨ð-ó
ð 	
ô
 ×'Ò'ØØ)Øô€F†Mr   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# ©r	   r
   r   )r   r   ÚIRNode)r   s   "r   r   r   ~   s"   € ÷ 
ñ 
”—‘ð 
¤"§)¡)ñ 
r   c                 óâ  € \        V P                  \        P                  4      '       dn   V P                  P	                  4       p\        V\        P                  \        P
                  34      '       g   \        R \        V4       24      hVP                  # \        V P                  \        P                  4      '       d   V P                  P                  # \        RV P                   R24      h)z2expected an `ir.BaseView` or `ir.MutableBox`, got z\Expect the data attr of a `TensorBox` to be either an `ir.BaseView` or `ir.StorageBox` (got r'   )	r   r   r   ÚBaseViewÚunwrap_viewÚ
MutableBoxr)   r*   Ú
StorageBox)r
   Únodes   & r   r   r   ~   s°   € Ü�!—&‘&œ"Ÿ+™+×&Ò&à�v‰v×!Ñ!Ó#ˆÜ˜$¤§¡¬b¯m©mÐ <×=Ò=Ü ØDÄTÈ$ÃZÀLÐQóð ð �y‰yÐÜ	�A—F‘FœBŸM™M×	*Ò	*à�v‰v�{‰{Ðäð8Ø89¿¹°x¸rðCó
ð 	
r   c                ó<   € V ^8„  d   QhR\         P                  RR/# )r	   r
   r   N©r   r/   )r   s   "r   r   r   ”   s   € ÷ 8ñ 8œŸ™ð 8 tñ 8r   c                ó~   € \         P                  \        \        P                  4      V P                  4       34       R# )z˜
If a non-blocking collective is lowered as a blocking collective, the wait
node in the original graph becomes useless and we can skip the lowering it.
N)Ú_bufs_to_skip_waitÚaddÚidr   ÚgraphÚget_name©r
   s   &r   Úmark_as_skip_waitr?   ”   s%   € ô
 ×ÑœBœqŸw™w›K¨¯©«Ð6Ö7r   c                óD   € V ^8„  d   QhR\         P                  R\        /# r.   )r   r/   r   )r   s   "r   r   r   œ   s   € ÷ =ñ =œŸ	™	ð =¤dñ =r   c                 ób   € \        \        P                  4      V P                  4       3\        9   # ©N)r;   r   r<   r=   r9   r>   s   &r   Úshould_skip_waitrC   œ   s!   € ÜŒq�w‰w‹K˜Ÿ™›Ð&Ô*<Ñ<Ð<r   c                óH   € V ^8„  d   QhR\         P                  R\        RR/# )r	   ÚinpÚ	reduce_opr#   r$   ©r   r   Ústr)r   s   "r   r   r       s*   € ÷ ñ Ü	�‰ðäðð ?ñr   c                 ó|  € ^ RI Hp V P                  4       V P                  4       P                  ,          p\
        P                  P                  ;'       dg    V! V4      ;'       dW    \        V \        P                  P                  4      ;'       d+    VR8H  ;'       d    V\
        P                  P                  8*  # )r   )Úis_symm_mem_enabled_for_groupÚsum)Ú#torch.distributed._symmetric_memoryrJ   r   Ú	get_dtypeÚitemsizer   Ú_collectiveÚauto_selectr!   r   r   ÚSYMM_MEMÚ#one_shot_all_reduce_threshold_bytes)rE   rF   r#   rJ   Úinp_sizes   &&&  r   Ú$_should_lower_as_one_shot_all_reducerT       s¦   € õ
 Rà�}‰}‹ §¡£×!9Ñ!9Õ9€Hä×Ñ×&Ñ&÷ 	Oð 	OÙ)¨*Ó5÷	Oð 	Oä& s¬B×,=Ñ,=×,FÑ,FÓG÷	Oð 	Oð ˜Ñ÷	Oð 	Oð œ×*Ñ*×NÑNÑNðr   c                ó8   € V ^8„  d   QhR\         P                  /# )r	   rE   ©r   r   )r   s   "r   r   r   ±   s   € ÷ 
ñ 
œbŸl™lñ 
r   c           	      óB  € \        V \        P                  P                  V4       \        P
                  ! \        P                  P                  \        P                  P                  \        P                  P                  P                  P                  V VV4      4      # rB   )r,   r   r   rQ   ÚpytreeÚtree_mapr   ÚcreateÚFallbackKernelÚtorchÚopsÚsymm_memÚone_shot_all_reduceÚdefault)rE   rF   r#   s   &&&r   Ú_one_shot_all_reducera   ±   sn   € Ü˜3¤× 1Ñ 1× :Ñ :¸JÔGÜ�?Š?Ü
�‰×ÑÜ
×Ñ× Ñ Ü�I‰I×Ñ×2Ñ2×:Ñ:ØØØó		
óð r   c                ó8   € V ^8„  d   QhR\         P                  /# )r	   r   r7   )r   s   "r   r   r   ¾   s   € ÷ %ñ %´2·9±9ñ %r   c                 óò   € \         P                  P                  ! W.VO5!  p\        V\         P                  4      '       g   \        R \        V4       24      h\         P                  P                  V4      # )zexpected an `ir.IRNode`, got )	r   Ú_CollectiveKernelÚcreate_out_of_placer   r/   r)   r*   r   rZ   )ÚkernelÚinputsÚargsr5   s   &&* r   Ú_create_out_of_placeri   ¾   sZ   € Ü×Ñ×3Ò3°FÐJÀTÓJ€DÜ�dœBŸI™I×&Ò&ÜÐ<¼TÀ$»Z¸LÐIÓJÐJÜ�<‰<×Ñ˜tÓ$Ð$r   c                 ó  aaaaaa€  \         P                  P                  P                  p ^RIHoH	oH
oHoHo TTT3R lp\         P                  P                  oT! SP                  4      R TT3R ll4       pT! SP                  4      R TT3R ll4       pT! SP                  4      TT3R	 l4       pT! SP                  4      T3R
 l4       pT! SP                   4      T3R l4       pT! SP"                  4      T3R l4       pT! SP$                  4      T3R l4       pT! SP&                  4      T3R l4       p	T! SP(                  4      T3R l4       p
T! SP*                  4      T3R l4       pT! SP,                  4      T3R l4       pT! SP.                  4      TT3R l4       pT! SP0                  4      T3R l4       pT! \         P                  P2                  P4                  4      R 4       pT! SP6                  4      T3R l4       pT! SP8                  4      T3R l4       pT! SP:                  4      T3R l4       pT! SP<                  4      T3R l4       pR#   \         d    \
        P                  R4        R# i ; i)z,
Register lowerings for the comm subsystem.
zRInductor support for distributed collectives depends on building torch.distributedN)Úadd_layout_constraintÚcloneÚconstrain_to_fx_stridesÚcopy_Úregister_loweringc                 ó&   <€ S! V S4       S! V 4      # rB   © )Úfnrk   rm   ro   s   &€€€r   Úregister_comm_loweringÚ7register_comm_lowerings.<locals>.register_comm_loweringÚ   s   ø€ Ù˜bÐ"9Ô:Ù  Ó$Ð$r   c                óh   € V ^8„  d   QhR\         P                  R\        RRR\         P                  /# ©r	   rE   rF   r#   r$   r   rG   )r   s   "r   r   Ú-register_comm_lowerings.<locals>.__annotate__á   s9   € ÷ ñ Ü�\‰\ðäðð Cðô 
�‰ñ	r   c                 ó¸  <€ \        WV4      '       d   \        WV4      # S! V 4      p \        P                  '       dH   V P	                  4        \
        P                  P                  P                  V P                  4       4       \        P                  P                  V 4      p \        P                  P                  SP                  P                   V VV4       V # rB   )rT   ra   r   Ú reorder_for_compute_comm_overlapr(   r   r<   Úno_fuse_buffer_namesr:   r=   r   ÚExternKernelÚrequire_contiguousÚ_AllReduce_KernelÚcreate_inplaceÚall_reduce_r`   )rE   rF   r#   Úc10drl   s   &&&€€r   Ú_all_reduceÚ,register_comm_lowerings.<locals>._all_reduceà   s¨   ø€ ô 0°À
×KÒKÜ'¨¸
ÓCÐCñ �C‹jˆÜ×2×2Ð2ð �K‰KŒMÜ�G‰G×(Ñ(×,Ñ,¨S¯\©\«^Ô<ä�o‰o×0Ñ0°Ó5ˆô 	×Ñ×+Ñ+Ø×Ñ×$Ñ$ØØØô		
ð ˆ
r   c                óh   € V ^8„  d   QhR\         P                  R\        RRR\         P                  /# rv   rG   )r   s   "r   r   rw      s9   € ÷ ñ Ü�\‰\ðäðð Cðô 
�‰ñ	r   c                 ó  <€ \        WV4      '       d!   S! V \        WV4      4      p\        V4       V # \        P                  P                  V 4      p \        P                  P                  SP                  P                  V VV4       V # rB   )
rT   ra   r?   r   r{   r|   r}   r~   r   r`   )rE   rF   r#   Úretr€   rn   s   &&& €€r   Ú_all_reduce_Ú-register_comm_lowerings.<locals>._all_reduce_ÿ   s�   ø€ ô 0°À
×KÒKÙØÜ$ S°ZÓ@óˆCô ˜cÔ"ØˆJô �o‰o×0Ñ0°Ó5ˆÜ
×Ñ×+Ñ+Ø×Ñ×$Ñ$ØØØô		
ð ˆ
r   c                 ó¬   <€ V  Uu. uF  pS! V4      NK  	  p p\         P                  P                  SP                  P                  V VV4       V # u upi rB   ©r   rd   r~   Úall_reduce_coalesced_r`   )rg   rF   r#   rE   r€   rl   s   &&& €€r   Ú_all_reduce_coalescedÚ6register_comm_lowerings.<locals>._all_reduce_coalesced  sS   ø€ á(.Ó/© ‘%˜–*©ˆÐ/Ü
×Ñ×+Ñ+Ø×&Ñ&×.Ñ.ØØØô		
ð ˆùò 0s   †Ac                 ót   <€ \         P                  P                  SP                  P                  V VV4       V # rB   r‰   )rg   rF   r#   r€   s   &&&€r   Ú_all_reduce_coalesced_Ú7register_comm_lowerings.<locals>._all_reduce_coalesced_#  s6   ø€ ä
×Ñ×+Ñ+Ø×&Ñ&×.Ñ.ØØØô		
ð ˆr   c                 óH   <€ \        SP                  P                  V VV4      # rB   )ri   Úall_gather_into_tensorr`   )rE   Ú
group_sizer#   r€   s   &&&€r   Ú_all_gather_into_tensorÚ8register_comm_lowerings.<locals>._all_gather_into_tensor-  s(   ø€ ä#Ø×'Ñ'×/Ñ/ØØØó	
ð 	
r   c           	      óÊ   <€ \         P                  ! \        P                  P                  \        P
                  P                  SP                  P                  V VV4      4      # rB   )	rX   rY   r   r   rZ   rd   re   Ú all_gather_into_tensor_coalescedr`   )rg   r’   r#   r€   s   &&&€r   Ú!_all_gather_into_tensor_coalescedÚBregister_comm_lowerings.<locals>._all_gather_into_tensor_coalesced6  sM   ø€ ä�ŠÜ�L‰L×ÑÜ× Ñ ×4Ñ4Ø×5Ñ5×=Ñ=ØØØó	ó
ð 	
r   c                óx   <€ \         P                  P                  SP                  P                  V VVVR 7       V# ©)Úout)r   rd   r~   Úall_gather_into_tensor_outr`   )rE   r’   r#   r›   r€   s   &&&$€r   Ú_all_gather_into_tensor_outÚ<register_comm_lowerings.<locals>._all_gather_into_tensor_outB  s>   ø€ ä
×Ñ×+Ñ+Ø×+Ñ+×3Ñ3ØØØØð 	,ô 	
ð ˆ
r   c                 óJ   <€ \        SP                  P                  V VVV4      # rB   )ri   Úreduce_scatter_tensorr`   )rE   rF   r’   r#   r€   s   &&&&€r   Ú_reduce_scatter_tensorÚ7register_comm_lowerings.<locals>._reduce_scatter_tensorM  s+   ø€ ä#Ø×&Ñ&×.Ñ.ØØØØó
ð 	
r   c          	      óz   <€ \         P                  P                  SP                  P                  V VVVVR 7       V# rš   )r   rd   r~   Úreduce_scatter_tensor_outr`   )rE   rF   r’   r#   r›   r€   s   &&&&$€r   Ú_reduce_scatter_tensor_outÚ;register_comm_lowerings.<locals>._reduce_scatter_tensor_outW  sA   ø€ ä
×Ñ×+Ñ+Ø×*Ñ*×2Ñ2ØØØØØð 	,ô 	
ð ˆ
r   c           
      óÌ   <€ \         P                  ! \        P                  P                  \        P
                  P                  SP                  P                  V VVV4      4      # rB   )	rX   rY   r   r   rZ   rd   re   Úreduce_scatter_tensor_coalescedr`   )rg   rF   r’   r#   r€   s   &&&&€r   Ú _reduce_scatter_tensor_coalescedÚAregister_comm_lowerings.<locals>._reduce_scatter_tensor_coalescedc  sP   ø€ ä�ŠÜ�L‰L×ÑÜ× Ñ ×4Ñ4Ø×4Ñ4×<Ñ<ØØØØóó	
ð 		
r   c                 óJ   <€ \        SP                  P                  V VVV4      # rB   )ri   Úall_to_all_singler`   )rE   Úoutput_split_sizesÚinput_split_sizesr#   r€   s   &&&&€r   Ú_all_to_all_singleÚ3register_comm_lowerings.<locals>._all_to_all_singlep  s+   ø€ ä#Ø×"Ñ"×*Ñ*ØØØØó
ð 	
r   c                 ó‚   <€ S! V 4      p \         P                  P                  SP                  P                  WV4       V # rB   ©r   rd   r~   Ú
broadcast_r`   )rE   Úsrcr#   r€   rl   s   &&&€€r   Ú
_broadcastÚ+register_comm_lowerings.<locals>._broadcastz  s8   ø€ á�C‹jˆÜ
×Ñ×+Ñ+Ø�O‰O×#Ñ# S¨zô	
ð ˆ
r   c                 ór   <€ \         P                  P                  SP                  P                  WV4       V # rB   r²   )rE   r´   r#   r€   s   &&&€r   Ú_broadcast_Ú,register_comm_lowerings.<locals>._broadcast_‚  s/   ø€ ä
×Ñ×+Ñ+Ø�O‰O×#Ñ# S¨zô	
ð ˆ
r   c                 óx   € \        \        P                  P                  P                  P
                  V VVV4      # rB   )ri   r\   r]   Ú_dtensorÚshard_dim_alltoallr`   )rE   Ú
gather_dimÚ	shard_dimr#   s   &&&&r   Ú_shard_dim_alltoallÚ4register_comm_lowerings.<locals>._shard_dim_alltoall‰  s4   € ä#Ü�I‰I×Ñ×1Ñ1×9Ñ9ØØØØó
ð 	
r   c                 ó–   <€ \        V 4      '       d   V # \        P                  P                  SP                  P
                  V 4       V # rB   )rC   r   Ú_WaitKernelÚcreate_waitÚwait_tensorr`   )rE   r€   s   &€r   Ú_wait_tensorÚ-register_comm_lowerings.<locals>._wait_tensor“  s8   ø€ ä˜C× Ò ØˆJä
�‰×"Ñ" 4×#3Ñ#3×#;Ñ#;¸SÔAØˆ
r   c                 ó„   <€ \         P                  P                  V 4      p \        SP                  P
                  WW#4      # rB   )r   r{   r|   ri   Úisendr`   )rE   ÚdstÚtagr#   r€   s   &&&&€r   Ú_isendÚ'register_comm_lowerings.<locals>._isend›  s0   ø€ ä�o‰o×0Ñ0°Ó5ˆÜ# D§J¡J×$6Ñ$6¸À#ÓRÐRr   c                 ó°   <€ \         P                  P                  V 4      p \         P                  P	                  SP
                  P                  WW#4       V # rB   )r   r{   r|   rd   r~   Úirecvr`   )rE   r´   rÊ   r#   r€   s   &&&&€r   Ú_irecvÚ'register_comm_lowerings.<locals>._irecv   sC   ø€ ä�o‰o×0Ñ0°Ó5ˆÜ
×Ñ×+Ñ+Ø�J‰J×Ñ ¨#ô	
ð ˆ
r   c           
      ó„  <€ V Uu. uF"  p\         P                  P                  V4      NK$  	  ppSP                  P                  p\
        P                  P                  ;_uu_ 4        \         P                  P                  VV VVVV4      pR R R 4       XP                  pVP                  p	VP                  p
VP                  pVP                  '       d   \        V RVP                   24      h\!        W	4       FK  w  rÍVP#                  4        VR8X  g   K  \
        P                  P%                  VP'                  4       4       KM  	  V	^ ,          P)                  4       p\         P                  ! \         P*                  ! VR7      VV	V
V4      p. p\-        \!        WV4      4       Fû  w  pw  rÅpVR8X  d‚   VP.                  P1                  \         P2                  ! \         P4                  ! VR7      W_4      4       VP6                  P1                  VP'                  4       4       VP1                  V4       K‘  \         P8                  ! \         P                  P;                  V4      V\<        V3.4      pVP1                  \         P>                  PA                  V4      4       Ký  	  V# u upi   + '       g   i     EL*; i)NÚ rÎ   )Údevice)!r   r{   r|   Úbatch_p2p_opsr`   r   r<   Ú	fake_moderd   Úprocess_kernelÚexample_outputÚtensor_argsÚnon_tensor_argsÚunflatten_argsÚunbacked_bindingsr)   Úzipr(   Úmark_buffer_mutatedr=   Úget_device_or_errorÚMultiOutputLayoutÚ	enumerateÚmutation_outputsÚappendÚMutationOutputÚ
NoneLayoutÚalias_namesÚMultiOutputÚtensor_to_layoutÚlistr   rZ   )Úop_listÚ	peer_listÚtag_listÚtensorsr#   Útrf   Úresultr×   rØ   rÙ   rÚ   ÚopÚ
tensor_argrÓ   ÚpackedÚresultsÚiÚex_outÚplaceholderr€   s   &&&&&               €r   Ú_batch_p2p_opsÚ/register_comm_lowerings.<locals>._batch_p2p_ops¨  s0  ø€ áBIÓJÁ'¸Q”2—?‘?×5Ñ5°aÖ8Á'ˆÐJØ×#Ñ#×+Ñ+ˆÜ�W‰W××ÓÜ×)Ñ)×8Ñ8ØØØØØØóˆF÷ ð  ×.Ñ.ˆØ×(Ñ(ˆØ ×0Ñ0ˆØ×.Ñ.ˆØ×#×#Ð#Ü  F 8¨1¨V×-EÑ-EÐ,FÐ!GÓHÐHÜ! 'Ö7‰NˆBØ×ÑÔ Ø�WŽ}Ü—‘×+Ñ+¨J×,?Ñ,?Ó,AÖBñ 8ð
 ˜Q•×3Ñ3Ó5ˆÜ×%Ò%Ü× Ò ¨Ô/ØØØØó
ˆð ˆÜ"+¬C°À.Ó,QÖ"RÑˆA‰��vØ�WŒ}Ø×'Ñ'×.Ñ.Ü×%Ò%¤b§m¢m¸6Ô&BÀAÓNôð ×"Ñ"×)Ñ)¨!¯*©*«,Ô7Ø—‘˜qÖ!ô !ŸnšnÜ×(Ñ(×9Ñ9¸&ÓAØÜ˜A�Y�Kó�ð
 —‘œrŸ|™|×2Ñ2°;Ó?Ö@ñ #Sð ˆùò_ Kç×Ðús   †(J)Á(%J.Ê.J?	)r\   r]   Ú_c10d_functionalÚ
all_reduceÚAttributeErrorÚlogÚinfoÚloweringrk   rl   rm   rn   ro   r   Úall_reduce_coalescedrŠ   r‘   r–   rœ   r    r¤   r¨   r¬   Ú	broadcastr³   r»   r¼   rÄ   rÈ   rÎ   rÔ   )Ú_rs   r�   r†   r‹   rŽ   r“   r—   r�   r¡   r¥   r©   r¯   rµ   r¸   r¿   rÅ   rË   rÏ   rö   rk   r€   rl   rm   rn   ro   s                       @@@@@@r   Úregister_comm_loweringsr  Å   s   ý€ ðÜ�I‰I×&Ñ&×1Ñ1ˆ÷õ ÷%ô �9‰9×%Ñ%€Dá˜DŸO™OÓ,÷ð ó -ðñ< ˜D×,Ñ,Ó-÷ð ó .ðñ0 ˜D×5Ñ5Ó6õó 7ðñ ˜D×6Ñ6Ó7ôó 8ðñ ˜D×7Ñ7Ó8ô
ó 9ð
ñ ˜D×AÑAÓBô	
ó Cð	
ñ ˜D×;Ñ;Ó<ôó =ðñ ˜D×6Ñ6Ó7ô
ó 8ð
ñ ˜D×:Ñ:Ó;ô	ó <ð	ñ ˜D×@Ñ@ÓAô

ó Bð

ñ ˜D×2Ñ2Ó3ô
ó 4ð
ñ ˜DŸN™NÓ+õó ,ðñ ˜DŸO™OÓ,ôó -ðñ œEŸI™I×.Ñ.×AÑAÓBñ
ó Cð
ñ ˜D×,Ñ,Ó-ôó .ðñ ˜DŸJ™JÓ'ôSó (ðSñ ˜DŸJ™JÓ'ôó (ðñ ˜D×.Ñ.Ó/ô0ó 0ò0øô} ô Ü�‰ð ô	
ò 	ðús   ˆ$I# É# JÊJc                 óÌ  aaaa€  \         P                  P                  oSP                  p ^ RIHp T! SP                  P                  SP                  P                  4       T! SP                  P                  SP                  P                  4       ^RIHp R R loR T3R lloR	 R
 loT! SP                  4      R TT3R ll4       pT! SP                  4      R TT3R ll4       pT! SP                  4      R TT3R ll4       pT! SP                  4      R TT3R ll4       pT! SP                  4      R TT3R ll4       pT! SP                   4      R TT3R ll4       pT! SP"                  4      R TT3R ll4       p	T! SP$                  4      R TT3R ll4       p
T! SP&                  4      R TT3R ll4       pT! SP(                  4      R TT3R ll4       pT! SP*                  4      R TT3R  ll4       pT! SP,                  4      R! TT3R" ll4       pT! SP.                  4      R# TT3R$ ll4       pT! SP0                  4      R5R% TT3R& lll4       pT! SP2                  4      R' TT3R( ll4       pT! SP4                  4      R6R) TT3R* lll4       pT! SP6                  4      R6R+ TT3R, lll4       pT! SP8                  4      R- T3R. ll4       pT! SP:                  4      R/ TT3R0 ll4       pT! SP<                  4      R1 T3R2 ll4       pT! SP>                  4      R3 T3R4 ll4       pR#   \         d    \
        P                  R4        R# i ; i)7z@
Register lowerings for symmetric memory (symm_mem) operations.
z7symm_mem ops not available, skipping symm_mem loweringsN)Úregister_out_variant)ro   c                ó|   € V ^8„  d   QhR\         P                  R\         P                  RRR\         P                  /# )r	   rE   r   r#   r$   r   r%   )r   s   "r   r   Ú1register_symm_mem_lowerings.<locals>.__annotate__ù  s?   € ÷ ñ Ü�\‰\ðä×+Ñ+ðð Cðô 
�‰ñ	r   c                óô   € V P                  4        \        P                  P                  V P	                  4       V P                  4       V P                  4       V P                  4       R7      p\        W1V4       V# )z‡
Fallback: insert a Pointwise identity copy allocated in P2P via
CommBufferLayout.  Used when we don't control the input's allocation.
)rÓ   ÚdtypeÚinner_fnÚranges)	r(   r   Ú	PointwiserZ   Ú
get_devicerM   Úmake_loaderÚget_sizer,   )rE   r   r#   Úcopys   &&& r   Ú_copy_input_to_comm_bufferÚ?register_symm_mem_lowerings.<locals>._copy_input_to_comm_bufferù  s]   € ð 	�‰ŒÜ�|‰|×"Ñ"Ø—>‘>Ó#Ø—-‘-“/Ø—_‘_Ó&Ø—<‘<“>ð	 #ó 
ˆô 	˜t°zÔBØˆr   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r	   rE   r#   r   rG   )r   s   "r   r   r    s.   € ÷ ñ Ü�\‰\ðäðô 
�‰ñr   c                óê   <€ \        V \        P                  P                  4      '       d(   \	        V \        P                  P                  V4       V # S! V \        P                  P                  V4      # )a3  
Ensure inp is in P2P memory for a symm_mem collective.

If inductor controls the buffer's allocation (ComputedBuffer,
or any buffer with FlexibleLayout/FixedLayout), switch its
layout to CommBufferLayout in-place, zero-copy.

If inductor does not control allocation (e.g. InputBuffer),
insert a Pointwise identity copy into a new CommBufferLayout buffer.
This adds an extra Triton kernel. Returns the possibly new TensorBox.

TODO(tianrengao): eliminate the extra kernel for static-shape
InputBuffers by pre-allocating P2P memory in the wrapper and DMA .copy_()
)r!   r   r   rQ   r,   )rE   r#   r  s   &&€r   Ú_maybe_realize_symm_memÚ<register_symm_mem_lowerings.<locals>._maybe_realize_symm_mem  s]   ø€ ô$ & c¬2×+<Ñ+<×+EÑ+E×FÒFÜ" 3¬×(9Ñ(9×(BÑ(BÀJÔOØˆJá-ØÜ×!Ñ!×*Ñ*Øóð r   c                ó�   € V ^8„  d   QhR\         P                  P                  R\        P                  RRR\        P                  /# )r	   rf   rE   r#   r$   r   )r\   Ú_opsÚ
OpOverloadr   r   )r   s   "r   r   r  (  sC   € ÷ 
ñ 
Ü—
‘
×%Ñ%ð
ä�\‰\ð
ð Cð
ô 
�‰ñ	
r   c           	      óô  € ^ RI Hp VP                  4        VP                  V4      pVP	                  4       ^ ,          V,          .VP	                  4       R,          Op\
        P                  ! \
        P                  ! VP                  4       VP                  4       VR7      \
        P                  P                  V4      p\
        P                  P                  \
        P                  ! VV.V3V R7      4      # )r   )Údistributed_c10d:é   NN)rÓ   r  Úsize)r    rg   Úconstant_argsÚop_overload)Útorch.distributedr  r(   Ú_get_group_size_by_namer  r   r   r   rÞ   rM   r   rQ   r   rZ   ÚExternKernelOut)rf   rE   r#   r€   r’   Úout_sizer    s   &&&    r   Ú_create_low_contention_ag_outÚBregister_symm_mem_lowerings.<locals>._create_low_contention_ag_out(  sÇ   € õ
 	?à�‰ŒØ×1Ñ1°*Ó=ˆ
Ø—L‘L“N 1Õ%¨
Õ2ÐH°S·\±\³^ÀBÕ5GÐHˆÜ×$Ò$Ü�NŠNØ×.Ñ.Ó0Ø—m‘m“oØôô
 ×Ñ×&Ñ&Øó
ˆô �|‰|×"Ñ"Ü×ÒØØ�uØ)˜mØ"ô	ó
ð 	
r   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# ©r	   rE   rF   r#   rG   )r   s   "r   r   r  E  ó*   € ÷ 
ñ 
Ü�\‰\ð
äð
ô ñ
r   c           	      óÚ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VV4      4      # rB   )rX   rY   r   r   rZ   r[   r_   r`   ©rE   rF   r#   r  r^   s   &&&€€r   Ú_symm_mem_one_shot_all_reduceÚBregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduceD  sY   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×,Ñ,×4Ñ4ØØØó	ó
ð 	
r   c                óp   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  /# ©r	   rE   rF   r#   r›   rG   )r   s   "r   r   r  V  ó8   € ÷ 
ñ 
Ü�\‰\ð
äð
ô ð
ô �\‰\ñ	
r   c           
      óÜ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVV4      4      # rB   )rX   rY   r   r   rZ   r[   Úone_shot_all_reduce_outr`   ©rE   rF   r#   r›   r  r^   s   &&&&€€r   Ú!_symm_mem_one_shot_all_reduce_outÚFregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce_outU  s\   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×0Ñ0×8Ñ8ØØØØóó	
ð 		
r   c                óp   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        /# )r	   Úsymm_bufferÚlocal_inputrF   r#   rG   )r   s   "r   r   r  i  s8   € ÷ 
ñ 
Ü—\‘\ð
ä—\‘\ð
ô ð
ô ñ	
r   c           
      óÜ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVV4      4      # rB   )rX   rY   r   r   rZ   r[   Úone_shot_all_reduce_copyr`   )r4  r5  rF   r#   r  r^   s   &&&&€€r   Ú"_symm_mem_one_shot_all_reduce_copyÚGregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce_copyh  s\   ø€ ñ .¨kÓFˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×1Ñ1×9Ñ9ØØØØóó	
ð 		
r   c          
      ó�   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\         P                  /# )r	   r4  r5  rF   r#   r›   rG   )r   s   "r   r   r  |  sF   € ÷ 
ñ 
Ü—\‘\ð
ä—\‘\ð
ô ð
ô ð	
ô
 �\‰\ñ
r   c                 óÞ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVVV4      4      # rB   )rX   rY   r   r   rZ   r[   Úone_shot_all_reduce_copy_outr`   )r4  r5  rF   r#   r›   r  r^   s   &&&&&€€r   Ú&_symm_mem_one_shot_all_reduce_copy_outÚKregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce_copy_out{  s_   ø€ ñ .¨kÓFˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×5Ñ5×=Ñ=ØØØØØóó

ð 
	
r   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r%  rG   )r   s   "r   r   r  ‘  ó*   € ÷ ñ Ü�\‰\ðäðô ñr   c                 ó„   <€ S! W4      p \         P                  P                  SP                  P                  V VV4       V # rB   )r   r[   rZ   Útwo_shot_all_reduce_r`   r(  s   &&&€€r   Ú_symm_mem_two_shot_all_reduce_ÚCregister_symm_mem_lowerings.<locals>._symm_mem_two_shot_all_reduce_�  óB   ø€ ñ & cÓ6ˆÜ
×Ñ× Ñ Ø×)Ñ)×1Ñ1ØØØô		
ð ˆ
r   c                óp   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  /# )r	   rE   rF   r#   ÚoutputrG   )r   s   "r   r   r     s8   € ÷ 
ñ 
Ü�\‰\ð
äð
ô ð
ô —‘ñ	
r   c           
      óÜ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVV4      4      # rB   )rX   rY   r   r   rZ   r[   Útwo_shot_all_reduce_outr`   )rE   rF   r#   rG  r  r^   s   &&&&€€r   Ú!_symm_mem_two_shot_all_reduce_outÚFregister_symm_mem_lowerings.<locals>._symm_mem_two_shot_all_reduce_outŸ  s\   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×0Ñ0×8Ñ8ØØØØóó	
ð 		
r   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r%  rG   )r   s   "r   r   r  ³  r@  r   c                 ó„   <€ S! W4      p \         P                  P                  SP                  P                  V VV4       V # rB   )r   r[   rZ   Úmultimem_all_reduce_r`   r(  s   &&&€€r   Ú_symm_mem_multimem_all_reduce_ÚCregister_symm_mem_lowerings.<locals>._symm_mem_multimem_all_reduce_²  rE  r   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r%  rG   )r   s   "r   r   r  Â  r&  r   c           	      óÚ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VV4      4      # rB   )rX   rY   r   r   rZ   r[   Úmultimem_one_shot_all_reducer`   r(  s   &&&€€r   Ú&_symm_mem_multimem_one_shot_all_reduceÚKregister_symm_mem_lowerings.<locals>._symm_mem_multimem_one_shot_all_reduceÁ  sY   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×5Ñ5×=Ñ=ØØØó	ó
ð 	
r   c                óp   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  /# r,  rG   )r   s   "r   r   r  Ó  r-  r   c           
      óÜ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVV4      4      # rB   )rX   rY   r   r   rZ   r[   Ú multimem_one_shot_all_reduce_outr`   r0  s   &&&&€€r   Ú*_symm_mem_multimem_one_shot_all_reduce_outÚOregister_symm_mem_lowerings.<locals>._symm_mem_multimem_one_shot_all_reduce_outÒ  s\   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×9Ñ9×AÑAØØØØóó	
ð 		
r   c          
      ó|   € V ^8„  d   QhR\         P                  R\        R\        R\        R\         P                  /# )r	   rE   rF   Úrootr#   r›   )r   r   rH   Úint)r   s   "r   r   r  æ  sB   € ÷ 
ñ 
Ü�\‰\ð
äð
ô ð
ô ð	
ô
 �\‰\ñ
r   c                 óÞ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVVV4      4      # rB   )rX   rY   r   r   rZ   r[   Úmultimem_one_shot_reduce_outr`   )rE   rF   r\  r#   r›   r  r^   s   &&&&&€€r   Ú&_symm_mem_multimem_one_shot_reduce_outÚKregister_symm_mem_lowerings.<locals>._symm_mem_multimem_one_shot_reduce_outå  s_   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×5Ñ5×=Ñ=ØØØØØóó

ð 
	
r   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r	   rE   r#   r›   rG   )r   s   "r   r   r  û  s.   € ÷ 
ñ 
Ü�\‰\ð
äð
ô �\‰\ñ
r   c           	      óÚ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VV4      4      # rB   )rX   rY   r   r   rZ   r[   Úmultimem_all_gather_outr`   )rE   r#   r›   r  r^   s   &&&€€r   Ú!_symm_mem_multimem_all_gather_outÚFregister_symm_mem_lowerings.<locals>._symm_mem_multimem_all_gather_outú  sY   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×0Ñ0×8Ñ8ØØØó	ó
ð 	
r   c                óp   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  /# )r	   rE   r#   Úsplit_last_dimrG  )r   r   rH   r   )r   s   "r   r   r    s8   € ÷ 
ñ 
Ü�\‰\ð
äð
ô ð
ô —‘ñ	
r   c           
      óÜ   <€ S! W4      p \         P                  ! \        P                  P                  \        P
                  P	                  SP                  P                  V VVV4      4      # rB   )rX   rY   r   r   rZ   r[   Úreduce_scatter_outr`   )rE   r#   rh  rG  r  r^   s   &&&&€€r   Ú_symm_mem_reduce_scatter_outÚAregister_symm_mem_lowerings.<locals>._symm_mem_reduce_scatter_out  s\   ø€ ñ & cÓ6ˆÜ�ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×+Ñ+×3Ñ3ØØØØóó	
ð 		
r   c          
      ó¤   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\        /# ©r	   rE   r›   Ú	in_splitsÚout_splits_offsetsr#   rG   )r   s   "r   r   r    sJ   € ÷ ñ Ü�\‰\ðä�\‰\ðô —<‘<ðô ŸL™Lð	ô
 ñr   c                 ó˜   <€ S! W4      p S! W4      p\         P                  P                  SP                  P                  V VVVV4       R # rB   )r   r[   rZ   Úall_to_all_vdevr`   )rE   r›   ro  rp  r#   r  r^   s   &&&&&€€r   Ú_symm_mem_all_to_all_vdevÚ>register_symm_mem_lowerings.<locals>._symm_mem_all_to_all_vdev  sP   ø€ ñ & cÓ6ˆÙ% cÓ6ˆÜ
×Ñ× Ñ Ø×$Ñ$×,Ñ,ØØØØØô	
ñ r   c          
      ó¤   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\        /# rn  rG   )r   s   "r   r   r  3  sJ   € ÷ ñ Ü�\‰\ðä�\‰\ðô —<‘<ðô ŸL™Lð	ô
 ñr   c           	      óš   <€ S! W4      p S! W4      p\         P                  P                  SP                  P                  V VVVVV4       R # rB   )r   r[   rZ   Úall_to_all_vdev_2dr`   )rE   r›   ro  rp  r#   Úmajor_alignr  r^   s   &&&&&&€€r   Ú_symm_mem_all_to_all_vdev_2dÚAregister_symm_mem_lowerings.<locals>._symm_mem_all_to_all_vdev_2d2  sS   ø€ ñ & cÓ6ˆÙ% cÓ6ˆÜ
×Ñ× Ñ Ø×'Ñ'×/Ñ/ØØØØØØô	
ñ r   c          
      ó¤   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\        /# )r	   rE   r›   Úin_splits_offsetsrp  r#   rG   )r   s   "r   r   r  I  sJ   € ÷ ñ Ü�\‰\ðä�\‰\ðô Ÿ<™<ðô ŸL™Lð	ô
 ñr   c                 ó˜   <€ S! W4      p S! W4      p\         P                  P                  SP                  P                  V VVVV4       R # rB   )r   r[   rZ   Úall_to_all_vdev_2d_offsetr`   )rE   r›   r|  rp  r#   r  r^   s   &&&&&€€r   Ú#_symm_mem_all_to_all_vdev_2d_offsetÚHregister_symm_mem_lowerings.<locals>._symm_mem_all_to_all_vdev_2d_offsetH  sP   ø€ ñ & cÓ6ˆÙ% cÓ6ˆÜ
×Ñ× Ñ Ø×.Ñ.×6Ñ6ØØØØØô	
ñ r   c          
      ó|   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\        /# )r	   Úin_tileÚout_tiler\  r#   rF   )r   r   r]  rH   )r   s   "r   r   r  ]  sB   € ÷ ñ Ü—‘ðä—,‘,ðô ðô ð	ô
 ñr   c                 ó˜   <€ S! W4      p S! W4      p\         P                  P                  SP                  P                  V VVVV4       R # rB   )r   r[   rZ   Útile_reducer`   )r‚  rƒ  r\  r#   rF   r  r^   s   &&&&&€€r   Ú_symm_mem_tile_reduceÚ:register_symm_mem_lowerings.<locals>._symm_mem_tile_reduce\  sP   ø€ ñ *¨'Ó>ˆÙ*¨8Ó@ˆÜ
×Ñ× Ñ Ø× Ñ ×(Ñ(ØØØØØô	
ñ r   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# )r	   rƒ  r#   rF   rG   )r   s   "r   r   r  q  s,   € ÷ ñ ä—,‘,ðô ð	ô
 ñr   c                 óÄ   <€ \        V 4       F  w  rVS! Wc4      W&   K  	  S! W4      p\        P                  P                  SP                  P
                  V VVVV4       R # rB   )rà   r   r[   rZ   Úmulti_root_tile_reducer`   )	Úin_tilesrƒ  Úrootsr#   rF   ró   r‚  r  r^   s	   &&&&&  €€r   Ú _symm_mem_multi_root_tile_reduceÚEregister_symm_mem_lowerings.<locals>._symm_mem_multi_root_tile_reducep  sc   ø€ ô $ HÖ-‰JˆAÙ1°'ÓFˆH‹Kñ .á*¨8Ó@ˆÜ
×Ñ× Ñ Ø×+Ñ+×3Ñ3ØØØØØô	
ñ r   c                óD   € V ^8„  d   QhR\         P                  R\        /# )r	   rE   r#   rG   )r   s   "r   r   r  †  s    € ÷ 
ñ 
Ü�\‰\ð
äñ
r   c                 óF   <€ \        SP                  P                  V V4      # rB   )ri   Ú_low_contention_all_gatherr`   )rE   r#   r^   s   &&€r   Ú#_symm_mem_low_contention_all_gatherÚHregister_symm_mem_lowerings.<locals>._symm_mem_low_contention_all_gather…  s'   ø€ ô $Ø×/Ñ/×7Ñ7ØØó
ð 	
r   c                ó<   € V ^8„  d   QhR\         P                  RR/# )r	   rE   r#   r$   rV   )r   s   "r   r   r  •  s    € ÷ 
ñ 
Ü�\‰\ð
àBñ
r   c                 ó@   <€ S! SP                   P                  V V4      # rB   )Ú+_low_contention_all_gather_ce_multicast_outr`   )rE   r#   r"  r^   s   &&€€r   Ú0_symm_mem_low_contention_all_gather_ce_multicastÚUregister_symm_mem_lowerings.<locals>._symm_mem_low_contention_all_gather_ce_multicast”  s'   ø€ ñ
 -Ø×@Ñ@×HÑHØØó
ð 	
r   c                ó\   € V ^8„  d   QhR\         P                  RRR\         P                  /# )r	   rE   r#   r$   r›   rV   )r   s   "r   r   r     s.   € ÷ 
ñ 
Ü�\‰\ð
àBð
ô �\‰\ñ
r   c           	      ó   <€ V P                  4        \        V\        P                  P                  4      '       d'   \        V\        P                  P                  V4       M\        R 4      h\        P                  ! \        P                  P                  \        P                  P                  SP                  P                  V VV4      4      # )z¢_low_contention_all_gather_ce_multicast_out requires an Inductor-owned output buffer that can be realized as symmetric memory; this indicates an invalid lowering.)r(   r!   r   r   rQ   r,   ÚRuntimeErrorrX   rY   r   rZ   r[   r–  r`   )rE   r#   r›   r^   s   &&&€r   Ú4_symm_mem_low_contention_all_gather_ce_multicast_outÚYregister_symm_mem_lowerings.<locals>._symm_mem_low_contention_all_gather_ce_multicast_outŸ  s�   ø€ ð 	�‰ŒÜ% c¬2×+<Ñ+<×+EÑ+E×FÒFÜ" 3¬×(9Ñ(9×(BÑ(BÀJÕOäð>óð ô
 �ŠÜ�L‰L×ÑÜ×Ñ×$Ñ$Ø×DÑD×LÑLØØØó	ó
ð 	
r   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r%  rG   )r   s   "r   r   r  ¹  r&  r   c                 óH   <€ \        SP                  P                  V VV4      # rB   )ri   Ú_low_contention_reduce_scatterr`   )rE   rF   r#   r^   s   &&&€r   Ú'_symm_mem_low_contention_reduce_scatterÚLregister_symm_mem_lowerings.<locals>._symm_mem_low_contention_reduce_scatter¸  s*   ø€ ô $Ø×3Ñ3×;Ñ;ØØØó	
ð 	
r   rB   )rK   ) r\   r]   r^   r_   rú   rû   rü   Útorch._library._out_variantr  r`   r/  r7  r<  rý   ro   rB  rI  rN  rS  rX  r_  rd  rj  rr  rw  r~  r…  rŠ  r‘  Ú'_low_contention_all_gather_ce_multicastr–  r   )r   r  ro   r)  r1  r8  r=  rC  rJ  rO  rT  rY  r`  re  rk  rs  ry  r  r†  r�  r’  r—  rœ  r¡  r  r"  r  r^   s                           @@@@r   Úregister_symm_mem_loweringsr¥  Ü  sž  û€ ð	Ü—9‘9×%Ñ%ˆð
 ×(Ñ(ˆõ
 Añ Ø×$Ñ$×,Ñ,Ø×(Ñ(×0Ñ0ôñ Ø×)Ñ)×1Ñ1Ø×-Ñ-×5Ñ5ôõ
 ,õ÷&ð õ8
ñ8 �x×3Ñ3Ó4÷
ð 
ó 5ð
ñ  �x×7Ñ7Ó8÷
ð 
ó 9ð
ñ$ �x×8Ñ8Ó9÷
ð 
ó :ð
ñ$ �x×<Ñ<Ó=÷
ð 
ó >ð
ñ( �x×4Ñ4Ó5÷ð ó 6ðñ �x×7Ñ7Ó8÷
ð 
ó 9ð
ñ$ �x×4Ñ4Ó5÷ð ó 6ðñ �x×<Ñ<Ó=÷
ð 
ó >ð
ñ  �x×@Ñ@ÓA÷
ð 
ó Bð
ñ$ �x×<Ñ<Ó=÷
ð 
ó >ð
ñ( �x×7Ñ7Ó8÷
ð 
ó 9ð
ñ  �x×2Ñ2Ó3÷
ð 
ó 4ð
ñ$ �x×/Ñ/Ó0÷ð ó 1ðñ& �x×2Ñ2Ó3÷ò ó 4ðñ* �x×9Ñ9Ó:÷ð ó ;ðñ& �x×+Ñ+Ó,÷ò ó -ðñ& �x×6Ñ6Ó7÷ò ó 8ðñ( �x×:Ñ:Ó;÷
ó <ð
ñ �x×GÑGÓH÷
ð 
ó Ið
ñ �x×KÑKÓL÷
ó Mð
ñ0 �x×>Ñ>Ó?÷
ó @ò
øôe ô Ü�‰ÐJÔKÚðús   †&L? Ì? M#Í"M#) Úloggingr\   Útorch.utils._pytreeÚutilsÚ_pytreerX   Útorch._inductor.utilsr   Útorch.utils._ordered_setr   Ú r   r   Úvirtualizedr   Ú	getLoggerÚ__name__rû   r!   r,   r   Útupler]  rH   r9   r?   rC   rT   ra   ri   r  r¥  rq   r   r   Ú<module>r±     s~   ðã ã ß $Ð $Ý -Ý /ç Ý ð ×Ò˜Ó!€õTõ<&õR
ð&    c¨3 h¥Ö0Ó2Ð õ8õ=õõ"
õ%òTônk
r   