+
    ˜°³jR  ã                   óÂ   a € R t0 t ^ RIt^ RIHt ^ RIt^ RIHt ^ RIHt ^ RI	H
t
  ! R R]4      t ! R R	]4      t ! R
 R]4      t ! R R]4      tRs] ^ k R R ltR# )é    N)Úchain)Ú_get_device_index)ÚFunction)Úcommc                   ó@   a € ] tR t^
t o ]R 4       t]R 4       tRtV tR# )Ú	Broadcastc                ó~  a€ \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \        R4      hV Uu. uF  p\        VR4      NK  	  ppWn        \	        V4      ^ 8X  d   R# \	        V4      V n        V^ ,          P                  4       V n        V Uu. uF  qDP                  4       NK  	  upV n	        \        P                  ! W P                  4      pV FI  p\        V P                  4       F-  w  rxV'       g   K  \        P                  ! Wg,          4      Wg&   K/  	  KK  	  . p	\        V P                  R,          4       F+  w  op
V
'       d   K  V	P!                  V3R lV 4       4       K-  	  V P"                  ! V	!   \%        \&        P(                  ! V4      4      # u upi u upi )c              3   óR   "  € T F  qP                   P                  R 8g  x € K  	  R# 5i©ÚcpuN©ÚdeviceÚtype©Ú.0Úis   & Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/nn/parallel/_functions.pyÚ	<genexpr>Ú$Broadcast.forward.<locals>.<genexpr>   ó   é € Ð:±6¨a—8‘8—=‘= EÖ)³6ùó   ‚%'FTz2Broadcast function not implemented for CPU tensors:é   NNc              3   ó4   <"  € T F  qS,          x € K  	  R # 5i©N© )r   ÚoutputÚidxs   & €r   r   r   "   s   øé € Ð*MÁW¸6°#¯;ª;ÃWùs   ƒr   )ÚallÚAssertionErrorr   Útarget_gpusÚlenÚ
num_inputsÚ
get_deviceÚinput_deviceÚ
is_complexÚcomplex_maskr   Úbroadcast_coalescedÚ	enumerateÚtorchÚview_as_complexÚneeds_input_gradÚextendÚmark_non_differentiableÚtupler   Úfrom_iterable)Úctxr    ÚinputsÚxÚinpÚoutputsÚdevice_outputsr   r%   Únon_differentiablesÚinput_requires_gradr   s   &&*        @r   ÚforwardÚBroadcast.forward   sd  ø€ ç‹sÑ:±6Ó:�s�sŠsÑ:±6Ó:×:Ò:Ü Ð!UÓVÐVÙ;FÓG¹;°aÔ(¨¨DÖ1¹;ˆÐGØ%ŒÜˆv‹;˜!ÔØˆIÜ˜V›ˆŒØ! !�9×/Ñ/Ó1ˆÔá8>Ó?¹°ŸN™NÖ,¹Ñ?ˆÔä×*Ò*¨6·?±?ÓCˆã%ˆNÜ!*¨3×+;Ñ+;Ö!<‘�ß‘:Ü(-×(=Ò(=¸nÕ>OÓ(P�NÓ%ó "=ñ &ð
 !ÐÜ(1°#×2FÑ2FÀrÕ2JÖ(KÑ$ˆCÐ$ß&Ñ&Ø#×*Ñ*Ô*MÁWÓ*MÖMñ )Lð 	×#Ò#Ð%8Ò9Ü”U×(Ò(¨Ó1Ó2Ð2ùò+ Hùò @s   ÁF5Â*F:c                ón   € \         P                  ! V P                  V P                  .VO5!  pRV,           # )Nr   )ÚReduceAddCoalescedÚapplyr$   r"   )r0   Úgrad_outputsÚgradss   &* r   ÚbackwardÚBroadcast.backward&   s5   € ä"×(Ò(Ø×Ñ˜cŸn™nð
Ø/;ó
ˆð ˜�Ðó    r   N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ústaticmethodr8   r?   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   
   s+   ø‡ € Øñ3ó ð3ð4 ñó örA   r   c                   ó@   a € ] tR t^/t o ]R 4       t]R 4       tRtV tR# )r;   c                óh  € \        ^ \        V4      V4       Uu. uF  qCV,          P                  4       NK  	  upV n        \        V4       Uu. uF  qCV,          P	                  4       NK  	  ppWPn        \        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        ^ \        V4      V4       Uu. uF  pWdWB,            NK  	  pp\        P                  ! Wq4      p\        ;QJ d    . R \        W…4       4       F  NK  	  5pV# ! R \        W…4       4       4      pV# u upi u upi u upi )r   c              3   ó|   "  € T F2  qP                  4       '       d   \        P                  ! V4      MTx € K4  	  R # 5ir   )r%   r)   Úview_as_real©r   Úgs   & r   r   Ú-ReduceAddCoalesced.forward.<locals>.<genexpr>9   s+   é € ð  
ÙDI¸q§\¡\§^¢^ŒE×Ò˜qÔ!¸Ô:ÃEùs   ‚:<c              3   óf   "  € T F'  w  rV'       d   \         P                  ! V4      MTx € K)  	  R # 5ir   ©r)   r*   )r   Úrr%   s   &  r   r   rR   C   s+   é € ð 
á!;‘�÷ )3ŒE×!Ò! !Ô$¸Ô9Û!;ùs   ‚/1)
Úranger!   r#   r    r%   r&   r.   r   Úreduce_add_coalescedÚzip)	r0   Údestinationr"   r>   r   r&   Úgrads_convertedÚgrads_Úresultss	   &&&*     r   r8   ÚReduceAddCoalesced.forward0   s0  € ô ,1°´C¸³JÀ
Ô+Kó
Ù+K a�!�H×ÑÖ!Ñ+Kñ
ˆŒô 8=¸ZÔ7HÓIÑ7H°!˜a�×+Ñ+Ö-Ñ7HˆÐIØ'Ôçœ%ñ  
ÙDIó 
Ÿ%™%ñ  
ÙDIó 
ó 
ˆô ˜1œc /Ó2°JÔ?ó
á?�ð  ¥Ó/Ù?ð 	ð 
ô ×+Ò+¨FÓ@ˆç”%ñ 
ä!$ WÔ!;ó
—%ˆð
 ˆð ñ 
ä!$ WÔ!;ó
ó 
ˆð
 ˆùò-
ùò Jùò
s   ™D%ÁD*Â8D/c                óT   € R\         P                  ! V P                  .VO5!  ,           # )N©NN)r   r<   r    )r0   r=   s   &*r   r?   ÚReduceAddCoalesced.backwardJ   s(   € ð
ô �OŠO˜CŸO™OÐ;¨lÓ;õ<ð 	<rA   r   NrB   rJ   s   @r   r;   r;   /   s+   ø‡ € Øñó ðð2 ñ<ó ö<rA   r;   c                   ó@   a € ] tR t^Rt o ]R 4       t]R 4       tRtV tR# )ÚGatherc                óÊ  a € \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \        R4      hVR8X  d	   RS n        M\        VR4      pVS n        VS n        \
        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      S n        \         ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       dT   V^ 8X  dM   \
        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        P                  ! R^R	7       RS n	        MRS n	        \
        ;QJ d    . V 3R
 lV 4       F  NK  	  5M! V 3R
 lV 4       4      S n
        \        V4      ^ 8„  ;'       d    V^ ,          P                  4       p\        P                  ! VS P                  S P                  4      pV'       d   \        P                   ! V4      pV# )c              3   óR   "  € T F  qP                   P                  R 8g  x € K  	  R# 5ir   r   r   s   & r   r   Ú!Gather.forward.<locals>.<genexpr>U   r   r   FTz/Gather function not implemented for CPU tensorsr   c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5ir   )r#   r   s   & r   r   re   ]   s   é € Ð>±v°!Ÿ|™|Ÿ~˜~³vùs   ‚c              3   óF   "  € T F  qP                  4       ^ 8H  x € K  	  R# 5i©r   N)Údim©r   Úts   & r   r   re   ^   s   é € Ð,¡V �u‰u‹w˜!Ž|£Vùs   ‚!c              3   óB   "  € T F  qP                  ^4      x € K  	  R# 5i)r   N)Úviewrj   s   & r   r   re   _   s   é € Ð5©f¨Ÿ6™6 !Ÿ9˜9«fùs   ‚zvWas asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.)Ú
stacklevelc              3   óX   <"  € T F  qP                  SP                  4      x € K!  	  R # 5ir   )Úsizeri   )r   r   r0   s   & €r   r   re   i   s   øé € Ð@¹°A§¡ s§w¡w§ »ùs   ƒ'*)r   r   Útarget_devicer   ri   r.   Ú
input_gpusÚwarningsÚwarnÚunsqueezed_scalarÚinput_sizesr!   r%   r   Úgatherr)   r*   )r0   rq   ri   r1   r%   r   s   f&&*  r   r8   ÚGather.forwardS   s^  ø€ ç‹sÑ:±6Ó:�s�sŠsÑ:±6Ó:×:Ò:Ü Ð!RÓSÐSØ˜EÔ!Ø %ˆCÕä-¨m¸TÓBˆMØ -ˆCÔØˆŒßœÑ>±vÓ>Ÿ™Ñ>±vÓ>Ó>ˆŒß‹3Ñ,¡VÓ,�3�3Š3Ñ,¡VÓ,×,Ò,°¸´ß”UÑ5©fÓ5—U‘UÑ5©fÓ5Ó5ˆFÜ�MŠMð'ð õ	ð %)ˆCÕ!à$)ˆCÔ!ßœ%Ô@¹Ó@Ÿ%™%Ô@¹Ó@Ó@ˆŒä˜“[ 1‘_×?Ð?¨°­×)=Ñ)=Ó)?ˆ
ä—’˜V S§W¡W¨c×.?Ñ.?Ó@ˆçÜ×*Ò*¨6Ó2ˆFàˆrA   c                óü   € \         P                  V P                  V P                  V P                  V4      pV P
                  '       d-   \        ;QJ d    . R  V 4       F  NK  	  5M! R  V 4       4      pRV,           # )c              3   ó2   "  € T F  q^ ,          x € K  	  R# 5irh   r   rP   s   & r   r   Ú"Gather.backward.<locals>.<genexpr>z   s   é € Ð#B±/¨Q a§D¢D³/ùs   ‚r_   )ÚScatterr<   rr   rv   ri   ru   r.   )r0   Úgrad_outputÚscattered_gradss   && r   r?   ÚGather.backwardt   s\   € ä!Ÿ-™-Ø�N‰N˜CŸO™O¨S¯W©W°kó
ˆð × × Ð ß#œeÑ#B±/Ó#BŸe™eÑ#B±/Ó#BÓBˆOØ˜oÕ-Ð-rA   r   NrB   rJ   s   @r   rb   rb   R   s,   ø‡ € Øñó ðð@ ñ.ó ö.rA   rb   c                   ó@   a € ] tR t^~t o ]R 4       t]R 4       tRtV tR# )r|   c                ó¦  € V Uu. uF  p\        VR 4      NK  	  ppW0n        VP                  P                  R8w  d   VP	                  4       MRV n        Rp\        P                  P                  4       '       d@   V P
                  R8X  d/   V Uu. uF"  p\        \        P                  ! V4      4      NK$  	  ppVP                  4       p\        P                  ! WAW P                  V4      p	V'       d-   \        ;QJ d    . R V	 4       F  NK  	  5M! R V	 4       4      p	Ve‘   \        V	4       F�  w  r«\        P                  P                  W,          4      ;_uu_ 4        \        P                  P!                  4       pVP#                  Wj,          4       VP%                  V4       RRR4       Kƒ  	  V	# u upi u upi   + '       g   i     K¢  ; i)Tr   Nc              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir   rT   )r   Úos   & r   r   Ú"Scatter.forward.<locals>.<genexpr>Ž   s   é € ÐF¹g¸œE×1Ò1°!×4Ð4»gùs   ‚#%éÿÿÿÿ)r   ri   r   r   r#   r$   r)   ÚacceleratorÚis_availableÚ_get_streamr%   r   Úscatterr.   r(   Údevice_indexÚcurrent_streamÚwait_streamÚrecord_stream)r0   r    Úchunk_sizesri   Úinputr2   Ústreamsr   r%   r4   r   r   Úmain_streams   &&&&&        r   r8   ÚScatter.forward   sc  € á;FÓG¹;°aÔ(¨¨DÖ1¹;ˆÐGØŒØ16·±×1BÑ1BÀeÔ1K˜5×+Ñ+Ô-ÐQSˆÔØˆÜ×Ñ×)Ñ)×+Ò+°×0@Ñ0@ÀBÔ0FáGRÓSÁ{¸V”{¤5§<¢<°Ó#7Ö8Á{ˆGÐSà×%Ñ%Ó'ˆ
ä—,’,˜u°;ÇÁÈÓQˆçß”eÑF¹gÓF—e‘eÑF¹gÓFÓFˆGð ÒÜ& wÖ/‘	�Ü×&Ñ&×3Ñ3°KµN×CÕCÜ"'×"3Ñ"3×"BÑ"BÓ"D�KØ×+Ñ+¨G­JÔ7Ø×(Ñ(¨Ô5÷ DÑCñ 0ð
 ˆùò- Hùò T÷ D×CÐCús   …F5Â(F:Å AF?Æ?Gc                ód   € R R R \         P                  ! V P                  V P                  .VO5!  3# r   )rb   r<   r$   ri   )r0   r}   s   &*r   r?   ÚScatter.backward™   s+   € à�T˜4¤§¢¨c×.>Ñ.>ÀÇÁÐ!VÈ+Ó!VÐVÐVrA   r   NrB   rJ   s   @r   r|   r|   ~   s-   ø‡ € Øñó ðð2 ñWó öWrA   r|   c                ó8   € V ^8„  d   QhR\         P                  /# )é   r   )r)   r   )Úformats   "r   Ú__annotate__r˜   ¢   s   € ÷ "ñ "œŸ™ñ "rA   c                ó~  € V P                   R8X  g%   \        P                  P                  4       '       g   R# \        P                  P	                  4       P                   V P                   8w  dB   \        R\        P                  P	                  4       P                    RV P                    24      h\        f'   R.\        P                  P                  4       ,          s\        V P                  ,          f2   \        P                  ! V P                  4      \        V P                  &   \        V P                  ,          # )zBGet a background stream for copying between CPU and target device.r   Nz"Expected current accelerator type z to match device type )
r   r)   r†   r‡   Úcurrent_acceleratorr   Ú_streamsÚdevice_countÚindexÚStream)r   s   &r   rˆ   rˆ   ¢   sâ   € ð ‡{�{�eÔ¤5×#4Ñ#4×#AÑ#A×#CÒ#CÙÜ×Ñ×,Ñ,Ó.×3Ñ3°v·{±{ÔBÜØ0´×1BÑ1B×1VÑ1VÓ1X×1]Ñ1]Ð0^ð _$Ø$*§K¡K =ð2ó
ð 	
ô ÒØ�6œE×-Ñ-×:Ñ:Ó<Õ<ˆÜ�—‘ÕÒ%Ü!&§¢¨f¯l©lÓ!;Œ�—‘ÑÜ�F—L‘LÕ!Ð!rA   c                ó†   € V ^8„  d   Qh/ ^ \         9   d-   \        \        P                  R,          ,          R,          ;R&   # )r–   Nr›   )Ú__conditional_annotations__Úlistr)   rž   )r—   s   "r   r˜   r˜      s-   € ‡�÷| 2Ò 1Œ$Œu�|‰|˜dÕ"Õ
# dÕ
*Ñ 1ò} rA   )r    rs   Ú	itertoolsr   r)   Útorch._utilsr   Útorch.autogradr   Útorch.nn.parallelr   r   r;   rb   r|   r›   rˆ   r˜   )r    s   @r   Ú<module>r¦      s_   øðß €Ý ã Ý *Ý #Ý "ô"�ô "ôJ <˜ô  <ôF).ˆXô ).ôXWˆhô WðB .2€Ó 1÷"rA   