+
    –°³jÚ  ã                   ó´   € ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHtHt ^ RIHt ^ RIHtHtHtHt R tRR R	 lltR
 R ltR R ltR# )é    N)Ú_get_device_module)Údistributed_c10d)ÚShardÚShardedTensorÚShardedTensorMetadataÚTensorProperties)ÚShardMetadata)Ú
DeviceMeshÚDTensorÚ	Replicater   c                 óÌ   € VP                  4       R 8X  d	   RV  RV 2# VP                  4       R8X  d#   RV  RV R\        V4      P                  4        2# RV  RV RW,           2# )Úcpuzrank:Ú/ÚhpuÚ:)Úlowerr   Úcurrent_device)ÚrankÚdevice_typeÚnum_devices_per_nodes   &&&Úd/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/fsdp/_shard_utils.pyÚ_get_remote_device_strr      s}   € Ø×ÑÓ˜eÔ#Ø�t�f˜A˜k˜]Ð+Ð+Ø	×	Ñ	Ó	 Ô	%Ø�t�f˜A˜k˜]¨!Ô,>¸{Ó,K×,ZÑ,ZÓ,\Ð+]Ð^Ð^à�t�f˜A˜k˜]¨!¨DÕ,GÐ+HÐIÐIó    c                ó¶   € V ^8„  d   QhR\         P                  R\        R\        R\        R\        P                  R\         P
                  R,          R\        /# )	é   Útensorr   Ú
world_sizer   ÚpgÚdeviceNÚreturn)ÚtorchÚTensorÚintÚdistÚProcessGroupr   r   )Úformats   "r   Ú__annotate__r'      sa   € ÷ ?ñ ?Ü�L‰Lð?ä
ð?ô ð?ô ð	?ô
 	×Ñð?ô �L‰L˜4Õð?ô ñ?r   c                óÎ  € V P                  V^ R7      p\        V4      V8”  d‹   Wa,          P                  4       pV P                  4        Uu. uF  p^ NK  	  p	p\        P
                  ! V P                  4       ^ ,          V,          4      V,          V	^ &   \        P                  ! WyV4      .p
M. p
V Uu. uF  p\        VP                  4       4      NK  	  pp^ .\        \        P                  ! V Uu. uF  qÝ^ ,          NK  	  up4      4      RR	 ,           p^ .\        V^ ,          4      ^,
          ,          p	V Uu. uF  qÿ.V	,           NK  	  ppVf!   \        P                  ! V4      P                  MVP                  p\        \        V4      4       Uu. uF%  p\        \         P"                  ! VV4      VV4      NK'  	  pp\        V4      \        V4      8w  g   \        V4      \        V4      8w  d0   \%        R\        V4       R\        V4       R\        V4       24      h\'        VVV4       UUUu. uF  w  ppp\)        VVV4      NK  	  pppp\+        VV P                  4       \-        V P.                  V P0                  R\2        P4                  V P7                  4       R7      R7      p\8        P:                  ! V
VVR7      # u upi u upi u upi u upi u upi u upppi )
z“
Shard a tensor to chunks along the first dimension. The local rank will get its
corresponding chunk as the local shard to create a ShardedTensor.
)ÚdimNzQExpected chunk_sizes, chunk_offsets, and placements to have the same length, got z, F)ÚdtypeÚlayoutÚrequires_gradÚmemory_formatÚ
pin_memory)Úshards_metadataÚsizeÚtensor_properties)Úsharded_tensor_metadataÚprocess_groupéÿÿÿÿ)ÚchunkÚlenÚcloner0   ÚmathÚceilr   Úfrom_tensor_and_offsetsÚlistÚ	itertoolsÚ
accumulater   Ú_get_pg_default_deviceÚtypeÚranger   r$   Úget_global_rankÚAssertionErrorÚzipr	   r   r   r*   r+   r!   Úcontiguous_formatÚ	is_pinnedr   Ú+_init_from_local_shards_and_global_metadata)r   r   r   r   r   r   ÚchunksÚlocal_shardÚ_ÚoffsetsÚlocal_shardsr5   Úchunk_sizesÚ
chunk_sizeÚdim0_offsetsÚd0Úchunk_offsetsr   ÚrÚ
placementsÚoffsetr0   Ú	placementÚshard_metadatar2   s   &&&&&&                   r   Ú_create_chunk_sharded_tensorrV      s±  € ð �\‰\˜*¨!ˆ\Ó,€FÜ
ˆ6ƒ{�TÔØ•l×(Ñ(Ó*ˆØ$Ÿk™kœmÓ,™m˜“1™mˆÐ,Ü—Y’Y˜vŸ{™{›}¨QÕ/°*Õ<Ó=ÀÕDˆ�‰
Ü×5Ò5°kÈDÓQÐR‰àˆñ 4:Ó:±6¨%”4˜Ÿ
™
›Ö%±6€KÐ:Ø�3œÜ×Ò¹kÓJ¹k°
¨Ÿm˜m¹kÑJÓKóà	€rðõ €Lð ˆc”S˜ Q�Ó(¨1Õ,Õ-€GÙ.:Ó;©l¨�T˜G—^�^©l€MÐ;ð Š>ô 	×/Ò/°Ó3×8Ò8à�[‰[ð ô ”s˜;Ó'Ô(óñ )ˆAô 	Ü× Ò   QÓ'ØØ ö	
ñ
 )ð ð ô ˆ;Óœ3˜}Ó-Ô-´°[Ó1AÄSÈÃ_Ô1TÜðÜ�{Ó#Ð$ B¤s¨=Ó'9Ð&:¸"¼SÀ»_Ð<MðOó
ð 	
ô (+¨=¸+ÀzÔ'Rõá'RÑ#ˆF�D˜)ô 	�f˜d IÖ.Ù'Rð ò ô 4Ø&Ø�[‰[‹]Ü*Ø—,‘,Ø—=‘=ØÜ×1Ñ1Ø×'Ñ'Ó)ô
ô
Ðô ×DÒDØÐ.EÐUWôð ùò] -ùò ;ùâJùò <ùòùôs$   ÁKÂ4"KÃ3KÄ=KÆ+KÈ6K c                ó\   € V ^8„  d   QhR\         P                  R\        R\        R\        /# )r   r   r   Údevice_meshr    )r!   r"   r#   r
   r   )r&   s   "r   r'   r'   _   s4   € ÷ ñ Ü�L‰Lðä
ðô ðô ñ	r   c                óp  € V P                  4       P                  4       p \        VP                  4       Uu. uF  p\	        4       NK  	  pp\        VP                  4       Uu. uF  p\	        4       NK  	  pp\        ^ 4      VR&   \        P                  ! WVRR7      P                  VR7      # u upi u upi )zŽ
Shard a tensor to chunks along the first dimension. The local rank will get its
corresponding chunk as the local tensor to create a DTensor.
F)Ú	run_check)rR   r4   )	Údetachr7   r@   Úndimr   ÚDShardr   Ú
from_localÚredistribute)r   r   rX   rI   Úreplicate_placementsÚshard_placementss   &&&   r   Ú_create_chunk_dtensorrb   _   s§   € ð �]‰]‹_×"Ñ"Ó$€Fô 27°{×7GÑ7GÔ1HÓIÑ1H¨AœIžKÑ1HÐÐIÜ-2°;×3CÑ3CÔ-DÓEÑ-D¨œ	žÑ-DÐÐEÜ! !›9Ð�RÑä×ÒØÐ1¸Uôç�lØ#ð ó ðùò	 JùÚEs   ¶B.Á"B3c                ó^   € V ^8„  d   QhR\         R\        R,          R\        P                  /# )r   r   Ú	root_meshNr    )r   r
   r!   r"   )r&   s   "r   r'   r'   x   s/   € ÷ ñ Üðä˜DÕ ðô ‡\�\ñr   c                óþ   € WP                   8w  d   \        R4      h\        \        P                  ! V P
                  4      4      p\        4       VR&   V P                  V P                   VR7      p V P                  4       # )zL
All gather a DTensor in its sharded dimension and return the local tensor.
z2The device mesh of a tensor should be a root mesh.)rX   rR   r4   )	rX   rB   r;   ÚcopyÚdeepcopyrR   r   r_   Úto_local)r   rd   rR   s   && r   Ú_all_gather_dtensorri   x   sr   € ð ×&Ñ&Ô&ÜÐQÓRÐRä”d—m’m F×$5Ñ$5Ó6Ó7€Jô “[€Jˆr�NØ× Ñ Ø×&Ñ&Øð !ó €Fð
 �?‰?ÓÐr   )N)rf   r<   r8   r!   Útorch.distributedÚdistributedr$   Útorch._utilsr   r   Ú'torch.distributed._shard.sharded_tensorr   r   r   r   Ú&torch.distributed._shard.sharding_specr	   Útorch.distributed.tensorr
   r   r   r]   r   rV   rb   ri   © r   r   Ú<module>rq      sF   ðã Û Û ã Ý  Ý +Ý .÷ó õ Aß TÓ TòJ÷?õD÷2r   