+
    –°³jêP  ã                   ó8  a € R" t80 t ^ RIH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 ^ RIHtHt ^ RIHtHtHt ^ R	IHtHt R
 tR#R ltR R ltR R ltR tR tR t R t!] ! 4       t"]!! 4       t#RR/R lt$R t%]%! 4       t&]'! 4       t(] ^ k R R lt)])! ]
PT                  4       ^ RI+H,t, ]PZ                  P]                  ],4       ]P^                  P`                  Pc                  ]PZ                  Pd                  RR R]P^                  P`                  Pf                  Ph                  R]P^                  P`                  Pf                  Ph                  R]P^                  P`                  Pf                  Ph                  /R7       R  t5]5! 4       t6R! t7R# )$é    )ÚcastN)Ú_prims)ÚDispatchKey)Úautograd_not_implementedÚregister_fake)ÚHigherOrderOperator)ÚCUDARngStateHelperÚmake_contiguous_strides_for)Údisable_proxy_modes_tracingÚProxyTorchDispatchModeÚtrack_tensor_tree)Ú_deviceÚ_dtypec           	      óh   € \        R V P                   RV P                   RV P                   R24      h)z"You are trying to functionalize a z RNG operator but zE does not use Philox/counter-based RNG. Therefore, functionalizing a zo RNG operator is not supported. We are discussing the possibility of a Philox-based RNG implementation for CPU.)ÚRuntimeErrorÚtype©Údevices   &ÚW/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_prims/rng_prims.pyÚthrow_on_non_cudar      sB   € Ü
Ø
,¨V¯[©[¨MÐ9KÈFÏKÉKÈ=ð YFØFLÇkÁkÀ]ð Sið	ióð ó    c                 ó°  € \         P                  P                  R V ,           VRVR7      pVP                  V4       \	        \         P
                  P                  P                  V 4      pVP                  pV'       d   WXn	        Wx3 FK  p	WIn
        \         P                  P                  P                  V	n        W,           V	n        W)n        W9n        KM  	  R# )z
rngprims::)Úmutates_argsÚschemaN© )ÚtorchÚlibraryÚ	custom_opr   ÚgetattrÚ_opsÚopsÚrngprimsÚdefaultÚ_tagsÚ__doc__Ú_prims_commonÚRETURN_TYPEÚNEWÚreturn_typer   Ú	impl_atenÚprim_meta_impl)
Únamer   r*   Ú	impl_metaÚdocÚtagsÚrngprim_defÚprim_packetÚprimÚps
   &&&&&&    r   Úregister_rng_primr4      s¥   € Ü—-‘-×)Ñ)Ø�tÕ˜Y°RÀð *ó €Kð ×Ñ˜iÔ(äœ%Ÿ*™*Ÿ.™.×1Ñ1°4Ó8€KØ×Ñ€DßØŒ
àÓ ˆØŒ	Ü×+Ñ+×7Ñ7×;Ñ;ˆŒà•=ˆŒØŒØ$Öó !r   c                ó8   € V ^8„  d   QhR\         P                  /# ©é   Úshape©r   ÚSize)Úformats   "r   Ú__annotate__r<   2   s   € ÷ Añ AÜ�:‰:ñAr   c                 óv   € \         P                  ! \        P                  ! ^ \        P                  R7      4      # )r   ©Údtype)r   Ú
TensorLiker   ÚtensorÚint64)r8   s   &r   Úphilox_rand_offset_metarC   2   s$   € ô ×ÒœUŸ\š\¨!´5·;±;Ô?Ó@Ð@r   c                ó8   € V ^8„  d   QhR\         P                  /# r6   r9   )r;   s   "r   r<   r<   8   s   € ÷ Wñ WÜ�:‰:ñWr   c                 óö  € ^pV  F  pW,          pK  	  \         P                  ! V\         P                  R7      pRp^p^p\         P                  P	                  \         P                  P                  4       4      pVP                  V,          p\        \        V4      p	W”,           ^,
          V,          p
\        W§P                  V,          4      p
V	^,
          WJ,          V,          ,          ^,           V,          # )é   r>   é   )r   Úscalar_tensorrB   ÚcudaÚget_device_propertiesÚcurrent_deviceÚmax_threads_per_multi_processorr   ÚintÚminÚmulti_processor_count)r8   Únumel_scalarÚdim_sizeÚnumelÚ
block_sizeÚunrollÚcurand4_engine_callsÚdevice_propertyÚblocks_per_smÚnumÚ	grid_sizes   &          r   Úphilox_rand_offsetrZ   8   sÇ   € ð €LÛˆØÕ Šñ ä×Ò ´E·K±KÔ@€Eà€JØ€FØÐÜ—j‘j×6Ñ6´u·z±z×7PÑ7PÓ7RÓS€OØ#×CÑCÀzÕQ€MÜ
Œs�EÓ
€CØÕ! AÕ%¨*Õ4€IÜ�I×DÑDÀ}ÕTÓU€IØ�1�W˜*Õ0°6Õ9Õ:¸QÕ>ÐBVÕVÐVr   c            	      óz   € R p RpR R lpR R lp\        V VVVR\        P                  P                  3R7       R# )	Úphilox_randz{(SymInt[] size, Tensor seed, Tensor offset, int[]? stride, Device? device=None, ScalarType? dtype=None) -> (Tensor, Tensor)c                óÄ   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\        \        R3,          R,          R\
        R\        /# ©	r7   r8   ÚseedÚoffsetÚstride.Nr   r?   ©r   r:   ÚTensorÚtuplerM   r   r   )r;   s   "r   r<   Ú*register_philox_rand.<locals>.__annotate__R   s]   € ÷ 'ñ 'Ü�z‰zð'ä�l‰lð'ô —‘ð'ô ”c˜3�h• $Õ&ð	'ô
 ð'ô ñ'r   c                 óˆ   € Ve   \        RV 24      h\        V 4      p\        P                  ! WWTR7      p\	        V 4      pWb3# )Nústride must be None, got )r8   Ústridesr?   r   )ÚAssertionErrorr
   r   Ú
TensorMetarC   )r8   r_   r`   ra   r   r?   Úrandom_valuess   &&&&&& r   Ú_philox_rand_metaÚ/register_philox_rand.<locals>._philox_rand_metaR   sQ   € ð ÒÜ Ð#<¸V¸HÐ!EÓFÐFÜ,¨UÓ3ˆÜ×)Ò)Ø¨uô
ˆô )¨Ó/ˆØÐ&Ð&r   c                óÄ   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\        \        R3,          R,          R\
        R\        /# r^   rb   )r;   s   "r   r<   re   d   s]   € ÷ 8ñ 8Ü�z‰zð8ä�l‰lð8ô —‘ð8ô ”c˜3�h• $Õ&ð	8ô
 ð8ô ñ8r   c                 óˆ  € Ve   \        RV 24      hVP                  R8X  d   . pMV.pVP                  R8w  d   \        V4      h\        P                  P                  V4      ;_uu_ 4        \        P                  ! W4       \        P                  ! WVR7      pR R R 4       X\        V 4      3#   + '       g   i     L; i)Nrg   ÚcpurI   )r   r?   )
ri   r   r   r   ÚrandomÚfork_rngr	   Úset_torch_state_tensorÚrandrZ   )r8   r_   r`   ra   r   r?   Údevicesrk   s   &&&&&&  r   Ú_philox_randÚ*register_philox_rand.<locals>._philox_randd   s    € ð ÒÜ Ð#<¸V¸HÐ!EÓFÐFØ�;‰;˜%ÔØ‰Gà�hˆGà�;‰;˜&Ô Ü# FÓ+Ð+ä�\‰\×"Ñ" 7×+Õ+Ü×5Ò5°dÔCÜ!ŸJšJ uÀ5ÔIˆM÷ ,ð Ô0°Ó7Ð7Ð7÷	 ,×+ús   Á-/B1Â1C	z$Philox based stateless rand operator)r,   r   r*   r-   r.   r/   N)r4   r   ÚTagÚnondeterministic_seeded)r,   r   rl   rv   s       r   Úregister_philox_randrz   N   sB   € Ø€Dð K€Fõ'õ$8ô2 ØØØØ#Ø2Ü�i‰i×/Ñ/Ð1÷r   c                 ó¤  € VP                  R 4      '       dJ   VP                  R 4      p\        V\        4      '       d   \        P                  ! V4      pVP
                  # V  Fi  p\        V\        P                  4      '       d   VP                  P
                  u # \        V\        P                  4      '       g   K]  VP
                  u # 	  R# )r   N)ÚgetÚ
isinstanceÚstrr   r   r   rc   )ÚargsÚkwargsr   Úargs   &&  r   Ú
get_devicer‚   ‡   sŒ   € Ø‡z�z�(×ÒØ—‘˜HÓ%ˆÜ�fœc×"Ò"Ü—\’\ &Ó)ˆFØ�{‰{ÐãˆÜ�cœ5Ÿ<™<×(Ò(Ø—:‘:—?‘?Ò"Ü�cœ5Ÿ<™<×(Ô(Ø—8‘8ŠOñ	 ñ
 r   c                  ó†  aaaaaa€  ! R  R\         4      p V ! 4       oSP                  \        P                  4      ! \	        SRR7      4       SP                  \        P
                  4      R 4       oSP                  \        P                  4      R 4       oSP                  \        P                  4      R 4       oSP                  \        P                  4      R 4       oSP                  \        P                  4      VVVV3R l4       o\        SRR	7      V3R
 l4       pSP                  \        4      VV3R l4       pS# )c                   ó>   a a€ ] tR t^—t oV 3R ltV 3R ltRtVtV ;t# )Ú>register_run_and_save_rng_state_op.<locals>.RunAndSaveRngStatec                ó*   <€ \         SV `  R RR7       R# )Úrun_and_save_rng_stateT©Ú	cacheableN©ÚsuperÚ__init__©ÚselfÚ	__class__s   &€r   rŒ   ÚGregister_run_and_save_rng_state_op.<locals>.RunAndSaveRngState.__init__˜   s   ø€ Ü‰GÑÐ5ÀÐÖFr   c                ó,   <€ \         SV `  ! V.VO5/ VB # ©N©r‹   Ú__call__)rŽ   Úopr   r€   r�   s   &&*,€r   r”   ÚGregister_run_and_save_rng_state_op.<locals>.RunAndSaveRngState.__call__›   s   ø€ ä‘7Ò# BÐ8¨Ò8°Ñ8Ð8r   r   ©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rŒ   r”   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r�   Ú__classdict__s   @@r   ÚRunAndSaveRngStater…   —   s   ù‡ € õ	G÷	9õ 	9r   r¡   T©Údeferred_errorc                 óN   € \         P                  P                  4       V ! V/ VB 3# r’   )r   rI   Úget_rng_state©r•   r   r€   s   &*,r   Ú	impl_cudaÚ5register_run_and_save_rng_state_op.<locals>.impl_cuda¥   s$   € ä�z‰z×'Ñ'Ó)©2¨tÐ+>°vÑ+>Ð>Ð>r   c                 ó<   € \         P                  ! 4       V ! V/ VB 3# r’   )r   r¥   r¦   s   &*,r   Úimpl_cpuÚ4register_run_and_save_rng_state_op.<locals>.impl_cpu©   s    € ä×"Ò"Ó$¡b¨$Ð&9°&Ñ&9Ð9Ð9r   c                 ó�   € \        \        R 4      '       d'   \        P                  P                  4       V ! V/ VB 3# \	        R4      h©Úhpuz2functionalize a hpu RNG operator is not supported.)Úhasattrr   r®   r¥   r   r¦   s   &*,r   Úimpl_hpuÚ4register_run_and_save_rng_state_op.<locals>.impl_hpu­   s=   € ä”5˜%× Ò Ü—9‘9×*Ñ*Ó,©b°$Ð.A¸&Ñ.AÐAÐAÜÐOÓPÐPr   c                 óN   € \         P                  P                  4       V ! V/ VB 3# r’   )r   Úxpur¥   r¦   s   &*,r   Úimpl_xpuÚ4register_run_and_save_rng_state_op.<locals>.impl_xpu³   s$   € ä�y‰y×&Ñ&Ó(©"¨dÐ*=°fÑ*=Ð=Ð=r   c                 ó~   <€ R SRSRSRS	/p\        W4      pWC9  d   \        RV 24      hW4,          pV! V .VO5/ VB # ©rI   rp   r®   r³   zBackend not supported for ©r‚   ri   )
r•   r   r€   Úimpl_mapr   Úimplrª   r§   r°   r´   s
   &*,   €€€€r   Úimpl_backend_selectÚ?register_run_and_save_rng_state_op.<locals>.impl_backend_select·   sb   ø€ ð �IØ�8Ø�8Ø�8ð	
ˆô ˜DÓ)ˆØÔ!Ü Ð#=¸f¸XÐ!FÓGÐGØÕˆÙ�BÐ(˜Ò( Ñ(Ð(r   ©Ú
skip_cachec                 ó   <€ S! V .VO5/ VB # r’   r   )r•   r   r€   r»   s   &*,€r   Úimpl_fake_tensor_modeÚAregister_run_and_save_rng_state_op.<locals>.impl_fake_tensor_modeÅ   s   ø€ ñ # 2Ð7¨Ò7°Ñ7Ð7r   c                 ó:  <€ S! V.VO5/ VB p\         P                  ! V P                  P                  V.VO54      p\         P                  ! V P                  P                  V4      pV P                  P	                  R S	WV4      p\        WGRV P                  R7      # )Úcall_functionN©ÚconstantÚtracer)ÚpytreeÚtree_maprÆ   Úunwrap_proxyÚcreate_proxyr   )
Úmoder•   r   r€   ÚoutÚ
proxy_argsÚproxy_kwargsÚ	out_proxyr»   r‡   s
   &&*,    €€r   Úimpl_proxy_dispatch_modeÚDregister_run_and_save_rng_state_op.<locals>.impl_proxy_dispatch_modeÊ   s‚   ø€ á! "Ð6 tÒ6¨vÑ6ˆÜ—_’_ T§[¡[×%=Ñ%=À¸{ÀT¹{ÓKˆ
Ü—’ t§{¡{×'?Ñ'?ÀÓHˆØ—K‘K×,Ñ,ØÐ3°Zó
ˆ	ô ! ¸$ÀtÇ{Á{ÔSÐSr   )r   Úpy_implr   ÚAutogradr   ÚCUDAÚCPUÚHPUÚXPUÚBackendSelectr   r   )	r¡   rÀ   rÐ   r»   rª   r§   r°   r´   r‡   s	      @@@@@@r   Ú"register_run_and_save_rng_state_oprÙ   –   s:  ý€ ô9Ô0ô 9ñ 0Ó1Ðà×"Ñ"¤;×#7Ñ#7Ô8Ü Ð!7ÈÔMôð ×#Ñ#¤K×$4Ñ$4Ó5ñ?ó 6ð?ð ×#Ñ#¤K§O¡OÓ4ñ:ó 5ð:ð ×#Ñ#¤K§O¡OÓ4ñQó 5ðQð
 ×#Ñ#¤K§O¡OÓ4ñ>ó 5ð>ð ×#Ñ#¤K×$=Ñ$=Ó>÷)ó ?ð)ô Ð)°dÔ;ô8ó <ð8ð ×#Ñ#Ô$:Ó;õTó <ðTð "Ð!r   c                  ó¦  aaaaa	€  ! R  R\         4      p V ! 4       o	S	P                  \        P                  4      ! \	        S	RR7      4       S	P                  \        P
                  4      R 4       oS	P                  \        P                  4      R 4       oS	P                  \        P                  4      R 4       oS	P                  \        P                  4      R 4       oS	P                  \        4      V	3R l4       pS	P                  \        P                  4      VVVV3R	 l4       p\        S	RR
7      R 4       pS	P                  V	3R l4       pS	# )c                   ó>   a a€ ] tR t^Øt oV 3R ltV 3R ltRtVtV ;t# )Ú7register_run_with_rng_state_op.<locals>.RunWithRngStatec                ó*   <€ \         SV `  R RR7       R# )Úrun_with_rng_stateTrˆ   NrŠ   r�   s   &€r   rŒ   Ú@register_run_with_rng_state_op.<locals>.RunWithRngState.__init__Ù   s   ø€ Ü‰GÑÐ1¸TÐÖBr   c                ó,   <€ \         SV `  ! W.VO5/ VB # r’   r“   )rŽ   Ú	rng_stater•   r   r€   r�   s   &&&*,€r   r”   Ú@register_run_with_rng_state_op.<locals>.RunWithRngState.__call__Ü   s   ø€ ä‘7Ò# IÐC°DÒC¸FÑCÐCr   r   r—   rŸ   s   @@r   ÚRunWithRngStaterÜ   Ø   s   ù‡ € õ	C÷	Dõ 	Dr   rã   Tr¢   c                 óê   € \         P                  P                  4       p\         P                  P                  V P	                  4       4       V! V/ VB p\         P                  P                  V4       V# r’   )r   rI   r¥   Úset_rng_staterp   ©rá   r•   r   r€   Úcurrent_staterÌ   s   &&*,  r   r§   Ú1register_run_with_rng_state_op.<locals>.impl_cudaæ   sR   € äŸ
™
×0Ñ0Ó2ˆÜ�
‰
× Ñ  §¡£Ô1Ù�$Ð!˜&Ñ!ˆÜ�
‰
× Ñ  Ô/Øˆ
r   c                 ó˜   € \         P                  ! 4       p\         P                  ! V 4       V! V/ VB p\         P                  ! V4       V# r’   )r   r¥   rå   ræ   s   &&*,  r   rª   Ú0register_run_with_rng_state_op.<locals>.impl_cpuî   s@   € ä×+Ò+Ó-ˆÜ×Ò˜IÔ&Ù�$Ð!˜&Ñ!ˆÜ×Ò˜MÔ*Øˆ
r   c                 ó  € \        \        R 4      '       dg   \        P                  P                  4       p\        P                  P	                  V 4       V! V/ VB p\        P                  P	                  V4       V# \        R4      hr­   )r¯   r   r®   r¥   rå   r   ræ   s   &&*,  r   r°   Ú0register_run_with_rng_state_op.<locals>.impl_hpuö   se   € ä”5˜%× Ò Ü!ŸI™I×3Ñ3Ó5ˆMÜ�I‰I×#Ñ# IÔ.Ù�dÐ%˜fÑ%ˆCÜ�I‰I×#Ñ# MÔ2ØˆJÜÐOÓPÐPr   c                 óÎ   € \         P                  P                  4       p\         P                  P                  V 4       V! V/ VB p\         P                  P                  V4       V# r’   )r   r³   r¥   rå   ræ   s   &&*,  r   r´   Ú0register_run_with_rng_state_op.<locals>.impl_xpu   sL   € äŸ	™	×/Ñ/Ó1ˆÜ�	‰	×Ñ 	Ô*Ù�$Ð!˜&Ñ!ˆÜ�	‰	×Ñ Ô.Øˆ
r   c                 ó˜  <€ \        4       ;_uu_ 4        S	! W.VO5/ VB pR R R 4       \        P                  ! V P                  P                  W.VO54      p\        P                  ! V P                  P                  V4      pV P                  P                  RS	Wg4      p\        XVR V P                  R7      #   + '       g   i     L ; i©NrÃ   rÄ   ©r   rÇ   rÈ   rÆ   rÉ   rÊ   r   )
rË   rá   r•   r   r€   rÌ   rÍ   rÎ   rÏ   rÞ   s
   &&&*,    €r   rÐ   Ú@register_run_with_rng_state_op.<locals>.impl_proxy_dispatch_mode  s    ø€ ô )×*Õ*Ù$ YÐD°TÒD¸VÑDˆC÷ +ä—_’_ T§[¡[×%=Ñ%=À	Ð?UÐPTÑ?UÓVˆ
Ü—’ t§{¡{×'?Ñ'?ÀÓHˆØ—K‘K×,Ñ,ØÐ/°ó
ˆ	ô !  i¸$ÀtÇ{Á{ÔSÐS÷ +×*ús   ”B9Â9C		c                 ó~   <€ R SRSRS	RS
/p\        W#4      pWT9  d   \        RV 24      hWE,          pV! W.VO5/ VB # r·   r¸   )rá   r•   r   r€   r¹   r   rº   rª   r§   r°   r´   s   &&*,   €€€€r   r»   Ú;register_run_with_rng_state_op.<locals>.impl_backend_select  sb   ø€ ð �IØ�8Ø�8Ø�8ð	
ˆô ˜DÓ)ˆØÔ!Ü Ð#=¸f¸XÐ!FÓGÐGØÕˆÙ�IÐ3 DÒ3¨FÑ3Ð3r   r½   c                 ó   € V! V/ VB # r’   r   )rá   r•   r   r€   s   &&*,r   rÀ   Ú=register_run_with_rng_state_op.<locals>.impl_fake_tensor_mode#  s   € ñ �4Ð"˜6Ñ"Ð"r   c                 ó  <€ V P                  V4      pV P                  V4      pV P                  V4      pV P                  4       ;_uu_ 4        S	! WR.VO5/ VB pV P                  V4      uuR R R 4       #   + '       g   i     R # ; ir’   ©Úunwrap_tensorsÚredispatch_to_nextÚwrap_tensors)
Úctxrá   r•   r   r€   Úunwrapped_rng_stateÚunwrapped_argsÚunwrapped_kwargsrÌ   rÞ   s
   &&&*,    €r   Úimpl_functionalÚ7register_run_with_rng_state_op.<locals>.impl_functional)  s€   ø€ à!×0Ñ0°Ó;ÐØ×+Ñ+¨DÓ1ˆØ×-Ñ-¨fÓ5Ðà×#Ñ#×%Õ%Ù$Ø#ðØ*8òØ<LñˆCð ×#Ñ# CÓ(÷	 &×%×%Ó%ús   ÁA5Á5B	)r   rÒ   r   rÓ   r   rÔ   rÕ   rÖ   r×   r   rØ   r   Úpy_functionalize_impl)
rã   rÐ   r»   rÀ   r   rª   r§   r°   r´   rÞ   s
        @@@@@r   Úregister_run_with_rng_state_opr  ×   sV  ü€ ôDÔ-ô Dñ )Ó*Ðà×Ñœ{×3Ñ3Ô4Ü Ð!3ÀDÔIôð ×Ñ¤× 0Ñ 0Ó1ñó 2ðð ×Ñ¤§¡Ó0ñó 1ðð ×Ñ¤§¡Ó0ñQó 1ðQð ×Ñ¤§¡Ó0ñó 1ðð ×ÑÔ 6Ó7ô
Tó 8ð
Tð ×Ñ¤× 9Ñ 9Ó:÷4ó ;ð4ô Ð%°$Ô7ñ#ó 8ð#ð
 ×-Ñ-ô	)ó .ð	)ð Ðr   rá   c                ój  € VP                   P                  pVP                   P                  p\        \        VR 4      pVe   \        VR4      '       g   \        RV RV R24      hVP                  V,          pVP                  4       pVP                  V4       V ! V/ VB p	VP                  V4       V	# )NÚdefault_generatorsú3GraphSafe RNG operations not supported for device 'z' (no torch.z.default_generators))
r   Úindexr   r   r   r¯   ri   r  Úgraphsafe_get_stateÚgraphsafe_set_state)
r•   rá   r   r€   Ú
device_idxÚdevice_typeÚ
device_modÚ	generatorrç   rÌ   s
   &$*,      r   Ú_impl_graphsafe_rngr  <  s¼   € à×!Ñ!×'Ñ'€JØ×"Ñ"×'Ñ'€KÜœ ¨TÓ2€JØÒ¤¨Ð5I×!JÒ!JÜØAÀ+Àð OØ$˜Ð%9ð;ó
ð 	
ð ×-Ñ-¨jÕ9€IØ×1Ñ1Ó3€Mà×!Ñ! )Ô,Ù
ˆdÐ
�fÑ
€CØ×!Ñ! -Ô0Ø€Jr   c                  óŠ  a€  ! R  R\         4      p V ! 4       oSP                  \        P                  4      ! \	        SRR7      4       SP                  \        P
                  4      RR/R l4       p\        SRR7      RR/R l4       pSP                  \        4      RR/V3R	 ll4       pSP                  RR/V3R
 ll4       pS# )c                   óF   a a€ ] tR tRt oV 3R ltRR/V 3R lltRtVtV ;t# )ÚJregister_graphsafe_run_with_rng_state_op.<locals>.GraphSafeRunWithRngStateiP  c                ó*   <€ \         SV `  R RR7       R# )Úgraphsafe_run_with_rng_stateTrˆ   NrŠ   r�   s   &€r   rŒ   ÚSregister_graphsafe_run_with_rng_state_op.<locals>.GraphSafeRunWithRngState.__init__Q  s   ø€ Ü‰GÑÐ;ÀtÐÖLr   rá   Nc               ó0   <€ \         SV `  ! V.VO5R V/VB # )rá   r“   )rŽ   r•   rá   r   r€   r�   s   &&$*,€r   r”   ÚSregister_graphsafe_run_with_rng_state_op.<locals>.GraphSafeRunWithRngState.__call__T  s"   ø€ ä‘7Ò# BÐM¨ÒM¸ÐMÀfÑMÐMr   r   r—   rŸ   s   @@r   ÚGraphSafeRunWithRngStater  P  s   ù‡ € õ	Mð	N°÷ 	N÷ 	Nr   r  Tr¢   rá   Nc                ó¶   € ^ RI Hp \        W#4      pVe#   V! \        P                  ! V4      4      '       g   \        RV RV R24      h\        V .VO5RV/VB # )r   )Úsupports_graphsafe_rngr  z,'. Call register_graphsafe_rng_device_type('z') to register.rá   )Ú$torch._functorch._aot_autograd.utilsr  r‚   r   r   ri   r  )r•   rá   r   r€   r  r   s   &$*,  r   r»   ÚEregister_graphsafe_run_with_rng_state_op.<locals>.impl_backend_select^  sk   € åOä˜DÓ)ˆØŠ>Ñ!7¼¿ºÀVÓ8L×!MÒ!MÜ ØEÀfÀXð N<Ø<B¸8À?ðTóð ô # 2ÐL¨ÒL¸	ÐLÀVÑLÐLr   r½   c                ó   € V ! V/ VB # r’   r   )r•   rá   r   r€   s   &$*,r   rÀ   ÚGregister_graphsafe_run_with_rng_state_op.<locals>.impl_fake_tensor_modej  ó   € á�4Ð"˜6Ñ"Ð"r   c                ó¤  <€ \        4       ;_uu_ 4        S	! V.VO5R V/VB pRRR4       \        P                  ! V P                  P                  V.VO54      p\        P                  ! V P                  P                  R V/VC4      pV P                  P                  RS	Wg4      p\        XVRV P                  R7      #   + '       g   i     L¤; i)rá   NrÃ   rÄ   rñ   )
rË   r•   rá   r   r€   rÌ   rÍ   rÎ   rÏ   r  s
   &&$*,    €r   rÐ   ÚJregister_graphsafe_run_with_rng_state_op.<locals>.impl_proxy_dispatch_moden  s°   ø€ ä(×*Õ*Ù.¨rÐX°DÒXÀIÐXÐQWÑXˆC÷ +ä—_’_ T§[¡[×%=Ñ%=À¸{ÀT¹{ÓKˆ
Ü—’Ø�K‰K×$Ñ$ {°IÐ&HÀÐ&Hó
ˆð —K‘K×,Ñ,ØÐ9¸:ó
ˆ	ô !  i¸$ÀtÇ{Á{ÔSÐS÷ +×*ús   ”B?Â?C	c                ó"  <€ Ve   V P                  V4      MR pV P                  V4      pV P                  V4      pV P                  4       ;_uu_ 4        S	! V.VO5RV/VB pV P                  V4      uuR R R 4       #   + '       g   i     R # ; i)Nrá   rø   )
rü   r•   rá   r   r€   rý   rþ   rÿ   rÌ   r  s
   &&$*,    €r   r   ÚAregister_graphsafe_run_with_rng_state_op.<locals>.impl_functional{  s•   ø€ ð .7Ò-BˆC×Ñ˜yÔ)Èð 	ð ×+Ñ+¨DÓ1ˆØ×-Ñ-¨fÓ5Ðà×#Ñ#×%Õ%Ù.ØðØ#òØ/BðØFVñˆCð ×#Ñ# CÓ(÷	 &×%×%Ó%ús   ÁA=Á=B	)	r   rÒ   r   rÓ   r   rØ   r   r   r  )r  r»   rÀ   rÐ   r   r  s        @r   Ú(register_graphsafe_run_with_rng_state_opr#  O  sé   ø€ ôNÔ#6ô Nñ $<Ó#=Ð à ×(Ñ(¬×)=Ñ)=Ô>Ü Ð!=ÈdÔSôð "×)Ñ)¬+×*CÑ*CÓDð	M°ó 	Mó Eð	Mô Ð/¸DÔAð#°4ó #ó Bð#ð "×)Ñ)Ô*@ÓAð
T¸Dö 
Tó Bð
Tð "×7Ñ7ð)°$ö )ó 8ð)ð (Ð'r   c                ó    € V ^8„  d   QhRRRR/# )r7   Údispatch_keyr   ÚreturnNr   )r;   s   "r   r<   r<   ‘  s   € ÷ Lñ L°-ð LÀDñ Lr   c                óˆ   € V \         9   d   R# \         P                  V 4       \        P                  V 4      ! \        4       R# )zARegister graphsafe_run_with_rng_state py_impl for a dispatch key.N)Ú#_registered_graphsafe_dispatch_keysÚaddr  rÒ   r  )r%  s   &r   Úregister_graphsafe_rng_dispatchr*  ‘  s0   € àÔ:Ô:ÙÜ'×+Ñ+¨LÔ9Ü ×(Ñ(¨Ô6Ô7JÖKr   )ÚCustomClassBaseMetaÚsymbolicc                 ó   € V P                   .# r’   r   )Úgens   &r   Ú<lambda>r/  ¨  s
   € ˜#Ÿ*™*™r   r   Ú__eq__Ú__ne__)ÚtypÚguard_fnÚmembersc                 ó¼  aa€  ! R R\         4      p V ! 4       oSP                  \        P                  4      ! \	        SRR7      4       SP                  \        P
                  4      R 4       oSP                  \        P                  4      V3R l4       p\        SRR7      R 4       pSP                  \        4      V3R	 l4       pSP                  V3R
 l4       pS# )u’  
Register a higher-order operator for DTensor distributed random operations.
Takes pre-computed integer offsets (start_offset_incr, end_offset_incr), an op,
and args. Internally adjusts the RNG state using the offsets before/after
running the op.

The offsets are computed at trace time from the DTensorSpec, so the compiled graph
contains only plain integers â€” no DTensorSpec or DeviceMesh objects.
c                   ó>   a a€ ] tR tRt oV 3R ltV 3R ltRtVtV ;t# )Ú4register_run_dtensor_rng_op.<locals>.RunDTensorRngOpi¼  c                ó*   <€ \         SV `  R RR7       R# )Úrun_dtensor_rng_opFrˆ   NrŠ   r�   s   &€r   rŒ   Ú=register_run_dtensor_rng_op.<locals>.RunDTensorRngOp.__init__½  s   ø€ ô ‰GÑÐ1¸UÐÖCr   c                ó.   <€ \         SV `  ! WV.VO5/ VB # r’   r“   )rŽ   Ústart_offset_incrÚend_offset_incrr•   r   r€   r�   s   &&&&*,€r   r”   Ú=register_run_dtensor_rng_op.<locals>.RunDTensorRngOp.__call__Å  s*   ø€ ä‘7Ò#Ø!°BðØ9=òØAGñð r   r   r—   rŸ   s   @@r   ÚRunDTensorRngOpr7  ¼  s   ù‡ € õ	D÷	õ 	r   r?  Tr¢   c                 óü  € ^ RI Hp V! \        P                  P	                  4       4      pVP
                  P                  4       pWp,           Vn        V'       d-   \        V^ ,          R4      '       d   V^ ,          P                  M4\        P                  ! R\        P                  P                  4        24      p\        P                  P                  V.RR7      ;_uu_ 4        \        P                  P                  VP                  4        V! V/ VB p	Wq,           Vn         RRR4       \        P                  P                  VP                  4       X	#   Yq,           Tn        i ; i  + '       g   i     LM; i)r   )Ú_PhiloxStater   zcuda:rI   )ru   r  N)Ú torch.distributed.tensor._randomrA  r   rI   r¥   r`   Úcloner¯   r   rK   rq   rr   rå   Ústate)
r<  r=  r•   r   r€   rA  rD  Ú
old_offsetr   rÌ   s
   &&&*,     r   r§   Ú.register_run_dtensor_rng_op.<locals>.impl_cudaÑ  s  € åAáœUŸZ™Z×5Ñ5Ó7Ó8ˆØ—\‘\×'Ñ'Ó)ˆ
Ø!Õ5ˆŒ÷ œ  Q¥¨×2Ò2ð ��G�NŠNä—’ ¤e§j¡j×&?Ñ&?Ó&AÐ%BÐCÓDð 	ô
 �\‰\×"Ñ"¨F¨8ÀÐ"×HÕHÜ�J‰J×$Ñ$ U§[¡[Ô1ð<Ù˜$Ð) &Ñ)�à)Õ;�•÷ Iô 	�
‰
× Ñ  §¡Ô-Øˆ
øð  *Õ;�•ú÷ I×Hús$   Ã%*E+ÄEÄE+ÅE(Å(E+Å+E;	c                 ó`   <€ \        W44      pVR 8w  d   \        RV R24      hS! WV.VO5/ VB # )rI   z2run_dtensor_rng_op only supports CUDA device, got zF. This operator is designed for distributed random operations on CUDA.)r‚   r   )r<  r=  r•   r   r€   r   r§   s   &&&*, €r   r»   Ú8register_run_dtensor_rng_op.<locals>.impl_backend_selectè  sP   ø€ ä˜DÓ)ˆØ�VÔÜØDÀVÀHð MWð Xóð ñ Ð*¸RÐQÀ$ÒQÈ&ÑQÐQr   r½   c                 ó   € V! V/ VB # r’   r   )r<  r=  r•   r   r€   s   &&&*,r   rÀ   Ú:register_run_dtensor_rng_op.<locals>.impl_fake_tensor_modeò  r  r   c                 óœ  <€ \        4       ;_uu_ 4        S
! WV.VO5/ VB pR R R 4       \        P                  ! V P                  P                  WV.VO54      p\        P                  ! V P                  P                  V4      pV P                  P                  RS
Wx4      p	\        XV	R V P                  R7      #   + '       g   i     L¡; irð   rñ   )rË   r<  r=  r•   r   r€   rÌ   rÍ   rÎ   rÏ   r9  s   &&&&*,    €r   rÐ   Ú=register_run_dtensor_rng_op.<locals>.impl_proxy_dispatch_modeö  sµ   ø€ ô )×*Õ*Ù$Ø!°BðØ9=òØAGñˆC÷ +ô —_’_Ø�K‰K×$Ñ$Ð'8È2Ð&UÐPTÑ&Uó
ˆ
ô —’ t§{¡{×'?Ñ'?ÀÓHˆØ—K‘K×,Ñ,ØÐ/°ó
ˆ	ô !  i¸$ÀtÇ{Á{ÔSÐS÷ +×*ús   ”B;Â;C	c                 óô   <€ V P                  V4      pV P                  V4      pV P                  4       ;_uu_ 4        S	! VVV.VO5/ VB pV P                  V4      uuR R R 4       #   + '       g   i     R # ; ir’   rø   )
rü   r<  r=  r•   r   r€   rþ   rÿ   rÌ   r9  s
   &&&&*,   €r   r   Ú4register_run_dtensor_rng_op.<locals>.impl_functional  sy   ø€ à×+Ñ+¨DÓ1ˆØ×-Ñ-¨fÓ5Ðà×#Ñ#×%Õ%Ù$Ø!ØØðð  ò	ð
 #ñˆCð ×#Ñ# CÓ(÷ &×%×%Ó%ús   ¼A&Á&A7	)
r   rÒ   r   rÓ   r   rÔ   rØ   r   r   r  )r?  r»   rÀ   rÐ   r   r§   r9  s        @@r   Úregister_run_dtensor_rng_oprO  ±  së   ù€ ôÔ-ô ñ )Ó*Ðà×Ñœ{×3Ñ3Ô4Ü Ð!3ÀDÔIôð ×Ñ¤× 0Ñ 0Ó1ñó 2ðð, ×Ñ¤× 9Ñ 9Ó:ôRó ;ðRô Ð%°$Ô7ñ#ó 8ð#ð ×ÑÔ 6Ó7ôTó 8ðTð  ×-Ñ-ô)ó .ð)ð Ðr   c                  ó   € \        4        R # r’   )rz   r   r   r   Úregister_rng_primsrQ    s   € ÜÖr   c                óN   € V ^8„  d   Qh/ ^ \         9   d   \        R,          ;R&   # )r7   r   r(  )Ú__conditional_annotations__Úset)r;   s   "r   r<   r<      s"   € × Ñ ÷X @Ò ?¤S¨Õ%7Ñ ?òY r   r’   )9rS  Útypingr   r   Útorch.utils._pytreeÚutilsÚ_pytreerÇ   r   Útorch._Cr   Útorch._higher_order_ops.utilsr   r   Ú
torch._opsr   Útorch._prims_commonr	   r
   Ú"torch.fx.experimental.proxy_tensorr   r   r   Útorch.typesr   r   r   r4   rC   rZ   rz   r‚   rÙ   r  r‡   rÞ   r  r#  r  rT  r(  r*  rÔ   Útorch._custom_class_baser+  Ú_CÚ_set_generator_metaclassÚ_libraryÚopaque_objectÚregister_custom_classÚ	GeneratorÚ
MemberTypeÚUSE_REALrO  r9  rQ  r<   )rS  s   @r   Ú<module>rh     sk  øðç Ò ã ß $Ð $Ý Ý  ß QÝ *ß O÷ñ ÷
 (òô%õ.AõWò,6òrò>"òB^ñB <Ó=Ð Ù3Ó5Ð ð¨Tô ò&:(ñz  HÓIÐ á:=»%Ð #Ó ?õLñ   × 0Ñ 0Ô 1õ 9ð ‡�× !Ñ !Ð"5Ô 6à ‡�× Ñ × 2Ñ 2Ø	‡H�H×ÑØÙ%à�%—.‘.×.Ñ.×9Ñ9×BÑBØ�%—.‘.×.Ñ.×9Ñ9×BÑBØ�%—.‘.×.Ñ.×9Ñ9×BÑBðð	 3ô 	òeñP 1Ó2Ð ôr   