
    Bjg                        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dS )    )AnyN)Graphmap_argNode)
OrderedSet)tree_flattennodenode_to_additional_depsreturnc                     t          t                               }t          | j        | j        f|j                   | |v r|                    ||                     |S N)listr   r   argskwargsappendextendr	   r
   r   s      \/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/torch/_dynamo/graph_utils.py_get_flat_argsr      sU     9;;DTY$dk222&&&+D1222K    c                     t          t                               }t          | j        | j        f|j                   | |v r|                    ||                     |S r   )r   r   r   r   r   addupdater   s      r   _get_flat_args_uniquer      sX     dDTY$dh///&&&+D1222Kr   graphc           
      *   i }t          | j                  D ]}||v r|t          t          ||                    fg}d||<   |r|d         \  }}	 t	          |          }t          |t                    s3|                    |d          }|dk    rd |D             |gz   }	d|	 c S |dk    r7d||<   |                    |t          t          ||                    f           n)# t          $ r |
                                 d||<   Y nw xY w|͌dS )N   r   c                     g | ]\  }}|S  r    ).0r	   _s      r   
<listcomp>z"_detect_cycles.<locals>.<listcomp>>   s    !<!<!<74$!<!<!<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_state
cycle_paths
             r   _detect_cyclesr5   "   su     E%% &" &"5== 249PQQRRSTd 	"$RyFH"X!%.. #iiq11!##!<!<e!<!<!<w!FJBjBBBBB!###$E%LLL! !6u>U!V!VWW   ! " " "		 !f"5  	"> s   $C'60C')=C''#DDc                    | dS 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    r0d
D ]-}|j        |k    r|c c S |j        dk    r||j        v r|c c S .t          |j        |j	        f          \  }}|D ]} ||          c c S dS )Ncpuxr   c                     t          | t          j                  r| j        S t          | t          j                  r| j        j        S dS )Nr7   )r)   torchdevicetypeTensor)r8   s    r   _device_typez(_graph_device_type.<locals>._device_typeW   s@    a&& 	6Ma&& 	!8= ur   r	   keyc                 V    || j         vrg S t          | j         |                   \  }}|S r   )metar   )r	   r?   flatr"   s       r   _flatten_metaz)_graph_device_type.<locals>._flatten_meta^   s0    diIty~..ar   )valexample_valuecall_method)cudaxputo)
r   strr   r   r&   optargetr   r   r   )	r   r>   rC   r	   r?   objgpu	flat_argsr"   s	            r   _graph_device_typerP   S   so   }u     D s tCy      % %+ 	) 	)C$}T3// ) )#|C((((((((() 7m##&  ;#%%JJJJJ;$&&3$)+;+;JJJJJ $TY$<==	1 	% 	%C<$$$$$$$	%5r   )typingr   r:   torch.fxr   r   r   torch.utils._ordered_setr   torch.utils._pytreer   dictr   r   r   rJ   r5   rP   r    r   r   <module>rV      sM          ) ) ) ) ) ) ) ) ) ) / / / / / / , , , , , ,
)-dJt4D.D)E	$Z   
)-dJt4D.D)E   ..+/j6F0F+G.. . . .b"edl "s " " " " " "r   