ó
    EñiK:  ã                   ó<  • S SK Jr  S SKrS SKJs  Jr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S SKJr  S S	KJrJrJr  S S
KJrJr  S rSS jrS\R8                  4S jrS\R8                  4S jrS rS r S r!S r"\!" 5       r#\"" 5       r$S r%\%" 5       r&S r'g)é    )ÚcastN)Ú_prims)ÚDispatchKey)Úautograd_not_implemented)ÚHigherOrderOperator)ÚCUDARngStateHelperÚmake_contiguous_strides_for)ÚFakeTensorMode)Údisable_proxy_modes_tracingÚProxyTorchDispatchModeÚtrack_tensor_tree)Ú_deviceÚ_dtypec           	      óh   • [        SU R                   SU R                   SU R                   S35      e)Nz"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    ÚS/home/mande/repo/quber/.venv/lib/python3.13/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                 ó–  • [         R                  R                  SU -   USUS9nUR                  U5        [	        [         R
                  R                  R                  U 5      nUR                  nU(       a  XXl	        Xx4 HG  n	XIl
        [         R                  R                  R                  U	l        X-   U	l        X)l        X9l        MI     g )Nz
rngprims::© )Úmutates_argsÚschema)ÚtorchÚlibraryÚ	custom_opÚregister_fakeÚ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   Úshapec                 óp   • [         R                  " [        R                  " S[        R                  S95      $ )Nr   ©Údtype)r   Ú
TensorLiker   ÚtensorÚint64)r5   s    r   Úphilox_rand_offset_metar<   3   s$   € ô ×ÒœUŸ\š\¨!´5·;±;Ñ?Ó@Ð@r   c                 ó�  • SnU  H  nX-  nM	     [         R                  " U[         R                  S9nSnSnSn[         R                  R	                  [         R                  R                  5       5      nUR                  U-  n[        [        U5      n	X”-   S-
  U-  n
[        X§R                  U-  5      n
U	S-
  XJ-  U-  -  S-   U-  $ )Né   r7   é   é   )r   Úscalar_tensorr;   ÚcudaÚget_device_propertiesÚcurrent_deviceÚmax_threads_per_multi_processorr   ÚintÚminÚmulti_processor_count)r5   Únumel_scalarÚdim_sizeÚnumelÚ
block_sizeÚunrollÚcurand4_engine_callsÚdevice_propertyÚblocks_per_smÚnumÚ	grid_sizes              r   Úphilox_rand_offsetrS   9   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                  ó¦  • Sn SnS[         R                  S[         R                  S[         R                  S[        [        S4   S -  S[
        S	[        4S
 jnS[         R                  S[         R                  S[         R                  S[        [        S4   S -  S[
        S	[        4S jn[        U UUUS[         R                  R                  4S9  g )NÚphilox_randz{(SymInt[] size, Tensor seed, Tensor offset, int[]? stride, Device? device=None, ScalarType? dtype=None) -> (Tensor, Tensor)r5   ÚseedÚoffsetÚstride.r   r8   c                 ó€   • Ub  [        SU 35      e[        U 5      n[        R                  " XXTS9n[	        U 5      nXb4$ )Nústride must be None, got )r5   Ústridesr8   r   )ÚAssertionErrorr	   r   Ú
TensorMetar<   )r5   rV   rW   rX   r   r8   Úrandom_valuess          r   Ú_philox_rand_metaÚ/register_philox_rand.<locals>._philox_rand_metaS   sQ   € ð ÑÜ Ð#<¸V¸HÐ!EÓFÐFÜ,¨UÓ3ˆÜ×)Ò)Ø¨uñ
ˆô )¨Ó/ˆØÐ&Ð&r   c                 óh  • Ub  [        SU 35      eUR                  S:X  a  / nOU/nUR                  S:w  a  [        U5      e[        R                  R                  U5         [        R                  " X5        [        R                  " XUS9nS S S 5        W[        U 5      4$ ! , (       d  f       N= f)NrZ   ÚcpurB   )r   r8   )
r\   r   r   r   ÚrandomÚfork_rngr   Úset_torch_state_tensorÚrandrS   )r5   rV   rW   rX   r   r8   Údevicesr^   s           r   Ú_philox_randÚ*register_philox_rand.<locals>._philox_rande   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   Á",B#Â#
B1z$Philox based stateless rand operator)r,   r   r*   r-   r.   r/   )
r   ÚSizeÚTensorÚtuplerF   r   r   r4   ÚTagÚnondeterministic_seeded)r,   r   r_   rh   s       r   Úregister_philox_randro   O   sä   € Ø€Dð K€Fð'Ü�z‰zð'ä�l‰lð'ô —‘ð'ô ”c˜3�h‘ $Ñ&ð	'ô
 ð'ô ô'ð$8Ü�z‰zð8ä�l‰lð8ô —‘ð8ô ”c˜3�h‘ $Ñ&ð	8ô
 ð8ô ô8ô2 ØØØØ#Ø2Ü�i‰i×/Ñ/Ð1ór   c                 ó  • UR                  S5      (       aH  UR                  S5      n[        U[        5      (       a  [        R                  " U5      nUR
                  $ U  Vs1 s H:  n[        U[        R                  5      (       d  M$  UR                  R
                  iM<     nn[        S U 5       5      (       a  g[        S U 5       5      (       a  g[        S U 5       5      (       a  g[        S U 5       5      (       a  g	g s  snf )
Nr   c              3   ó*   #   • U  H	  oS :H  v •  M     g7f)rB   Nr   ©Ú.0Údevs     r   Ú	<genexpr>Úget_device.<locals>.<genexpr>�   s   é € Ð
,¢G˜S�&Ž=¢Gùó   ‚rB   c              3   ó*   #   • U  H	  oS :H  v •  M     g7f)ÚxpuNr   rr   s     r   ru   rv   ’   ó   é € Ð-¢W˜c�EŽ\¢Wùrw   ry   c              3   ó*   #   • U  H	  oS :H  v •  M     g7f)ÚhpuNr   rr   s     r   ru   rv   ”   rz   rw   r|   c              3   ó*   #   • U  H	  oS :H  v •  M     g7f)rb   Nr   rr   s     r   ru   rv   –   rz   rw   rb   )ÚgetÚ
isinstanceÚstrr   r   r   rk   Úany)ÚargsÚkwargsr   Úargrg   s        r   Ú
get_devicer…   ˆ   sÈ   € Ø‡z�z�(×ÑØ—‘˜HÓ%ˆÜ�fœc×"Ñ"Ü—\’\ &Ó)ˆFØ�{‰{Ðá*.ÓPª$ 3´*¸SÄ%Ç,Á,×2O‹ˆs�z‰z�Œ©$€GÐPÜ
Ñ
,¡GÓ
,×,Ñ,ØÜ	Ñ-¡WÓ-×	-Ñ	-ØÜ	Ñ-¡WÓ-×	-Ñ	-ØÜ	Ñ-¡WÓ-×	-Ñ	-ØØùò Qs   Á##DÂ
Dc                  ó�  ^^^^^^•  " S S[         5      n U " 5       mTR                  [        R                  5      " [	        TSS95        TR                  [        R
                  5      S 5       mTR                  [        R                  5      S 5       mTR                  [        R                  5      S 5       mTR                  [        R                  5      S 5       mTR                  [        R                  5      UUUU4S	 j5       mTR                  [        5      U4S
 j5       nTR                  [        5      UU4S j5       nT$ )Nc                   ó4   ^ • \ rS rSrU 4S jrU 4S jrSrU =r$ )Ú>register_run_and_save_rng_state_op.<locals>.RunAndSaveRngStateéœ   c                 ó"   >• [         TU ]  SSS9  g )NÚrun_and_save_rng_stateT©Ú	cacheable©ÚsuperÚ__init__©ÚselfÚ	__class__s    €r   r�   ÚGregister_run_and_save_rng_state_op.<locals>.RunAndSaveRngState.__init__�   s   ø€ Ü‰GÑÐ5ÀÐÒFr   c                 ó,   >• [         TU ]  " U/UQ70 UD6$ ©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__Ú__classcell__©r“   s   @r   ÚRunAndSaveRngStaterˆ   œ   s   ø† õ	G÷	9ó 	9r   r£   T©Údeferred_errorc                 óN   • [         R                  R                  5       U " U0 UD64$ r–   )r   rB   Ú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                 ó<   • [         R                  " 5       U " U0 UD64$ 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                 óŽ   • [        [        S5      (       a&  [        R                  R                  5       U " U0 UD64$ [	        S5      e©Nr|   z2functionalize 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   • [         R                  R                  5       U " U0 UD64$ r–   )r   ry   r§   r¨   s      r   Úimpl_xpuÚ4register_run_and_save_rng_state_op.<locals>.impl_xpu¸   s$   € ä�y‰y×&Ñ&Ó(©"¨dÐ*=°fÑ*=Ð=Ð=r   c                 ón   >• TTTT	S.n[        X5      nXC;  a  [        SU 35      eX4   nU" U /UQ70 UD6$ ©N)rB   rb   r|   ry   zBackend not supported for ©r…   r\   )
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¼   sZ   ø€ ð ØØØñ	
ˆô ˜DÓ)ˆØÓ!Ü Ð#=¸f¸XÐ!FÓGÐGØÑˆÙ�BÐ(˜Ò( Ñ(Ð(r   c                 óV   >• U    T" U/UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr–   r   )Úmoder™   r‚   rƒ   r»   s       €r   Úimpl_fake_tensor_modeÚAregister_run_and_save_rng_state_op.<locals>.impl_fake_tensor_modeÊ   s$   ø€ ò Ù& rÐ;¨DÒ;°FÑ;÷ �T�Tús   „š
(c                 ó4  >• T" U/UQ70 UD6n[         R                  " U R                  R                  U/UQ75      n[         R                  " U R                  R                  U5      nU R                  R	                  ST	XV5      n[        XGS U R                  S9$ ©NÚcall_function©ÚconstantÚtracer)ÚpytreeÚtree_maprÆ   Úunwrap_proxyÚcreate_proxyr   )
r¾   r™   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×$=Ñ$=Ó>÷)ó ?ð)ð ×#Ñ#¤NÓ3ô<ó 4ð<ð
 ×#Ñ#Ô$:Ó;õTó <ðTð "Ð!r   c                  ó°  ^^^^^	•  " S S[         5      n U " 5       m	T	R                  [        R                  5      " [	        T	SS95        T	R                  [        R
                  5      S 5       mT	R                  [        R                  5      S 5       mT	R                  [        R                  5      S 5       mT	R                  [        R                  5      S 5       mT	R                  [        5      U	4S	 j5       nT	R                  [        R                  5      UUUU4S
 j5       nT	R                  [        5      S 5       nT	R                  U	4S j5       nT	$ )Nc                   ó4   ^ • \ rS rSrU 4S jrU 4S jrSrU =r$ )Ú7register_run_with_rng_state_op.<locals>.RunWithRngStateéÞ   c                 ó"   >• [         TU ]  SSS9  g )NÚrun_with_rng_stateTrŒ   rŽ   r‘   s    €r   r�   Ú@register_run_with_rng_state_op.<locals>.RunWithRngState.__init__ß   s   ø€ Ü‰GÑÐ1¸TÐÒBr   c                 ó,   >• [         TU ]  " X/UQ70 UD6$ 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                 óê   • [         R                  R                  5       n[         R                  R                  U R	                  5       5        U" U0 UD6n[         R                  R                  U5        U$ r–   )r   rB   r§   Úset_rng_staterb   ©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                 ó˜   • [         R                  " 5       n[         R                  " U 5        U" U0 UD6n[         R                  " U5        U$ r–   )r   r§   rå   ræ   s         r   r¬   Ú0register_run_with_rng_state_op.<locals>.impl_cpuô   s@   € ä×+Ò+Ó-ˆÜ×Ò˜IÔ&Ù�$Ð!˜&Ñ!ˆÜ×Ò˜MÔ*Øˆ
r   c                 ó  • [        [        S5      (       af  [        R                  R                  5       n[        R                  R	                  U 5        U" U0 UD6n[        R                  R	                  U5        U$ [        S5      e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                 óÎ   • [         R                  R                  5       n[         R                  R                  U 5        U" U0 UD6n[         R                  R                  U5        U$ r–   )r   ry   r§   rå   ræ   s         r   r´   Ú0register_run_with_rng_state_op.<locals>.impl_xpu  sL   € äŸ	™	×/Ñ/Ó1ˆÜ�	‰	×Ñ 	Ô*Ù�$Ð!˜&Ñ!ˆÜ�	‰	×Ñ Ô.Øˆ
r   c                 ó~  >• [        5          T	" X/UQ70 UD6nS S S 5        [        R                  " U R                  R                  X/UQ75      n[        R                  " U R                  R                  U5      nU R                  R                  ST	Xg5      n[        WUS U R                  S9$ ! , (       d  f       N›= f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   ŒB.Â.
B<c                 ón   >• TTT	T
S.n[        X#5      nXT;  a  [        SU 35      eXE   nU" X/UQ70 UD6$ 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  sZ   ø€ ð ØØØñ	
ˆô ˜DÓ)ˆØÓ!Ü Ð#=¸f¸XÐ!FÓGÐGØÑˆÙ�IÐ3 DÒ3¨FÑ3Ð3r   c                 óL   • U    U" U0 UD6sS S S 5        $ ! , (       d  f       g = fr–   r   )r¾   rá   r™   r‚   rƒ   s        r   r¿   Ú=register_run_with_rng_state_op.<locals>.impl_fake_tensor_mode)  s   € ò Ù�tÐ&˜vÑ&÷ �T�Túó   ƒ•
#c                 óú   >• U R                  U5      nU R                  U5      nU R                  U5      nU R                  5          T	" XR/UQ70 UD6nU R                  U5      sS S S 5        $ ! , (       d  f       g = f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_functional0  sz   ø€ à!×0Ñ0°Ó;ÐØ×+Ñ+¨DÓ1ˆØ×-Ñ-¨fÓ5Ðà×#Ñ#Õ%Ù$Ø#ðØ*8òØ<LñˆCð ×#Ñ# CÓ(÷	 &×%×%ús   ÁA,Á,
A:)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  Ý   sY  ü€ ô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ð ×Ñ¤Ó/ñ'ó 0ð'ð ×-Ñ-ô	)ó .ð	)ð Ðr   c                  óî  ^^•  " S S[         5      n U " 5       mTR                  [        R                  5      " [	        TSS95        TR                  [        R
                  5      S S.S j5       mTR                  [        R                  5      S S.U4S jj5       nTR                  [        5      S S.S j5       nTR                  [        5      S S.U4S	 jj5       nTR                  S S.U4S
 jj5       nT$ )Nc                   ó<   ^ • \ rS rSrU 4S jrSS.U 4S jjrSrU =r$ )ÚJregister_graphsafe_run_with_rng_state_op.<locals>.GraphSafeRunWithRngStateiD  c                 ó$   >• [         TU ]  S5        g )NÚgraphsafe_run_with_rng_staterŽ   r‘   s    €r   r�   ÚSregister_graphsafe_run_with_rng_state_op.<locals>.GraphSafeRunWithRngState.__init__E  s   ø€ Ü‰GÑÐ;Õ<r   N©rá   c                ó0   >• [         TU ]  " U/UQ7SU0UD6$ ©Nrá   r—   )r’   r™   rá   r‚   rƒ   r“   s        €r   r˜   ÚSregister_graphsafe_run_with_rng_state_op.<locals>.GraphSafeRunWithRngState.__call__H  s"   ø€ ä‘7Ò# BÐM¨ÒM¸ÐMÀfÑMÐMr   r   r›   r¢   s   @r   ÚGraphSafeRunWithRngStater  D  s   ø† õ	=ð 15÷ 	Nö 	Nr   r  Tr¤   r
  c                óà   • UR                   R                  n[        R                  R                  U   nUR                  5       nUR                  U5        U " U0 UD6nUR                  U5        U$ r–   )r   Úindexr   rB   Údefault_generatorsÚgraphsafe_get_stateÚgraphsafe_set_state)r™   rá   r‚   rƒ   Ú
device_idxÚ	generatorrç   rË   s           r   r©   Ú;register_graphsafe_run_with_rng_state_op.<locals>.impl_cudaR  sg   € ð ×%Ñ%×+Ñ+ˆ
Ü—J‘J×1Ñ1°*Ñ=ˆ	Ø!×5Ñ5Ó7ˆà×%Ñ% iÔ0Ù�$Ð!˜&Ñ!ˆØ×%Ñ% mÔ4Øˆ
r   c                ó^   >• [        X#5      nUS:w  a  [        SU 35      eT" U /UQ7SU0UD6$ )NrB   z6GraphSafe RNG operations only supported for CUDA, got rá   r¸   )r™   rá   r‚   rƒ   r   r©   s        €r   r»   ÚEregister_graphsafe_run_with_rng_state_op.<locals>.impl_backend_select^  sH   ø€ ä˜DÓ)ˆØ�VÓÜ ØHÈÈÐQóð ñ ˜ÐB˜dÒB¨iÐB¸6ÑBÐBr   c                óL   • U    U" U0 UD6sS S S 5        $ ! , (       d  f       g = fr–   r   )r¾   r™   rá   r‚   rƒ   s        r   r¿   ÚGregister_graphsafe_run_with_rng_state_op.<locals>.impl_fake_tensor_modeg  s   € âÙ�tÐ&˜vÑ&÷ �T�Túrö   c                óŠ  >• [        5          T	" U/UQ7SU0UD6nS S S 5        [        R                  " U R                  R                  U/UQ75      n[        R                  " U R                  R                  SU0UE5      nU R                  R                  ST	Xg5      n[        WUS U R                  S9$ ! , (       d  f       NŸ= f)Nrá   rÃ   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_model  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   ŒB4Â4
Cc                ó  >• Ub  U R                  U5      OS nU R                  U5      nU R                  U5      nU R                  5          T	" U/UQ7SU0UD6nU R                  U5      sS S S 5        $ ! , (       d  f       g = fr  rø   )
rü   r™   rá   r‚   rƒ   rý   rþ   rÿ   rË   r  s
            €r   r   ÚAregister_graphsafe_run_with_rng_state_op.<locals>.impl_functionaly  s�   ø€ ð .7Ñ-BˆC×Ñ˜yÔ)Èð 	ð ×+Ñ+¨DÓ1ˆØ×-Ñ-¨fÓ5Ðà×#Ñ#Õ%Ù.ØðØ#òØ/BðØFVñˆCð ×#Ñ# CÓ(÷	 &×%×%ús   Á
A3Á3
B)
r   rÑ   r   rÒ   r   rÓ   r×   r
   r   r  )r  r»   r¿   rÏ   r   r  r©   s        @@r   Ú(register_graphsafe_run_with_rng_state_opr  C  s  ù€ ôNÔ#6ô Nñ $<Ó#=Ð à ×(Ñ(¬×)=Ñ)=Ô>Ü Ð!=ÈdÑSôð "×)Ñ)¬+×*:Ñ*:Ó;Ø'+ô 	ó <ð	ð "×)Ñ)¬+×*CÑ*CÓDØ15÷ Có EðCð "×)Ñ)¬.Ó9Ø9=ô 'ó :ð'ð "×)Ñ)Ô*@ÓAØ<@÷ 
Tó Bð
Tð "×7Ñ7Ø26÷ )ó 8ð)ð (Ð'r   c                  ó   • [        5         g r–   )ro   r   r   r   Úregister_rng_primsr!  �  s   € ÜÕr   r–   )(Útypingr   r   Útorch.utils._pytreeÚutilsÚ_pytreerÇ   r   Útorch._Cr   Útorch._higher_order_ops.utilsr   Ú
torch._opsr   Útorch._prims_commonr   r	   Útorch._subclasses.fake_tensorr
   Ú"torch.fx.experimental.proxy_tensorr   r   r   Útorch.typesr   r   r   r4   rj   r<   rS   ro   r…   rØ   r  r‹   rÞ   r  r  r!  r   r   r   Ú<module>r-     s¦   ðå ã ß $Ð $Ý Ý  Ý BÝ *ß OÝ 8÷ñ ÷
 (òô%ð.AØ�:‰:ôAðWØ�:‰:ôWò,6òrò&?"òD_ñD <Ó=Ð Ù3Ó5Ð òD(ñN  HÓIÐ ór   