
    
9j	                     6   S SK r S SKJrJr  S SKrS SKrSSKJr  SSK	J
r
  SSKJrJr  SSKJrJrJrJrJrJrJrJr  \" 5       (       a	  S SKJs  Jr  SS	\S
\S\4S jjrSS\\   S\\R<                     4S jjrSS\ \\!\4      S\\R<                     4S jjr"g)    N)OptionalUnion   )AcceleratorState   )CUDA_DISTRIBUTED_TYPES)DistributedTypeRNGType)is_hpu_availableis_mlu_availableis_musa_availableis_neuron_availableis_npu_availableis_sdaa_availableis_torch_xla_availableis_xpu_availableseeddevice_specificdeterministicc                 0   U(       a  U [        5       R                  -  n [        R                  " U 5        [        R                  R                  U 5        [
        R                  " U 5        [        5       (       a!  [
        R                  R                  U 5        GO:[        5       (       a!  [
        R                  R                  U 5        GO
[        5       (       a   [
        R                  R                  U 5        O[        5       (       a   [
        R                  R                  U 5        O[!        5       (       a   [
        R"                  R                  U 5        O}[%        5       (       a   [
        R&                  R                  U 5        ON[)        5       (       a   [
        R*                  R                  U 5        O[
        R,                  R                  U 5        [/        5       (       a  [0        R2                  " U 5        U(       a  [
        R4                  " S5        gg)a  
Helper function for reproducible behavior to set the seed in `random`, `numpy`, `torch`.

Args:
    seed (`int`):
        The seed to set.
    device_specific (`bool`, *optional*, defaults to `False`):
        Whether to differ the seed on each device slightly with `self.process_index`.
    deterministic (`bool`, *optional*, defaults to `False`):
        Whether to use deterministic algorithms where available. Can slow down training.
TN)r   process_indexrandomr   nptorchmanual_seedr   xpumanual_seed_allr   npur   mlur   sdaar   musar   hpur   neuroncudar   xmset_rng_stateuse_deterministic_algorithms)r   r   r   s      Q/home/wildlama/miniconda3/lib/python3.13/site-packages/accelerate/utils/random.pyset_seedr)   (   sA     "000
KKIINN4	d		!!$'					!!$'					!!$'			

""4(			

""4(					!!$'			$$T*

""4(
**40     rng_type	generatorc                    U [         R                  :X  a  [        R                  " 5       nGOU [         R                  :X  a   [        R
                  R                  5       nGOU [         R                  :X  aA  [        5       (       d   S5       e[        R                  " [        R                  " 5       5      nGO1U [         R                  :X  a6  [        5       (       d   S5       e[        R                  R                  5       nGOU [         R                  :X  a6  [        5       (       d   S5       e[        R                  R                  5       nGOU [         R                   :X  a6  [#        5       (       d   S5       e[        R$                  R                  5       nGOSU [         R&                  :X  a6  [)        5       (       d   S5       e[        R*                  R                  5       nGO	U [         R,                  :X  a5  [/        5       (       d   S5       e[        R0                  R                  5       nOU [         R2                  :X  a5  [5        5       (       d   S5       e[        R6                  R                  5       nOwU [         R8                  :X  a5  [;        5       (       d   S5       e[        R<                  R                  5       nO.U [         R>                  :X  a  Uc   S	5       eURA                  5       n[C        5       nURD                  [F        R                  :X  ab  WRI                  [        RJ                  " 5       5      n[        RL                  " U/5        [        RN                  " 5         URQ                  5       nGOpURD                  [R        ;   d  URD                  [F        RT                  :X  d  URD                  [F        RV                  :X  d  URD                  [F        RX                  :X  dx  URD                  [F        RZ                  :X  dZ  URD                  [F        R\                  :X  d<  URD                  [F        R^                  :X  d  URD                  [F        R`                  :X  aL  WRI                  URb                  5      n[        Rd                  Rg                  US
5        URQ                  5       nO>URD                  [F        Rh                  :X  a   [        Rd                  Rg                  WS
5        U [         R                  :X  a  [        Rj                  " W5        g U [         R                  :X  a   [        R
                  Rk                  W5        g U [         R                  :X  a   [        R                  Rk                  W5        g U [         R                  :X  a   [        R                  Rk                  W5        g U [         R                   :X  a   [        R$                  Rk                  W5        g U [         R&                  :X  a   [        R*                  Rk                  W5        g U [         R,                  :X  a   [        R0                  Rk                  W5        g U [         R2                  :X  a   [        R6                  Rk                  W5        g U [         R8                  :X  a   [        R<                  Rk                  W5        g U [         R                  :X  a%  [        Rj                  " WRm                  5       5        g U [         R>                  :X  a  URo                  W5        g g )Nz8Can't synchronize XLA seeds as torch_xla is unavailable.z;Can't synchronize NPU seeds on an environment without NPUs.z;Can't synchronize MLU seeds on an environment without MLUs.z=Can't synchronize SDAA seeds on an environment without SDAAs.z=Can't synchronize MUSA seeds on an environment without MUSAs.z;Can't synchronize XPU seeds on an environment without XPUs.z;Can't synchronize HPU seeds on an environment without HPUs.zFCan't synchronize Neuron seeds on an environment without Neuron Cores.z)Need a generator to synchronize its seed.r   )8r
   TORCHr   get_rng_stateCUDAr$   XLAr   tensorr%   NPUr   r   MLUr   r   SDAAr   r    MUSAr   r!   XPUr   r   HPUr   r"   NEURONr   r#   	GENERATOR	get_stater   distributed_typer	   to
xla_devicecollective_broadcast	mark_stepcpur   	MULTI_MLU
MULTI_SDAA
MULTI_MUSA	MULTI_NPU	MULTI_XPU	MULTI_HPUMULTI_NEURONdevicedistributed	broadcast	MULTI_CPUr&   item	set_state)r+   r,   	rng_statestates       r(   synchronize_rng_staterQ   Q   s   7== '')		W\\	!JJ,,.		W[[	 %''c)cc'LL!1!1!34		W[[	 !!`#``!II++-		W[[	 !!`#``!II++-		W\\	! ""c$cc"JJ,,.		W\\	! ""c$cc"JJ,,.		W[[	 !!`#``!II++-		W[[	 !!`#``!II++-		W^^	#"$$n&nn$LL..0		W&&	&$Q&QQ$'')	 E!4!44LL1	
,
MMO	"88!!_%>%>>!!_%?%??!!_%?%??!!_%>%>>!!_%>%>>!!_%>%>>!!_%A%AALL.	##Iq1MMO				?#<#<	<##Iq1 7== I&	W\\	!

  +	W[[	 			*	W[[	 			*	W\\	!

  +	W\\	!

  +	W[[	 			*	W[[	 			*	W^^	#""9-	W[[	 
)*	W&&	&I& 
'r*   	rng_typesc                 <    U  H  n[        [        U5      US9  M     g )N)r,   )rQ   r
   )rR   r,   r+   s      r(   synchronize_rng_statesrT      s    gh/9E r*   )FF)NN)N)#r   typingr   r   numpyr   r   rP   r   	constantsr   dataclassesr	   r
   importsr   r   r   r   r   r   r   r   torch_xla.core.xla_modelcore	xla_modelr%   intboolr)   	GeneratorrQ   liststrrT    r*   r(   <module>rc      s     "   $ - 1	 	 	 ))&13 &1 &1d &1RO'HW$5 O'RWRaRaIb O'dFd5g+>&? FHUZUdUdLe Fr*   