
    3jg                         S SK Jr  S SKrS SKJrJrJr  S SKJr  S SK	J
r
  S\S\\\\   4   S\\   4S	 jrS\S\\\\   4   S\\   4S
 jrS\S\\\\   4   S\4S jrS\S-  S\4S jrg)    )AnyN)Graphmap_argNode)
OrderedSet)tree_flattennodenode_to_additional_depsreturnc                     [         [           " 5       n[        U R                  U R                  4UR
                  5        X;   a  UR                  X   5        U$ N)listr   r   argskwargsappendextendr	   r
   r   s      S/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/graph_utils.py_get_flat_argsr      sE     9;DTYY$dkk2&+12K    c                     [         [           " 5       n[        U R                  U R                  4UR
                  5        X;   a  UR                  X   5        U$ r   )r   r   r   r   r   addupdater   s      r   _get_flat_args_uniquer      sG     dDTYY$dhh/&+12Kr   graphc           
      "   0 n[        U R                  5       H  nX2;   a  M
  U[        [        X15      5      4/nSX#'   U(       d  M.  US   u  pV [	        U5      n[        U[        5      (       d  M3  UR                  US5      nUS:X  a"  U V	V
s/ s H  u  pU	PM	     sn
n	U/-   nSU 3s  $ US:X  a)  SX''   UR                  U[        [        Xq5      5      45        U(       a  M  M     gs  sn
n	f ! [         a    UR                  5         SX%'    N4f = f)N   r   zcycle detected in path:    zno cycle detected)reversednodesiterr   next
isinstancer   getr   StopIterationpop)r   r
   staterootstackparentchildrenchildchild_stater	   _
cycle_paths               r   _detect_cyclesr1   "   s     E%= 24QRSTe$RyF"X!%..#iiq1!#6;!<e74$e!<w!FJ5j\BB!##$ELLL! !6u!VW% e &P % "= ! "		 !"s0    C-0C-C'C-*/C-'C--DDc                    U c  gS[         S[        4S jnS[        S[        S[        [            4S jnU R                   H  nS H  nU" X45       H  nU" U5      s  s  s  $    M      UR
                  S	:X  aF  S
 H@  nUR                  U:X  a  Us  s  $ UR                  S:X  d  M+  XcR                  ;   d  M<  Us  s  $    [        UR                  UR                  45      u  pxU H  nU" U5      s  s  $    M     g)Ncpuxr   c                     [        U [        R                  5      (       a  U R                  $ [        U [        R                  5      (       a  U R                  R                  $ g)Nr3   )r$   torchdevicetypeTensor)r4   s    r   _device_type(_graph_device_type.<locals>._device_typeW   s>    a&&66Ma&&88== r   r	   keyc                 \    XR                   ;  a  / $ [        U R                   U   5      u  p#U$ r   )metar   )r	   r<   flatr/   s       r   _flatten_meta)_graph_device_type.<locals>._flatten_meta^   s*    iiItyy~.r   )valexample_valuecall_method)cudaxputo)
r   strr   r   r!   optargetr   r   r   )	r   r:   r@   r	   r<   objgpu	flat_argsr/   s	            r   _graph_device_typerN   S   s    }  D s tCy  +C$T/#C(( 0 ,
 77m#&;;#%J;;$&3))+;J	 ' $TYY$<=	C$$  " r   )typingr   r6   torch.fxr   r   r   torch.utils._ordered_setr   torch.utils._pytreer   dictr   r   r   rH   r1   rN    r   r   <module>rU      s      ) ) / ,
)-dJt4D.D)E	$Z
)-dJt4D.D)E..+/j6F0F+G..b"edl "s "r   