
    +j,                        d dl Z d dlZ d dlZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Ze j                            e j        j        j                  e j                            e j        j        j                  z  e j                            e j        j        j                  z  Zd Zd Zd Zd Zd Zd Zd Zej                                        re j                             dee           e j                             dee           e j                             de	e           e j                             dee
           e j                             dee           e j                             d ed                     e j                             d ed                     e j                             d ed                     e j                             d  ed!                     e j                             d" ed#                     e j        !                    d$d%          Z"d&D ]0Z#e"$                    d'ee#           e"$                    dee#           1e"$                    ded(           e"$                    ded(           e"$                    d!ed(           e"$                    d#ed(           dS dS ))    Nc                     |\  }}}}}}}	|                      |           |j        | _        || _        || _        || _        || _        |	| _        d S N)save_for_backwardshapeinput_shapespatial_scalepooled_heightpooled_widthsampling_ratioaligned)
ctxinputsoutputinputroisr   r	   r
   r   r   s
             f/home/wildlama/comfy/ComfyUI/.venv/lib/python3.11/site-packages/torchvision/_autograd_registrations.py_roi_align_setup_contextr      s^    W]TE4|^W$kCO%C%C#C'CCKKK    c                     | j         \  }| j        \  }}}}t          j        j                            ||| j        | j        | j        ||||| j	        | j
                  }|d d d d d d fS r   )saved_tensorsr   torchopstorchvision_roi_align_backwardr   r	   r
   r   r   )r   grad_outputr   
batch_sizechannelsheightwidth
grad_inputs           r   r   r      s|    GT*-/'J&%&:: J tT4tT99r   c                     |\  }}}}}|\  }}	|                      ||	           |j        | _        || _        || _        || _        d S r   r   r   r   r   r	   r
   )
r   r   r   r   r   r   r	   r
   pooledargmaxs
             r   _roi_pool_setup_contextr%   -   sX    >D;E4|NFF$'''kCO%C%C#Cr   c                     | j         \  }}| j        \  }}}}t          j        j                            |||| j        | j        | j        ||||
  
        }	|	d d d d fS r   )	r   r   r   r   r   _roi_pool_backwardr   r	   r
   )
r   r   _grad_argmaxr   r$   r   r   r   r   r    s
             r   r'   r'   7   sr    $LD&*-/'J&%&99 J tT4--r   c                     |\  }}}}}}|\  }	}
|                      ||
           |j        | _        || _        || _        || _        || _        d S r   )r   r   r   r   r	   r
   r   )r   r   r   r   r   r   r	   r
   r   r#   channel_mappings              r   _ps_roi_align_setup_contextr+   J   sc    NTKE4|^$FO$000kCO%C%C#C'Cr   c                     | j         \  }}| j        \  }}}}t          j        j                            |||| j        | j        | j        | j	        ||||          }	|	d d d d d fS r   )
r   r   r   r   r   _ps_roi_align_backwardr   r	   r
   r   
r   r   _grad_channel_mappingr   r*   r   r   r   r   r    s
             r   r-   r-   U   s{    -D/*-/'J&%&== J tT4t33r   c                     |\  }}}}}|\  }}	|                      ||	           |j        | _        || _        || _        || _        d S r   r"   )
r   r   r   r   r   r   r	   r
   r#   r*   s
             r   _ps_roi_pool_setup_contextr1   i   sY    >D;E4|$FO$000kCO%C%C#Cr   c                     | j         \  }}| j        \  }}}}t          j        j                            |||| j        | j        | j        ||||
  
        }	|	d d d d fS r   )	r   r   r   r   r   _ps_roi_pool_backwardr   r	   r
   r.   s
             r   r3   r3   s   ss    -D/*-/'J&%&<< J tT4--r   c                     |\  }}}}}}}	}
}}}}}}|                      |||||           || _        |	| _        |
| _        || _        || _        || _        || _        || _        || _	        d S r   )
r   stride_hstride_wpad_hpad_w
dilation_h
dilation_wgroupsoffset_groupsuse_mask)r   r   r   r   weightoffsetmaskbiasr5   r6   r7   r8   r9   r:   r;   r<   r=   s                    r   _deform_conv2d_setup_contextrB      s      	%t<<<CLCLCICICNCNCJ%CCLLLr   c                    | j         \  }}}}}t          j        j                            ||||||| j        | j        | j        | j        | j	        | j
        | j        | j        | j                  \  }}}	}
}|||	|
|d d d d d d d d d fS r   )r   r   r   r   _deform_conv2d_backwardr5   r6   r7   r8   r9   r:   r;   r<   r=   )r   r   r   r>   r?   r@   rA   r    grad_weightgrad_offset	grad_mask	grad_biass               r   rD   rD      s    (+(9%E664AFAVAnAn		
B B>J[)Y$ 	 r   c                       fd}|S )Nc                 *    t          d d          )Nzdouble backwards on z not supported)RuntimeError)r   gradsop_names     r   backwardz%_no_double_backward.<locals>.backward   s    I'IIIJJJr    )rM   rN   s   ` r   _no_double_backwardrP      s(    K K K K K Or   c                 |    |                                  r'| j        t          j        ur|                                 S | S )zCast to float32 matching at::autocast::cached_cast(at::kFloat, ...) behavior.

    Skips non-floating-point tensors and float64 tensors.
    )is_floating_pointdtyper   float64float)tensors    r   _autocast_castrW      s9    
 !! fl%-&G&G||~~Mr   c                     t           j                            t                    5  t           j        j                            t          |           t          |          |          cd d d            S # 1 swxY w Y   d S r   )r   _C_ExcludeDispatchKeyGuard_all_autocast_keysr   r   nmsrW   )detsscoresiou_thresholds      r   _autocast_nmsr`      s    		*	*+=	>	> 
 
y$((4  6""
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A A22A69A6c           
      :   | j         }t          j                            t                    5  t          j        j                            t          |           t          |          |||||          	                    |          cd d d            S # 1 swxY w Y   d S r   )
rS   r   rY   rZ   r[   r   r   	roi_alignrW   to)r   r   r   r	   r
   r   r   
orig_dtypes           r   _autocast_roi_alignre      s    J		*	*+=	>	> 	 	y$..5!!4  
 
 "Z..	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBBc                 j   | j         }t          j                            t                    5  t          j        j                            t          |           t          |          |||          \  }}|	                    |          |	                    |          fcd d d            S # 1 swxY w Y   d S r   )
rS   r   rY   rZ   r[   r   r   roi_poolrW   rc   )r   r   r   r	   r
   rd   r   r$   s           r   _autocast_roi_poolrh      s    J		*	*+=	>	> < <.775!!4  
 
 yy$$fii
&;&;;< < < < < < < < < < < < < < < < < <   A/B((B,/B,c           	      l   | j         }t          j                            t                    5  t          j        j                            t          |           t          |          ||||          \  }}|	                    |          |	                    |          fcd d d            S # 1 swxY w Y   d S r   )
rS   r   rY   rZ   r[   r   r   ps_roi_alignrW   rc   )	r   r   r   r	   r
   r   rd   r   r*   s	            r   _autocast_ps_roi_alignrl   	  s    J		*	*+=	>	> 	E 	E"')"7"D"D5!!4  #
 #
 yy$$o&8&8&D&DD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   A0B))B-0B-c                 j   | j         }t          j                            t                    5  t          j        j                            t          |           t          |          |||          \  }}|	                    |          |	                    |          fcd d d            S # 1 swxY w Y   d S r   )
rS   r   rY   rZ   r[   r   r   ps_roi_poolrW   rc   )r   r   r   r	   r
   rd   r   r*   s           r   _autocast_ps_roi_poolro     s    J		*	*+=	>	> E E"')"7"C"C5!!4  #
 #
 yy$$o&8&8&D&DDE E E E E E E E E E E E E E E E E Eri   c                    | j         }t          j                            t                    5  t          j        j                            t          |           t          |          t          |          t          |          t          |          |||||	|
|||          	                    |          cd d d            S # 1 swxY w Y   d S r   )
rS   r   rY   rZ   r[   r   r   deform_conv2drW   rc   )r   r>   r?   r@   rA   r5   r6   r7   r8   r9   r:   r;   r<   r=   rd   s                  r   _autocast_deform_conv2drr   $  s      J		*	*+=	>	>  y$225!!6""6""4  4  
 
 "Z..!                 s   BB>>CCztorchvision::roi_align)setup_contextztorchvision::roi_poolztorchvision::ps_roi_alignztorchvision::ps_roi_poolztorchvision::deform_conv2dz torchvision::_roi_align_backwardrb   ztorchvision::_roi_pool_backwardrg   z#torchvision::_ps_roi_align_backwardrk   z"torchvision::_ps_roi_pool_backwardrn   z$torchvision::_deform_conv2d_backwardrq   r   IMPL)AutocastCUDAAutocastCPUAutocastXPUr\   ru   )%r   torch.librarytorchvision.extensionr   r   r   r%   r'   r+   r-   r1   r3   rB   rD   rP   rY   DispatchKeySetDispatchKeyrv   ru   rw   r[   rW   r`   re   rh   rl   ro   rr   	extension_has_opslibraryregister_autogradLibrary_autocast_lib_keyimplrO   r   r   <module>r      s             : : :($ $ $. . .&( ( (4 4 4($ $ $. . .&  :" " "L   
HEH0<==heh2?@@Aheh2>??@   
 
 
  
< 
< 
<E E E
E 
E 
E! ! !P !!## #Q	M## "5E] $    
M##$;=O_v#www	M###%;Kf $    
M##"$9Ic $    
M##$&=Mi $   
 
M##$FH[H[\gHhHhiii	M##$EGZGZ[eGfGfggg	M##$IK^K^_mKnKnooo	M##$HJ]J]^kJlJlmmm	M##$JL_L_`oLpLpqqq M))-@@M ? C C5-666;(;TBBBB z#5~FFF~'=~NNN}&;^LLL(?PPPPPG#Q #Qr   