
    9jg                         d dl mZ d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 dedeeee   f   dee   fd	Zdedeeee   f   dee   fd
Zdedeeee   f   defdZdedz  defdZy)    )AnyN)Graphmap_argNode)
OrderedSet)tree_flattennodenode_to_additional_depsreturnc                     t        t                  }t        | j                  | j                  f|j
                         | |v r|j                  ||           |S N)listr   r   argskwargsappendextendr	   r
   r   s      Y/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_dynamo/graph_utils.py_get_flat_argsr      sJ     9;DTYY$dkk2&&+D12K    c                     t        t                  }t        | j                  | j                  f|j
                         | |v r|j                  ||           |S r   )r   r   r   r   r   addupdater   s      r   _get_flat_args_uniquer      sL     dDTYY$dhh/&&+D12Kr   graphc           
         i }t        | j                        D ]  }||v r|t        t        ||            fg}d||<   |s(|d   \  }}	 t	        |      }t        |t              s(|j                  |d      }|dk(  r |D 	
cg c]  \  }	}
|		 c}
}	|gz   }d| c S |dk(  r+d||<   |j                  |t        t        ||            f       |r yc c}
}	w # t        $ r |j                          d||<   Y ,w xY w)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% &"5= 249PQRSTd$RyFH"X!%.#iiq1!#6;!<74$!<w!FJ5j\BB!##$E%LLL! !6u>U!VW% &"P % "= ! "		 !f"s0   	C%CCC0CCC98C9c                    | ydt         dt        fd}dt        dt        dt        t            fd}| j                  D ]  }dD ]  } |||      D ]  } ||      c c c S   |j
                  d	k(  r@d
D ];  }|j                  |k(  r|c c S |j                  dk(  s(||j                  v s7|c c S  t        |j                  |j                  f      \  }}|D ]  } ||      c c S   y)Ncpuxr   c                     t        | t        j                        r| j                  S t        | t        j                        r| j                  j                  S y)Nr3   )r$   torchdevicetypeTensor)r4   s    r   _device_typez(_graph_device_type.<locals>._device_typeW   s8    a&66Ma&88== r   r	   keyc                 \    || j                   vrg S t        | j                   |         \  }}|S r   )metar   )r	   r;   flatr/   s       r   _flatten_metaz)_graph_device_type.<locals>._flatten_meta^   s.    diiItyy~.a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_typerL   S   s   }  D s tCy   %+ 	)C$T3/ )#C(()	)
 77m#& ;;#%J;;$&3$))+;J	 $TYY$<=	1 	%C$$	%%" r   )typingr   r6   torch.fxr   r   r   torch.utils._ordered_setr   torch.utils._pytreer   dictr   r   r   rF   r1   rL    r   r   <module>rS      s      ) ) / ,
)-dJt4D.D)E	$Z
)-dJt4D.D)E..+/j6F0F+G..b"edl "s "r   