
    Ph{                         d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ  ej                  e      Zd Zd Zd	 Zd
ej*                  fdZd
ej.                  fdZy)    N)patchdisable)countersdefake)aot_module_simplified)_disable_current_modesc                  H     dt         j                  j                  f fd}|S )Ngmc                    t        	j                  d            r 	d          	d<   t        d   dxx   dz  cc<   d}|r+t        j	                  d       t        d   dxx   dz  cc<   | S fd}	j                  d	      xs 	d
   |	d	<   	j                  d      xs 	d
   	d<   ddlm} ddlm} 	j                  d
d       |k(  rt        dd      }nt        j                         }	  |       5  |5  t        | |fi 	}t        d   dxx   dz  cc<   t        |      cd d d        cd d d        S # 1 sw Y   nxY wd d d        y # 1 sw Y   y xY w# t        $ r t        d   dxx   dz  cc<    w xY w)Ndecompositionsaot_autogradtotal   Fz5Unable to use AOT Autograd because graph has mutationnot_okc                  8    t         t              | i |      S Nr   )argskwargsbw_compilers     hC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/backends/common.py_wrapped_bw_compilerz?aot_autograd.<locals>.compiler_fn.<locals>._wrapped_bw_compiler   s     /7;/@@AA    r   fw_compilerinference_compilerr   )nop)enable_aot_loggingz%functorch.compile.config.debug_assertTok)callablegetr   logdebugfunctorch.compiler   torch._inductor.debugr   r   
contextlibnullcontextr   r   	Exception)
r   example_inputsuse_fallbackr   r   r   patch_configcgr   r   s
           @r   compiler_fnz!aot_autograd.<locals>.compiler_fn   sq   FJJ/01'?v.>'?'AF#$ )Q.)IIMN^$X.!3.I	B jj/H6-3H 4}JJ+,E}0E 	#$ 	*< ::mT*c1 !H$OL%113L	#%|*2~HH(.!3.r{ (4|%%||%%%  	^$X.!3.	sH   -E 4E7,D6#	E,	E 6D?	;EE EE E E6)torchfxGraphModule)r   r,   s   ` r   r   r      s"    ,,, ,\ r   c                 4    ddl m}m}m} |||d}| r||d<   |S )Nr   )default_decompositions#min_cut_rematerialization_partition
ts_compile)r   r   partition_fnr   )r#   r1   r2   r3   )use_decompsr1   r2   r3   r   s        r   mem_efficient_fusion_kwargsr6   A   s3      "!;	F #9 Mr   c                 B     t        j                          fd       }|S )zg
    Decorator for backends that need real inputs.  We swap out fake
    tensors for zero tensors.
    c                     t               5  t        t        t        |            } | |fi |cd d d        S # 1 sw Y   y xY wr   )r	   listmapr   )modelinputsr   fns      r   wrapperz(fake_tensor_unsupported.<locals>.wrapper[   s5    #%#ff-.FeV.v. &%%s	   #9A)	functoolswraps)r=   r>   s   ` r   fake_tensor_unsupportedrA   U   s'     __R/ /
 Nr   returnc                 F    | D ]  }t        |d      s|j                  c S  y )Ndevice)hasattrrD   r(   xs     r   device_from_inputsrH   d   s    1h88O r   c                 F    | D ]  }t        |d      s|j                  c S  y )Ndtype)rE   rJ   rF   s     r   dtype_from_inputsrK   j   s    1g77N r   )r%   r?   loggingunittest.mockr   r-   torch._dynamor   torch._dynamo.utilsr   r   torch._functorch.aot_autogradr   torch.utils._python_dispatchr	   	getLogger__name__r!   r   r6   rA   rD   rH   rJ   rK    r   r   <module>rU      sb         ! 0 ? ?g!/d(%,,  r   