§
    Ÿ²ÅjG.  ã                   ó   — d dl mZmZ d dlZd dlmc mZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZmZ d d
lmZmZ d„ Zdd„Zdej        fd„Zdej        fd„Zd„ Z d„ Z!d„ Z"d„ Z# e"¦   «         Z$ e#¦   «         Z%d„ Z&dS )é    )ÚOptionalÚTupleN)Ú_prims)ÚDispatchKey)Úautograd_not_implemented)ÚHigherOrderOperator)ÚCUDARngStateHelperÚmake_contiguous_strides_for)ÚFakeTensorMode)Údisable_proxy_modes_tracingÚProxyTorchDispatchModeÚtrack_tensor_tree)Ú_deviceÚ_dtypec           	      óR   — t          d| j        › d| j        › d| j        › d�¦  «        ‚)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    úGC:\Projects\Historical\venv\Lib\site-packages\torch/_prims/rng_prims.pyÚthrow_on_non_cudar      sQ   € Ý
ð	i¨V¬[ð 	ið 	iÈFÌKð 	ið 	iØFLÄkð	ið 	ið 	iñô ð ó    c                 óf  — t           j                             d| z   |d|¬¦  «        }|                     |¦  «         t	          t           j        j        j        | ¦  «        }|j        }|r||_	        ||fD ]<}	||	_
        t           j        j        j        |	_        | |z   |	_        ||	_        ||	_        Œ=d S )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_primr5      sÁ   € Ý”-×)Ò)Ø�tÑ˜Y°RÀð *ñ ô €Kð ×Ò˜iÑ(Ô(Ð(å�%œ*œ.Ô1°4Ñ8Ô8€KØÔ€DØð ØˆŒ
à˜4Ð ð %ð %ˆØˆŒ	ÝÔ+Ô7Ô;ˆŒà˜&‘=ˆŒØˆŒØ$ˆÔÐð%ð %r   Úshapec                 óf   — t          j        t          j        dt          j        ¬¦  «        ¦  «        S )Nr   ©Údtype)r   Ú
TensorLiker   ÚtensorÚint64)r6   s    r   Úphilox_rand_offset_metar=   2   s&   € õ Ô�Uœ\¨!µ5´;Ð?Ñ?Ô?Ñ@Ô@Ð@r   c                 ób  — d}| D ]}||z  }Œt          j        |t           j        ¬¦  «        }d}d}d}t           j                             t           j                             ¦   «         ¦  «        }|j        |z  }||z   dz
  |z  }	t          |	|j        |z  ¦  «        }	|dz
  ||	z  |z  z  dz   |z  }
|
S )Né   r8   é   é   )	r   Úscalar_tensorr<   ÚcudaÚget_device_propertiesÚcurrent_deviceÚmax_threads_per_multi_processorÚminÚmulti_processor_count)r6   Únumel_scalarÚdim_sizeÚnumelÚ
block_sizeÚunrollÚcurand4_engine_callsÚdevice_propertyÚblocks_per_smÚ	grid_sizeÚoffsets              r   Úphilox_rand_offsetrS   8   sÒ   € ð €LØð !ð !ˆØ˜Ñ ˆˆÝÔ µE´KÐ@Ñ@Ô@€Eà€JØ€FØÐÝ”j×6Ò6µu´z×7PÒ7PÑ7RÔ7RÑSÔS€OØ#ÔCÀzÑQ€MØ˜Ñ# aÑ'¨JÑ6€IÝ�I˜ÔDÀ}ÑTÑUÔU€Ià	�‰˜
 YÑ.°Ñ7Ñ8¸1Ñ<Øñ€Fð €Mr   c                  ó¬  — d} d}dt           j        dt           j        dt           j        dt          t          t
          df                  dt          d	t          fd
„}dt           j        dt           j        dt           j        dt          t          t
          df                  dt          d	t          fd„}t          | |||dt           j	        j
        f¬¦  «         d S )NÚphilox_randz{(SymInt[] size, Tensor seed, Tensor offset, int[]? stride, Device? device=None, ScalarType? dtype=None) -> (Tensor, Tensor)r6   ÚseedrR   Ústride.r   r9   c                 ó~   — |�J ‚t          | ¦  «        }t          j        | |||¬¦  «        }t          | ¦  «        }||fS )N)r6   Ústridesr9   r   )r
   r   Ú
TensorMetar=   )r6   rV   rR   rW   r   r9   Úrandom_valuess          r   Ú_philox_rand_metaz/register_philox_rand.<locals>._philox_rand_metaT   sT   € ð ˆ~ˆ~ˆ~Ý,¨UÑ3Ô3ˆÝÔ)Ø ¨u¸Vð
ñ 
ô 
ˆõ )¨Ñ/Ô/ˆØ˜vÐ&Ð&r   c                 óH  — |�J ‚|j         dk    rg }n|g}|j         dk    rt          |¦  «        ‚t          j                             |¦  «        5  t          j        ||¦  «         t          j        | ||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |t          | ¦  «        fS )NÚcpurC   )r   r9   )	r   r   r   ÚrandomÚfork_rngr	   Úset_torch_state_tensorÚrandrS   )r6   rV   rR   rW   r   r9   Údevicesr[   s           r   Ú_philox_randz*register_philox_rand.<locals>._philox_rande   sþ   € ð ˆ~ˆ~ˆ~ØŒ;˜%ÒÐØˆGˆGà�hˆGàŒ;˜&Ò Ð Ý# FÑ+Ô+Ð+åŒ\×"Ò" 7Ñ+Ô+ð 	Jð 	JÝÔ5°d¸FÑCÔCÐCÝ!œJ u°VÀ5ÐIÑIÔIˆMð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jð Õ0°Ñ7Ô7Ð7Ð7s   Á-BÂBÂBz$Philox based stateless rand operator)r-   r   r+   r.   r/   r0   )r   ÚSizeÚTensorr   r   Úintr   r   r5   ÚTagÚnondeterministic_seeded)r-   r   r\   rd   s       r   Úregister_philox_randrj   P   s
  € Ø€Dð K€Fð'ÝŒzð'åŒlð'õ ”ð'õ ��s C˜xœÔ)ð	'õ
 ð'õ ð'ð 'ð 'ð 'ð"8ÝŒzð8åŒlð8õ ”ð8õ ��s C˜xœÔ)ð	8õ
 ð8õ ð8ð 8ð 8ð 8õ0 ØØØØ#Ø2ÝŒiÔ/Ð1ðñ ô ð ð ð r   c                 óª  — |                      d¦  «        rE|                      d¦  «        }t          |t          ¦  «        rt          j        |¦  «        }|j        S d„ | D ¦   «         }t          d„ |D ¦   «         ¦  «        rdS t          d„ |D ¦   «         ¦  «        rdS t          d„ |D ¦   «         ¦  «        rdS t          d	„ |D ¦   «         ¦  «        rd
S d S )Nr   c                 óZ   — h | ](}t          |t          j        ¦  «        ¯|j        j        ’Œ)S r   )Ú
isinstancer   rf   r   r   )Ú.0Úargs     r   ú	<setcomp>zget_device.<locals>.<setcomp>Ž   s-   € ÐPÐPÐP 3µ*¸SÅ%Ä,Ñ2OÔ2OÐPˆsŒzŒÐPÐPÐPr   c              3   ó"   K  — | ]
}|d k    V — ŒdS )rC   Nr   ©rn   Údevs     r   ú	<genexpr>zget_device.<locals>.<genexpr>�   s&   è è € Ð
,Ð
,˜Sˆ3�&Š=Ð
,Ð
,Ð
,Ð
,Ð
,Ð
,r   rC   c              3   ó"   K  — | ]
}|d k    V — ŒdS )ÚxpuNr   rr   s     r   rt   zget_device.<locals>.<genexpr>‘   ó&   è è € Ð-Ð-˜cˆS�EŠ\Ð-Ð-Ð-Ð-Ð-Ð-r   rv   c              3   ó"   K  — | ]
}|d k    V — ŒdS )ÚhpuNr   rr   s     r   rt   zget_device.<locals>.<genexpr>“   rw   r   ry   c              3   ó"   K  — | ]
}|d k    V — ŒdS )r^   Nr   rr   s     r   rt   zget_device.<locals>.<genexpr>•   rw   r   r^   )Úgetrm   Ústrr   r   r   Úany)ÚargsÚkwargsr   rc   s       r   Ú
get_devicer€   ‡   sø   € Ø‡z‚z�(ÑÔð Ø—’˜HÑ%Ô%ˆÝ�f�cÑ"Ô"ð 	*Ý”\ &Ñ)Ô)ˆFØŒ{ÐàPÐP¨$ÐPÑPÔP€GÝ
Ð
,Ð
, GÐ
,Ñ
,Ô
,Ñ,Ô,ð ØˆvÝ	Ð-Ð- WÐ-Ñ-Ô-Ñ	-Ô	-ð ØˆuÝ	Ð-Ð- WÐ-Ñ-Ô-Ñ	-Ô	-ð ØˆuÝ	Ð-Ð- WÐ-Ñ-Ô-Ñ	-Ô	-ð ØˆuØˆ4r   c                  óê  ‡‡‡‡‡‡—  G d„ dt           ¦  «        }  | ¦   «         Š ‰                     t          j        ¦  «        t	          ‰d¬¦  «        ¦  «         ‰                     t          j        ¦  «        d„ ¦   «         Š‰                     t          j        ¦  «        d„ ¦   «         Š‰                     t          j        ¦  «        d„ ¦   «         Š‰                     t          j        ¦  «        d„ ¦   «         Š‰                     t          j	        ¦  «        ˆˆˆˆfd	„¦   «         Š‰                     t          ¦  «        ˆfd
„¦   «         }‰                     t          ¦  «        ˆˆfd„¦   «         }‰S )Nc                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ú>register_run_and_save_rng_state_op.<locals>.RunAndSaveRngStatec                 óJ   •— t          ¦   «                              d¦  «         d S )NÚrun_and_save_rng_state©ÚsuperÚ__init__©ÚselfÚ	__class__s    €r   rˆ   zGregister_run_and_save_rng_state_op.<locals>.RunAndSaveRngState.__init__œ   s"   ø€ Ý‰GŒG×ÒÐ5Ñ6Ô6Ð6Ð6Ð6r   c                 ó>   •—  t          ¦   «         j        |g|¢R i |¤ŽS ©N©r‡   Ú__call__)rŠ   Úopr~   r   r‹   s       €r   r�   zGregister_run_and_save_rng_state_op.<locals>.RunAndSaveRngState.__call__Ÿ   s*   ø€ Ø#•5‘7”7Ô# BÐ8¨Ð8Ð8Ð8°Ð8Ð8Ð8r   ©Ú__name__Ú
__module__Ú__qualname__rˆ   r�   Ú__classcell__©r‹   s   @r   ÚRunAndSaveRngStaterƒ   ›   sQ   ø€ € € € € ð	7ð 	7ð 	7ð 	7ð 	7ð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9r   r—   T©Údeferred_errorc                 óN   — t           j                             ¦   «          | |i |¤ŽfS r�   )r   rC   Úget_rng_state©r�   r~   r   s      r   Ú	impl_cudaz5register_run_and_save_rng_state_op.<locals>.impl_cuda¨   s*   € åŒz×'Ò'Ñ)Ô)¨2¨2¨tÐ+>°vÐ+>Ð+>Ð>Ð>r   c                 ó8   — t          j        ¦   «          | |i |¤ŽfS r�   )r   r›   rœ   s      r   Úimpl_cpuz4register_run_and_save_rng_state_op.<locals>.impl_cpu¬   s%   € åÔ"Ñ$Ô$ b b¨$Ð&9°&Ð&9Ð&9Ð9Ð9r   c                 ó–   — t          t          d¦  «        r&t          j                             ¦   «          | |i |¤ŽfS t	          d¦  «        ‚©Nry   z2functionalize a hpu RNG operator is not supported.)Úhasattrr   ry   r›   r   rœ   s      r   Úimpl_hpuz4register_run_and_save_rng_state_op.<locals>.impl_hpu°   sL   € å•5˜%Ñ Ô ð 	BÝ”9×*Ò*Ñ,Ô,¨b¨b°$Ð.A¸&Ð.AÐ.AÐAÐAÝÐOÑPÔPÐPr   c                 óN   — t           j                             ¦   «          | |i |¤ŽfS r�   )r   rv   r›   rœ   s      r   Úimpl_xpuz4register_run_and_save_rng_state_op.<locals>.impl_xpu¶   s*   € åŒy×&Ò&Ñ(Ô(¨"¨"¨dÐ*=°fÐ*=Ð*=Ð=Ð=r   c                 ó|   •— ‰‰‰‰	dœ}t          ||¦  «        }||v sJ d|› �¦   «         ‚||         } || g|¢R i |¤ŽS ©N)rC   r^   ry   rv   zBackend not supported for ©r€   )
r�   r~   r   Úimpl_mapr   ÚimplrŸ   r�   r£   r¥   s
         €€€€r   Úimpl_backend_selectz?register_run_and_save_rng_state_op.<locals>.impl_backend_selectº   sz   ø€ ð ØØØð	
ð 
ˆõ ˜D &Ñ)Ô)ˆØ˜Ð!Ð!Ð!Ð#HÀÐ#HÐ#HÑ!Ô!Ð!Ø˜ÔˆØˆt�BÐ(˜Ð(Ð(Ð( Ð(Ð(Ð(r   c                 óT   •— | 5   ‰|g|¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S r�   r   )Úmoder�   r~   r   r«   s       €r   Úimpl_fake_tensor_modezAregister_run_and_save_rng_state_op.<locals>.impl_fake_tensor_modeÇ   s�   ø€ ð ð 	<ð 	<Ø&Ð& rÐ;¨DÐ;Ð;Ð;°FÐ;Ð;ð	<ð 	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   „�!¤!c                 ó
  •—  ‰|g|¢R i |¤Ž}t          j        | j        j        |g|¢R ¦  «        }t          j        | j        j        |¦  «        }| j                             d‰	||¦  «        }t          ||d | j        ¬¦  «        S ©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_modezDregister_run_and_save_rng_state_op.<locals>.impl_proxy_dispatch_modeÍ   s“   ø€ à!Ð! "Ð6 tÐ6Ð6Ð6¨vÐ6Ð6ˆÝ”_ T¤[Ô%=À¸{ÀT¸{¸{ÑKÔKˆ
Ý” t¤{Ô'?ÀÑHÔHˆØ”K×,Ò,ØÐ3°ZÀñ
ô 
ˆ	õ !  i¸$ÀtÄ{ÐSÑSÔ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ð 9ð 9ð 9ð 9Õ0ñ 9ô 9ð 9ð 0Ð/Ñ1Ô1Ðà8Ð×"Ò"¥;Ô#7Ñ8Ô8Ý Ð!7ÈÐMÑMÔMñô ð ð ×#Ò#¥KÔ$4Ñ5Ô5ð?ð ?ñ 6Ô5ð?ð ×#Ò#¥K¤OÑ4Ô4ð:ð :ñ 5Ô4ð:ð ×#Ò#¥K¤OÑ4Ô4ðQð Qñ 5Ô4ðQð
 ×#Ò#¥K¤OÑ4Ô4ð>ð >ñ 5Ô4ð>ð ×#Ò#¥KÔ$=Ñ>Ô>ð
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 
)ñ ?Ô>ð
)ð ×#Ò#¥NÑ3Ô3ð<ð <ð <ð <ñ 4Ô3ð<ð
 ×#Ò#Õ$:Ñ;Ô;ðTð Tð Tð Tð Tñ <Ô;ðTð "Ð!r   c                  ó  ‡‡‡‡‡	—  G d„ dt           ¦  «        }  | ¦   «         Š	 ‰	                     t          j        ¦  «        t	          ‰	d¬¦  «        ¦  «         ‰	                     t          j        ¦  «        d„ ¦   «         Š‰	                     t          j        ¦  «        d„ ¦   «         Š‰	                     t          j        ¦  «        d„ ¦   «         Š‰	                     t          j        ¦  «        d„ ¦   «         Š‰	                     t          ¦  «        ˆ	fd	„¦   «         }‰	                     t          j
        ¦  «        ˆˆˆˆfd
„¦   «         }‰	                     t          ¦  «        d„ ¦   «         }‰	j        ˆ	fd„¦   «         }‰	S )Nc                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ú7register_run_with_rng_state_op.<locals>.RunWithRngStatec                 óJ   •— t          ¦   «                              d¦  «         d S )NÚrun_with_rng_stater†   r‰   s    €r   rˆ   z@register_run_with_rng_state_op.<locals>.RunWithRngState.__init__Ü   s"   ø€ Ý‰GŒG×ÒÐ1Ñ2Ô2Ð2Ð2Ð2r   c                 ó@   •—  t          ¦   «         j        ||g|¢R i |¤ŽS r�   rŽ   )rŠ   Ú	rng_stater�   r~   r   r‹   s        €r   r�   z@register_run_with_rng_state_op.<locals>.RunWithRngState.__call__ß   s,   ø€ Ø#•5‘7”7Ô# I¨rÐC°DÐCÐCÐC¸FÐCÐCÐCr   r‘   r–   s   @r   ÚRunWithRngStaterÇ   Û   sZ   ø€ € € € € ð	3ð 	3ð 	3ð 	3ð 	3ð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dr   rÌ   Tr˜   c                 óò   — t           j                             ¦   «         }t           j                             |                      ¦   «         ¦  «          ||i |¤Ž}t           j                             |¦  «         |S r�   )r   rC   r›   Úset_rng_stater^   ©rË   r�   r~   r   Úcurrent_stater¸   s         r   r�   z1register_run_with_rng_state_op.<locals>.impl_cudaè   sb   € åœ
×0Ò0Ñ2Ô2ˆÝŒ
× Ò  §¢¡¤Ñ1Ô1Ð1Øˆb�$Ð!˜&Ð!Ð!ˆÝŒ
× Ò  Ñ/Ô/Ð/Øˆ
r   c                 óŒ   — t          j        ¦   «         }t          j        | ¦  «          ||i |¤Ž}t          j        |¦  «         |S r�   )r   r›   rÎ   rÏ   s         r   rŸ   z0register_run_with_rng_state_op.<locals>.impl_cpuð   sK   € åÔ+Ñ-Ô-ˆÝÔ˜IÑ&Ô&Ð&Øˆb�$Ð!˜&Ð!Ð!ˆÝÔ˜MÑ*Ô*Ð*Øˆ
r   c                 ó  — t          t          d¦  «        rft          j                             ¦   «         }t          j                             | ¦  «          ||i |¤Ž}t          j                             |¦  «         |S t          d¦  «        ‚r¡   )r¢   r   ry   r›   rÎ   r   rÏ   s         r   r£   z0register_run_with_rng_state_op.<locals>.impl_hpuø   s{   € å•5˜%Ñ Ô ð 	Ý!œI×3Ò3Ñ5Ô5ˆMÝŒI×#Ò# IÑ.Ô.Ð.Ø�"�dÐ%˜fÐ%Ð%ˆCÝŒI×#Ò# MÑ2Ô2Ð2ØˆJÝÐOÑPÔPÐPr   c                 óÎ   — t           j                             ¦   «         }t           j                             | ¦  «          ||i |¤Ž}t           j                             |¦  «         |S r�   )r   rv   r›   rÎ   rÏ   s         r   r¥   z0register_run_with_rng_state_op.<locals>.impl_xpu  sZ   € åœ	×/Ò/Ñ1Ô1ˆÝŒ	×Ò 	Ñ*Ô*Ð*Øˆb�$Ð!˜&Ð!Ð!ˆÝŒ	×Ò Ñ.Ô.Ð.Øˆ
r   c                 óZ  •— t          ¦   «         5   ‰	||g|¢R i |¤Ž}d d d ¦  «         n# 1 swxY w Y   t          j        | j        j        ||g|¢R ¦  «        }t          j        | j        j        |¦  «        }| j                             d‰	||¦  «        }t          ||d | j        ¬¦  «        S r°   )r   r´   rµ   r³   r¶   r·   r   )
r­   rË   r�   r~   r   r¸   r¹   rº   r»   rÉ   s
            €r   r¼   z@register_run_with_rng_state_op.<locals>.impl_proxy_dispatch_mode
  s  ø€ õ )Ñ*Ô*ð 	Eð 	EØ$Ð$ Y°ÐD°TÐDÐDÐD¸VÐDÐDˆCð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eå”_ T¤[Ô%=À	È2Ð?UÐPTÐ?UÐ?UÑVÔVˆ
Ý” t¤{Ô'?ÀÑHÔHˆØ”K×,Ò,ØÐ/°¸\ñ
ô 
ˆ	õ !  i¸$ÀtÄ{ÐSÑSÔSÐSs   �*ª.±.c                 ó~   •— ‰‰‰	‰
dœ}t          ||¦  «        }||v sJ d|› �¦   «         ‚||         } || |g|¢R i |¤ŽS r§   r¨   )rË   r�   r~   r   r©   r   rª   rŸ   r�   r£   r¥   s          €€€€r   r«   z;register_run_with_rng_state_op.<locals>.impl_backend_select  s|   ø€ ð ØØØð	
ð 
ˆõ ˜D &Ñ)Ô)ˆØ˜Ð!Ð!Ð!Ð#HÀÐ#HÐ#HÑ!Ô!Ð!Ø˜ÔˆØˆt�I˜rÐ3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3r   c                 óJ   — | 5   ||i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S r�   r   )r­   rË   r�   r~   r   s        r   r®   z=register_run_with_rng_state_op.<locals>.impl_fake_tensor_mode$  s€   € ð ð 	'ð 	'Ø�2�tÐ&˜vÐ&Ð&ð	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ƒ˜Ÿc                 ó"  •— |                       |¦  «        }|                       |¦  «        }|                       |¦  «        }|                      ¦   «         5   ‰	||g|¢R i |¤Ž}|                      |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r�   )Úunwrap_tensorsÚredispatch_to_nextÚwrap_tensors)
ÚctxrË   r�   r~   r   Úunwrapped_rng_stateÚunwrapped_argsÚunwrapped_kwargsr¸   rÉ   s
            €r   Úimpl_functionalz7register_run_with_rng_state_op.<locals>.impl_functional+  sø   ø€ à!×0Ò0°Ñ;Ô;ÐØ×+Ò+¨DÑ1Ô1ˆØ×-Ò-¨fÑ5Ô5Ðà×#Ò#Ñ%Ô%ð 	)ð 	)Ø$Ð$Ø# RðØ*8ðð ð Ø<Lðð ˆCð ×#Ò# CÑ(Ô(ð		)ð 	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   Á"BÂBÂ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á   Ú   s  øøøøø€ ðDð Dð Dð Dð DÕ-ñ Dô Dð Dð )˜Ñ*Ô*Ðà4Ð×Ò�{Ô3Ñ4Ô4Ý Ð!3ÀDÐIÑIÔIñô ð ð ×Ò¥Ô 0Ñ1Ô1ðð ñ 2Ô1ðð ×Ò¥¤Ñ0Ô0ðð ñ 1Ô0ðð ×Ò¥¤Ñ0Ô0ðQð Qñ 1Ô0ðQð ×Ò¥¤Ñ0Ô0ðð ñ 1Ô0ðð ×ÒÕ 6Ñ7Ô7ð
Tð 
Tð 
Tð 
Tñ 8Ô7ð
Tð ×Ò¥Ô 9Ñ:Ô:ð
4ð 
4ð 
4ð 
4ð 
4ð 
4ð 
4ñ ;Ô:ð
4ð ×Ò¥Ñ/Ô/ð'ð 'ñ 0Ô/ð'ð Ô-ð	)ð 	)ð 	)ð 	)ñ .Ô-ð	)ð Ðr   c                  ó"   — t          ¦   «          d S r�   )rj   r   r   r   Úregister_rng_primsrã   >  s   € ÝÑÔÐÐÐr   r�   )'Útypingr   r   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   r5   re   r=   rS   rj   r€   rÄ   rá   r…   rÉ   rã   r   r   r   ú<module>rï      sÞ  ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø BÐ BÐ BÐ BÐ BÐ BØ *Ð *Ð *Ð *Ð *Ð *Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð
 (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð%ð %ð %ð %ð,AØŒ:ðAð Að Að AðØŒ:ðð ð ð ð04ð 4ð 4ðnð ð ð&="ð ="ð ="ð@]ð ]ð ]ð@ <Ð;Ñ=Ô=Ð Ø3Ð3Ñ5Ô5Ð ðð ð ð ð r   