o
    -i{                     @   sp  d dl Z d dlmZ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ejded	efd
dZdejde	d	efddZdeej de	d	ejdB fddZdeej de	d	ejfddZdeej de	d	ejdB fddZdeej de	d	ejfddZdejded	ejdB fddZdejded	ejfddZde	e
B dejd	eej fddZdejd	ejfd d!ZdS )"    N)IterableIterator)fx)auto_functionalized)
OpOverloadOpOverloadPacket)Targetnodetargetreturnc                 C   s   t | jdko
| j|kS )Ncall_function)boolopr
   )r	   r
    r   V/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/compilation/fx_utils.pyis_func      r   r   c                 C   s   t | to| jd |kS Nr   r   r   args)r	   r   r   r   r   is_auto_func   r   r   nodesc                 C   s    | D ]}|j |kr|  S qd S )N)r
   r   r   r	   r   r   r   find_specified_fn_maybe   s
   
r   c                 C   *   t | |}|d usJ d| d|  |S NzCould not find z
 in nodes )r   r   r   r   r   find_specified_fn      
r   c                 C   s.   | D ]}t |tr|jd |kr|  S qd S r   r   r   r   r   r   find_auto_fn_maybe%   s
   r   c                 C   r   r   )r   r   r   r   r   find_auto_fn-   r   r   idxc                 C   s2   | j D ]}t|tjr|jd |kr|  S qd S N   )usersr   operatorgetitemr   )r	   r    userr   r   r   find_getitem_maybe5   s
   
r'   c                 C   r   )NzCould not find getitem z	 in node )r'   )r	   r    retr   r   r   find_getitem=   r   r)   graphc                 c   s    t | tr|  D ]}t| |}t||E d H  q
d S t | ts#J |jd| dE d H  |jdtdD ]}|jd | kr@|V  q4d S )Nr   )r   r
   r   )	
isinstancer   	overloadsgetattrfind_op_nodesr   
find_nodesr   r   )r   r*   overloadoverload_opnr   r   r   r.   E   s   

r.   c                 C   s    t | jdks	J tt| jS r!   )lenr#   nextiter)r	   r   r   r   get_only_userZ   s   r6   )r$   collections.abcr   r   torchr   *torch._higher_order_ops.auto_functionalizer   
torch._opsr   r   torch.fx.noder   Noder   r   r   r   r   r   r   intr'   r)   Graphr.   r6   r   r   r   r   <module>   s,   ""
