Ë
    ÄÓ^jf  ã                   óª  — d dl Z d dl mZ ddlmZ e j                  j                  dde j                  j                  ¬«       e j                  j                  d«      de j                  d	e
d
efd„«       Ze j                  j                  dd«      de j                  d	e
d
e
fd„«       Zdedee
   d
efd„Ze j                  j!                  dd¬«      dedee
   d
efd„«       Zej                  dedee
   d
efd„«       Zdedee
   d
efd„Ze j                  j!                  dd¬«      dedee
   d
efd„«       Zej                  dedee
   d
efd„«       Zy)é    N)ÚSymInté   )Ú
DeviceMeshz/device_mesh::_runtime_compute_coordinate_on_dimz'(Tensor full_mesh, int index) -> SymInt)ÚtagsÚ	full_meshÚindexÚreturnc                 óì  — ddl m} t        j                  j                  j                  «       }|j                  }|j                  «       }| j                  |dz   «      } ||dt        |t        «      r|dz
  nd ¬«       	 t        j                  j                  j                  j                  «       }|r/|j                   j#                  |j$                  j&                  «       |S # t        $ r d}Y Œ@w xY w)Nr   )Ú_constrain_range_for_sizeé   )ÚminÚmaxF)Ú%torch.fx.experimental.symbolic_shapesr   ÚtorchÚ
_custom_opÚimplÚget_ctxÚ
_shape_envÚcreate_unbacked_symintÚsizeÚ
isinstanceÚintÚ_dynamoÚsymbolic_convertÚInstructionTranslatorÚ
current_txÚAttributeErrorÚ ignorable_fresh_unbacked_symbolsÚappendÚnodeÚ_expr)r   r   r   ÚctxÚ	shape_envÚszÚ	mesh_sizeÚ	in_dynamos           úm/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/distributed/_ops/device_mesh.pyÚ'_runtime_compute_coordinate_on_dim_faker(      sÎ   € õ Pä
×
Ñ
×
Ñ
×
'Ñ
'Ó
)€CØ—‘€Ið 
×	)Ñ	)Ó	+€Bð
 —‘˜u q™yÓ)€IÙØ
�¬
°9¼cÔ(B�y 1’}Èõðä—M‘M×2Ñ2×HÑH×SÑSÓUˆ	ñ ð 	×2Ñ2×9Ñ9¸"¿'¹'¿-¹-ÔHà€Iøô ò ØŠ	ðús   Â 2C% Ã%C3Ã2C3ÚCompositeExplicitAutogradc                 ó®   — t         j                  j                  «       }t        j                  | «      }t        j
                  ||«      }|€t        ‚||   S ©N)r   ÚdistributedÚget_rankr   Ú_get_mesh_tensor_from_full_meshÚ_compute_coordinates_from_meshÚAssertionError)r   r   ÚrankÚmeshÚmesh_coordss        r'   Ú'_runtime_compute_coordinate_on_dim_implr4   7   sQ   € ô ×Ñ×%Ñ%Ó'€DÜ×5Ñ5°iÓ@€DÜ×;Ñ;¸DÀ$ÓG€KØÐÜÐØ�uÑÐó    r2   Ú	mesh_dimsc                 ó\   — ddl m}  || t        |«      «      }|€t        d|› d| › �«      ‚|S )Nr   )Ú"_get_flattened_mesh_by_layout_implz&No flattened mesh found for mesh_dims=z on )Ú&torch.distributed.tensor._redistributer8   ÚtupleÚ
ValueError)r2   r6   r8   Úresults       r'   Ú_get_flattened_submesh_implr=   C   s?   € õñ 0°´e¸IÓ6FÓG€FØ€~ÜÐAÀ)ÀÈDÐQUÐPVÐWÓXÐXØ€Mr5   z#device_mesh::_get_flattened_submesh© )Úmutates_argsc                 ó   — t        | |«      S r+   ©r=   ©r2   r6   s     r'   Ú_get_flattened_submeshrC   N   ó   € ä& t¨YÓ7Ð7r5   c                 ó   — t        | |«      S r+   rA   rB   s     r'   Ú_get_flattened_submesh_fakerF   S   rD   r5   c                 óš   ‡— | j                   Š‰€t        d| › �«      ‚t        ˆfd„|D «       «      }t        |«      dk(  r| |d      S | |   S )Nz%Cannot slice mesh without dim names: c              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr+   r>   )Ú.0ÚiÚall_dim_namess     €r'   ú	<genexpr>z$_get_submesh_impl.<locals>.<genexpr>\   s   øè ø€ Ò:¨1�m AÕ&Ñ:ùs   ƒr   r   )Ú_mesh_dim_namesr;   r:   Úlen)r2   r6   Ú	dim_namesrK   s      @r'   Ú_get_submesh_implrP   X   s\   ø€ Ø×(Ñ(€MØÐÜÐ@ÀÀÐGÓHÐHÜÓ:°	Ô:Ó:€IÜ
ˆ9ƒ~˜ÒØ�I˜a‘LÑ!Ð!Ø�	‰?Ðr5   zdevice_mesh::_get_submeshc                 ó   — t        | |«      S r+   ©rP   rB   s     r'   Ú_get_submeshrS   b   ó   € ä˜T 9Ó-Ð-r5   c                 ó   — t        | |«      S r+   rR   rB   s     r'   Ú_get_submesh_fakerV   g   rT   r5   )r   r   Údevice_meshr   ÚlibraryÚdefineÚTagÚpt2_compliant_tagÚregister_fakeÚTensorr   r(   r   r4   Úlistr=   Ú	custom_oprC   rF   rP   rS   rV   r>   r5   r'   ú<module>r`      sé  ðó Ý å $ð ‡�× Ñ Ø5Ø-Ø	�‰×	$Ñ	$ð ô ð ‡�×ÑÐNÓOð"Ø�|‰|ð"Ø$'ð"àò"ó Pð"ðJ ‡�×ÑØ5Ð7Róð°u·|±|ð ÈCð ÐTWò óðð jð ¸TÀ#¹Yð È:ó ð ‡�×ÑÐ>ÈRÐÓPð8 ð 8¸¸S¹	ð 8Àjò 8ó Qð8ð ×%Ñ%ð8 jð 8¸TÀ#¹Yð 8È:ò 8ó &ð8ð˜Jð °4¸±9ð Àó ð ‡�×ÑÐ4À2ÐÓFð.�zð .¨d°3©ið .¸Jò .ó Gð.ð ×Ñð.˜Jð .°4¸±9ð .Àò .ó ñ.r5   