+
    &j                    &e  a  ER Et0 t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RI	H
t
 ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIHtHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHu Ht ^ RIH t H!t!H"t" ^ R	I#H$t$ ^ R
I%H&t& ^ RIH't'H(t(H)t)H*t*H+t+ ^ RI,H-t-H.t.H/t/H0t0 ^ RI1H2t3 ^ RI4H5t5 ]Pl                  Pn                  t7. t8] ^ k ]Pr                  Pt                  Pv                  t; ! R R]4      t<ERR R llt=]! ]=]P|                  P~                  RR7      t@]! ]=]P|                  P~                  R7      tA]! ]=]P|                  P~                  RR7      tB]! ]=]P|                  P                  R7      tDR R ltE]$! ];P                  4      ]0! R4      ]AR R l4       4       4       tF]$! ];P                  4      ]0! R4      ]AR R l4       4       4       tG]$! ];P                  4      ]0! R4      ]AR R  l4       4       4       tH]$! ];P                  4      ]0! R4      ]AR! R" l4       4       4       tI]$! ];P                  P                  .4      R# 4       tL]$! ];P                  PD                  .4      R$ R% l4       tM]$! ];P                  4      ]0! 4       ]AR& R' l4       4       4       tN]$! ];P                  4      ]0! R4      ]AR( R) l4       4       4       tO]$! ];P                  4      ]0! R4      R* R+ l4       4       tP]$! ];P                  4      ]0! 4       ]AR, R- l4       4       4       tQ]$! ];P                  4      ]0! 4       ]AR. R/ l4       4       4       tR]$! ];P                  4      ]0! R4      R0 R1 l4       4       tS]$! ];P                  4      ]0! R4      ]AR2 R3 l4       4       4       tT]$! ];P                  4      ]0! R4      ]AERR4 R5 ll4       4       4       tU]$! ];P                  4      ]AR6 R7 l4       4       tV]$! ];P                  4      ]0! 4       ]AR8 R9 l4       4       4       tW]$! ];P                  4      ]0! R4      ]AR: R; l4       4       4       tX]$! ];P                  4      R< R= l4       tY]$! ];P                  4      R> R? l4       tZ]$! ];P                  4      ]0! 4       ]AR@ RA l4       4       4       t[]$! ];P                  4      ]0! R4      ]ARB RC l4       4       4       t\]$! ];P                  4      ]0! 4       RD RE l4       4       t]RF RG lt^RH RI lt_]$! ];P                  4      ]0! 4       ]A]<P                  P                  3RJ RK ll4       4       4       t`]$! ];P                  4      ]0! R4      ]ARL RM l4       4       4       tc]$! ];P                  4      ERRN l4       te]$! ];P                  4      ]0! 4       ]A]<P                  P                  RO3RP RQ ll4       4       4       tf]$! ];P                  P                  4      ]ARR RS l4       4       tg]$! ];P                  P                  4      ]ART RU l4       4       tj]$! ];P                  P                  4      ]ARV RW l4       4       tk]$! ];P                  P                  4      ]ARX RY l4       4       tmRZ R[ ltn]$! ];P                  4      ]0! R4      ]AR\ R] l4       4       4       to]$! ];P                  4      ]0! R4      R^ R_ l4       4       tp]$! ];P                  4      ]0! R4      R` Ra l4       4       tq]$! ];P                  4      ]0! 4       ]AR]<P                  P                  3Rb Rc ll4       4       4       tr]$! ];P                  4      ]0! R4      ]AR]<P                  P                  3Rd Re ll4       4       4       ts]$! ];P                  4      ]0! 4       ]A]<P                  P                  3Rf Rg ll4       4       4       tt]$! ];P                  4      ]0! R4      ]A]<P                  P                  3Rh Ri ll4       4       4       tu]$! ];P                  4      ]0! 4       ERRj Rk ll4       4       tv]$! ];P                  4      ]0! 4       Rl Rm l4       4       tw]$! ];P                  4      ]0! 4       Rn Ro l4       4       tx]$! ];P                  PD                  4      ERRp Rq ll4       tzRr Rs lt{]$! ];P                  4      ]0! 4       ERRt Ru ll4       4       t|]$! ];P                  4      ]0! 4       Rv Rw l4       4       t}]$! ];P                  4      ]0! 4       Rx Ry l4       4       t~Rz R{ lt]$! ];EP                   4      ]0! R4      ]@R| R} l4       4       4       t]$! ];EP                  4      ]0! 4       ]@R~ R l4       4       4       tR t]$! ];EP                  4      ]0! 4       R R l4       4       t]$! ];EP                  4      ]0! 4       ]AR R l4       4       4       t]$! ];EP
                  4      ]0! 4       R R l4       4       t]$! ];EP                  4      ]0! 4       R R l4       4       t]$! ];EP                  P                  4      ]AERR R ll4       4       t]$! ];EP                  4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      R R l4       4       4       t]$! ];EP                  4      ]0! RR4      R R l4       4       t]$! ];EP                  4      ]0! 4       R R l4       4       t]$! ];EP                  4      ]0! RR7      R R l4       4       t]$! ];EP                  4      ]0! 4       ERR R ll4       4       t]$! ];EP                   4      ]0! 4       R R l4       4       tR R ltR R ltR R ltR R ltR R lt]$! ];EP,                  P                  ];EP,                  P                  .4      ERR R ll4       t]$! ];EP.                  P                  ];EP.                  P                  .4      ERR R ll4       t]$! ];EP0                  PD                  4      ERR R ll4       t]$! ];EP2                  P                  4      ERR R ll4       t]$! ];EP4                  PD                  4      ERR R ll4       t];EP6                  EP8                  EP                  ]7EP                  4      ERR R ll4       t]$! ];EP<                  4      ]0! RR7      ]AERR R ll4       4       4       t]$! ];EP>                  4      ]0! 4       ]AERR R ll4       4       4       t]$! ];EP@                  4      ]0! RR7      ]AERR R ll4       4       4       t]$! ];EPB                  P                  4      ]AR R l4       4       t]$! ];EPB                  P                  4      R R l4       tR R lt]$! ];EPH                  P                  4      R R l4       t]$! ];EPH                  P                  4      R R l4       t]$! ];EPL                  P                  4      R R l4       t]$! ];EPN                  P                  4      R R l4       tR R lt]$! ];EPR                  4      ]0! RRR4      R R l4       4       t];EPR                  P                  EP                  ]7EP                  4      ];EPR                  P                  EP                  ]7EP                  4      R R l4       4       t];EPV                  P                  EP                  ]7EP                  4      ERR R ll4       t]$! ];EPZ                  P                  4      R R l4       t]$! ];EP\                  P                  4      R R l4       t]$! ];EP\                  EP^                  4      R R l4       t]$! ];EPb                  P                  4      R R l4       tR R lt]$! ];EPf                  P                  4      R R l4       t]$! ];EPh                  P                  4      R R l4       t]$! ];EPj                  P                  4      R R l4       t]$! ];EPl                  4      ]0! RR4      ]AERR l4       4       4       t]$! ];EPp                  4      ]0! 4       RRRRRRRRRRRR/R R ll4       4       t]$! ];EPr                  ];EPt                  ];EPv                  .4      ]0! 4       R 4       4       t];EPz                  P                  EP                  ]7EP                  4      ]$! ];EPz                  4      ]0! RRRR4      R R l4       4       4       tR t]$! ];EP~                  P                  4      R R l4       t]$! ];EP                  P                  4      R R l4       t]$! ];EP                  P                  4      R R l4       t]$! ];EP                  4      ]0! RRR4      R R l4       4       t]$! ];EP                  4      ]0! RRR4      R R l4       4       t]$! ];EP                  4      ]0! 4       ]AR R l4       4       4       tR R lt]$! ];EP                  4      ]0! 4       R R l4       4       t]$! ];EP                  4      ]0! 4       R R l4       4       t]$! ];EP                  4      ER ^/ER ER ll4       t]$! ];EP                  4      ]0! 4       ER ^/ER ER ll4       4       tER ^/ER ER llt]$! ];EP                  P                  4      ];EP                  P                  EP                  ]7EP                  4      ERER l4       4       t]$! ];EP                  4      ER ER	 l4       t]$! ];EP                  4      ]0! 4       ER
 ER l4       4       tER ER lt]$! ];EP                  4      ]0! ERER4      ]AER ER l4       4       4       t]$! ];EP                  4      ]0! 4       ERER ER ll4       4       t]$! ];EP                  4      ERER l4       tER tER t]$! ];EP                  EP                  4      ]$! ];EP                  EP                  4      ]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER ER l4       4       4       4       4       4       4       4       4       t]$! ];EP                  EP                  4      ]$! ];EP                  EP                  4      ]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER ER l4       4       4       4       4       4       4       4       4       tERER lt]$! ];EP                  P                  ];EP                  P                  .4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! RRER7      ERER ER ll4       4       4       4       t]$! ];EP                  P                  ];EP                  P                  .4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! RRER7      ERER ER  ll4       4       4       4       t]$! ];EP                  P                  ];EP                  P                  .4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! RRER7      ERER! ER" ll4       4       4       4       t]$! ];EP                  P                  ];EP                  P                  .4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! RRER7      ERER# ER$ ll4       4       4       4       t]$! ];EP                  P                  ];EP                  P                  .4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! RRER7      ERER% ER& ll4       4       4       4       t]$! ];EP                  P                  ];EP                  P                  .4      ];EP                  P                  EP                  ]7EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! RRER7      ERER' ER( ll4       4       4       4       t]AERER) ER* ll4       tER+ tER, tER- tER. tERER/ ltER0 tER1 tERER2 ltERER3 ltER4 t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER5 4       4       4       t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER6 4       4       4       t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER7 4       4       4       t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER8 4       4       4       tER9 tERER: ltERER; ltER< t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER= 4       4       4       t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ER> 4       4       4       tER? tER@ t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ERA 4       4       4       t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ERB 4       4       4       t]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ERC 4       4       4       Et ]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ERD 4       4       4       Et]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ERE 4       4       4       Et]$! ];EP
                  EP                  4      ]$! ];EP                  EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP
                  EP                  EP                  ]7EP                  4      ];EP
                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ];EP                  EP                  EP                  ]7EP                  4      ERF 4       4       4       4       4       4       4       4       Et]$! ];EP                  P                  ];EP                  P                  .4      ]0! 4       ERERG ERH ll4       4       Et]$! ];EP
                  P                  ];EP
                  P                  .4      ];EP
                  P                  EP                  ]7EP                  4      ]0! 4       ERERI ERJ ll4       4       4       Et]$! ];EP                  P                  ];EP                  P                  .4      ]0! 4       ERERK ERL ll4       4       EtERERM lEt	ERN Et
ERO ERP lEtERQ ERR lEt]AERS ERT l4       Et]$! ];EP                  P                  4      ERU ERV l4       Et]$! ];EP                  ];EP                   .4      ]0! 4       ERW 4       4       Et]$! ];EP"                  .4      ERX 4       Et]$! ];EP$                  .4      ERERY l4       Et]$! ];EP&                  .4      ERZ 4       Et]$! ];EP(                  .4      ER[ 4       EtER\ ER] lEt]$! ];EP,                  4      ]0! ERER^4      ER_ ER` l4       4       Et]$! ];EP.                  4      ]0! ERER^4      ERa ERb l4       4       EtERc ERd lEtERe ERf lEtERg ERh lEtERi ERj lEtERk ERl lEtERm ERn lEtERo ERp lEtERq ERr lEtERs ERt lEt ERu ERv lEt!]$! ];EPD                  4      ]0! 4       ]AERw ERx l4       4       4       Et"ERERy ERz llEt#]$! ];EPH                  4      ]0! 4       ]AERER{ ER| ll4       4       4       Et$]$! ];EPJ                  4      ]0! RR7      ]AER} 4       4       4       Et%]$! ];EPL                  4      ]0! 4       RR]<P                  P                  3ER~ l4       4       Et&ER ER lEt'];EPP                  P                  EP                  ]7EP                  4      ];EPP                  P                  EP                  ]7EP                  4      ]0! RER7      ERR/ER l4       4       4       Et(]$! ];EPR                  P                  ];EPR                  P                  .4      ];EPR                  P                  EP                  ]7EP                  4      ]0! 4       ]AERER ER ll4       4       4       4       Et*]$! ];EPR                  EP                  4      ];EPR                  EP                  EP                  ]7EP                  4      ];EPR                  EP                  EP                  ]7EP                  4      ]0! 4       ]AERER ER ll4       4       4       4       4       Et+]$! ];EPX                  4      ]$! ];EPZ                  4      ]$! ];EP\                  4      ]A]0! 4       ER ER l4       4       4       4       4       Et/]$! ];EP`                  4      ]$! ];EPb                  4      ]$! ];EPd                  4      ]A]0! 4       ER ER l4       4       4       4       4       Et3ER ER lEt4]$! ];EPj                  4      ]$! ];EPl                  4      ]$! ];EPn                  4      ]0! R4      ER 4       4       4       4       Et8]$! ];EPr                  4      ]0! ERER4      ERRERR/ER l4       4       Et9]$! ];EPt                  4      ]0! 4       ERRR/ER ll4       4       Et:]$! ];EPv                  P                  ];EPv                  P                  .4      ]0! 4       RRR]EPx                  RRRR/ER ER ll4       4       Et=]$! ];EPv                  EP|                  .4      RRR]EPx                  RRRR/ER ER ll4       Et?]$! ]&4      ER 4       Et@]$! ];EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! 4       ^^R]<P                  P                  3ER ER ll4       4       4       EtA]$! ];EP                  4      ];EP                  P                  EP                  ]7EP                  4      ]0! ERER4      ER ER l4       4       4       EtB]$! ];EP                  P                  4      ERERRERR/ER ER lll4       EtDER EtE]$! ];EP                  .4      ]0! RR7      ]AERER l4       4       4       EtF]$! ];EP                  4      ]0! 4       ER 4       4       EtG]$! ];EP                  4      ER 4       EtH]$! ];EP                  P                  ];EP                  P                  .4      RRRR/ER ER ll4       EtJ]$! ];EP                  P                  ];EP                  EP                  .4      ERER ER ll4       EtM]$! ]Pt                  Pv                  EP                  4      ERER l4       EtN]$! ];EP                  4      ]0! 4       ERRERR/ER l4       4       EtO]$! ];EP                  P                  4      ERR/ER ER ll4       EtPERR/ER lEtQERRERR/ER lEtR]$! ];EP                  4      ]0! 4       ER 4       4       EtS]$! ];EP                  4      ERER l4       EtT]$! ];EP                  4      ER ER l4       EtU]$! ];EP                  P                  ];EP                  P                  .4      ]0! 4       RRRRRRRR/ER ER ll4       4       EtV]$! ];EP                  EP                  ];EP                  EP                  .4      ]0! 4       ERRRRRRRRR/ER ER lll4       4       EtYE]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP<                  4       E]E! ];EP                  ];EP@                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];P                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];P                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];P                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];P                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                   4       E]E! ];EP                  ];EP                  4       E]E! ];EP                  ];EP                  4       E]E! ];EP
                  ];P                  4       ];EP                  P                  EP                  ]7EP                  4      ERER ER ll4       EtR# (      N)CallableIterable)nullcontext)Enum)partialreduce)chainproduct)Anycast)	sym_floatsym_intTensorregister_decomposition)	out_dtype)IntLike
NumberTypesuggest_memory_format
TensorLikeTensorSequenceType)_maybe_convert_to_dtype_maybe_resize_out_safe_copy_outout_wrapper)_pytree)tree_mapc                   "    ] tR t^1t^ t^t^tRtR# )	Reduction N)__name__
__module____qualname____firstlineno__NONEMEANSUM__static_attributes__r        t/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/torch/_decomp/decompositions.pyr   r   1   s    DD
Cr)   r   Fc                \    V ^8  d   QhR\         R\        P                  R\        R\        /# )   ftype_promotioncompute_dtype_onlyinclude_non_tensor_args)r   utilsELEMENTWISE_TYPE_PROMOTION_KINDbool)formats   "r*   __annotate__r5   :   s6     ' ''99' ' "	'r)   c                 R   a aaa \         P                  ! S 4      VV VV3R  l4       pV# )c                    <aa	 S'       d!   \         \        P                  P                  3M\         3p\        P
                  ! V / VB  Uu. uF  p\        W24      '       g   K  VNK  	  pp\        P                  ! VR S/ w  oo	V3R lpV	3R lpS! \        WP4      / \        WQ4      B pS
'       d   V# \        Wg4      # u upi )type_promotion_kindc                 V   < \        V \        4      '       d   V P                  S4      # V # N
isinstancer   to)xcomputation_dtypes   &r*   increase_prec0type_casts.<locals>.inner.<locals>.increase_precO   s%    !V$$tt-..r)   c                 V   < \        V \        4      '       d   V P                  S4      # V # r:   r;   )r>   result_dtypes   &r*   decrease_prec0type_casts.<locals>.inner.<locals>.decrease_precU   s$    !V$$ttL))r)   )
r   torchtypes_Numberpytreearg_tree_leavesr<   r1   elementwise_dtypesr   )argskwargsallowed_typesr>   	flat_argsr@   rD   rr?   rC   r/   r-   r0   r.   s   *,      @@r*   innertype_casts.<locals>.inner@   s     .EVU[[(()6) 	
 ++T<V<
<!+ A< 	 

 +0*B*B+
,:+
'<
		 x,P0OPHM--5
s   B?#B?)	functoolswraps)r-   r.   r/   r0   rQ   s   ffff r*   
type_castsrU   :   s(     __Q. .@ Lr)   T)r.   r/   )r.   )r.   r0   c                <    V ^8  d   QhR\         R\        R\         /# )r,   r>   dimreturnr   int)r4   s   "r*   r5   r5   w   s!       c f r)   c                 t    \        WP                  4       ,
          4       F  pV P                  R4      p K  	  V #    )rangerW   	unsqueeze)r>   rW   _s   && r*   _unsqueeze_to_dimrb   w   s+    3=!KKO "Hr)   
grad_inputc                0    V ^8  d   QhR\         R\         /# r,   out_gradyr   )r4   s   "r*   r5   r5      s     2 2F 2v 2r)   c                 J    V ^W,          ,
          P                  4       ,          # r]   conj_physicalrf   rg   s   &&r*   tanh_backwardrn   }   s     q15y//111r)   c                0    V ^8  d   QhR\         R\         /# re   rh   )r4   s   "r*   r5   r5      s     4 4v 4& 4r)   c                 J    W^V,
          ,          P                  4       ,          # rj   rk   rm   s   &&r*   sigmoid_backwardrq      s     AE{11333r)   c                H    V ^8  d   QhR\         R\         R\        R\        /# )r,   rf   r>   beta	thresholdr   float)r4   s   "r*   r5   r5      s.     S S S6 S S5 Sr)   c                     W,          P                  4       p\        P                  ! W,          V8  W V,          VR ,           ,          4      #       ?)exprF   where)rf   r>   rs   rt   zs   &&&& r*   softplus_backwardr}      s7     
A;;I-xAS9QRRr)   c                `    V ^8  d   QhR\         R\        R\        R\        R\        R\         /# )r,   grad_outputalphascaleinput_scale	is_resultself_or_resultr   rv   r3   )r4   s   "r*   r5   r5      sD     
 


 
 	

 
 
r)   c                 0   W,          pTpTpV'       d5   \         P                  ! V^ 8*  W,          WV,           ,          W,          4      # \         P                  ! V^ 8*  W,          V,          \         P                  ! WX,          4      ,          W,          4      # r   )rF   r{   rz   )	r   r   r   r   r   r   negcoefposcoef
negiptcoefs	   &&&&&&   r*   elu_backwardr      s     mGGJ{{a$(@A!
 	
 {{a$w.>;V1WW!
 	
r)   c                 .    \         P                  ! W4      # r:   )rF   	full_likeselfvalues   &&r*   fill_scalarr      s    ??4''r)   c                $    V ^8  d   QhR\         /# )r,   r   rh   )r4   s   "r*   r5   r5      s     " "V "r)   c                    a \         P                  ! SP                  4       ^ 8H  V3R l4       \        P	                  V S4      # )r   c                  ,   < R S P                  4        R2# )z@fill only supports 0-dimension value tensor but got tensor with z dimensionsrW   )r   s   r*   <lambda>fill_tensor.<locals>.<lambda>   s    RSXS\S\S^R__jkr)   )rF   _checkrW   atencopyr   s   &fr*   fill_tensorr      s3    	LL		qk 99T5!!r)   c                0    V ^8  d   QhR\         R\         /# r,   r   rX   rh   )r4   s   "r*   r5   r5      s     @ @f @ @r)   c                 z    \         P                  ! \         P                  ! V ^,           ^ R7      ^R7      ^,          #    minmaxrF   clampr   s   &r*   hardsigmoidr      s)     ;;u{{4!83;a??r)   c                0    V ^8  d   QhR\         R\         /# )r,   r   r   rh   )r4   s   "r*   r5   r5      s      f F r)   c                 Z    \         P                  ! VR8  VR 8  ,          V R,          R4      # )g      @        g      gUUUUUU?rF   r{   r   r   s   &&r*   hardsigmoid_backwardr      s0     ;;	$y! r)   c                H    V ^8  d   QhR\         R\         R\        R\        /# )r,   r   r   min_valmax_valru   )r4   s   "r*   r5   r5      s2     P PP%P05P@EPr)   c                 H    \         P                  ! W8*  W8  ,          R V 4      # )r   r   )r   r   r   r   s   &&&&r*   hardtanh_backwardr      s     
 ;;DO<c;OOr)   c                0    V ^8  d   QhR\         R\         /# r   rh   )r4   s   "r*   r5   r5      s     G GF Gv Gr)   c                     V \         P                  ! \         P                  ! V ^,           ^ R7      ^R7      ,          ^,          # r   r   r   s   &r*   	hardswishr      s.     %++ekk$(:BBQFFr)   c                <    V ^8  d   QhR\         R\         R\         /# r,   r   r   rX   rh   )r4   s   "r*   r5   r5      s!      F & V r)   c           
          \         P                  ! VR8*  R\         P                  ! V^8  W^,          R,           ,          V 4      4      # )r   r         ?r   r   s   &&r*   hardswish_backwardr      s?     ;;
D1HkQh#-=>L r)   c                <    V ^8  d   QhR\         R\         R\        /# )r,   r   r   rt   ru   )r4   s   "r*   r5   r5      s!     : :F :& :U :r)   c                 6    \         P                  ! W8*  ^ V 4      # r   r   )r   r   rt   s   &&&r*   threshold_backwardr      s     ;;t(![99r)   c                H    V ^8  d   QhR\         R\         R\        R\        /# )r,   r   r   negative_slopeself_is_resultr   )r4   s   "r*   r5   r5      s2     L LL%L7<LNRLr)   c                 D    \         P                  ! V^ 8  W V,          4      # r   r   )r   r   r   r   s   &&&&r*   leaky_relu_backwardr      s     ;;taxN.JKKr)   c                <    V ^8  d   QhR\         R\         R\        /# )r,   gradr   approximate)r   str)r4   s   "r*   r5   r5      s!     ) ) )f )3 )r)   c                 z   R pRpRpVR8X  d   W5,          R,          pRpW,          pW,          p	WaWy,          ,           ,          p
\         P                  ! V
4      pRV,          p^V,           pRV,          p^W,          ,
          pV^^V,          V,          ,           ,          pW,          V,          pWV,           ,          # TpWT,          R,          pR^\         P                  ! VV,          4      ,           ,          pV\         P                  ! W,          R,          4      ,          pV VVV,          ,           ,          # )g;f?g;f?gmBP?tanhr   gHm?      )rF   r   erfrz   )r   r   r   M_SQRT2	M_SQRT1_2
M_2_SQRTPIkBetakKappax_sqx_cuberQ   
tanh_innerleftrightleft_derivativetanh_derivativeinner_derivativeright_derivativekAlphacdfpdfs   &&&                  r*   gelu_backwardr      s    %G&I'Jf$s*{/0ZZ&
TzJ+j55 AF
T(9$9:14DD)99::&,Q4&=112eiid 233sTCZ'((r)   c                0    V ^8  d   QhR\         R\         /# )r,   r   inputrh   )r4   s   "r*   r5   r5     s     5 5v 5f 5r)   c                     \         P                  ! \        P                  ! V4      4      p\         P                  ! V4      pW,          ^W",          ,
          ,          pWV,           ,          # rj   )rF   r   Fsoftplussigmoid)r   r   input_tanh_softplusinput_sigmoidouts   &&   r*   mish_backwardr     sN      **QZZ%67MM%(M

1':'P#P
QC344r)   c                0    V ^8  d   QhR\         R\         /# r   rh   )r4   s   "r*   r5   r5   %  s     & &v && &r)   c                 <    V \         P                  ! V 4      ,          # r:   )rF   r   r   s   &r*   silur   "  s     %--%%%r)   c                <    V ^8  d   QhR\         R\         R\         /# r   rh   )r4   s   "r*   r5   r5   ,  s!     > >v >V > >r)   c                     ^^\         P                  ! V) 4      ,           ,          pW,          ^V^V,
          ,          ,           ,          # rj   )rF   rz   )r   r   r   s   && r*   silu_backwardr   )  s:     1uyy$''(G AG(<$<==r)   c                <    V ^8  d   QhR\         R\         R\         /# )r,   r   weightrX   rh   )r4   s   "r*   r5   r5   2  s!     6 6 6 66 6r)   c                 D    \         P                  ! V ^ 8  WV ,          4      # r   r   )r   r   s   &&r*   _prelu_kernelr   1  s    ;;tax}55r)   c          
      j    V ^8  d   QhR\         R\         R\         R\        \         \         3,          /# )r,   r   r   r   rX   r   tuple)r4   s   "r*   r5   r5   7  s9     % %%
% % 66>	%r)   c                     \         P                  ! V^ 8  WV ,          4      p\         P                  ! V^ 8  RW,          4      pW43# )r   r   r   )r   r   r   
input_gradweight_grads   &&&  r*   _prelu_kernel_backwardr   6  s?     TAX{[4HIJ++dQhT-?@K$$r)   c                x    V ^8  d   QhR\         R\         R\         R\        R\        R\        R\        R\         /# )	r,   r   r   noiseloweruppertrainingr   rX   r   )r4   s   "r*   r5   r5   D  sX     
 



 
 	

 
 
 
 
r)   c                 ~    V'       d   V P                  V4      # W4,           ^,          p\        P                  WWv4      # r,   )mulr   r   )r   r   r   r   r   r   r   r   s   &&&&&&& r*   rrelu_with_noise_backwardr  A  s:     u%%-1,''~
 	
r)   c                H    V ^8  d   QhR\         R\         R\         R\         /# )r,   r   r   bufferrX   rh   )r4   s   "r*   r5   r5   Y  s(     < <f <F <F <v <r)   c                 6   V^ 8  p\         P                  ! V^^ 4      p\         P                  ! V^R4      pVP                  4       ^ 8  d   TM*\         P                  ! \         P                  ! V4      ) 4      pWWV^V,           ,          ,          ,
          ,          # r   r^   )rF   r{   numelrz   abs)r   r   r  in_negative	max_derivsignr|   s   &&&    r*   log_sigmoid_backwardr  V  st     (KKA.I;;{Ar*D ,,.1$%))UYYt_4D*EAd1q5k&::;;r)   c                <    V ^8  d   QhR\         R\         R\         /# )r,   r   otherrX   rh   )r4   s   "r*   r5   r5   e  s!     / / /v /& /r)   c                 4   \         P                  ! V P                  4      '       g'   \         P                  ! V P                  4      '       d   \        P
                  MV P                  pV P                  RR VR7      pV \        P                  ! W14      ,          # )       @dtyper    )r1   is_integer_dtyper  is_boolean_dtyperF   float32new_fullpow)r   r  	two_dtype
two_tensors   &&  r*   ldexpr  c  sl    
 !!$**--1G1G

1S1S 	ZZ 
 r3i8J%))J...r)   c                0    V ^8  d   QhR\         R\        /# )r,   loss	reductionrY   )r4   s   "r*   r5   r5   o  s      v # r)   c                     V\         P                  P                  8X  d   \        P                  ! V 4      # V\         P
                  P                  8X  d   \        P                  ! V 4      # V # r:   )r   r&   r   rF   meanr'   sum)r  r  s   &&r*   apply_loss_reductionr!  o  sH    INN(((zz$	imm))	)yyr)   c                8    V ^8  d   QhR\         P                  /# )r,   r  )rF   r  )r4   s   "r*   r5   r5   x  s       r)   c                     V \         P                  8X  d   \         P                  # V \         P                  8X  d   \         P                  # V \         P
                  8X  d   \         P                  # R # r:   )rF   	complex32float16	complex64r  
complex128float64r  s   &r*   to_real_dtyper)  x  sK    }}	%//	!}}	%""	"}} 
#r)   c                H    V ^8  d   QhR\         R\         R\        R\         /# )r,   r   targetr  rX   rY   )r4   s   "r*   r5   r5     s,     1 1
1 1-011r)   c                 6    W,
          ^,          p\        W24      # r   )r!  )r   r+  r  r  s   &&& r*   mse_lossr-    s     MaD00r)   c                H    V ^8  d   QhR\         R\         R\         R\        /# )r,   r   r   r+  r  rY   )r4   s   "r*   r5   r5     s,     1 11 &1061CF1r)   c                     V\         P                  P                  8X  d   R VP                  4       ,          MR pWAV,
          ,          V ,          # )r  )r   r&   r   r  )r   r   r+  r  norms   &&&& r*   mse_loss_backwardr1    s9     #,y~~/C/C"C3D6>"[00r)   c                     \         P                  ! WVR 7      pV P                  \        R4      4      p\         P                  ! WARR7      p\         P
                  ! V4      p\         P                  ! WVV4      # ))rW   r  z-infTrW   keepdim)rF   softmaxeqrv   all
zeros_liker{   )r   rW   r  r   maskedmasked_rowszeross   &&&    r*   safe_softmaxr<    sU    
--U
3CWWU6]#F))FT:KS!E;;{3//r)   ry   c                H    V ^8  d   QhR\         R\         R\        R\        /# )r,   r   r+  r  rs   r   rZ   rv   )r4   s   "r*   r5   r5     s0     	1 	1
	1	1 	1 		1r)   c                     W,
          P                  4       p\        P                  ! WC8  R V^,          ,          V,          VR V,          ,
          4      p\        WB4      # r   )r  rF   r{   r!  )r   r+  r  rs   r  s   &&&& r*   smooth_l1_lossrA    sI     M D;;t{C$'MD$8$t:KLD00r)   c          
      T    V ^8  d   QhR\         R\         R\         R\        R\        /# )r,   r   r   r+  r  rs   r>  )r4   s   "r*   r5   r5     s4      %/5BEMRr)   c                 B   V\         P                  P                  8X  d   R VP                  4       ,          MR pW,
          p\        P
                  ! V4      pWP,          p\        P                  ! Wt8  W,          V,          V\        P                  ! V4      ,          4      # rx   )r   r&   r   r  rF   r  r{   r  )	r   r   r+  r  rs   r0  r>   abs_x	norm_grads	   &&&&&    r*   smooth_l1_loss_backwardrF    ss    
 "+inn.B.B!B3DAIIaLE"I;;EJJqM! r)   c                `    V ^8  d   QhR\         R\         R\         R\        R\        R\         /# )r,   r   r   r+  r  rs   rc   r>  )r4   s   "r*   r5   r5     sL     
R 
R
R

R 
R 	
R
 
R 
Rr)   c                 `    \        WW#V4      p\        WVP                  4       \        WeR R7      # T	copy_fromcopy_toexact_dtype)rF  r   shaper   )r   r   r+  r  rs   rc   results   &&&&&& r*   smooth_l1_loss_backward_outrP    s+     %[4PFj,,/FDQQr)   c          
      T    V ^8  d   QhR\         R\         R\         R\        R\        /# )r,   r   r   r+  r  deltar>  )r4   s   "r*   r5   r5     s4     	 		%	/5	BE	NS	r)   c           
      :   V\         P                  P                  8X  d   R VP                  4       ,          MR pW,
          p\        P
                  ! Wd) 8  V) V ,          V,          \        P
                  ! Wd8  WP,          V,          WV,          V ,          4      4      # rx   )r   r&   r   r  rF   r{   )r   r   r+  r  rR  r0  r>   s   &&&&&  r*   huber_loss_backwardrT    sv    
 "+inn.B.B!B3DA;;	F
	e#AIt1E948k;QR r)   c                `    V ^8  d   QhR\         R\         R\         R\        R\        R\         /# )r,   r   r   r+  r  rR  rc   r>  )r4   s   "r*   r5   r5     sL     
R 
R
R

R 
R 	
R
 
R 
Rr)   c                 `    \        WW#V4      p\        WVP                  4       \        WeR R7      # rI  )rT  r   rN  r   )r   r   r+  r  rR  rc   rO  s   &&&&&& r*   huber_loss_backward_outrW    s+     !FuMFj,,/FDQQr)   c                    V ^8  d   QhR\         R\         R\         R\         R,          R\        R\        R\         R	\         /# 
r,   r   r   r+  r   Nr  ignore_indextotal_weightrX   rY   )r4   s   "r*   r5   r5     s\     #$ #$#$
#$ #$ TM	#$
 #$ #$ #$ #$r)   c                    VP                  4       ^8  d   ^ M^pV\        P                  P                  8X  d	   W,          p VP                  4       ^8X  d   VP                  4       ^ 8  d
   V^ ,          pVP	                  V4      p\
        P                  ! W%8g  V^ 4      p\
        P                  ! V4      p	\
        P                  ! WVR4      p	V	P                  4       V P                  4       u;8  d   ^ 8  d   M MV P	                  V4      p VeW   \        VP                  4       4       U
u. uF  p
^NK  	  pp
VP                  ^ ,          W&   VP                  V4      pW,          p \
        P                  ! W%8g  V ^ 4      p W,          # u up
i )r,   g      )rW   r   r&   r   r`   rF   r{   r8  scatterr_   rN  reshape)r   r   r+  r   r  rZ  r[  channel_dimsafe_targetrc   ra   	new_shapes   &&&&&&&     r*   _nll_loss_backwardrb    s8    xxzA~!1KINN(((!0
 xxzQ6::<!+k*F++f4fa@K!!$'JzTJJ~~+//+/a/!++K8 %dhhj 12 11Q 1	2!'a		*!*++f4k1EK## 3s   +Fc                H    V ^8  d   QhR\         R\         R\        R\         /# )r,   r   r   rW   rX   rY   )r4   s   "r*   r5   r5     s.     N Nf NF N N Nr)   c                    VP                  4       ^ 8:  d   \        R4      h\        P                  ! VP                  4       V4      pVP	                  V4      pV^,          ^ 8w  d   \        RV RV 24      hV^,          pVP                  V^ V4      pVP                  W5V4      p\        P                  ! V4      pRV,
          V,          V,          V ,          p	W,          p\        P                  ! W.VR7      # )r   z*glu does not support 0-dimensional tensorsz.Halving dimension must be even, but dimension z	 is size ry   r   )	rW   AssertionErrorr1   canonicalize_dimsizenarrowrF   r   cat)
r   r   rW   wrap_dimnIn	inputSize	firstHalf
secondHalfgradInputFirstHalfgradInputSecondHalfs
   &&&       r*   glu_backwardrq    s     xxzQIJJ%%dhhj#6H
))H
C
Qw!|<XJiPSuU
 	
 qIHa3IX)<Jz2	!	!%77)CkQ  ,999(>HMMr)   c                    V ^8  d   QhR\         R\         R\         R\         R,          R\        R\        R\         R	\         /# rY  rY   )r4   s   "r*   r5   r5   /  s\     . ..
. . TM	.
 . . . .r)   c           	         ^ VP                  4       u;8:  d   ^8:  g    M \        RVP                  4        R24      hVP                  4       ^8  d   \        RVP                  4        R24      hVP                  4       ^8H  ;'       d    VP                  4       ^ 8H  pV'       gP   VP                  ^ ,          VP                  ^ ,          8X  g'   \        RVP                   RVP                   R24      hVP                  4       ^8w  d+   \        RVP                   RVP                  4        R	24      hVe2   VP                  4       VP                  R,          8w  d   \        R
4      hV\        P
                  P                  8X  d   VP                  4       ^8X  d   V P                  4       ^8X  d*   V P                  ^ ,          VP                  ^ ,          8X  gE   \        RVP                  ^ ,           RV P                  4        RV P                  ^ ,           24      hMBV P                  4       ^8:  d   V P                  4       ^8X  g   \        RV P                   24      h\        WW#WEV4      # )r   %input tensor should be 1D or 2D, got DA0D or 1D target tensor expected, multi-target not supported, got size mismatch (got input: 
, target: ):expected total_weight to be a single element tensor, got: z (z
 elements)z<weight tensor should be defined either for all or no classesz7Expected a tensor of dimension 1 and tensor.size[0] == z but got: dimension z and tensor.size[0] == z7Expected a single element grad_output tensor, but got: r^   )rW   re  rN  r  r   r%   r   rb  )r   r   r+  r   r  rZ  r[  no_batch_dims   &&&&&&& r*   nll_loss_backwardr|  -  s.     q DTXXZLPQRSSzz|aOPVPZPZP\~]^_
 	
 88:?88vzz|q'8LTZZ]fll1o=(Jv||nAN
 	
 q H!!""\%7%7%9$:*F
 	

 flln

2>J
 	
 INN(((TXXZ1_!Q&;+<+<Q+?4::a=+P I$**UV- Y""-//"3!44KKL]L]^_L`Kac  ,Q !Q&;+<+<+>!+C I+J[J[I\]  69L r)   c                    V ^8  d   QhR\         R\         R\         R\         R,          R\        R\        R\         R	\         /# rY  rY   )r4   s   "r*   r5   r5   b  s\     $ $$
$ $ TM	$
 $ $ $ $r)   c           	         VP                  4       ^8w  d   \        RVP                  4        24      hVP                  4       ^8w  d   \        RVP                  4        24      hVP                  ^ ,          VP                  ^ ,          8X  dS   VP                  ^,          VP                  ^,          8X  d*   VP                  ^,          VP                  ^,          8X  g&   \        RVP                   RVP                   24      hVP                  4       ^8w  d+   \        RVP                   RVP                  4        R24      h\	        WW#WEV4      # )   zSonly batches of spatial inputs supported (4D tensors), but got input of dimension: zUonly batches of spatial targets supported (3D tensors) but got targets of dimension: rw  rx  rz  z ( z, elements))rW   re  rN  r  rb  )r   r   r+  r   r  rZ  r[  s   &&&&&&&r*   nll_loss2d_backwardr  `  s5    xxzQabfbjbjblamn
 	
 zz|qcdjdndndpcqr
 	

 	

1a(JJqMV\\!_,JJqMV\\!_,(Jv||nM
 	
 q  &&'s<+=+=+?*@M
 	

 69L r)   c          
      b    V ^8  d   QhR\         R\         R\         R,          R\        R\         /# )r,   r   r+  r   Nr  rX   rY   )r4   s   "r*   r5   r5     s>     1 1
11 TM1 	1
 1r)   c           	      R   V^,
          \         P                  ! \         P                  ! V ) 4      V P                  RR4      4      ,          V\         P                  ! \         P                  ! V 4      V P                  RR4      4      ,          ,
          pVe	   WB,          p\        WC4      # )r]   r    i)rF   maximumlog1pr  logr!  )r   r+  r   r  r  s   &&&& r*   binary_cross_entropyr    s~     QJ%--TEDMM"d3 uyyb$0GHHID }00r)   c                n    V ^8  d   QhR\         R\         R\         R\         R,          R\        R\         /# )r,   r   r   r+  r   Nr  rX   rY   )r4   s   "r*   r5   r5     sH      
  TM	
  r)   c                     R pWV,
          ,          \         P                  ! V^V,
          ,          VR7      ,          pVe	   Wc,          pV\        P                  P                  8X  d   WaP                  4       ,          pV# )g-q=r   )rF   r   r   r&   r   r  )r   r   r+  r   r  EPSILONrO  s   &&&&&  r*   binary_cross_entropy_backwardr    sa     G6M*U[[T9JPW-XXFINN(((**,&Mr)   c                H    V ^8  d   QhR\         R\         R\        R\         /# r,   r   r+  r  rX   rY   )r4   s   "r*   r5   r5     s0     1 111 1 	1r)   c                 |    \         P                  ! \         P                  ! V ) V,          4      4      p\        W24      # r:   )rF   r  rz   r!  )r   r+  r  r  s   &&& r*   soft_margin_lossr    s,     ;;uyy%&12D00r)   c          
      T    V ^8  d   QhR\         R\         R\         R\        R\         /# )r,   r   r   r+  r  rX   rY   )r4   s   "r*   r5   r5     s:     	 		
	 	 		
 	r)   c                     W ,          \         P                  ! W!,          4      ^,
          ,          pV\        P                  P                  8X  d   WAP                  4       ,          pV# rj   )rF   r   r   r&   r   r  )r   r   r+  r  rc   s   &&&& r*   soft_margin_loss_backwardr    sG     %v})E)IJJINN(((**,.
r)   c                <    V ^8  d   QhR\         R\         R\        /# )r,   r   r  pru   )r4   s   "r*   r5   r5     s!     ) ) )v )% )r)   c                 <    \         P                  W,
          VR 7      # ))r  )r   r0  )r   r  r  s   &&&r*   distr    s     99U]a9((r)   c                <    V ^8  d   QhR\         R\         R\         /# )r,   x1x2rX   rh   )r4   s   "r*   r5   r5     s!     & & &F &v &r)   c                    V P                  ^4      P                  RR4      p\        P                  ! V\        P                  R7      pVP                  ^4      P                  RR4      p\        P                  ! V\        P                  R7      p\        P
                  ! V P                  R4      W#.R4      p\        P
                  ! WV.R4      pVP                  VP                  4      pVP                  ^ 4      P                  4       # )r,   Tmemory_formatr^   )r  r   rF   	ones_likecontiguous_formatri  r  matmulmT	clamp_minsqrt)	r  r  x1_normx1_padx2_normx2_padx1_x2_rO  s	   &&       r*   _euclidean_distr    s     ffQimmB%G__WE4K4KLFffQimmB%G__WE4K4KLF
))RVVBZ12
6C
))R)2
.CZZFA##%%r)   c                v    V ^8  d   QhR\         R\        \        ,          R\        R\        R\        R\        /# )r,   r   input_sizesrW   startendstepr   listrZ   )r4   s   "r*   r5   r5     sP     	O 	O	Oc	O 
	O 		O
 
	O 	Or)   c                 T    V P                  V4      p\        P                  ! W`W#WE4      # r:   )	new_zerosrF   slice_scatter)r   r  rW   r  r  r  rc   s   &&&&&& r*   slice_backwardr    s)     &&{3JzCNNr)   c          
      p    V ^8  d   QhR\         R\        R\        R,          R\        R,          R\        /# )r,   r   rW   r  Nr  r  rY   )r4   s   "r*   r5   r5     sD     3? 3?
3? 
3? :	3?
 
t3? 3?r)   c                    ^ RI Hp V P                  4       pV^ 8X  d   \        R4      h\        P
                  ! V P                  4       V4      p\        V P                  4       4      p\        V P                  4       4      pV^ 8:  d   \        R4      hVe   TM^ p	Ve   TM\        P                  p
V	^ 8  d   WV,          ,          p	V
^ 8  d   WV,          ,          p
V	^ 8  d   ^ p	MWV,          8  d	   Wq,          p	V! V
\        P                  8H  4      '       d
   Wq,          p
MW8  d   T	p
MWV,          8  d	   Wq,          p
V P                  4       WV,          ,          ,           pW,
          pW,           ^,
          V,          Wq&   W;;,          V,          uu&   V P                  '       d   \        R4      hV P                  WxV4      # )r   statically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positivez<Slice decomposition for quantized tensors aren't implemented)%torch.fx.experimental.symbolic_shapesr  rW   RuntimeErrorr1   rf  r  rg  stridesysmaxsizestorage_offsetis_quantizedNotImplementedError
as_strided)r   rW   r  r  r  r  ndimsizesstrides	start_valend_valr  lens   &&&&&        r*   slice_forwardr    su    L88:DqyIJJ

 
 S
1CE4;;=!Gqy899*I_c#++G1}3Z	{:1}		3Z	J	W344*			:	*((*Y-EEN

C*q.T)EJLDL!J
 	
 u~>>r)   c                    V ^8  d   QhR\         R\        R\        R,          R\        R,          R\        \        \        3,          /# )r,   r>   rW   r  Nr  rX   r   rZ   r   )r4   s   "r*   r5   r5   %  sD       #d
14t
38_r)   c                l   a V P                   V,          oR V3R llpV! V^ S^ 4      pV! W2SS4      pW#3# )zb
Normalize start and end such that both are in the range
[0, x.get_size()[dim]] and start <= end.
c                $    V ^8  d   QhR\         /# r,   rX   )rZ   )r4   s   "r*   r5   *_normalize_start_end.<locals>.__annotate__.  s     + +# +r)   c                 Z   < V f   V# V ^ 8  d
   V S,           p \        \        W4      V4      # r:   r   r   )valr   r   defaultdim_sizes   &&&&r*   
clamp_wrap(_normalize_start_end.<locals>.clamp_wrap.  s.    ;N7.C3s?E**r)   rN  )r>   rW   r  r  r  r  s   &&&& @r*   _normalize_start_endr  %  sD     wws|H+ + ua1-E
S8
4C:r)   c                |    V ^8  d   QhR\         R\         R\        R\        R,          R\        R,          R\        /# )r,   r   srcrW   r  Nr  r  rY   )r4   s   "r*   r5   r5   >  sT     $U $U$U	$U 
$U :	$U
 
t$U $Ur)   c           	         \         P                  ! V P                  V4      pV P                  V,          p\	        WW44      w  r4\        V P                  4      pWC,
          V^,
          ,           V,          Wr&   VP                  V4      pV^ 8X  d   WF8X  d   V^8X  d   VP                  4       # R.V P                  4       ,          p\        P                  ! W`P                  R7      p	W,
          V,          W&   \        P                  ! W`P                  \        P                  R7      p
V^ 8w  d   \        P                  ! WV8  4      p
WF8w  d   \        P                  ! WV8  4      p
V^8w  d(   \        P                  ! WV,
          V,          ^ 8H  4      p
^.V P                  4       ,          pRW&   V
P                  V4      p
\         P#                  V
\         P%                  WV^ 4      V 4      # )r]   Ndevicer  r  r^   )r1   rf  r  rN  r  r  expandclonerW   rF   aranger  onesr3   logical_andviewr   r{   _unsafe_masked_index)r   r  rW   r  r  r  r  src_sizeindicesidxmask
mask_shapes   &&&&&&      r*   r  r  <  sr    
 
 S
1C{{3H%e%=JEEKK H[D1H-$6HM
**X
Czco$!)yy{$(6EIIK#7G
,,x
5CKD(GL::h||5::FDz  e|4
  Sy1qy  et';q'@Auyy{"JJO99Z D::dD55c!LeTTr)   c                ^    V ^8  d   QhR\         R\        \        ,          R\        R\        /# )r,   r   r  rW   indexr  )r4   s   "r*   r5   r5   g  s3     E E Ed3i Ec ERU Er)   c                 R    V P                  V4      p\        P                  ! W@W#4      # r:   )r  rF   select_scatter)r   r  rW   r  rc   s   &&&& r*   select_backwardr  e  s'     &&{3J
DDr)   c          
      j    V ^8  d   QhR\         R\        \        ,          R\        R\        R\        /# )r,   r   r  offsetdim1dim2r  )r4   s   "r*   r5   r5   n  s?     O OO&*3iO9<ODGOOROr)   c                 T    V P                  V4      p\        P                  ! WPW#V4      # r:   )r  rF   diagonal_scatter)r   r  r  r  r  rc   s   &&&&& r*   diagonal_backwardr  l  s)    
 &&{3J!!*6NNr)   c                P    V ^8  d   QhR\         R\         R\        P                  /# )r,   r   rc   input_dtyper   rF   r  )r4   s   "r*   r5   r5   u  s(      %+:?++r)   c                 J    V P                   V8w  d   VP                  V4      pV# r:   )r  r=   )r   rc   r  s   &&&r*   _cast_grad_to_input_dtyper  u  s&     K']];/
r)   c                \    V ^8  d   QhR\         R\         R\        R\        P                  /# r,   r   outputrW   r  r   rZ   rF   r  )r4   s   "r*   r5   r5     s6     X XX!'X.1X@EXr)   c                     W,          pWA\         P                  ! WBR R7      ,          ,
          p\        WV4      P                  4       # Tr3  )rF   r   r  
contiguous)r   r  rW   r  new_grad_outputrc   s   &&&&  r*   _softmax_backward_datar  }  sC     "*O EII$- $ J %[kJUUWWr)   c                \    V ^8  d   QhR\         R\         R\        R\        P                  /# r  r  )r4   s   "r*   r5   r5     s6     K KK!'K.1K@EKr)   c                     V \         P                  ! V4      \         P                  ! WR R7      ,          ,
          p\        WV4      # r   )rF   rz   r   r  )r   r  rW   r  rc   s   &&&& r*   _log_softmax_backward_datar    s=     uyy0599d4   J %[kJJr)   c                   W^,          ,           W!^,
          ,          ,
          p\        \        P                  \        P                  VR7      pV! ^ Wd4      P	                  ^ 4      pV! ^ W,          V4      P	                  R4      p	W,           # )z/Utility function to implement im2col and col2imr  r  r^   )r   rF   r  int64r`   )
input_dkernel_d
dilation_d	padding_dstride_dr  blocks_d	arange_kwblocks_d_indiceskernel_grids
   &&&&&&    r*    _im2col_col2im_indices_along_dimr    su     Q&!|)DDHEKKGI !H7AA!D Ax4jAKKBOK ))r)   c                    V ^8  d   QhR\         R\        \        ,          R\        \        ,          R\        \        ,          R\        \        ,          R\         /# )r,   r   kernel_sizedilationpaddingr  rX   r  )r4   s   "r*   r5   r5     s\     M MMcM 3iM #Y	M
 IM Mr)   c           
        aaaaaa \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       RR lpV! SR4       V! SR4       V! SR	R
R7       V! SR4       V P                  o\        S4      p\         P                  ! VR9   ;'       d;    \        ;QJ d    R SRR  4       F  '       d   K   R
M	  RM! R SRR  4       4      V3R l4       \
        ;QJ d$    . R \        SRR SSSS4       4       F  NK  	  5M! R \        SRR SSSS4       4       4      o\         P                  ! \        ;QJ d    R S 4       F  '       d   K   R
M	  RM! R S 4       4      VVVVVV3R l4       V^8H  pV'       g   V P                  ^ 4      p V P                  w  rrSw  rSw  rSw  ppSw  pp\        V
VVWV P                  4      p\        VVVWV P                  4      p\        P                  ! WWV34      pVP                  R4      P                  R4      pVRRVV3,          pVP                  ^ ^^^^^4      pVP                  ^4      pVP                  ^4      pVP                  WV,          V,          VV,          4      pV'       g   VP                  ^ 4      pV# )r,   c                      R # )z"im2col(): only 2D kernel supportedr    r    r)   r*   r   im2col.<locals>.<lambda>  s    0Tr)   c                      R # )z$im2col(): only 2D dilation supportedr    r    r)   r*   r   r    s    -Sr)   c                      R # )z#im2col(): only 2D padding supportedr    r    r)   r*   r   r    s    ,Qr)   c                      R # )z"im2col(): only 2D stride supportedr    r    r)   r*   r   r    s    +Or)   Tc                 "  a a V'       d5   \         ;QJ d    R  S  4       F  '       d   K   RME	  RMA! R  S  4       4      M3\         ;QJ d    R S  4       F  '       d   K   RM	  RM! R S  4       4      p\        P                  ! VV V3R l4       R# )c              3   *   "   T F	  q^ 8  x  K  	  R# 5ir   Nr    .0r  s   & r*   	<genexpr>1im2col.<locals>.check_positive.<locals>.<genexpr>       (%Qq5%   FTc              3   *   "   T F	  q^ 8  x  K  	  R# 5ir   r    r!  s   & r*   r#  r$         ;REqFEr&  c                     < S R S  2# z& should be greater than zero, but got r    param
param_names   r*   r   0im2col.<locals>.check_positive.<locals>.<lambda>      ZL(NugVr)   Nr7  rF   r   r,  r-  strictconds   ff& r*   check_positiveim2col.<locals>.check_positive  T    ,2ss(%(sss(%((;RE;R;RE;R8RV	
r)   r  r  r  Fr2  r  c              3   *   "   T F	  q^ 8g  x  K  	  R# 5ir   r    r"  ds   & r*   r#  im2col.<locals>.<genexpr>       :z!Avzr&  Nc                      < R \        S 4       2# )zmExpected 3D or 4D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: r   r  s   r*   r   r         --25\N<r)   c              3      "   T FB  w  rr4p^V^V,          ,           W4^,
          ,          ,
          ^,
          V,          ,           x  KD  	  R# 5ir]   Nr    )r"  r   paddilkersts   &     r*   r#  r;    sG      '
"Cc 	
S1s7]S!G_,q0R777'
s   A
Ac              3   *   "   T F	  q^ 8  x  K  	  R# 5ir   r    )r"  cs   & r*   r#  r;    s     ';aE;r&  c                  F   < R \        SRR 4       RS RS  RS RS RS R2# )	z!Given an input with spatial size N, kernel_size=, dilation=
, padding=	, stride=z9, the calculated shape of the array of sliding blocks is z*, but its components must be at least one.r  r>  )r  r  output_sizer  rN  r  s   r*   r   r    sJ    3E%*4E3F G"m;xj 9)9VH -]D	Fr)   NNNTr   r  r   r  r^   )rF   r   r  rN  r7  r   zipr`   r  r  r   rB  permuterg  r^  squeeze)r   r  r  r  r  r4  r  batched_input	batch_dimr_  input_hinput_wstride_hstride_w	padding_h	padding_w
dilation_h
dilation_wkernel_hkernel_wblocks_row_indicesblocks_col_indicespadded_inputr  num_blocks_rownum_blocks_colrM  rN  s   &ffff                     @@r*   im2colre    s    
LL[!Q&(TU	LLX!#%ST	LLW"$QR	LLV!#OP
 ;.8Z(8Yu568$KKEu:D	LL::33:uRSz:333:uRSz::	<
 % &)"#J;'
%% &)"#J;'
 K 
LL';'';''	F 	F AIM"/4{{,IGH"I%J
$Hh9:yELL ::yELL 55I) LML+55b9CCBG!Q 24FFGF^^Aq!Q1-F',,Q/N',,Q/N^^)H4n~6UF "Mr)   c                    V ^8  d   QhR\         R\        \        ,          R\        \        ,          R\        \        ,          R\        \        ,          R\        \        ,          R\         /# )r,   r   rM  r  r  r  r  rX   r  )r4   s   "r*   r5   r5     sk     ] ]]c] c] 3i	]
 #Y] I] ]r)   c                   aaaaaa!a" \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       \         P                  ! \        S4      ^8H  R 4       RR lpV! SR4       V! SR	4       V! SR
RR7       V! SR4       V! SR4       V P                  o"\        S"4      p\         P                  ! VR9   ;'       d;    \        ;QJ d    R S"RR  4       F  '       d   K   RM	  RM! R S"RR  4       4      V"3R l4       S^ ,          S^,          ,          p\         P                  ! S"R,          V,          ^ 8H  VV"3R l4       \        SSSSS4       U	U
UUUu. uF@  w  rrp^V	^V
,          ,           W^,
          ,          ,
          ^,
          V,          ,           NKB  	  pppp
p	pV^ ,          V^,          ,          o!\         P                  ! S"R,          S!8H  V!VVVVV"V3R l4       \         P                  ! S!^ 8  V!VVVVV"V3R l4       V^8H  pV'       g   V P                  ^ 4      p V P                  o"Sw  ppSw  ppSw  ppSw  ppSw  ppV P                  S"^ ,          S"^,          V,          .S,           V,           4      p V P                  ^ ^^^^^4      p \        VVVVVV P                  4      p\        V^4      p\        VVVVVV P                  4      p\        SS4       UUu. uF  w  ppV^V,          ,           NK  	  pppV P                  S"^ ,          S"^,          \        S4      ,          .V,           4      pRRVV3p \        P                  VV V RR7      p\         P"                  ! VV) V) V) V) 34      pV'       g   VP%                  ^ 4      pV# u upppp
p	i u uppi )r,   c                      R # )zonly 2D output_size supportedr    r    r)   r*   r   col2im.<locals>.<lambda>  s    0Or)   c                      R # )zonly 2D kernel supportedr    r    r)   r*   r   ri    s    0Jr)   c                      R # )zonly 2D dilation supportedr    r    r)   r*   r   ri    s    -Ir)   c                      R # )zonly 2D padding supportedr    r    r)   r*   r   ri    s    ,Gr)   c                      R # )zonly 2D stride supportedr    r    r)   r*   r   ri    s    +Er)   Tc                 "  a a V'       d5   \         ;QJ d    R  S  4       F  '       d   K   RME	  RMA! R  S  4       4      M3\         ;QJ d    R S  4       F  '       d   K   RM	  RM! R S  4       4      p\        P                  ! VV V3R l4       R# )c              3   *   "   T F	  q^ 8  x  K  	  R# 5ir   r    r!  s   & r*   r#  1col2im.<locals>.check_positive.<locals>.<genexpr>  r%  r&  FTc              3   *   "   T F	  q^ 8  x  K  	  R# 5ir   r    r!  s   & r*   r#  rp    r(  r&  c                     < S R S  2# r*  r    r+  s   r*   r   0col2im.<locals>.check_positive.<locals>.<lambda>  r/  r)   Nr0  r1  s   ff& r*   r4  col2im.<locals>.check_positive  r6  r)   r  r  r  Fr7  r  rM  c              3   *   "   T F	  q^ 8g  x  K  	  R# 5ir   r    r9  s   & r*   r#  col2im.<locals>.<genexpr>   r<  r&  Nc                      < R \        S 4       2# )zmExpected 2D or 3D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: r>  r  s   r*   r   ri  !  r?  r)   c                  "   < R SR,           RS  2# )z|Expected size of input's first non-batch dimension to be divisible by the product of kernel_size, but got input.shape[-2] = z and kernel_size=r  r    )r  rN  s   r*   r   ri  '  s!     ==B2YK H"m%r)   c                  B   < R S RS RS RS RS RS  RSR,           R2# 	zGiven output_size=rI  rJ  rK  rL  z , expected input.size(-1) to be 	 but got .r^   r    Lr  r  rM  r  rN  r  s   r*   r   ri  4  D    $[M} M:Zy	& B))*9U2YKqBr)   c                  B   < R S RS RS RS RS RS  RSR,           R2# rz  r    r}  s   r*   r   ri  :  r  r)   
accumulaterO  )r,   r   r  r^   )rF   r   r  rN  r7  rQ  r`   r^  rR  r  r  rb   r  prodr   _unsafe_index_putr   rB  rS  )#r   rM  r  r  r  r  r4  r  prod_kernel_sizer   rB  rC  rD  rE  colrT  out_hout_wrX  rY  rZ  r[  r\  r]  r^  r_  indices_rowindices_color  output_padded_sizer  r  r~  rN  s#   &fffff                           @@r*   col2imr     s    
LL[!Q&(OP	LL[!Q&(JK	LLX!#%IJ	LLW"$GH	LLV!#EF
 ;.8Z(7Ie468$;.KKEu:D	LL::33:uRSz:333:uRSz::	<
 #1~A6	LLb	$$)	% '*(K'
'
"Cc 	
S1s7]S!G_,q0R777'
   	AQA	LLb	Q	B 	B 
LL	A	B 	B AIM"KKELE5Hh"Iy%J
$Hh MM58U1X1A%AB[PSVVWEMM!Q1a+E2xY%,,K $K3K2xY%,,K 14K0IJ0I1!a!e))0IJ__	q58tK0014FFF {K
0C##FC4#HFUU6YJ
YJ
KLF"MkV Ks    AP P	c                <    V ^8  d   QhR\         R\         R\        /# )r,   r   r  r   ru   )r4   s   "r*   r5   r5   e  s!     
 
 
v 
e 
r)   c                     WP                  V 4      V,          ,          P                  \        P                  ! V 4      R 7      pV# )r  )type_asr  r1   r   )r   r  r   rP   s   &&& r*   native_dropout_backwardr  c  s@     
[1E9	:AA11+> 	B 	A Hr)   c                v    V ^8  d   QhR\         R\        \        ,          R\        R\        R\        R\         /# )r,   r   
input_size	dimensionrg  r  rX   r  )r4   s   "r*   r5   r5   t  sH     Y Y
Y"3iY47Y?BYJMYYr)   c                 ,   \        V4      ^ 8X  d   \        P                  ! V ^ 4      # \        P                  ! \        V4      V4      p\        P
                  ! W,          V P                  \        P                  R7      pVP                  ^ W44      P                  4       pV P                  RV^,           4      P                  WU^,           4      p V P                  V4      pRV,          V3,           p\        P                  WxV RR7      P                  4       # )r   r  Tr  r^   r:   )r  rF   squeeze_copyr1   rf  r  r  int32unfoldflattenmovedimr  r   r  r  )	r   r  r  rg  r  rW   r  rc   r  s	   &&&&&    r*   unfold_backwardr  r  s    
 :!!!$**

 
 Z)
<C
,,zt{{%++
NC
**Q
#
+
+
-C<<C!G$,,S':D 
+JcMSF"E!!*Td!KVVXXr)   c                V    V ^8  d   QhR\         R\         R\        R,          R\         /# )r,   r   r   epsNrX   ru   )r4   s   "r*   r5   r5     s0     
 

%
,1DL

r)   c           
      j   VeQ   TpRV,
          p\         P                  ! \         P                  ! W8  W8*  4      WRV,
          ,          ,          R4      # \         P                  ! \         P                  ! VR8  VR8*  4      WRV,
          ,          ,          VP                  R\	        R4      4      4      # )Nry   r   nanr    )rF   r{   r  r  rv   )r   r   r  lohis   &&&  r*   logit_backwardr    s    
 2X{{dj$*53:./
 	
 {{dck43;73:./MM"eEl+
 	
r)   c                J    V ^8  d   QhR\         R\        R\        R,          /# r,   r   r  trainNr   )r4   s   "r*   r5   r5     s%      6 e D4K r)   c                 z    V'       d%   V^ 8w  d   \         P                  WV4      ^ ,          # V P                  4       # r   )r   native_dropoutr  )r   r  r  s   &&&r*   dropoutr    s1     a""5U3A66{{}r)   out0out1c                J    V ^8  d   QhR\         R\        R\        R,          /# r  r   )r4   s   "r*   r5   r5     s*     A A& AU A4$; Ar)   c                    V'       d   V^ 8w  d   V^8X  d=   \         P                  ! V 4      \         P                  ! V \         P                  R7      3# V P                  P                  '       g   \        R4      h\         P                  ! V 4      V8  pW0,          \        RRV,
          ,          4      ,          pWC3# V \         P                  ! V \         P                  R7      3# )r   r  z?result type Float can't be cast to the desired output type Longry   )	rF   r8  r3   r  is_floating_pointr  	rand_likerv   r  )r   r  r  	bool_maskress   &&&  r*   r  r    s     a6$$U+U-=-=e5::-VWW{{,,,Q  OOE*Q.	%sQw"88uuEJJ?@@r)   c                <    V ^8  d   QhR\         R\        R\        /# r,   r>   rW   half_to_floatr   rZ   r3   )r4   s   "r*   r5   r5     s!       S  r)   c                 |   ^ RI Hp V P                  4       p V'       d9   V P                  \        P
                  8w  d   \        RV P                   R24      h\        P                  ! V \        P                  P                  R7      w  rEV P                  V4      p V! V P                  4       ^ 8H  4      '       d   \        P                  ! V 4      pM4\        P                  ! WRR7      p\        P                  ! W,
          4      pV\        P                  ! WaRR7      ,          pV'       g   VP                  V4      pV# r   guard_or_falsez%half_to_float is True but x.dtype is z, expected torch.halfr8   T)r4  )r  r  r  r  rF   halfre  r1   rK   r2   DEFAULTr=   r  rz   amaxr   )	r>   rW   r  r  r?   rC   unnormalizedx_maxrO  s	   &&&      r*   _softmaxr    s     E 	
A77ejj  7y@UV  ',&>&>	uDDLL'# 	
Aaggi1n%%yy|

140yy+EIIlFFF<(Mr)   )rM  c                <    V ^8  d   QhR\         R\        R\        /# r  r  )r4   s   "r*   r5   r5     s!      F  T r)   c                    ^ RI Hp V P                  4       p V'       d9   V P                  \        P
                  8w  d   \        RV P                   R24      h\        P                  ! V \        P                  P                  R7      w  rEV P                  V4      p V! V P                  4       ^ 8H  4      '       d   T pM \        P                  ! WRR7      pW,
          p\        P                  ! \        P                  ! \        P                   ! V4      VRR7      4      pWh,
          p	V'       g   V	P                  V4      p	V	# r  )r  r  r  r  rF   r  re  r1   rK   r2   r  r=   r  r  r  r   rz   )
r>   rW   r  r  r?   rC   shiftedr  shifted_logsumexprO  s
   &&&       r*   _log_softmaxr    s     E 	
A77ejj  7y@UV  ',&>&>	uDDLL'# 	
Aaggi1n%%

140)		%))EIIg,>T"RS(F<(Mr)   c                `    V ^8  d   QhR\         R\         R\        R\        R\        R\         /# )r,   r   r  padding_idxscale_grad_by_freqsparserX   r  )r4   s   "r*   r5   r5     sD        	
  r)   c                    V P                  4       ^8w  d   \        RV P                  4        R24      hVP                  ^8:  d7   V P                  ^ V4      pVP                  ^ 8X  d   VP	                  ^ 4      pV# W,          # )r,   z'weight' must be 2-D, got z-D)rW   re  r  index_selectrS  )r   r  r  r  r  r   s   &&&&& r*   	embeddingr    sq     zz|q9&**,rJKK||q!!!W-<<1++a.C
r)   c          
      T    V ^8  d   QhR\         R\         R\        R\        R\        /# )r,   r   r  num_weightsr  r  r  )r4   s   "r*   r5   r5     s:        	
 r)   c                    \         P                  ! V \         P                  P                  R 7      w  rVV P	                  V4      p \        V\        P                  4      pV'       da   VP                  V34      p\        P                  ! V4      p\        P                  Wq.VRR7      pWq,          p	W	P                  R4      ,          p \        W8H  V P                  4      p
V P                  V
^ 4      pV P                  V3V P                   VP                  R ,           4      p\        P                  W.VRR7      P	                  V4      # )r  Tr  Nr^   )r1   rK   r2   r  r=   r   rF   longr  r  r   r  r`   rb   r  masked_fillrN  )r   r  r  r  r  r?   rC   countsr  grad_weights_scaler  r   grad_weights   &&&&&        r*   embedding_dense_backwardr    s    ',&>&>)N)N)V)V'# ..!23K%guzz:G""K>2w'''	4D'Q#_!$@$@$DDW3[5E5EFD""4+D''	**7<<>::K !!+y$4!PSS r)   c                :    V ^8  d   QhR\         \        ,          /# )r,   r>   )r  rZ   )r4   s   "r*   r5   r5   #  s      DI r)   c                 ,    ^pV  F  pW,          pK  	  V# rj   r    )r>   rP   is   &  r*   r  r  #  s    	A	 Hr)   c          	      t    V ^8  d   QhR\         \        ,          R\        R\        R\         \        ,          /# )r,   tensorsrW   
num_chunksrX   r  r   rZ   )r4   s   "r*   r5   r5   *  s8      &\	  
&\	r)   c                    . pV  F  pVP                  4       pWQ,          V,           ^,
          V,          V,          pWeV,          8w  dV   ^ .^,          VP                  V,
          ^,
          ,          ^ WeV,          ,
          .,           p\        P                  WG^ 4      pVRV \        P
                  ! VR.4      ,           pVP                  VP                  V4      4       K  	  V# )r]   Nr^   )rg  r  r   constant_pad_ndrF   Sizeappendr^  )	r  rW   r  padded_tensorstensortensor_sizepad_along_dimrB  	view_sizes	   &&&      r*   
_pad_chunkr  *  s    
 Nkkm$)J6:zIJV,,#'V[[3.23C 007 C ))&q9F%

J3C(DD	fnnY78  r)   c                :    V ^8  d   QhR\         \        ,          /# )r,   r  r  r   )r4   s   "r*   r5   r5   ?  s      T&\ r)   c                 f    V ^ ,          P                   pV  F  pVP                   V8w  g   K   R# 	  R# )r   FTr  )r  r  r  s   &  r*   have_same_ndimsr  ?  s-    1:??D;;$  r)   c                F    V ^8  d   QhR\         \        ,          R\        /# )r,   r  rW   r  )r4   s   "r*   r5   r5   G  s     
 
tF| 
# 
r)   c                     V ^ ,          P                  4       RV pV  F/  p\        P                  ! VP                  4       RV V8H  R 4       K1  	  R# )r   Nc                      R # )zG_chunk_cat expects same sizes of 0,...,dim-1 dimensions for all tensorsr    r    r)   r*   r   +leading_dimension_matches.<locals>.<lambda>L  s    ]r)   )rg  rF   r   )r  rW   leading_dim_sizesr  s   &&  r*   leading_dimension_matchesr  G  sI    
)$3/KKM$3#44]	
 r)   c                R    V ^8  d   QhR\         \        ,          R\        R\        /# )r,   r  rW   r  r  )r4   s   "r*   r5   r5   P  s*     " "&\"	" "r)   c                    \         P                  ! V^8  R 4       \         P                  ! \        V 4      ^ 8  R 4       V ^ ,          P                  pV ^ ,          P                  pV  Fv  p\         P                  ! VP                  4       ^ 8  R 4       \         P                  ! VP                  V8H  R 4       \         P                  ! VP                  V8H  R 4       Kx  	  \        V 4      '       d.   \        P                  ! V ^ ,          P                  4       V4      pMH\         P                  ! V^ 8  R 4       V  F'  p\         P                  ! WP                  8  R 4       K)  	  \        W4       V# )r]   c                      R # )z&_chunk_cat expects positive num_chunksr    r    r)   r*   r   ._preprocess_chunk_cat_inputs.<locals>.<lambda>U  s    *Rr)   c                      R # )z0_chunk_cat expects a non-empty input tensor listr    r    r)   r*   r   r  W  s    "Tr)   c                      R # )z#_chunk_cat expects non-empty tensorr    r    r)   r*   r   r  \  s    1Vr)   c                      R # )z8_chunk_cat expects all input tensors with the same dtyper    r    r)   r*   r   r  _      Nr)   c                      R # )z8_chunk_cat expects all inputs tensors on the same devicer    r    r)   r*   r   r  c  r  r)   c                      R # )zK_chunk_cat expects non-negative dim when input tensors have different ndimsr    r    r)   r*   r   r  j  s    ar)   c                      R # )z3_chunk_cat expects dim < ndim for all input tensorsr    r    r)   r*   r   r  o      Mr)   )rF   r   r  r  r  r  r  r1   rf  rW   r  r  )r  rW   r  expected_dtypeexpected_devicer  s   &&&   r*   _preprocess_chunk_cat_inputsr  P  s"   
 
LLq"RS	LLGqT QZ%%Naj''OV\\^a')VWLLN*N	
 	MM_,N	
  w$$WQZ^^%5s;1Ha	
 FLLkk!M 
 g+Jr)   c          
      x    V ^8  d   QhR\         \        ,          R\        R\        R\        R,          R\        /# )r,   r  rW   r  r   NrX   r  )r4   s   "r*   r5   r5   v  sB      &\	  
$	
 r)   c                     \        WV4      p\        WV4      pVf   \        P                  ! WA^,           4      # \        P                  ! WA^,           VR7       V# )N)r   )r  r  rF   ri  )r  rW   r  r   r  s   &&&& r*   
_chunk_catr  u  sK     'wZ
@Cj9N
{yyq11		.'s3
r)   c                    V ^8  d   QhR\         R\        \        ,          R\        R\        \         ,          R,          R\        \         ,          R,          /# )r,   r   split_sizesrW   r   NrX   r  )r4   s   "r*   r5   r5     sP      
c 
 
f		
 
&\Dr)   c                    \         P                  WVR 7      pVf0   V Uu. uF"  qUP                  \        P                  R7      NK$  	  up# \        W44       F'  w  rg\        WgP                  4       \        WvRR7       K)  	  R# u upi )r   Nr  TrJ  )	r   split_with_sizesr  rF   r  rQ  r   rN  r   )r   r  rW   r   splitssr  splits   &&&&    r*   split_with_sizes_copyr
    st     ""4#">F
{HNO1e&=&=>OO -MFfkk2UM .  Ps   (Bc          
      b    V ^8  d   QhR\         R\        R\        R\        \         R3,          /# )r,   r   
split_sizerW   rX   .r  )r4   s   "r*   r5   r5     s2     5 5 5C 5c 5%PSBT 5r)   c                 B    \         P                  P                  WV4      # r:   )r   r	  r   )r   r  rW   s   &&&r*   unsafe_splitr    s    ::U44r)   c          
      x    V ^8  d   QhR\         R\        \        ,          R\        R\        \         R3,          /# )r,   r   r  rW   rX   .)r   r  rZ   r   )r4   s   "r*   r5   r5     s?     B BB $S	B03B
63;Br)   c                 B    \         P                  P                  WV4      # r:   )r   r  r  )r   r  rW   s   &&&r*   unsafe_split_with_sizesr    s       ((SAAr)   c          
      b    V ^8  d   QhR\         R\        R\        R\        \         R3,          /# )r,   r   r  rW   rX   .r  )r4   s   "r*   r5   r5     s1     / / /C /c /%:L /r)   c                 j   V P                   pW2,          pV^ 8X  d(   V^ 8w  d   \        RV R24      hV P                  4       3# YA,           ^,
          V,          p^ RIHp V! V4      p\        V4       Uu. uF  qqNK  	  ppWV,          V,
          ,
          VR&   \        P                  ! WV4      # u upi )r   z split_size is 0 but dim_size is z, expected 0)	guard_intr^   )rN  re  detachr  r  r_   rF   r	  )	r   r  rW   r  r  chunksr  r  r  s	   &&&      r*   r	  r	    s    **KHQq= 28*LI  #a'J6F @vF',V}5}!:}K5 $7($BCKO;;t#.. 6s   4
B0c          
      b    V ^8  d   QhR\         R\         R\        R\        \         R3,          /# )r,   r   tensor_indices_or_sectionsrW   rX   .r  )r4   s   "r*   r5   r5     s9     // //
// &// 
// 63;	//r)   c                 d  a	 VP                   P                  R 8w  d   \        RVP                    24      hVP                  \        P
                  8w  d   \        RVP                   24      hVP                  4       o	\        P                  ! S	^8H  ;'       g    S	^ 8H  V	3R l4       S	^ 8X  dY   VP                  4       p\        V\        4      '       g"   \        R\        V4      P                   24      hV P                  W24      # \        p\        P                  P                  4       ;p'       d!   VP                   ;p'       d   VP"                  pV! 4       ;_uu_ 4        V Uu. uF  qwP                  4       NK  	  ppRRR4       V P                  XV4      # u upi   + '       g   i     L'; i)cpuz/tensor_indices_or_sections must be on CPU, got z.tensor_indices_or_sections must be int64, got c                     < R S  R2# )z{tensor_split expected tensor_indices_or_sections to be a zero-dimensional or one-dimensional tensor, but got a tensor with z dimsr    )	split_dims   r*   r   Atensor_split_tensor_indices_or_sections_py_impl.<locals>.<lambda>  s     <<E;eMr)   z%Expected sections to be IntLike, got N)r  typere  r  rF   r	  rW   r   itemr<   r   r!   tensor_splitr   _guardsdetect_fake_mode	shape_envignore_fresh_unbacked_symbols)
r   r  rW   sectionsctx	fake_moder#  r  r  r  s
   &&&      @r*   /tensor_split_tensor_indices_or_sections_py_implr(    s}    "((--6=>X>_>_=`a
 	
 "''5;;6<=W=]=]<^_
 	
 +..0I	LLQ(()q.	M
 A~-224(G,, 7X8O8O7PQ    //7799I9",,,I,99C
 UU)CD)CAvvx)CGD    #.. E Us   !F&F>FFF/	c          
      T    V ^8  d   QhR\         R\         R\         R\        R\        /# )r,   r   mat1mat2rs   r   rY   )r4   s   "r*   r5   r5     s/       f F # # r)   c                     V P                  4       '       g-   V P                  4       '       g   \        V4      p\        V4      pV\        P                  ! W4      ,          pV^ 8X  d   V# WSV ,          ,           # r   )r  
is_complexrZ   rF   mm)r   r*  r+  rs   r   r   s   &&&&& r*   addmmr/    s_     !!##DOO,=,=4yE

%((4&
&Cqy
 r)   c                `    V ^8  d   QhR\         R\         R\         R\        R\        R\        /# )r,   r   r*  r+  rs   r   use_gelur  )r4   s   "r*   r5   r5     sD      

  	
  r)   c                     \        WW#V4      pV'       d?   V P                  '       d   \        P                  VR R7      # \        P                  V4      # \        P	                  V4      # )r   )r   )r/  is_cudar   gelurelu)r   r*  r+  rs   r   r1  r   s   &&&&&& r*   _addmm_activationr6    sM     D
.C<<<99Sf95599S>!99S>r)   c          
      T    V ^8  d   QhR\         R\         R\         R\        R\        /# )r,   r   r*  vecrs   r   rY   )r4   s   "r*   r5   r5     s/     	 	 	f 	6 	 	 	r)   c                 *   V P                  4       '       g-   V P                  4       '       g   \        V4      p\        V4      pV\        P                  ! W4      ,          pV^ 8X  d   V# VP                  4       ^ 8X  d	   W0,          # WSV ,          ,           # r   )r  r-  rZ   rF   mvr  )r   r*  r8  rs   r   r   s   &&&&& r*   addmvr;    ss     !!##DOO,=,=4yE

%((4%
%Cqy

yy{a{r)   c                   V ^8  d   QhR\         R\         R\         R\         R\         R,          R\        R\        R	\        R
\        R\        \        ,          R\        \         R,          \         R,          \         R,          3,          /# )r,   r   r   r  rstdgammaNNCHxWgroupoutput_maskrX   )r   rZ   r  r3   r   )r4   s   "r*   r5   r5   )  s     S& S&S&S& S& 	S&
 D=S& S& S& 
S& S& dS& 6D=&4-$67S&r)   c
           	      V	  aaaaaa \         P                  ! WSVR R7       \         P                  ! WR R7       \         P                  ! SVR R7       \        P                  ! VP                  4       SS,          S,          8H  VVV3R l4       \        P                  ! SP                  SS38H  VVV3R l4       \        P                  ! SRJ ;'       g    SP                  4       S8H  VV3R l4       SS,          p
\        P                  ! SV
S,          8H  VV3R l4       \        P                  ! W4      P                  SSS4      P                  ^.R7      pV P                  SSS4      P                  ^.R7      pRpRpRpV	^ ,          '       Edl   RSV
,          ,          pSe   \        P                  ! VSP                  ^ 4      4      P                  SSV
4      P                  ^4      p\        P                  ! VSP                  ^ 4      4      P                  SSV
4      P                  ^4      p\        P                  ! VP                  R
4      SP                  ^SV
4      4      pMVP                  SSV
4      P                  ^4      pVP                  SSV
4      P                  ^4      p\        P                  ! VP                  R
4      \        P                  ! ^SV
3VP                  R	7      4      pVS,          V,
          V,          V,          V,          V,          pV) S,          VV,          V,          ,
          pVP                  R
4      p\        V^4      p\        V^4      p\        P                  ! V P                  SSV
S4      V4      \        P                  ! VP                  SSV
S4      V4      ,           V,           pVP                  VP                  4      P                  VP                   4      pV	^,          '       dx   VP                  SSV
4      VP                  SSV
4      SP                  R
4      ,          ,
          VP                  R
4      ,          P                  ^ .R7      P                  S4      pV	^,          '       d   VP                  ^ .R7      pWV3# )F)allow_cpu_scalar_tensorsc                  ,   < R SS ,          S,           R2# )zExpect input to have z	 elementsr    )r@  rA  r?  s   r*   r   ,native_group_norm_backward.<locals>.<lambda><  s    'A}I>r)   c                  .   < R S  RS RSP                    2# )zExpect mean to have shape (, z
, but got r  )r?  rB  r  s   r*   r   rG  @  s    -aS5'DJJ<Pr)   Nc                  @   < R S  RSe   SP                  4        2# R 2# )zExpect gamma to have z elements but got r^   )r  )r@  r>  s   r*   r   rG  D  s)    's*<eN_U[[]<hieg<hir)   c                     < R S  RS 2# )zExpect number of channels z, to be evenly-divisible by number of groups r    )r@  rB  s   r*   r   rG  J  s    ,QC/[\a[bcr)   r   ry   r  r^   )r1   check_same_devicecheck_same_shaperF   r   r  rN  r  r  r   r`   r^  r  r  rb   r=   r  )r   r   r  r=  r>  r?  r@  rA  rB  rC  cpgdsdbd_inputd_gammad_biasr  ds_valdb_valc1c2c3s   &&f&fffff&            r*   native_group_norm_backwardrY  '  s    
D$ 
5N	4F	LLQ$> 
LL

q%j P 
LL++!+i
 u*C	LL	S5[c 
;	&	+	+Aq#	6	:	:s	:	CB			!Q	$	(	(aS	(	1B!G!G F1~~39YYr5??1#56>>q%MQQRSTFYYr5??1#56>>q%MQQRSTFr"a,B
 ZZ5#.2215FZZ5#.2215Fr"

Auc?4;;?B tmf$,t3d:Q>S4Z&4-!++\\"r1%r1%IIk))!UC=rBiiaS92>? 	
 //%++.11%++>1~~ E3'"''!UC*@4>>RTCU*UU..$% SaSS\WQZ 	 1~~QCf%%r)   c                 v   V ^8  d   QhR\         R\         R\         R\         R\         R,          R\        R\        R	\        R
\        R\        \        ,          R\        P                   R\        P                   R\        P                   R\
        \         R,          \         R,          \         R,          3,          /# )r,   r   r   r  r=  r>  Nr?  r@  rA  rB  rC  r  r  out2rX   )r   rZ   r  r3   rF   r   )r4   s   "r*   r5   r5     s        	
 D=   
  d ,, ,, ,, 6D=&4-$67r)   c
                    \        WW#WEWgW4
      pWV3p\        V4       F<  w  ppVf   K  \        W,          VP                  4       \	        VW,          RR7       K>  	  V# NTrJ  )rY  	enumerater   rN  r   )r   r   r  r=  r>  r?  r@  rA  rB  rC  r  r  r[  rO  rc   r  rP   s   &&&&&&&&&&$$$    r*   native_group_norm_backward_outr_    sc    " (D!%F d#J&!1=jmQWW5Q
4P "
 r)   c                L    V ^8  d   QhR\         R,          R\         R,          /# )r,   r>   NrX   rh   )r4   s   "r*   r5   r5     s"      6D= FTM r)   c                 0    V e   V P                  V4      # V # r:   r=   )r>   r  s   &&r*   _maybe_castrc    s    }ttE{Hr)   c                "   V ^8  d   QhR\         R\         R\        \        ,          R\         R\         R\         R,          R\         R,          R	\        \        ,          R
\        \         R,          \         R,          \         R,          3,          /	# )r,   grad_outr   normalized_shaper  r=  r   NbiasrC  rX   r   r  rZ   r3   r   )r4   s   "r*   r5   r5     s     Q QQQ 3iQ 	Q
 Q TMQ 4-Q dQ 6D=&4-$67Qr)   c                   a" VP                   pVP                  4       p	\        P                  ! VP                  4      o"V"3R  lWWV3 4       w  rrV
f   \        R4      hV	\        V4      ,
          pWR pVRV p. p. p\        V	4       F.  pVV8  d   VP                  V4       K  VP                  V4       K0  	  \        V4      p\        V4      p^ RI
Hp V! V^ 8H  4      '       g   V! V^ 8H  4      '       dk   V^ ,          '       d   VP                  V4      MRV^,          '       d   VP                  WR 4      MRV^,          '       d   VP                  WR 4      3# R3# \        W;P                  4       4      p\        WKP                  4       4      pVf   \        R4      hW,
          V,          pVe
   W,          pMT
pVV,          p\        P                  ! VVR4      p\        P                   ! VV4      p\        P                  ! VVR4      p\        P                   ! VV4      pVV,
          V,
          pRpRp Rp!V^ ,          '       d   VV,          V,          pV^,          '       d>   Ve:   \        V4      ^ 8  d!   \        P                  ! V
V,          VR4      p M	V
V,          p V^,          '       d>   Ve:   \        V4      ^ 8  d   \        P                  ! V
VR4      p!MV
P#                  4       p!\%        VVP                  4      \%        T Ve   VP                  MR4      \%        T!Ve   VP                  4      3# R4      3# )c              3   r   <"   T F,  pVe"   VP                  S\        P                  R7      MTx  K.  	  R # 5iNr  )r=   rF   r  r"  r>   r?   s   & r*   r#  -native_layer_norm_backward.<locals>.<genexpr>  s?      9 1A = 	
e.E.EF	 1s   47N grad_out_cast should not be Noner  zinput_cast should not be NoneTF)rN  rW   r1   get_computation_dtyper  re  r  r_   r  r  r  r  r  rb   rF   r   r  r  rc  )#re  r   rf  r  r=  r   rg  rC  input_shape
input_ndimgrad_out_cast
input_castweight_cast	bias_castaxis
inner_dims
outer_dimsinner_dim_indicesouter_dim_indicesr  r?  Mr  x_hat
grad_x_hatabrV  rW  rX  rQ   rQ  d_weightrS  r?   s#   &&&&&&&&                          @r*   native_layer_norm_backwardr    s    ++KJ33EKK@9 60	95M{ ?@@,--DU#JUd#J#%#%:9$$Q'$$Q'	  	ZAZAKQ!V$$(=a1f(E(E,7NNEOOK(3>q>>EOOK./t3>q>>EOOK./
 	
 HL
 	

 T>>#34DT>>#34D<==$&E"0
"
QA		*/6A	:u	%B	2($	/B	5"	BEBJE!G"H F1~~!8u$1~~+1 !A%yy!68I5QH$u,H1~~)/ !A%YY}.?GF"((*F 	GU[[)Hf.@flldKF$*:DJJE  AEE r)   c                   V ^8  d   QhR\         R\         R\        \        ,          R\         R\         R\         R,          R\         R,          R	\        \        ,          R
\        P                   R\        P                   R\        P                   R\
        \         R,          \         R,          \         R,          3,          /# )r,   re  r   rf  r  r=  r   Nrg  rC  r  r  r[  rX   )r   r  rZ   r3   rF   r   )r4   s   "r*   r5   r5     s       3i 	
  TM 4- d ,, ,, ,, 6D=&4-$67r)   c          
          \        WW#WEWg4      pWV
3p\        V4       F;  w  rVf   K  \        W,          VP                  4       \	        WV,          RR7       K=  	  V# r]  )r  r^  r   rN  r   )re  r   rf  r  r=  r   rg  rC  r  r  r[  rO  rc   r  rP   s   &&&&&&&&$$$    r*   native_layer_norm_backward_outr    s`     ()tF d#J&!=jmQWW5Q14P "
 r)   c                    V ^8  d   QhR\         R\        \        ,          R\         R,          R\        R,          R\        \         \         3,          /# )r,   r   rf  r   Nr  rX   )r   r  rZ   rv   r   )r4   s   "r*   r5   r5     sO     3 333i3 TM3 
	3
 66>3r)   c           	         . p\        \        V4      4       F0  pVP                  V P                  4       V,
          ^,
          4       K2  	  \        P
                  ! V P                  4      pV P                  V4      pVf   V\        P                  \        P                  39   d0   \        P                  ! \        P                  4      P                  pM1\        P                  ! \        P                  4      P                  pMTp\        P                  ! \        P                  P                   P"                  P%                  \        P&                  ! V^4      P)                  VRR7      V4      4      p	VP+                  V	4      p
Ve   V
P+                  V4      p
V P,                  ;'       g    VRJ;'       d    VP,                  p\        P.                  ! V 4      pV\        P0                  \        P2                  39   pV'       g)   V'       g!   V
P5                  4       p
V	P5                  4       p	V
P7                  V 4      pW3# )r]   NTr3  )r_   r  r  rW   r1   ro  r  r=   rF   r  r&  finfor  r(  rsqrtopsr   addScalarr  r  r  	is_nestedr   channels_lastchannels_last_3dr  r  )r   rf  r   r  dims_to_reducer  r?   upcasted_inputeps_valrqrst_inputupcasted_resultr  r  is_channels_lastrO  s   &&&&           r*   _fused_rms_normr    s    !#N3'()eiikAo12 * 33EKK@XX/0N { @@kk%--044Gkk%--044G++ 			!!IIna(--.$-OQX	
K %((5O)--f5 LLF$$6$K$K6;K;KI//6M$) 
 -)446!,,. $$U+Fr)   c                    V ^8  d   QhR\         R\         R\        \        ,          R\         R\         R,          R\        \        ,          R\        \         R,          \         R,          3,          /# )	r,   re  r   rf  r=  r   NrC  rX   rh  )r4   s   "r*   r5   r5   M  su     H HHH 3iH 	H
 TMH dH 6D=&4-'(Hr)   c                    VP                   pVP                  4       p\        P                  ! VP                  4      pV P                  V\        P                  R 7      p	VP                  V\        P                  R 7      p
Ve"   VP                  V\        P                  R 7      MRpV	f   \        R4      hV\        V4      ,
          pWlR pVRV p. p. p\        V4       F.  pVV8  d   VP                  V4       K  VP                  V4       K0  	  \        V4      p\        V4      p^ RIHp V! V^ 8H  4      '       g   V! V^ 8H  4      '       dH   V^ ,          '       d   VP                  V4      MRV^,          '       d   VP                  WlR 4      3# R3# \!        W:P                  4       4      pVe
   W,          pMT	pRpRpW,          pV^ ,          '       d?   \        P"                  ! VV,          VRR7      pVVV,          V,          ,
          V,          pV^,          '       d:   Ve6   V	V,          p\        V4      ^ 8  d   \        P"                  ! VVRR7      pMTp\%        VVP                  4      \%        VVP                  4      3# )r  Nrn  r  Tr3  F)rN  rW   r1   ro  r  r=   rF   r  re  r  r_   r  r  r  r  r  rb   r   rc  )re  r   rf  r=  r   rC  rp  rq  r?   rr  rs  rt  rv  rw  rx  ry  rz  r  r?  r{  r  r}  rQ  r  r|  sum_vald_weight_full_shapes   &&&&&&                     r*   _fused_rms_norm_backwardr  L  s`    ++KJ33EKK@KK)@)@   M +5;R;RSJ  			#53J3J	K 
 ?@@,--DU#JUd#J#%#%:9$$Q'$$Q'	  	ZAZADa1fQ!7!7,7NNEOOK(3>q>>EOOK./
 	
GK
 	

 T>>#34D"0
"
!G"HE1~~))EJ.4EtTg 55=1~~+1+e3 !A%yy#):EH +H 	GU[[)Hekk* r)   c                $   V ^8  d   QhR\         R\         R,          R\         R,          R\         R,          R\         R,          R\        R\        R	\        R
\        R\        \         \         \         \         R,          \         R,          3,          /
# )r,   r   r   Nrg  running_meanrunning_varr   momentumr  
functionalrX   r   r3   rv   r   )r4   s   "r*   r5   r5     s     R RRTMR 4-R 4-	R
 $R R R 
R R 6666D=&4-?@Rr)   c	                 X   ^ .\        \        ^V P                  4       4      4      ,           p	\        P                  ! V P
                  4      p
TpTpV'       Edr   \        P                  ! V P
                  4      p
V P                  V
R7      p\        P                  ! W^ RR7      w  r\        P                  ! W,           4      pW,
          V,          p\        P                  ! W4      p\        P                  ! VV	4      pVe8   VV,          ^V,
          V,          ,           pV'       g   VP                  V4       Ve   V P                  4       V P                  ^,          ,          p\        P                  ! W4      pVVV^,
          ,          ,          pVV,          ^V,
          V,          ,           pV'       g   VP                  V4       MVe   Vf   \        R4      hVP                  V
RR7      pTpVP                  V
RR7      pTpTp^\        P                  ! WG,           4      ,          pV P                   P"                  R8w  d   TpTpM"V P%                  R4      pV P%                  R4      p\'        WP                  4       ^,
          4      p\'        VV P                  4       ^,
          4      pW,
          V,          pVe:   VP)                  4       p\'        WP                  4       ^,
          4      pVV,          pVe:   VP)                  4       p\'        W P                  4       ^,
          4      pVV,           pV P                   P"                  R8X  d9   VP                  V P
                  R7      pVP                  V P
                  R7      pVP                  V P
                  R7      VVVV3# )r   r  T)rW   
correctionr4  z:running_mean and running_var must not be None in eval mode)r  r   r  r   )r  r_   rW   r1   ro  r  r=   rF   var_meanr  rS  copy_r  rN  re  r  r  r  r  rb   r  )r   r   rg  r  r  r   r  r  r  reduction_dimsr?   new_running_meannew_running_var	input_acc
biased_varr  r=  r  	save_mean	save_rstdnsqueezed_varunbiased_varinvstds   &&&&&&&&&               r*   native_batch_norm_helperr    s    S4a 566N33EKK@#!Ox!77DHH#4H5	 >>a

 {{:+,,$&MM$7	MM$7	#')3q8||6SS""#34"A.A !==DL'1A;7L&5X8TTO!!/2;#6 L  $->TJ'!nn+<4nH%ejj!234<<%$II-I-I yy{Q7"6599;?;,&(!"699;?;&||~ yy{Q7$||E!LLu{{L3	LLu{{L3				$ r)   r   r  save_invstdc                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R,          R\         R,          R\        R\        R	\        R
\        \         \         \         3,          /	# r,   r   r   Nrg  r  r  r   r  r  rX   r  )r4   s   "r*   r5   r5     s~     ( ((TM( 4-( 4-	(
 $( ( ( 
( 666!"(r)   c                 2    \        WW#WEWgR 4	      w  rp
 pWV
3# Fr  r   r   rg  r  r  r   r  r  r  r  r  ra   s   &&&&&&&&    r*   native_batch_normr    s1     *Bt;(QV*&Fy!Q i''r)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R,          R\         R,          R\        R\        R	\        R
\        \         \         \         3,          /	# r  r  )r4   s   "r*   r5   r5     s~      
  
 
TM 
 4- 
 4-	 

 $ 
  
  
 
 
 666!" 
r)   c           
          Vf   Vf   \         P                  WW%Wg4      # Vf   \        R4      hVf   \        R4      hV'       d   \         P                  WW#WEWg4      # \         P                  WW#WFV4      # )Nz`running_mean is None, but running_var is provided. They should both be None or both be provided.z`running_var is None, but running_mean is provided. They should both be None or both be provided.)r   _native_batch_norm_legitr  $_native_batch_norm_legit_no_training)r   r   rg  r  r  r   r  r  s   &&&&&&&&r*   native_batch_norm_decompositionr  	  s      3,,48
 	
 <
 	
 <
 	
 ,,4{h
 	
 884{c
 	
r)   c                :    V ^8  d   QhR\         \        ,          /# r  r  )r4   s   "r*   r5   r5   /  s     G G4< Gr)   c                    V P                  V4      pW1,           ^,
          V,          pV^ 8X  dt   V^ 8X  dm   \        V4       Uu. uF  qTNK  	  ppWDV,          V,
          ,
          Wa^,
          &   \        P                  P                  P
                  P                  WV4      # \        P                  P                  P                  P                  WV4      # u upi rj   )	rg  r_   rF   r  r   r  r  r  r   )r  r  rW   r  r  ra   r  s   &&&    r*   unsafe_chunk_py_implr  .  s    {{3H#a'F2JQ8q=+0=9=az=9",V0Ch0N"OQJyy~~55==fSVWW99>>&&--f#FF :s   
Cc                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\        \         \         \         3,          /# 
r,   r   r   Nrg  r  r  r  r  rX   r   rv   r   )r4   s   "r*   r5   r5   ;  sl      TM 4- 	
   
 666!"r)   c           
      N    \         P                  P                  V VVVVR VV4      # r  )r   r  r  )r   r   rg  r  r  r  r  s   &&&&&&&r*   r  r  :  s5     ((00	 	r)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\        R
\        \         \         \         3,          /	# r  r  )r4   s   "r*   r5   r5   Q  sv     ( ((TM( 4-( 	(
 ( ( ( 
( 666!"(r)   c                 2    \        WW#WEWgR 4	      w  rp
 pWV
3# r  r  r  s   &&&&&&&&    r*   r  r  P  s1     *Bt;(QV*&Fy!Q i''r)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\        R\        R\        R\        \         \         \         3,          /# )	r,   r   r   Nrg  r   r  r  rX   r  )r4   s   "r*   r5   r5   b  sb     ( ((TM( 4-( 	(
 ( 
( 666!"(r)   c                 6    \        WVR R W4VR4	      w  rgp p	WgV3# NFr  )
r   r   rg  r   r  r  r  r  r  ra   s
   &&&&&&    r*   !_native_batch_norm_legit_no_statsr  a  s4     *BtT4S%*&Fy!Q i''r)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\        R
\        \         \         \         \         \         3,          /	# r  r  )r4   s   "r*   r5   r5   q  s     K KKTMK 4-K 	K
 K K K 
K 6666612Kr)   c                 r    \        WW#WEWgR 4	      w  pp	p
ppVf   \        R4      hVf   \        R4      hWWV3# )T#new_running_mean should not be None"new_running_var should not be None)r  re  )r   r   rg  r  r  r   r  r  r  r  r  r  r  s   &&&&&&&&     r*   #_native_batch_norm_legit_functionalr  p  s_    " 	!t;(QU	 BCCABBi?JJr)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\         /# )
r,   r   r   Nrg  r  r  r  r   rX   r   )r4   s   "r*   r5   r5     s`      TM 4- 	
  
  r)   c           	     T   \         P                  P                  WW#VRV4      p^ pV\         P                  P                  P                  8X  d    \         P                  P                  W4      p\         P                  ! V\         P                  V P                  V P                  R7      # )a  
Return a reserve tensor for batch norm, used only by cudnn to pass forward state to the
backward pass. This is needed for `_batch_norm_with_update` and `_batch_norm_no_update`,
which support a variety of backends including cudnn. We create this tensor here to get
the correct shape in the traced graph if we detect that will call the cudnn kernel,
and rely on DCE to avoid materializing this tensor.
T)r  layoutr  )
rF   _C_select_batch_norm_backend_BatchNormBackendCudnn(_get_cudnn_batch_norm_reserve_space_sizeemptyuint8r  r  )	r   r   rg  r  r  r  r   backendreserve_sizes	   &&&&&&&  r*   _get_batch_norm_reserve_tensorr    s      hh11t;cG L%((,,222xxHH
 ;;EKKU\\ r)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\        \         \         \         \         3,          /# r  r  )r4   s   "r*   r5   r5     n     1 11TM1 4-1 	1
 1 1 
1 6666)*1r)   c                 X    \        V VVVVR VVR4	      w  rxp	 p
\        WW#WFR R7      pWxW3# )TFr   r  r  r   r   rg  r  r  r  r  r  r  r  ra   reserves   &&&&&&&     r*   _batch_norm_with_updater    sU     *B
*&Fy!Q -t;dG i00r)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\        \         \         \         \         \         \         3,          /# r  r  )r4   s   "r*   r5   r5     s|     C CCTMC 4-C 	C
 C C 
C 6666669:Cr)   c                     \        WW#VR WVR 4	      w  ppp	p
p\        WW#WFR R7      pV
f   \        R4      hVf   \        R4      hWxWW3# )Tr  r  r  )r  r  re  )r   r   rg  r  r  r  r  r  r  r  new_rmnew_rvr  s   &&&&&&&      r*   "_batch_norm_with_update_functionalr    ss      	!t;hT	 -t;dG ~BCC~ABBy6BBr)   c                    V ^8  d   QhR\         R\         R,          R\         R,          R\         R\         R\        R\        R	\        \         \         \         \         3,          /# r  r  )r4   s   "r*   r5   r5     r  r)   c                 X    \        V VVVVR VVR 4	      w  rxp	 p
\        WW#WFR R7      pWxW3# )Fr  r  r  s   &&&&&&&     r*   _batch_norm_no_updater    sU     *B
*&Fy!Q -t;eG i00r)   c                     Ve   \        RV 24      h\        P                  ! V 4      V8  P                  \        P                  R7      pVP                  V 4      V ,          RV,          ,          pWC3# )Nz=generator must be None for _fused_dropout decomposition, got r  ry   )re  rF   r  r=   r  r  )r   r  	generatorr  r  s   &&&  r*   _fused_dropout_decompositionr    sl     KI;W
 	
 OOE"Q&***=D
,,u

%q
1C;r)   r  r  r  
pin_memorynon_blockingr  c                    V ^8  d   QhR\         \        ,          R\        P                  R,          R\        P                  R,          R\
        R\
        R\        P                  R,          /# )r,   r>   r  Nr  r  r  r  )r   r   rF   r  r  r3   r  )r4   s   "r*   r5   r5   
	  sh     + +
+ ;;+
 LL4+ + + &&-+r)   c                   V'       d$   V\         P                  8w  d   \        R V 24      hV'       d   \        R4      h\        V \         P                  \
        \        \        \        34      '       g"   \        R\        V 4      P                   24      hVf;   Vf7   Vf3   \        V \         P                  4      '       d   V P                  4       # V # Rp\        V \         P                  4      '       d   T pM\         P                  ! V 4      pVeg   W8P                  8w  dW   Ve3   VP                  R8X  d"   \         P                  P                  W4      pRp\         P                  P!                  WV4      pVe*   V'       g"   \         P                  P                  W4      pRpVe   \         P                  ! WR7      # V# )z*layout must be None or torch.strided, got z:pin_memory=True is not supported in _to_copy decompositionz x must be Tensor or scalar, got Fr  Tr  )rF   stridedre  r<   r   rZ   rv   r3   complexr  r!   r  scalar_tensorr  _primsconvert_element_type
device_put)	r>   r  r  r  r  r  r  dtype_convertedx_tensors	   &$$$$$$  r*   _to_copyr  	  sY    &EMM)I&RSSH
 	
 a%,,UD'BCC?Q@P@P?QRSS~%-M,Aa&&779HO!U\\""&&q)f7!5||88IH"O<<**8\J<<44XE {{8AAOr)   c                 ,    \         P                  V 4      # r:   )r   alias)r>   s   &r*   nop_decompositionr  ;	  s     ::a=r)   r[  out3c                    V ^8  d   QhR\         R\         R\         R,          R\         R,          R\         R,          R\        R\        R	\        /# )
r,   r   r   rg  Nr  r  r   exponential_average_factorepsilon)r   r3   rv   )r4   s   "r*   r5   r5   F	  sd       4- 4-	
 $  !& r)   c           
         \         P                  V VVVVVVV4      w  rp
V'       d$   WWP                  R\        P                  R7      3# VVP                  R4      VP                  R4      V P                  R\        P                  R7      3# )r   r  r   )r   r  r  rF   r  )r   r   rg  r  r  r   r  r  r~  r  rG  s   &&&&&&&&   r*   cudnn_batch_normr  C	  s     $$"	GA! aU[[ABB	EKK0	 r)   c                     \        V4       FI  w  r#V^8X  g   K  W P                  8  d   V P                  V,          V8X  d   K8  V P                  V4      p KK  	  V # rj   )r^  r  rN  r`   )r>   broadcast_maskrv  r  s   &&  r*   _broadcast_batch_norm_backwardr  e	  sF    /
19dVVm0ED!A 0 Hr)   c                L   V ^8  d   QhR\         R\         R\         R,          R\         R,          R\         R,          R\         R,          R\         R,          R	\        R
\        R\        \        ,          R\         R\        \         \         R,          \         R,          3,          /# )r,   re  r   r   Nr  r  r  r  r  r  rC  r  rX   r   r3   rv   r  r   )r4   s   "r*   r5   r5   m	  s       TM 4-	
 $ } $  
 d  66D=&4-/0r)   c                 *    \        V VVVVVVVVV	4
      # r:   )native_batch_norm_backward)re  r   r   r  r  r  r  r  r  rC  r  s   &&&&&&&&&&&r*   batch_norm_backwardr  l	  s/     & r)   c                @   V ^8  d   QhR\         R\         R\         R,          R\         R,          R\         R,          R\         R,          R\         R,          R	\        R
\        R\        \        ,          R\        \         \         R,          \         R,          3,          /# )r,   re  r   r   Nr  r  r  r  r  r  rC  rX   r
  )r4   s   "r*   r5   r5   	  s     i iii TMi 4-	i
 $i }i $i i 
i di 66D=&4-/0ir)   c
                 (  a& VP                   p
Ve   VP                   pMT
p\        P                  ! VP                   4      o&V&3R lV VVVVVV3 4       w  pppppppVP                  pVP	                  4       pV^8  d   \        RV 24      h^p\        \        V4      4      VV,          ,          pTpTpV'       d   Ve   Vf   \        R4      hM2Ve   Vf   \        R4      hTp\        P                  ! VV,           4      p^.V,          pVV,          VV&   . p\        V4       F  pVV8w  g   K  VP                  V4       K  	  \        VV4      pRV,          p\        P                  ! VV4      p\        P                  ! WV,
          ,          V4      p\        VV,          V4      p\        \        P                  ! VV,          VV,          4      V4      p Vf   \        VV4      R,          p!M\        VV,          V4      p!V'       d)   VV,
          V ,          p"VV",
          V,
          V!,          p#M	VV!,          p#V	^,          '       d   VV,          p$MR p$V	^,          '       d   Tp%MR p%V#P                  V
4      \!        V$V4      \!        V%V4      3# )Nc              3   R   <"   T F  pVe   VP                  S4      MTx  K  	  R # 5ir:   rb  rl  s   & r*   r#  -native_batch_norm_backward.<locals>.<genexpr>	  s/      	
A $%=a7
s   $'z*rank of the input must be at least 2, got z1mean and invstd must not be None in training modezDrunning_mean_cast and running_var_cast must not be None in eval modery   )r  r1   ro  rN  rW   re  r  r  rF   r  r_   r  r  r   r  r=   rc  )'re  r   r   r  r  r  r  r  r  rC  r  weight_dtyperr  rs  rt  running_mean_castrunning_var_castsave_mean_castsave_invstd_castrp  
input_rankrv  num_featuresr  r  r  reduction_axesr  r0  grad_output_sumdot_p	grad_mean
proj_scale
grad_scaleprojrc   r  	grad_biasr?   s'   &&&&&&&&&&                            @r*   r  r  	  s    ++K||"33EKK@	 
	 ++KJA~I*VWWD[)*[->>LDF<6> !TUU * $(8(@ V  !-34!"j 0N&t,N4 "N:9!!!$  *$?DDii~>OIImD'89>JE./E~VI/		%$,0J
 3FNKcQ
3[ .

 T!Z/$t+y8JF
"Z/
1~~fn1~~#		 	k"K.I|, r)   c                    V ^8  d   QhR\         R\         R\         R,          R\         R,          R\         R,          R\         R,          R\         R,          R	\        R
\        R\        \        ,          R\        P                   R\        P                   R\        P                   R\
        \         \         R,          \         R,          3,          /# )r,   re  r   r   Nr  r  r  r  r  r  rC  r  r  r[  rX   )r   r3   rv   r  rF   r   )r4   s   "r*   r5   r5   	  s     " """ TM" 4-	"
 $" }" $" " 
" d" ,," ,," ,," 66D=&4-/0"r)   c
                    \        V VVVVVVVVV	4
      pWV3p\        V4       F<  w  ppVf   K  \        W,          VP                  4       \	        VW,          RR7       K>  	  V# r]  )r  r^  r   rN  r   )re  r   r   r  r  r  r  r  r  rC  r  r  r[  rO  rc   r  rP   s   &&&&&&&&&&$$$    r*   native_batch_norm_backward_outr#  	  sv    " (F d#J&!1=jmQWW5Q
4P "
 r)   c                    V ^8  d   QhR\         R\         R\         R\         R,          R\         R,          R\         R,          R\         R,          R	\        /# )
r,   r   r   r   r  Nr  r  save_varr  ru   )r4   s   "r*   r5   r5   
  sh        4-	
 $ } tm r)   c                 B    \         P                  VV VVVVVR V. RO4
      # T)TTTr   r  )r   r   r   r  r  r  r%  r  s   &&&&&&&&r*   miopen_batch_norm_backwardr)  
  s5     ** r)   c                    V ^8  d   QhR\         R\         R\         R\         R,          R\         R,          R\         R,          R\         R,          R	\        R
\         /	# )r,   r   r   r   r  Nr  r  r%  r  reserveSpaceru   )r4   s   "r*   r5   r5   8
  sr        4-	
 $ } tm  r)   c	                 B    \         P                  VV VVVVVR V. RO4
      # r'  r(  )	r   r   r   r  r  r  r%  r  r+  s	   &&&&&&&&&r*   cudnn_batch_norm_backwardr-  6
  s5     ** r)   c                R    V ^8  d   QhR\         R\        \        \        3,          /# )r,   r   rM  r   r   rZ   )r4   s   "r*   r5   r5   T
  s&     d' d'v d'E#s(O d'r)   c                   aaaaa V P                   oV P                  o\        S4      o\        P                  ! SR9   V3R l4       V P                  RR  F!  p\        P                  ! V^ 8g  V3R l4       K#  	  SR,          VR,          ,          ^ 8X  d   SR,          VR,          ,          ^ 8X  d   \
        ;QJ d!    . R \        SRR V4       4       F  NK  	  5M! R \        SRR V4       4       4      p\
        ;QJ d!    . R \        SRR W4       4       F  NK  	  5M! R \        SRR W4       4       4      p\        P                  P                  P                  WV4      # R oR oVVV3R lpV! SR,          VR,          4      w  rgrV! SR,          VR,          4      w  rrV R	\        V^4      V
3,          pV	'       g!   V'       g   \        P                  ! VRR
7      # R pV! WWRR7      w  rV! WWRR7      w  rRp\        \        VP                  R,          4      \        VP                  R,          4      4       F-  w  ppVf   VR	VRV3,          pK  VVR	VRV3,          ,           pK/  	  VW{,          ,          # )r   c                     < R S  2# )z9adaptive_avg_pool2d(): Expected 3D or 4D tensor, but got r    r  s   r*   r   %adaptive_avg_pool2d.<locals>.<lambda>[
  s    KD6Rr)   Nc                  "   < R \        S 4       R2# )zjadaptive_avg_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has shape r|  r>  r  s   r*   r   r2  `
  s     99>uaIr)   c              3   6   "   T F  w  rW,          x  K  	  R # 5ir:   r    )r"  r  r  s   &  r*   r#  &adaptive_avg_pool2d.<locals>.<genexpr>f
  s     G*F$!qvv*F   c              3   T   "   T F  w  rq1V^,
          V,          ,
          x  K   	  R# 5irA  r    )r"  r  r  r  s   &   r*   r#  r5  g
  s$      
+OaQ!OO+Os   &(c                 @    \         P                  ! W,          VR R7      # )truncrounding_moderF   divr~  r  rG  s   &&&r*   start_index(adaptive_avg_pool2d.<locals>.start_indexl
  s    yy99r)   c                 l    \         P                  ! V ^,           V,          V,           ^,
          VRR7      # )r]   r9  r:  r<  r>  s   &&&r*   	end_index&adaptive_avg_pool2d.<locals>.end_indexo
  s&    yy!a%1q1,awGGr)   c                 b  < \         P                  ! VS\         P                  R 7      pS! W!V 4      pW,          ^,           pW,          pV^ 8H  ;'       g    W,          ^ 8H  '       * pV'       d   V^,          pMV^ 8X  d
   V^,          p\         P                  ! VS\         P                  R 7      pVP                  R4      V,           pV'       d]   \         P                  ! V ^,
          VP
                  VP                  R7      p	\         P                  ! W4      pS! W!V 4      p
W,
          pMTpWWv3# )r  r  r^   )rF   r  r	  r`   r  r  r  minimum)in_sizeout_sizeorangei0	maxlengthin_size_modadaptive	range_maxr  maxvali1lengthr  rB  r?  s   &&          r*   compute_idx(adaptive_avg_pool2d.<locals>.compute_idxr
  s    hvU[[I73 '!+	(#q(GGH,Ba,GHNIANILL6M	ll2* ((!399SZZF --,C 6W5BWFFI//r)   .r   c                     \        V\        4      '       d   W3# V^ 8  d   \        RV 24      hW!P                  R4      8  pVR8X  d   \	        V^4      p\
        P                  ! WR4      p \	        W) 4      pW3# )r   z)dim should be negative when masking, got r   r^   r  )r<   r   re  r`   rb   rF   r  )valsrP  rM  rL  rW   r  s   &&&&& r*   
maybe_mask'adaptive_avg_pool2d.<locals>.maybe_mask
  s    fg&&< ax$'PQTPU%VWW 0 0 44Dby(q1$$T5D&vt4F<r)   )rL  rW   rN  rP  r  r^   r   )r   r^   )r  rN  r  rF   r   r   rQ  nnr  
avg_pool2drb   r  r
   r_   )r   rM  r:  r  kernelrQ  idxhlength_hrange_max_h
adaptive_hidxwlength_wrange_max_w
adaptive_wrT  rU  retr  jr  rB  r  rN  r?  s   &&                 @@@@@r*   adaptive_avg_pool2drd  Q
  sF   
 \\FKKEu:D	LLR [[FI	
  Ry;r?"a'E"IB,G1,LG#eBCj+*FGG#eBCj+*FGG 
+.uRSz;+O
 
+.uRSz;+O
 
 xx""--eVDD:H0@ /:%)[QS_.U+DK.9%)[QS_.U+DK'a0$67Djzz$H--    bND  bND
 Cdjjn-uTZZ^/DE1;sAq!|$CS!Q\**C	 F
 (%&&r)   c                ^    V ^8  d   QhR\         R\         R\        \        ,          R\        /# )r,   r   r  rM  rW   r   r  rZ   )r4   s   "r*   r5   r5   
  s0      
)8<S	HKr)   c                 N   \         P                  ! R V R24       \        V P                  RV)  4      \        V4      ,           p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   V P                  V4      # \        \        P                  V P                  RV)  4      p\        \        P                  V4      p^.V P                  ,          pV P                  RV)  VRV) % V\        P                  WPP                  R7      P                  V4      V,          ,           P                  R4      pV P                  V4      p	\        P                  V	P                  R4      V.V P                  R4      RR7      P                  V	P                  4      # )	max_unpoolingd_forward_outNc              3   *   "   T F	  q^ 8H  x  K  	  R# 5ir   r    )r"  r  s   & r*   r#   _max_unpoolnd.<locals>.<genexpr>
  s     
(<a6<r&  TFr  r  r^   )r1   alert_not_deterministicr  rN  anyr  r   operatorr  r  r   r  r  r  r^  r  )
r   r  rM  rW   output_shapenchwindices_nc_shapeindices_flatr  s
   &&&&      r*   _max_unpoolndrt  
  sN    
!!M#m"DE

5SD)*T+->>L
s
(<
(sss
(<
(((~~l++	djj3$/	0B	k	*BsTYY"jj3$/Usd$++b+5::;KLrQQgbk  ^^L)F!!r\NDLL,< " 
d6<<r)   c                R    V ^8  d   QhR\         R\         R\        \        ,          /# )r,   r   r  rM  rf  )r4   s   "r*   r5   r5   
  s*     *8 *8
*8*8 c*8r)   c                 ,  a aaa \         P                  ! SP                  \         P                  8H  V3R  l4       \         P                  ! \	        S4      ^8H  V3R l4       \         P                  ! S P
                  R9   V 3R l4       \         P                  ! S P                  SP                  8H  VV 3R l4       \        ^S P
                  4       F1  o\         P                  ! S P                  S4      ^ 8  VV 3R l4       K3  	  \        S SS^4      # )c                  "   < R S P                    2# )z2elements in indices should be type int64 but got: r  )r  s   r*   r   max_unpool2d.<locals>.<lambda>
  s    DW]]OTr)   c                  "   < R \        S 4       R2# )zMThere should be exactly two elements (height, width) in output_size, but got 
 elements.r  rM  s   r*   r   rx  
      ;'(
4r)   c                  $   < R S P                    R2# )zLInput to max_unpooling2d should be a 3d or 4d Tensor, but got a tensor with  dimensions.r  r   s   r*   r   rx  
  s    %%)YYK|=r)   c                  <   < R SP                    RS P                    2# zBExpected shape of indices to be same as that of the input tensor (z%) but got indices tensor with shape: r  )r  r   s   r*   r   rx  
  s'    PQUQ[Q[P\ ]229--Br)   c                  *   < R SP                    RS  R2# )zZmax_unpooling2d(): Expected input to have non-zero size for non-batch dimensions, but got  with dimension  being empty.r  )r  r   s   r*   r   rx  
  s     ::,&6qcHr)   rP  )
rF   r   r  r	  r  r  rN  r_   rg  rt  )r   r  rM  r  s   fff@r*   max_unpool2dr  
  s     
LL$T 
LLKA	
 
LL		V	
 
LL

gmm#	
 1dii IIaL1	
 ! wQ77r)   c                    V ^8  d   QhR\         R\         R\        \        ,          R\        \        ,          R\        \        ,          /# )r,   r   r  rM  r  r  rf  )r4   s   "r*   r5   r5     sF     49 494949 c49 I	49
 #Y49r)   c                 `  a aaaaa \         P                  ! SP                  \         P                  8H  R  4       \         P                  ! S P                  R9   V 3R l4       \         P                  ! \        S4      ^8H  V3R l4       \         P                  ! \        S4      ^8H  V3R l4       \         P                  ! \        S4      ^8H  V3R l4       \         P                  ! S P                  SP                  8H  VV 3R l4       \        ^S P                  4       F1  o\         P                  ! S P                  S4      ^ 8  VV 3R l4       K3  	  \         P                  ! S^ ,          ^ 8  ;'       d!    S^,          ^ 8  ;'       d    S^,          ^ 8  V3R l4       \        S SS^4      # )	c                      R # )z(elements in indices should be type int64r    r    r)   r*   r   max_unpool3d.<locals>.<lambda>  s    .Xr)   c                  $   < R S P                    R2# )zLInput to max_unpooling3d should be a 4d or 5d Tensor, but got a tensor with r  r  r   s   r*   r   r    s    ^_d_i_i^jjvwr)   c                  "   < R \        S 4       R2# )zVThere should be exactly three elements (depth, height, width) in output_size, but got rz  r{  r|  s   r*   r   r    r}  r)   c                  "   < R \        S 4       R2# )zRThere should be exactly three elements (depth, height, width) in stride, but got: rz  r{  r  s   r*   r   r    s    dehioepdqq{|r)   c                  "   < R \        S 4       R2# )zSThere should be exactly three elements (depth, height, width) in padding, but got: rz  r{  )r  s   r*   r   r  "  s    efijqfress}~r)   c                  <   < R SP                    RS P                    2# r  r  )r  r   s   r*   r   r  &  s'    PQVQ\Q\P] ^229--Br)   c                  *   < R SP                    RS  R2# )zZmax_unpooling3d(): Expected input to have non-zero size for non-batch dimensions, but got r  r  r  )r  r   s   r*   r   r  /  s      ;;-'7s-Ir)   c                     < R S  2# )z5strides should be greater than zero, but got stride: r    r  s   r*   r   r  8  s    GxPr)   r     )
rF   r   r  r	  r  r  rN  r_   rg  rt  )r   r  rM  r  r  r  s   fffff@r*   max_unpool3dr    sE    
LL$&X 
LL

fw 
LLKA	
 
LLFq| 
LLG~ 
LLw}}$	
 1ejj!JJqMA	
 " 
LLq	A99&)a-99F1IMP
 a88r)   r   c          
      T    V ^8  d   QhR\         R\        R\         R\         R\        /# r,   r>   rW   r  r  r   r   rZ   r   )r4   s   "r*   r5   r5   ?  sA     H HH	H H 	H Hr)   c          	           \        WW#R VR7      # )Tinplacer   
_index_addr>   rW   r  r  r   s   &&&&$r*   
index_add_r  >  s     aeTGGr)   c          
      T    V ^8  d   QhR\         R\        R\         R\         R\        /# r  r  )r4   s   "r*   r5   r5   L  sA     I II	I I 	I Ir)   c          	           \        WW#R VR7      # )Fr  r  r  s   &&&&$r*   	index_addr  J  s     aeU%HHr)   c                `    V ^8  d   QhR\         R\        R\         R\         R\        R\        /# )r,   r>   rW   r  r  r  r   )r   rZ   r3   r   )r4   s   "r*   r5   r5   W  sL     %@ %@%@	%@ %@ 	%@ %@ %@r)   c                  aaaaaa \         P                  ! V P                  S4      o\        P                  ! SP                  ^8*  V3R l4       SP                  ^8X  d   SP                  ^ 4      M^oVP                  ^ 8  d   VP                  S4      M^o\        P                  ! SS8H  VVV3R l4       S^8w  dt   \         P                  ! V P                  4      o\        P                  ! S\        J ;'       g!    \         P                  ! \        S4      S4      VV3R l4       VS,          pV P                  ^ 8H  pV'       d   V P                  ^ 4      MT pRS,          S3,           pV'       d   \        P                  M\        P                  p	V	! WxVRR7      p
V'       d   V # V'       d   V
P                  ^ 4      # V
P!                  4       # )r]   c                  $   < R S P                    R2# z(Index should have dimension 1 or 0 (got ry  r  r  s   r*   r   _index_add.<locals>.<lambda>c      :5::,aHr)   c                     < R S RS RS : 2# )zNumber of indices (z') should be equal to tensor.size(dim) (z), for dim=r    )rW   
index_sizer  s   r*   r   r  i  s    %j\1XYdXeeqmplrsr)   c                  (   < R \        S 4       RS R2# )zalpha argument of type z cannot be safely cast to type !)r  )r   python_types   r*   r   r  p  s    -d5k]:YZeYffghr)   Tr  r:   )r1   canonicalize_dimsr  rF   r   rg  dtype_to_typer  r3   is_weakly_lesser_typer  r`   r   
index_put_	index_putrS  r  )r>   rW   r  r  r  r   zero_dimr  r  r  r   r  r  r  s   &ff&$d     @@@r*   r  r  W  sQ    
!
!!&&#
.C	LL

aH #(**/AqJ&,kkAo&++c"1K	LLz!s z))!''24 E E**4;Dh	

 %vv{H#QB
C-5(
"C#*I
BV
5C!)s{{1~?s~~/??r)   c           
      Z   \         P                  ! \        V 4      ^ 8  R 4       \        V 4      pV ^ ,          P                  4       pVR,          p\	        R V  4       4      pV'       d   W63pMWc3pWu,           pV ^ ,          P                  Wr4      pR\        V4      ,          p	\        V4       Fy  p
W
,          p\        P                  W^ WkP                  ^ 4      ,
          3,           V4      pV'       d   \        P                  W^ V
R7      pKa  \        P                  W^V
R7      pK{  	  V# )r   c                      R # )z#received an empty list of sequencesr    r    r)   r*   r   pad_sequence.<locals>.<lambda>  s    -Rr)   r]   NNc              3   B   "   T F  qP                  ^ 4      x  K  	  R# 5ir   rg  )r"  r>   s   & r*   r#  pad_sequence.<locals>.<genexpr>  s     /Y&&))Ys   rW   r  )r   r   )
rF   r   r  rg  r   r  r_   r   r  r  )	sequencesbatch_firstpadding_valuesequences_sizemax_sizetrailing_dimsmax_lenout_dimsr   dim_paddingsr  currseqrows   &&&          r*   pad_sequencer    s    
LLY!#%RS^N|  "HRLM/Y//G",,'H
A,


8CC..L>",""Q,,q/(A$BBM
 %%cAQ%?C%%cAQ%?C # Jr)   c                H    V ^8  d   QhR\         R\        R\         R\         /# r,   r>   rW   r  r  r   rZ   )r4   s   "r*   r5   r5     s(     < <: <C <
 <J <r)   c                     \        WW#R R7      # )Tr  _index_copyr>   rW   r  r  s   &&&&r*   index_copy_r    s    qud;;r)   c                H    V ^8  d   QhR\         R\        R\         R\         /# r  r  )r4   s   "r*   r5   r5     s(     = =* =3 =z =: =r)   c                     \        WW#R R7      # )Fr  r  r  s   &&&&r*   
index_copyr    s     que<<r)   c          
      T    V ^8  d   QhR\         R\        R\         R\         R\        /# )r,   r>   rW   r  r  r  )r   rZ   r3   )r4   s   "r*   r5   r5     s;     @ @@@$.@8B@PT@r)   c                  a \         P                  ! V P                  V4      p\        P                  ! SP                  ^8*  V3R l4       V P                  ^ 8H  pV'       d   V P                  ^ 4      MT pSP                  ^ 8X  d   SP                  ^ 4      MSoRV,          S3,           pV'       d   \        P                  M\        P                  pV! WgV4      p	V'       d   V # V'       d   V	P                  ^ 4      # V	P                  4       # )r]   c                  $   < R S P                    R2# r  r  r  s   r*   r   _index_copy.<locals>.<lambda>  r  r)   r:   )r1   r  r  rF   r   r`   r   r  r  rS  r  )
r>   rW   r  r  r  r  r  r  r  r   s
   &&f&$     r*   r  r    s     
!
!!&&#
.C	LL

aH
 vv{H#QB"'**/EOOAuE
C-5(
"C#*I
BV
$C!)s{{1~?s~~/??r)   r  r  c                R    V ^8  d   QhR\         R\        \         \         3,          /# r   r   )r4   s   "r*   r5   r5     s#     ( (f (vv~)> (r)   c                 R   \         P                  ! V P                  R4      V 4      p\         P                  ! \         P                  ! V 4      ) 4      pV P
                  '       g   V P                  '       d   V P                  R4      pMTpV\         P                  ! V4      ,
          V3# )r   r    r   )rF   rE  r  rz   r  r3  is_xpur  )r   r   r|   r  s   &   r*   log_sigmoid_forwardr    sr     --r*D
1C		599T?"#A|||t{{{%Q''r)   c          	          V ^8  d   QhR\         R\        \        ,          \        ,          R\        \        ,          \        ,          R\        P
                  R,          /# )r,   r>   lowhighr  N)r   r3   rZ   rv   rF   	Generator)r4   s   "r*   r5   r5     sK      	e	 *u
 %	r)   c           
          \         P                  ! V P                  V P                  4       \	        V4      \	        V4      V P
                  V P                  VR 7      # ))r  r  r  r  r  r  )prims_uniform_helperrN  r  r   r  r  )r>   r  r  r  s   &&&&r*   uniformr    sF       	xxzcNt_ggxx r)   c                 8    V P                  \        WW#4      4      # r:   )r  r  )r   r  r  r  s   &&&&r*   uniform_r    s    ::gd9::r)   c                 r   \        V 4      ^,
          pVeA   \        P                  ! VRJ R 4       \        P                  ! \        V4      V8H  R 4       V# Ve   \        P                  ! VRJ R 4       \        P                  ! \        V4      V8H  R 4       . p\        V4       Fs  w  rE\	        V4      V8X  d1   VP                  W^,           ,          \	        V4      ,          4       KE  VP                  \        W^,           ,          V,          4      4       Ku  	  V# \        P                  ! RR 4       R# )r,   Nc                      R # z9Must specify exactly one of output_size and scale_factorsr    r    r)   r*   r   .upsample_compute_output_size.<locals>.<lambda>      Or)   c                      R #  r    r    r)   r*   r   r    s    Rr)   c                      R # r  r    r    r)   r*   r   r    r  r)   c                      R # r  r    r    r)   r*   r   r    s    rr)   Fc                      R # r  r    r    r)   r*   r   r    s    Rr)   )r  rF   r   r^  rZ   r  r   )r  rM  scale_factorsspatial_dimensionsr  r  s   &&&   r*   upsample_compute_output_sizer    s    Z1,T!O	
 	S%);;ZH 4O	
 	S'+==zJm,DA1v{"":!e#4s1v#=>""7:!e+<q+@#AB	 -
 	LLRr)   c                     V f   R # W,          # r:   r    )scalesr  s   &&r*   get_scale_valuer    s    ~;r)   c                    V ^8  d   QhR\         R\        \        ,          R,          R\        \        ,          R,          R\         /# r,   r   rM  Nr  rX   r   r  rZ   rv   )r4   s   "r*   r5   r5     sB     	3 	3	3cT!	3 ;%	3 		3r)   c                     \        V P                  4       W4      pV'       d   TMR .\        V4      ,          p\        WV4      # r:   r  rg  r  _upsample_nearestr   rM  r  osizer  s   &&&  r*   _upsample_nearest_vecr     s<     ){RE&TFSZ,?  U622r)   c                    V ^8  d   QhR\         R\        \        ,          R,          R\        \        ,          R,          R\         /# r  r  )r4   s   "r*   r5   r5   !  sB     	? 	?	?cT!	? ;%	? 		?r)   c                     \        V P                  4       W4      pV'       d   TMR .\        V4      ,          p\        WVRR7      # )NTexactr  r  s   &&&  r*   _upsample_nearest_exact_vecr    s>     ){RE&TFSZ,?  U6>>r)   c                 H   . p\        V4      pV'       d   R MRp\        V4       F  pW,          pV P                  V) V,           ,          p	W',          e#   W',          ^ 8  d   WW',          ,          ,          MW,          p
\        P                  ! V\        P
                  V P                  R7      pW,           V
,          P                  \        P                  4      p\        V^,
          V,
          4       F  pVP                  R4      pK  	  VP                  V4       K  	  V# )r   r   r  r^   )r  r_   rN  rF   r  r  r  r=   r	  r`   r  )r   rM  r  r  r  num_spatial_dimsr  r:  r  isizer   output_indicesinput_indicesra   s   &&&&          r*   !_compute_upsample_nearest_indicesr  -  s     G;'SsF#$ --12
 y$Q VY&' 	 e5==V(1U:>>u{{K'!+a/0A)33B7M 1}%7 %8 Nr)   )preserve_memory_formatrM  c                l    V ^8  d   QhR\         R\        \        ,          R\        R,          R\         /# r,   r   rM  r  NrX   r  )r4   s   "r*   r5   r5   W  s8     ; ;;c; DL; 	;r)   c                     \        WV.4      # r:   r  r   rM  r  s   &&&r*   upsample_nearest1dr  S  s     U&::r)   c                l    V ^8  d   QhR\         R\        \        ,          R\        R,          R\         /# r  r  )r4   s   "r*   r5   r5   e  s>     G GGcG DLG 	Gr)   c                      \        WV.R R7      # Tr  r  r  s   &&&r*   upsample_nearest_exact1dr  _  s     U&FFr)   c          
          V ^8  d   QhR\         R\        \        ,          R\        R,          R\        R,          R\         /# r,   r   rM  scales_hNscales_wrX   r  )r4   s   "r*   r5   r5   q  sM     G GGcG dlG dl	G
 Gr)   c                     \        WW#.4      # r:   r  r   rM  r  r  s   &&&&r*   upsample_nearest2dr  m  s     U(1EFFr)   c          
          V ^8  d   QhR\         R\        \        ,          R\        R,          R\        R,          R\         /# r  r  )r4   s   "r*   r5   r5     sM     S SScS dlS dl	S
 Sr)   c                      \        WW#.R R7      # r  r  r  s   &&&&r*   _upsample_nearest_exact2dr   z  s     U(1ETRRr)   c                    V ^8  d   QhR\         R\        \        ,          R\        R,          R\        R,          R\        R,          R\         /# r,   r   rM  scales_dNr  r  rX   r  )r4   s   "r*   r5   r5     s\     Q QQcQ dlQ dl	Q
 dlQ Qr)   c                     \        WW#V.4      # r:   r  r   rM  r#  r  r  s   &&&&&r*   upsample_nearest3dr&    s     U(h1OPPr)   c                    V ^8  d   QhR\         R\        \        ,          R\        R,          R\        R,          R\        R,          R\         /# r"  r  )r4   s   "r*   r5   r5     sT     	 		c	 dl	 dl		
 dl	 	r)   c                 "    \        WW#V.R R7      # r  r  r%  s   &&&&&r*   _upsample_nearest_exact3dr)    s     X:$ r)   c          
          V ^8  d   QhR\         R\        \        ,          R\        \        R,          ,          R\        R\         /# )r,   r   rM  r  Nr  rX   )r   r  rZ   rv   r3   )r4   s   "r*   r5   r5     sG      c  	
 r)   c                 \   \        WW#R 7      pRR.V,           p\        P                  W4      pVP                  ^8X  dn   \        P
                  ! V 4      pV P                  ^,          pV P                  P                  R8X  d   V^8  d   \        P                  pVP                  VR7      pV# )r  Ncudar  )r  r   _unsafe_indexr  r1   r   rN  r  r  rF   r  r  )	r   rM  r  r  spatial_indicesr  rO  r  
n_channelss	   &&&&     r*   r  r    s     8FO Tl_,G/F{{a33E: [[^
<<&:>!33M"""?Mr)   c           	      2   V'       d   V'       d   ^pMV'       d   ^pMV'       d   ^pM^p\        V 4      V,          ^ 8w  d   \        R\        V 4       RV 24      h\        ^ \        V 4      V4       Uu. uF  p\        WWC,            4      NK  	  up# u upi )r  zlen(params)=z  is not divisible by group_size=)r  re  r_   r   )params
has_biaseshas_projections
group_sizer  s   &&&  r*   gather_paramsr5    s    o
	
	


6{Z1$3v;-'G
|T
 	
 49CK3T3Taf()3T  s   5Bc                     V'       dN   V ^V,          ,          V^V,          ,          rTV ^V,          ^,           ,          V^V,          ^,           ,          rvMW,          W,          rTRRrvWEWg3# )r,   Nr    )r1  hiddensr  bidirectional
cur_params
cur_hiddenbidir_paramsbidir_hiddens   &&&&    r*   params_hiddensr=    sZ    !'AAJ%+AEAI%6A	8Jl!'GJJ%)4l<==r)   c                     W8:  d   \        R V RV R24      hVP                  V P                  ^ W!V,
          4      4       V P                  ^ ^ V4      # )last_batch_size (z) must be > batch_size (ry  )re  r  rh  )r:  last_batch_size
batch_sizer7  s   &&&&r*   update_hidden_for_packedrB    s_    $00HTUV
 	
 NN:$$Q
j4PQRQ:..r)   c           	          W8X  d   V # W8  d   \        R V RV R24      h\        P                  ! V VP                  ^ WV,
          4      34      # )r?  z) must be < batch_size (ry  )re  rF   concatrh  )r:  r@  rA  
inp_hiddens   &&&&r*    update_hidden_for_packed_reverserF    sh     $$00HTUV
 	
 <<a2NO	
 r)   c           	         V^ ,          pV^,          pV'       d
   V^,          MRp	V'       d
   V^,          MRp
. p. pV'       d
   VR,          MV^ ,          pVP                  ^ ^ V4      p\        P                  ! V \        V4      4      pV'       d   VRRR1,          pV F^  p V P                  ^ ,          pVV8X  d   M#V'       d   \        WVV4      pM\        WVV4      pV! WWyW4      pTpVP                  V4       K`  	  V'       d   VP                  4        M!VP                  V4       VP                  4        \        P                  ! V^ 4      pV'       g   \        P                  ! V^ 4      MTpVV3# )r   Nr^   )
rh  rF   r	  r  rN  rF  rB  r  reverseri  )inphiddenr1  r2  	hidden_fnbatch_sizesrH  	ih_weight	hh_weightih_biashh_biasstep_outputr7  r@  r:  	split_inpr  r   
hidden_outs   &&&&&&&            r*   one_layer_rnn_datarT    sC    q	Iq	I%fQi4G%fQi4GK"$G)0k"ok!nOq!_5JCk!23IddO	IIaLa9QJ 2QJ s	IW
:&# & z"
))K
#C.57A&:J
?r)   c                    a  V 3R  lpV# )c                 L   < S! \         P                  ! WV4      V ,           4      # r:   r   linearr  r:  rM  rO  rN  rP  nonlinearitys   &&&&&&r*   rQ   rnn_cell.<locals>.inner+  s    AHHZGDqHIIr)   r    rZ  rQ   s   f r*   rnn_cellr]  *  s    J Lr)   c                    a  V 3R  lpV# )c                 z   < \         P                  ! WV4      p S! \         P                  ! WV4      V ,           4      # r:   rW  rY  s   &&&&&&r*   rQ   rnn_cell_data.<locals>.inner2  s.    HHQ7+AHHZGDqHIIr)   r    r\  s   f r*   rnn_cell_datara  1  s    J Lr)   c           	         V^ ,          pV^,          pV'       d
   V^,          MRpV'       d
   V^,          MRp	\         P                  ! WV4      p
V'       d   V
P                  ^ 4      MT
p
VP                  ^ 4      p. pV
 F  pV! WWhWy4      pVP	                  V4       K   	  V'       d   VP                  4        \        P                  ! V^ 4      pWP                  ^ 4      3# r   )	r   rX  flipr`   r  rH  rF   ri  rS  )rI  rJ  r1  r2  rK  rH  rM  rN  rO  rP  precomputed_inputr:  rQ  r  r   s   &&&&&&         r*   one_layer_rnnre  9  s    q	Iq	I%fQi4G%fQi4G95<)..q1BS!!!$JKqi)U
:&  
))K
#C""1%%%r)   c                    V^ ,          pV^,          pV'       d   V^,          pV^,          pMH\         P                  ! VP                  4       4      p\         P                  ! VP                  4       4      pV^ ,          P                  ^ 4      p	V^,          P                  ^ 4      p
. p^pV	P                  ^4      p^pRpRpRpV P	                  4       p V	P	                  4       p	V
P	                  4       p
\         P
                  P                  P                  P                  V VVVVV	V
VVVVVVVVV4      pV^ ,          V^,          V^,          pppVVP                  ^ 4      VP                  ^ 4      33# )r   F)
rF   r;  rg  r`   r  r  r   mkldnn_rnn_layerr  rS  )rI  rJ  r1  r2  rH  w0w1w2w3hxcxrL  modehidden_size
num_layersr8  r  r  outputsrg   hycys   &&&&&                 r*   mkldnn_one_layer_lstmrt  O  sS   	B	BAYAY[[#[[#			Q	B			Q	BKD''!*KJ MKE ..
C	B	Biinn--55





!G$ 
GAJ
2rArzz!}bjjm,,,r)   c
           	      ^   V'       d   V P                  ^ ^4      MT p . p
\        V4       F  p\        W!W4      w  rrV'       d   WK^,
          8  d   TMRpV	! WW4      w  ppV
P                  V4       V'       d    V	! WWRR7      w  ppV
P                  V4       V'       d0   \        P
                  ! VX.VP                  4       ^,
          4      p MTp V^ 8w  g   K  V'       g   K  W^,
          8  g   K  \        P                  ! WRR7      p K  	  V'       d   V P                  ^ ^4      MT p W
3# )r   r   T)rH  )r  )	transposer_   r=  r  rF   ri  rW   r  )r   rJ  r1  r2  rp  r  r  r8  r  layer_fnfinal_hiddensr  r9  r:  r;  r<  fwd_inp
fwd_hiddenbwd_inp
bwd_hiddens   &&&&&&&&&&          r*   _rnn_helperr}    s    &1EOOAq!eEM:=KA>
:
 $
U(:'&u*QZ("*\t#GZ   ,IIw0'++-!2CDEEa<EEaq.&8MM%=E) , &1EOOAq!eEr)   c	                     VP                  ^ 4      p	\        W#R4      p\        V V	VVVVVVV\        \        \        \        P                  4      R7      4
      w  rV
\        P                  ! V^ 4      3# r   FrK  )	unbindr5  r}  r   re  r]  rF   r   stackr   rl  r1  r2  rp  r  r  r8  r  rJ  r   rx  s   &&&&&&&&&   r*   rnn_tanh_inputr    p     YYq\F6u5F$%**)=>C M1---r)   c	                     VP                  ^ 4      p	\        W#R4      p\        V V	VVVVVVV\        \        \        \        P                  4      R7      4
      w  rV
\        P                  ! V^ 4      3# r  )	r  r5  r}  r   re  r]  rF   r5  r  r  s   &&&&&&&&&   r*   rnn_relu_inputr    r  r)   c	                     VP                  ^ 4      p	\        W4R4      p\        V V	VVVVVVR\        \        V\        \        P                  4      R7      4
      w  rV
\        P                  ! V^ 4      3# r   FrL  rK  )	r  r5  r}  r   rT  ra  rF   r5  r  datarL  rl  r1  r2  rp  r  r  r8  rJ  r   rx  s   &&&&&&&&&   r*   rnn_relu_datar    w     YYq\F6u5F$##EJJ/	
C  M1---r)   c	                     VP                  ^ 4      p	\        W4R4      p\        V V	VVVVVVR\        \        V\        \        P                  4      R7      4
      w  rV
\        P                  ! V^ 4      3# r  )	r  r5  r}  r   rT  ra  rF   r   r  r  s   &&&&&&&&&   r*   rnn_tanh_datar    r  r)   c                    \         P                  ! WV4      V ,           pVP                  ^V4      pV^ ,          P                  4       p	V^,          P                  4       p
V^,          P	                  4       pV^,          P                  4       pW,          W,          ,           pWP	                  4       ,          pVf   TM\         P                  ! WR4      pW3# )r  Nr   rX  chunkr   r   )rI  rl  rm  rN  rP  	hr_weight	chunk_dimgateschunked_gatesin_gateforget_gate	cell_gateout_gaters  rr  s   &&&&&&&        r*   	lstm_cellr  .  s    HHRG,s2EKK9-MA&&(G"**,Ka %%'IQ'')H		W0	1B	GGI	B ahhrd&CB6Mr)   c                    V^ ,          pV^,          pV'       d
   V^,          MRpV'       d
   V^,          MRp\        V4      ^8X  d
   V^,          M\        V4      ^8X  d
   V^,          MRp	V^ ,          P                  ^ 4      p
V^,          P                  ^ 4      p\        P                  ! WV4      pV'       d   VP	                  ^ 4      MTp. pV F%  p \        W
WW^R7      w  rVP                  V
4       K'  	  V'       d   VP                  4        \        P                  ! V^ 4      pWP                  ^4      VP                  ^4      33# )r   Nr  )r  r`   r   rX  rc  r  r  rH  rF   ri  rS  )rI  rJ  r1  r2  rH  rM  rN  rO  rP  r  rl  rm  rd  rQ  r   s   &&&&&          r*   one_layer_lstmr  <  s   q	Iq	I%fQi4G%fQi4G[A%q	Fq8H6!9d  
		Q	B			Q	B95<)..q1BSK 3B7QRS2 ! 
))K
#CA

1...r)   c                    V^ ,          pV^,          pV'       d
   V^,          MRpV'       d
   V^,          MRp	\        V4      ^8X  d
   V^,          M\        V4      ^8X  d
   V^,          MRp
. p. pV'       d
   VR,          MV^ ,          p\        P                  ! V \        V4      4      pV'       d   VRRR1,          pV^ ,          pV^,          pVP	                  ^ ^ V4      VP	                  ^ ^ V4      ppV EF.  p V P
                  ^ ,          p\        P                  ! WV4      p VV8  dj   VP                  VP	                  ^ VVV,
          4      VP	                  ^ VVV,
          4      34       VP	                  ^ ^ V4      VP	                  ^ ^ V4      ppVV8  dc   \        P                  ! VVP	                  ^ VVV,
          4      3^ 4      p\        P                  ! VVP	                  ^ VVV,
          4      3^ 4      p\        V VVWyV
^R7      w  ppTpVP                  V4       EK1  	  V'       d   VP                  4        VV3pM]VP                  VV34       VP                  4        \        V!  w  pp\        P                  ! V^ 4      \        P                  ! V^ 4      3p\        P                  ! V^ 4      pVV3# )r   Nr  r^   )r  rF   r	  r  rh  rN  r   rX  r  rD  r  rH  rQ  ri  )rI  rJ  r1  r2  rL  rH  rM  rN  rO  rP  r  rQ  r7  r@  rR  orig_hxorig_cxrl  rm  r  rS  hidden0hidden1r   s   &&&&&&                  r*   one_layer_lstm_datar  W  sp   q	Iq	I%fQi4G%fQi4G[A%q	Fq8H6!9d  KG)0k"ok!nOCk!23IddO	QiGQiGq!_-q!_- 	B
 IIaLhhsw/ NNIIaOa$78IIaOa$78 YYq!Q'1a);B W^^AO8KLMqB W^^AO8KLMqB 3B	IQRSB23 6 "X
Bx =YYw*EIIgq,AA

))K
#C
?r)   c                >    R pV! WV4      '       d   \         # \        # )a  Check whether we could use decompose lstm with mkldnn_rnn_layer.
All the below conditions need to be met:
    * ``torch._C._get_mkldnn_enabled()`` returns ``True``.
    * All the input args are on CPU.
    * The dtypes of args are either torch.float or torch.bfloat16.
    * Inference.
    * ``has_projections`` returns ``False``.

Args:
    * input: the input sequence to LSTM
    * hx: a tuple of the input hidden state and cell state ``(h_0, c_0)`` to LSTM
    * params: the weight and bias tensors of LSTM
c                    \         P                  P                  4       '       g   R # V .\        V4      ,           \        \        P
                  ! V4      4      ,           pV Uu0 uF  qDP                  kK  	  pp\        V4      ^8w  d   R # VP                  4       pV\         P                  ! R4      8w  d   R # V Uu0 uF  qDP                  kK  	  ppV F+  pV\         P                  \         P                  39  g   K*   R # 	  V P                  '       d   R # V^ ,          P                  ^4      V^,          P                  ^4      8g  p	V	'       d   R # R# u upi u upi )Fr  T)rF   r  _get_mkldnn_enabledr  r	   from_iterabler  r  popr  rv   bfloat16requires_gradrg  )
r   rl  r1  r  tdevicesr  dtypesr  r3  s
   &&&       r*   
use_mkldnn2select_one_layer_lstm_function.<locals>.use_mkldnn  s    xx++--'DH$tE,?,?,G'HH%,-W88W-w<1U\\%((#*+7a''7+EU[[%..99  Q%**Q-2a5::a=8) . ,s   "E;E)rt  r  )r   rl  r1  r  s   &&& r*   select_one_layer_lstm_functionr    s"    : %V$$$$r)   c	                    \        V4      ^8w  d   \        R\        V4       24      h\        W#V^ ,          P                  ^4      V^,          P                  ^4      8g  4      p\	        \        V^ ,          V^,          4      4      p	\        WV4      p
\        V V	VVVVVVVV
4
      w  r\	        \        V!  4      pV\        P                  ! V^ ,          ^ 4      \        P                  ! V^,          ^ 4      3# )r,   $lstm expects two hidden states, got )
r  re  r5  rg  r  rQ  r  r}  rF   r  )r   rl  r1  r2  rp  r  r  r8  r  rJ  rw  r   rx  s   &&&&&&&&&    r*   	lstm_implr    s     2w!|CCG9MNN6r!uzz!}1

1/MNF#beRU#$F-e@H$C m,-MM!,a0%++mA>NPQ2RRRr)   c	                    \        V4      ^8w  d   \        R\        V4       24      h\        W4V^ ,          P                  ^4      V^,          P                  ^4      8g  4      p\	        \        V^ ,          V^,          4      4      p	\        V V	VVVVVVR\        \        VR7      4
      w  r\	        \        V!  4      pV
\        P                  ! V^ ,          ^ 4      \        P                  ! V^,          ^ 4      3# )r,   r  F)rL  )r  re  r5  rg  r  rQ  r}  r   r  rF   r  r  s   &&&&&&&&&   r*   lstm_data_implr    s     2w!|CCG9MNN6r!uzz!}1

1/MNF#beRU#$F$#=C m,-MM!,a0%++mA>NPQ2RRRr)   c                    V P                  ^^4      p\        P                  ! WV4      P                  ^^4      pV^ ,          V^ ,          ,           P                  4       pV^,          V^,          ,           P                  4       p	V^,          V^,          V,          ,           P	                  4       p
W,
          V	,          V
,           # r   )r  r   rX  r   r   rI  r:  rM  rO  rN  rP  chunked_igateschunked_hgates
reset_gate
input_gatenew_gates   &&&&&&     r*   gru_cellr    s    YYq!_NXXjW=CCAqIN #nQ&77@@BJ #nQ&77@@BJq!^A%6%CDJJLH!Z/(::r)   c                    \         P                  ! WV4      P                  ^^4      p\         P                  ! WV4      P                  ^^4      pV^ ,          V^ ,          ,           P                  4       pV^,          V^,          ,           P                  4       p	V^,          V^,          V,          ,           P	                  4       p
W,
          V	,          V
,           # r  r  r  s   &&&&&&     r*   gru_cell_datar    s    XXcg6<<QBNXXjW=CCAqIN #nQ&77@@BJ #nQ&77@@BJq!^A%6%CDJJLH!Z/(::r)   c	                     \        W4R 4      p\        V VP                  ^ 4      VVVVVVR \        \        V\
        R7      4
      w  rV	\        P                  ! V
^ 4      3# )Fr  )r5  r}  r  r   rT  r  rF   r  )r  rL  rl  r1  r2  rp  r  r  r8  r   rx  s   &&&&&&&&&  r*   gru_impl_datar     se     6u5F$
		!"}UC M1---r)   c	                     \        W#R 4      p\        V VP                  ^ 4      VVVVVVV\        \        \
        R7      4
      w  rV	\        P                  ! V
^ 4      3# )Fr  )r5  r}  r  r   re  r  rF   r  )r   rl  r1  r2  rp  r  r  r8  r  r   rx  s   &&&&&&&&&  r*   gru_implr  >  sb     6u5F$
		!2C M1---r)   c                     \        V P                  4       W4      p\        V^ 4      p\        V^4      p\        P                  P
                  P                  WW%V4      # r   )r  rg  r  rF   r  r   _upsample_bilinear2d_aar   rM  align_cornersr  r  scale_hscale_ws   &&&&   r*   upsample_bilinear2d_aa_vecr  \  sP     ){REmQ/GmQ/G99>>11mg r)   c                     \        V P                  4       W4      p\        V^ 4      p\        V^4      p\        P                  P
                  P                  WW%V4      # r   )r  rg  r  rF   r  r   _upsample_bicubic2d_aar  s   &&&&   r*   upsample_bicubic2d_aa_vecr  h  P     ){REmQ/GmQ/G99>>00mg r)   c                     \        V P                  4       W4      p\        V^ 4      p\        V^4      p\        P                  P
                  P                  WW%V4      # r   )r  rg  r  rF   r  r   _upsample_lanczos2d_aar  s   &&&&   r*   upsample_lanczos2d_aa_vecr  t  r  r)   c                     \        V P                  4       W4      pV'       d   TMR .\        V4      ,          p\        WW%4      # r:   )r  rg  r  _upsample_linear)r   rM  r  r  r  r  s   &&&&  r*   _upsample_linear_vecr    s7     ){RE+]$#e*1DFE-@@r)   c          
      x    V ^8  d   QhR\         R\        \        ,          R\        R\        R,          R\         /# )r,   r   rM  r  r  NrX   r   r  rZ   r3   rv   )r4   s   "r*   r5   r5     sI     K KKcK K dl	K
 Kr)   c                     \        WW#.4      # r:   r  )r   rM  r  r  s   &&&&r*   upsample_linear1dr    s     EzJJr)   c                    V ^8  d   QhR\         R\        \        ,          R\        R\        R,          R\        R,          R\         /# )r,   r   rM  r  r  Nr  rX   r  )r4   s   "r*   r5   r5     sX     U UUcU U dl	U
 dlU Ur)   c                     \        WW#V.4      # r:   r  )r   rM  r  r  r  s   &&&&&r*   upsample_bilinear2dr    s     E(?STTr)   c                    V ^8  d   QhR\         R\        \        ,          R\        R\        R,          R\        R,          R\        R,          R\         /# )	r,   r   rM  r  r#  Nr  r  rX   r  )r4   s   "r*   r5   r5     s^     
 

c
 
 dl	

 dl
 dl
 
r)   c                     \        WW#WE.4      # r:   r  )r   rM  r  r#  r  r  s   &&&&&&r*   upsample_trilinear3dr    s     Mh+I r)   c                     V'       d!   V^8  d   V R,
          VR,
          ,          # ^ # Ve   V^ 8  d
   RV,          # W,          # )r]   ry   r    )rF  rG  r  r   s   &&&&r*   _compute_scaler    s@    5=\#(S.1HqH#/EAIsU{U7CUUr)   c                 N    V'       d	   W,          # WR ,           ,          R ,
          # r@  r    )r   	dst_indexr  s   &&&r*   _compute_source_indexr    s       C(3..r)   c                t    V ^8  d   QhR\         \        ,          R\         \        ,          R\        R\        /# )r,   r  weightsweights_precisionrX   r   r   )r4   s   "r*   r5   r5     s6     7 7	&	7$,V$47IO77r)   c                     \        R  \        W4       4       4      ^V^,
          ,          ,           pW2,	          p\        P                  ! V^ ^4      P	                  \        P
                  4      # )c              3      "   T FJ  w  rVP                  \        P                  4      VP                  \        P                  4      ,          x  KL  	  R # 5ir:   )r=   rF   r  )r"  r  rG  s   &  r*   r#  %_sum_tensors_uint8.<locals>.<genexpr>  s8      :K$!U[[ADD---:Ks   AA)_sum_tensorsrQ  rF   r   r=   r  )r  r  r  r  s   &&& r*   _sum_tensors_uint8r    s_      :=c:K 	
 1$	%'F (F;;vq#&))%++66r)   c                0    V ^8  d   QhR\         R\        /# )r,   r  rX   r   r   )r4   s   "r*   r5   r5     s     - -'9 -f -r)   c                    \         P                  ! V 4      P                  4       p^p\         P                  ! W!P                  R7      pRV^V^,           ,          ,          ,           pVR8  pW%P                  4       ,
          # )   r  r   i   )rF   r  r   r  r  r   )r  
max_weightmax_weight_precision
precisionsvaluesr  s   &     r*   _compute_weight_precisionr    se    W%))+J2;L;LMJ:zA~!677FgD((*,,r)   c          
          V ^8  d   QhR\         R\        \        ,          R\        R\        \        R,          ,          R\         /# )r,   r   rM  r  r  NrX   r  )r4   s   "r*   r5   r5     sN     I IIcI I 	I
 Ir)   c                   a aa S P                   ^,          pS P                   R,          p\        V4      p\        P                  ! S \        P                  P
                  R7      w  poVVV 3R lp\        \        WQV4      4       U	U
UUu. uF   w  p	w  rpV! WW6^,
          V	,
          4      NK"  	  ppp
p	p\        \        V!  4      w  rp. p\        ^ ^..V,          !   Fx  pRR.\        V4       Uu. uF#  pVV,          ^ 8X  d
   VV,          MVV,          NK%  	  up,           p\        P                  S V4      p\        VS4      pVP                  V4       Kz  	  \        \        V4      4       F  p	W,          W,          ,
          P!                  RR4      P#                  S4      p\        VR,          VR,          4       UUu. uF+  w  ppV\$        P&                  ! VV,
          V4      ,           NK-  	  pppK  	  \        V4      ^8w  d   \)        R	\        V4       24      hV^ ,          p\        P*                  ! S 4      pS P,                  P.                  R
8X  d   V^8  d   \$        P0                  p\3        V\$        P4                  4      '       g"   \)        R\/        V4      P6                   24      hVP9                  VR7      pS P;                  4       '       g   VP=                  4       pV# u uppp
p	i u upi u uppi )r]   r,   NNr  c                   < \        WS	V4      p\        P                  ! VSP                  R 7      P	                  S
R7      p\        WES	4      P                  RR7      pVP                  ! VP                  ^ ,          .^.V,          O5!  pVP	                  \        P                  4      pV^,           P                  V ^,
          R7      pWgV3# )r  r  r   r   r   )
r  rF   r  r  r=   r  r   r^  rN  r	  )inp_sizerG  r  nsqueezescale_factorr  x_f32r>   xp1r  r  r   s   &&&&     r*   
get_values$_upsample_linear.<locals>.get_values  s    %h-P LL%,,7:::G%l}EKKPSKTekk!n@sh/?@HHU[[!1umm1m-}r)   Nr   ry   :NNr,   :r]   Nr,   z+Expected vs to have exactly 1 element, got r,  z$Expected result to be a Tensor, got r  )rN  r  r1   rK   r2   INT_TO_FLOATr^  rQ  r  r
   r_   r   r-  r   r  reversedr   r=   rF   r  re  r   r  r  r  r<   r   r!   r  r  round)r   rM  r  r  r/  	inp_sizesn_dimsra   r  r  r  rG  r  xs_f32xsxp1svsr~  kr  vxscalev1v2rO  r  r  s   f&f&                      @r*   r  r    s    QJBI^F''!AANNHAu
 09	/0
0
+A+F 	8vzA~>0
   CL)F	B1vh'(TluV}U}!qtqybed1g=}UUuc*#Au-
		!	 ) eFm$)be#**3477> bgr$x0
 1B 27F+++0 	 
 % 2w!|J3r7)TUUUF //6M ||F"zB//fell++24<3H3H2IJ
 	
 ];F""$$MY V
s   
&K.
2)K61K;c                <    V ^8  d   QhR\         R\         R\        /# )r,   r~  r  rX   r   r3   )r4   s   "r*   r5   r5   )  s!      F v $ r)   c                 4    V P                   VP                   8H  # r:   r  )r~  r  s   &&r*   is_same_sizer  (  s    77aggr)   c                 ,    \         P                  W4      # r:   )r   r  )r>   rN  rL   s   &&*r*   _reshape_aliasr  -  s     99Qr)   c                 ,    \         P                  W4      # r:   )r   r  )r>   r  s   &&r*   r-  r-  3  s    ::a!!r)   c                 .    \         P                  WW#4      # r:   )r   r  )r>   r  r   r  s   &&&&r*   r  r  8  s    >>!e88r)   c                    V FL  pVf   K	  \         P                  ! VP                  \         P                  \         P                  39   R 4       KN  	  \         P                  ! VP                  \         P
                  8H  R 4       ^ RIHp V! V P                  4       ^ 8H  4      '       d<   \         P                  P                  W4      pV P                  VP                  V4      # \        \        V4      4       F<  pW',          pVf   K  VP                  ^ V P!                  V4      ^,
          R7      W'&   K>  	  \"        P%                  W4      P'                  V( V4      # )Nc                      R # z3tensors used as indices must be long or int tensorsr    r    r)   r*   r   &_unsafe_masked_index.<locals>.<lambda>C  r  r)   c                      R # z*tensors used as masks must be bool tensorsr    r    r)   r*   r   r  H      <r)   r  r  )rF   r   r  r  rZ   r3   r  r  r  _meta_registrationsmeta_index_Tensorr  rN  r_   r  r   rg  r   r-  r  )r>   r  r  fillr  r  meta_resultr  s   &&&&    r*   r  r  =  s   LL

EII66M  
LL

ejj <
 Eaggi1n%%//AA!Mzz+++T223w< 
q	A>GJ !
 a)55teTBBr)   c                 t   V FL  pVf   K	  \         P                  ! VP                  \         P                  \         P                  39   R 4       KN  	  \         P                  ! VP                  \         P
                  8H  R 4       V P                  4       ^ 8X  d   V P                  4       # \        \        V4      4       FL  pW%,          pVf   K  VP                  V P                  V4      ) V P                  V4      ^,
          R7      W%&   KN  	  VP                  V( ^ 4      p\        P                  WVRR7      # )Nc                      R # r  r    r    r)   r*   r   5_unsafe_masked_index_put_accumulate.<locals>.<lambda>_  r  r)   c                      R # r   r    r    r)   r*   r   r(  d  r!  r)   r  Tr  )rF   r   r  r  rZ   r3   r  r  r_   r  r   rg  r  r   r  )r>   r  r  r  r  r  masked_values   &&&&   r*   #_unsafe_masked_index_put_accumulater+  Y  s    LL

EII66M  
LL

ejj <
 	wwyA~wwy3w< 
!&&)QGGJ !
 %%teQ/L!!!lt!LLr)   c                    V ^8  d   QhR\         R\         R\         R,          R\        R\        R\        \         \         3,          /# r,   r   r+  r   Nr  rZ  rX   r  )r4   s   "r*   r5   r5   s  sQ     3  3 
3 3  TM3  	3 
 3  66>3 r)   c                 
   V P                  4       p^pV^8  d   ^ pVeC   V^8  d2   ^.V,          pVP                  ^ ,          Wv&   VP                  V4      pMTpW,          p \        P                  ! W8g  V^ 4      p	V	P                  V4      p
\        P                  ! WV
4      P                  V4      ) p\        P                  ! W8g  V^ 4      pV\        P                  P                  8X  d   V^8  d   V P                  RR4      pW3# Vem   XP                  V P                  4      p\        P                  ! WV
4      P                  V4      p\        P                  ! W8g  V^ 4      pVP                  4       pM!W8g  P                  4       P                  V 4      pV\        P                  P                  8X  d   VP                  4       pW3# V\        P                   P                  8X  d   VP                  4       V,          pW3# )r]   r   r    )rW   rN  r  rF   r{   r`   gatherrS  r   r%   r   r  r  r   r=   r'   r&   )r   r+  r   r  rZ  r	  r_  rN  wr`  safe_target_rO  r[  wsums   &&&&&         r*   _nll_loss_forwardr3  s  s    XXZFKzA:E "(aEE"AAx++f4fa@K((5L ll4l;CCKPPF[[/;FINN(((VaZ}}R-##HHTZZ ||AL9AA+N{{614;xxz.33588>IMM'''  
inn**	*,r)   r[  c                    V ^8  d   QhR\         R\         R\         R,          R\        R\        R\        \         \         3,          /# r-  r  )r4   s   "r*   r5   r5     sY     L L
LL TML 	L
 L 66>Lr)   c                   a a S P                  4       ^ 8  d   S P                  4       ^8:  g   \        RS P                  4        R24      hSP                  4       ^8  d   \        RSP                  4        R24      hS P                  4       ^8H  ;'       d    SP                  4       ^ 8H  pV'       gB   \        P                  ! S P                  ^ ,          SP                  ^ ,          8H  V V3R l4       S P                  R,          pVeF   VP                  4       ^8X  d   VP                  4       V8X  g   \        RV RVP                   24      h\        S SW#V4      # )r   rt  ru  rv  c                  >   < R S P                    RSP                    R2# )rw  rx  ry  r  )r   r+  s   r*   r   "nll_loss_forward.<locals>.<lambda>  s    0Jv||nTUVr)   z/weight tensor should be defined either for all z7 classes or no classes but got weight tensor of shape: r^   )rW   re  rF   r   rN  r  r3  )r   r+  r   r  rZ  r{  	n_classess   ff&&&  r*   nll_loss_forwardr9    s$    HHJNtxxzQDTXXZLPQRSSzz|aOPVPZPZP\~]^_
 	
 88:?88vzz|q'8LJJqMV\\!_,V	

 

2I6::<1#499T=i[ I//5||n>
 	

 T66lKKr)   c                    V ^8  d   QhR\         R\         R\         R,          R\        R\        R\        \         \         3,          /# r-  r  )r4   s   "r*   r5   r5     sY     L L
LL TML 	L
 L 66>Lr)   c                     \        WW#V4      # r:   )r3  )r   r+  r   r  rZ  s   &&&&&r*   nll_loss2d_forwardr<    s     T6lKKr)   c                <    V ^8  d   QhR\         R\        R\         /# r,   r>   ArX   ru   )r4   s   "r*   r5   r5     s!     / /F /u / /r)   c                 h    V^,           V ,          V^,           ,
          V ,          V ,          ^,           # r   r    r>   r?  s   &&r*   _upsample_cubic_convolution1rB    s(    UaK1q5!Q&*Q..r)   c                <    V ^8  d   QhR\         R\        R\         /# r>  ru   )r4   s   "r*   r5   r5     s!     5 5F 5u 5 5r)   c                     W,          ^V,          ,
          V ,          ^V,          ,           V ,          ^V,          ,
          # )r  r    rA  s   &&r*   _upsample_cubic_convolution2rE    s.    UQU]a!a%'1,q1u44r)   c                0    V ^8  d   QhR\         R\        /# )r,   r  rX   r   r   )r4   s   "r*   r5   r5     s     
 
 
3E 
r)   c                    RpV P                   \        P                   ! R4      8X  d   \        P                  ! V RV ,
          .^ R7      p\        P                  ! V R,           RV ,
          .^ R7      p\        W14      p\	        W!4      p\        P
                  ! V^ R7      w  rg\        P
                  ! V^ R7      w  rWhW3# \        V R,           V4      \	        W4      \	        RV ,
          V4      \        RV ,
          V4      3# )g      ?r  ry   r   r  g      )r  rF   r  rE  rB  r  )
r  r?  tt1tt2w03w12rh  rk  ri  rj  s
   &         r*    _upsample_get_cubic_coefficientsrM    s    Axx5<<&&kk1cAg,A.kk1s7C!G,!4*32*32cq)cq)r~ )S!4(.(q!4(q!4	
 	
r)   c                <    V ^8  d   QhR\         R\        R\        /# )r,   coeffstsrX   r  )r4   s   "r*   r5   r5     s'     F F%7 FV F Fr)   c                 N    \        V4      p\        R  \        W4       4       4      # )c              3   6   "   T F  w  rW,          x  K  	  R # 5ir:   r    r"  rV  rW  s   &  r*   r#  +_upsample_cubic_interp1d.<locals>.<genexpr>  s     E0DHR0Dr6  )rM  r  rQ  )rO  rP  coeffs2s   && r*   _upsample_cubic_interp1drV    s"    .r2GEF0DEEEr)   c                F    V ^8  d   QhR\         \        ,          R\        /# )r,   rP  rX   r  )r4   s   "r*   r5   r5     s     ! !Xf% !& !r)   c                 6    \        \        P                  V 4      # r:   )r   rF   r  )rP  s   &r*   r  r    s    %))R  r)   c                p    V ^8  d   QhR\         R\        R\        P                  R\        P                  /# )r,   	num_stepsr  r  r  )rZ   r3   rF   r  r  )r4   s   "r*   r5   r5     s:     N NN#'N05NEJ\\Nr)   c                     V ^8:  d   \         P                  ! ^ W2R7      # V'       g   V ^,
          V ,          M^p\         P                  ! V) W@W2R7      # )r]   r  )stepsr  r  )rF   r  linspace)rZ  r  r  r  r~  s   &&&& r*   _linspace_from_neg_oner^    sC     A~||Af::-:)a-9	$A>>1"aMMr)   c                H    V ^8  d   QhR\         R\        R\        R\        /# )r,   thetahr0  r  r  )r4   s   "r*   r5   r5   	  s(     & &f & & &T &r)   c                    V P                   pV P                  p\        W#WE4      P                  ^V^4      p\        WWE4      P                  V^^4      p\        P
                  ! RWER7      p\        P                  P                  P                  VRR^ R7      p\        P                  P                  P                  VRR^ R7      p\        P                  P                  P                  VRR^ R7      pWg,           V,           # )r]   r  constantrB  rn  r   )r]   r]   r]   )r   r,   r]   r]   )r,   r   	r  r  r^  r  rF   r  rW  r  rB  )	r`  ra  r0  r  r  r  grid_xgrid_ygrid_ones	   &&&&     r*   _make_base_grid_4drj  	  s    KKE\\F $AeDII!QPQRF#AeDII!QPQRFzz)5@H XX  $$VjPQ$RFXX  $$VjPQ$RFxx""&&xV*TU&VH?X%%r)   c          
      T    V ^8  d   QhR\         R\        R\        R\        R\        /# )r,   r`  r:  ra  r0  r  r  )r4   s   "r*   r5   r5     s/     / /f / / / /T /r)   c                    V P                   pV P                  p\        W4WV4      P                  ^^V^4      p\        W$WV4      P                  ^V^^4      p\        WWV4      P                  V^^^4      p	\        P
                  ! RWVR7      p
\        P                  P                  P                  VRR^ R7      p\        P                  P                  P                  VRR^ R7      p\        P                  P                  P                  V	RR^ R7      p	\        P                  P                  P                  V
RR^ R7      p
Wx,           V	,           V
,           # )	r]   r  rc  rd  )r]   r]   r]   r]   )r   r   )r]   r,   )r,   r]   )r   r   rf  )r`  r:  ra  r0  r  r  r  rg  rh  grid_zri  s   &&&&&      r*   _make_base_grid_5drn    s%   KKE\\F#AeDII!QPQSTUF#AeDII!QPQSTUF#AeDII!QPQSTUFzz,eCH XX  $$VjPQ$RFXX  $$VjPQ$RFXX  $$VjPQ$RFxx""&&xV*TU&VH?V#h..r)   c                R    V ^8  d   QhR\         R\        \        ,          R\        /# r,   r`  rg  r  r   r  rZ   r3   )r4   s   "r*   r5   r5   +  s%     ! !V !49 !T !r)   c                     Vw  r4rV\        WWbR 7      pVP                  R^^4      V P                  P                  ^4      ,          P	                  R4      pVP                  W5V^4      # r  r^   r  )rj  r  r  r`   r   )	r`  rg  r  r  ra   ra  r0  	base_gridgrids	   &&&      r*   _affine_grid_generator_4drw  +  s]    JA!"5QLI NN2q!$uxx'9'9!'<<AA"ED99Q1a  r)   c                R    V ^8  d   QhR\         R\        \        ,          R\        /# rp  rq  )r4   s   "r*   r5   r5   5  s%     $ $V $49 $T $r)   c                     Vw  r4rVp\        WWgVR 7      pVP                  R^^4      V P                  P                  ^4      ,          P	                  R4      p	V	P                  W5Wg^4      # rs  )rn  r  r  r`   r   )
r`  rg  r  r  ra   r:  ra  r0  ru  rv  s
   &&&       r*   _affine_grid_generator_5drz  5  sa    MA!"5QOI NN2q!$uxx'9'9!'<<AA"ED99Q1##r)   c                R    V ^8  d   QhR\         R\        \        ,          R\        /# rp  rq  )r4   s   "r*   r5   r5   B  s*     S S StCy S Sr)   c                     \         P                  ! \        V4      R9   R 4       \        V4      ^8X  d   \        WVR7      # \	        WVR7      # )r  c                      R # )zCaffine_grid_generator needs 4d (spatial) or 5d (volumetric) inputs.r    r    r)   r*   r   'affine_grid_generator.<locals>.<lambda>E  s    Ur)   rt  r  )rF   r   r  rw  rz  )r`  rg  r  s   &&&r*   affine_grid_generatorr  ?  sF     
LLD	VU 4yA~(MRR(MRRr)   c                l    V ^8  d   QhR\         R\         R\        R\        R\        R\        R\         /# )r,   r~  rv  interpolation_modepadding_moder  _expand_gridrX   r  )r4   s   "r*   r5   r5   M  sW     f4 f4f4
f4 f4 	f4
 f4 f4 f4r)   c           	        a aaaaaaaaaa a!a"a#a$a%a&a'a(a)a*a+a,a- \         P                  ! SR9   V3R l4       \         P                  ! SR9   V3R l4       R V3R llo-R R lo+R VVV+3R llo R	 V V-3R
 llpS P                  w  ooo$o%VP                  w  po)o*pV^8w  d   \        RV 24      hS'       d)   VP	                  S^S)S*V4      P                  SSS)S*^4      pR V$V%3R llo&\         P                  ! SS P                  R7      P	                  S^^^4      o\         P                  ! SS P                  R7      P	                  ^S^^4      oR VVVV&V)V*3R lloR VVV V3R llo"VR,          p	VR,          p
S^ 8X  d   V! V	S%4      pV! V
S$4      pVP                  4       VP                  4       uo'o(S'^,           S(rS'S(^,           ppTTppVV,
          VV,
          ,          pW,
          VV,
          ,          pW,
          W,
          ,          pVS',
          VS(,
          ,          p\        V"3R lS'S(V3WV3VVV3VVV33 4       4      # S^8X  d=   V! V	S%4      pV! V
S$4      pVP                  4       pVP                  4       pS"! VV^4      # S-! V	S%4      pS-! V
S$4      pVP                  4       o'VP                  4       o(VS',
          o,VS(,
          pS'       g#   S,P                  ^4      o,VP                  ^4      pR V V"V$V%3R llo#R V#V'V(V,3R llo!\        ;QJ d     . V!3R l\        ^4       4       F  NK  	  5M! V!3R l\        ^4       4       4      p\        VV4      # )r   c                     < R S  2# )zInvalid interpolation mode r    )r  s   r*   r   "_grid_sampler_2d.<locals>.<lambda>^  s    -.@-ABr)   c                     < R S  2# )zInvalid padding mode r    )r  s   r*   r   r  a  s    -B<.+Qr)   c                <    V ^8  d   QhR\         R\        R\         /# r,   coordsrg  rX   rY   )r4   s   "r*   r5   &_grid_sampler_2d.<locals>.__annotate__d  s!     " "F "# "& "r)   c                    < S'       d   VR ,          R ,
          MVR ,          pVR ,          R ,
          pW,          V,           # r@  r    )r  rg  r  ofsr  s   &&  r*   unnormalize%_grid_sampler_2d.<locals>.unnormalized  s6     %2tczCs
Sj3|c!!r)   c                H    V ^8  d   QhR\         R\        R\        R\         /# )r,   r  	twice_low
twice_highrX   rY   )r4   s   "r*   r5   r  o  s)     

 

F 

s 

 

PV 

r)   c                    W8X  d   \         P                  ! V 4      # V^,          pW!,
          ^,          pW,
          P                  4       p\         P                  ! WT4      pWT,          P	                  4       P                  \         P                  R7      p\         P                  ! V^,          ^ 8H  Wc,           WC,           V,
          4      # )r,   r  )rF   r8  r  fmodfloorr=   int8r{   )r  r  r  
coords_mincoords_spancoords2extraflipss   &&&     r*   reflect_coordinates-_grid_sampler_2d.<locals>.reflect_coordinateso  s    "##F++]
!-2&++-

70&--/222D{{AINE.0H50P
 	
r)   c                <    V ^8  d   QhR\         R\        R\         /# r  rY   )r4   s   "r*   r5   r  {  s!     
> 
>F 
># 
>& 
>r)   c                   < S^ 8X  d   V # S^8X  d    \         P                  ! V ^ V^,
          4      # S'       d   S! V ^ ^V^,
          ,          4      pMS! V R^V,          ^,
          4      p\         P                  ! V^ V^,
          4      # r  r   )r  rg  coords_reflectedr  r  r  s   && r*   compute_coordinates-_grid_sampler_2d.<locals>.compute_coordinates{  sx    1MQ;;vq$(33#6vq!tax.#Q #6vr1t8a<#P ;;/D1H==r)   c                <    V ^8  d   QhR\         R\        R\         /# r  rY   )r4   s   "r*   r5   r    s!     4 4V 43 46 4r)   c                 $   < S! W4      pS! W!4      # r:   r    )r  rg  	coords_unr  r  s   && r*   compute_source_index._grid_sampler_2d.<locals>.compute_source_index  s    -	"933r)   z4grid last dimension must be 2 (for x,y coords), got c                <    V ^8  d   QhR\         R\         R\         /# )r,   r  ysrX   rh   )r4   s   "r*   r5   r    s!     
 
6 
v 
& 
r)   c                    < \         P                  ! ^ V 8*  \         P                  ! V S8  \         P                  ! ^ V8*  VS8  4      4      4      # r   rF   r  )r  r  iHiWs   &&r*   in_bounds_cond(_grid_sampler_2d.<locals>.in_bounds_cond  sF      GU&&rBw0A0A!r'2PR70ST
 	
r)   r  c                H    V ^8  d   QhR\         R\         R\         R\        /# )r,   r  r  wsrX   rG  )r4   s   "r*   r5   r    s)     

 

 

V 

 

4F 

r)   c                   <aa S! W4      oS'       d   SM^o\         ;QJ dZ    . VVVV	V
3R lV P                  \        P                  R7      VP                  \        P                  R7      V3 4       F  NK  	  5# ! VVVV	V
3R lV P                  \        P                  R7      VP                  \        P                  R7      V3 4       4      # )r]   c              3   x   <"   T F/  p\         P                  ! SV^ 4      P                  SSSS4      x  K1  	  R# 5ir   )rF   r{   r  )r"  r  r?  rG  r3  oHoWs   & r*   r#  1_grid_sampler_2d.<locals>.clip.<locals>.<genexpr>  s9      
M KKa#((Ar266Ms   7:r  )r   r=   rF   r	  )r  r  r  rG  r3  r@  r?  r  r  r  r  s   &&&@@r*   clip_grid_sampler_2d.<locals>.clip  s    b%
 A1u 
 
ee%++e.EKK0H"M
u 	
u 
 
ee%++e.EKK0H"M
 
 	
r)   c                <    V ^8  d   QhR\         R\         R\         /# r,   ixiyrX   rh   )r4   s   "r*   r5   r    s!     2 2 2F 2& 2r)   c                 B   < S	! WV4      w  r4pSSSWC3,          V,          # r:   r    )
r  r  r0  idx_xidx_yw_C_idxN_idxr~  r  s
   &&&   r*   get_summand%_grid_sampler_2d.<locals>.get_summand  s*    ?bu+,r11r)   c              3   <   <"   T F  w  rpS! WV4      x  K  	  R # 5ir:   r    )r"  r  r  r0  r  s   &   r*   r#  #_grid_sampler_2d.<locals>.<genexpr>  s*      
  "" s   c                <    V ^8  d   QhR\         R\         R\         /# r  rh   )r4   s   "r*   r5   r    s!     	( 	(& 	(f 	( 	(r)   c                 :   < S! V S4      pS! VS4      pS! W#^4      # rj   r    )r  r  r>   rg   r  r  r  r  s   &&  r*   get_value_bounded+_grid_sampler_2d.<locals>.get_value_bounded  s(    #B+A#B+AqQ''r)   c                0    V ^8  d   QhR\         R\        /# )r,   r  rX   )rZ   r   )r4   s   "r*   r5   r    s     	4 	43 	46 	4r)   c                    < SV ^,
          ,           pS! S^,
          V4      S! SV4      S! S^,           V4      S! S^,           V4      3p\        VS4      # rj   )rV  )r  iy_ofscsr  ix_nwiy_nwtxs   &  r*   	get_coeff#_grid_sampler_2d.<locals>.get_coeff  s[    cAg&F!%!)V4!%0!%!)V4!%!)V4	B ,B33r)   c              3   4   <"   T F  pS! V4      x  K  	  R # 5ir:   r    )r"  r  r  s   & r*   r#  r    s     :#y~~   )r   r]   r,   ).r   ).r]   )rF   r   rN  re  r  r  r  r  r  r  r  r`   r   r_   rV  ).r~  rv  r  r  r  r  r  ra   twor>   rg   r  r  ix_neiy_neix_swiy_swix_seiy_sew_nww_new_sww_se
ix_nearest
iy_nearesttyrO  r@  r  r?  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s.   f&ffff                     @@@@@@@@@@@@@@@@@@@r*   _grid_sampler_2dr  M  s    
LLi'B 
LL	!#Q" "


> 
>4 4 77LAq"bZZNAr2s
axB3%H
 	
  yyAr2s+221aRC
 

 LL188,11!Q1=ELL188,11!Q1=E

 

2 2
 	VAVAQ!!R(!!R(xxz288:uqy%ueaiueu
urz*
urz*
rz*U
rEz* 
 t$t$t$t$	 
 
 	
 
q	 !!R(!!R(XXZ
XXZ
:z155BB

%Z%ZaBaB	( 	(
	4 	4 :q::q::'33r)   c                `    V ^8  d   QhR\         R\         R\        R\        R\        R\         /# )r,   r~  rv  r  r  r  rX   r  )r4   s   "r*   r5   r5     sD      
  	
  r)   c                 "    \        V VVVVR 7      # ))rv  r  r  r  )r  )r~  rv  r  r  r  s   &&&&&r*   grid_sampler_2dr    s      	-!# r)   c                 B  a a \         P                  ! S P                  4       ^8H  ;'       d    SP                  4       ^8H  V V3R l4       \         P                  ! S P                  ^4      SP                  ^ 4      8H  V V3R l4       S S,          P	                  ^R7      # )r,   c                  L   < R S P                  4        RSP                  4        2# )zmatrix @ vector expected, got rI  r   r   r8  s   r*   r   mv.<locals>.<lambda>  s    0BswwykJr)   c                  v   < R S P                  ^ 4       RS P                  ^4       RSP                  ^ 4       R2# )zsize mismatch, got input (r>   z), vec (ry  r  r  s   r*   r   r    s:    ,TYYq\N!DIIaL>RURZRZ[\R]Q^^_`r)   r   )rF   r   rW   rg  r   r  s   ffr*   r:  r:  	  sv     
LL
a**CGGINJ 
LL		!#` 3J""r)   c                 X   VeK   V^,
          V,          ^,           p^V,
          V ,          V\         P                  ! V 4      ,          ,
          pM+^V,
          V ,          \         P                  ! V 4      ,
          pVe	   Wb,          pVP                  VP                  4      p\	        Wd4      # r:   )r   
logsigmoidr=   r  r!  )r   r+  r   
pos_weightr  
log_weightr  s   &&&&&  r*    binary_cross_entropy_with_logitsr    s    
  1n.2
F
d"j1<<3E&EFF
d"Q\\$%77} 776<< D00r)   c                p    V ^8  d   QhR\         P                  R\         P                  R\        R\        /# )r,   tensor1tensor2is_outrX   )rF   r   r3   )r4   s   "r*   r5   r5   ,  s0        d t r)   c                   a	 V P                   VP                   8  d   W3MW3w  r4^ RIHo	 VP                   ^8  d   VP                   ^8:  g   R# VP                  '       d   V'       g   R# V P                   ^8X  d   R# S	! VP	                  4       ^ 8H  4      '       d   R# VP
                  pVP                  4       p^.p\        VR,          4       F!  pVP                  WR,          ,          4       K#  	  \        ;QJ d<    V	3R l\        V\        \        V4      4      V4       4       F  '       d   K   R# 	  R# ! V	3R l\        V\        \        V4      4      V4       4       4      # )r   r  FTr  c              3   d   <"   T F%  w  rpS! V^8H  4      ;'       g    S! W8H  4      x  K'  	  R# 5irA  r    )r"  r   r   rg  r  s   &   r*   r#  should_fold.<locals>.<genexpr>D  s<      "
D 	tqy!BB^DM%BB"
s   00r^   )r  r  r  r  r  rN  r  r  r  r7  rQ  r  )
r  r  r  t1t2t1_shape	t1_strideexpected_striderg  r  s
   &&&      @r*   should_foldr  ,  s#    $+<<7<<#?ggEWFBDGGqLRWW\	||qbhhjAo&&xxH		I cO"&tb&99: '3 !$tH_56"
33 3 3 !$tH_56"
  r)   )pass_is_outr  c                
   ^ RI HpHp V P                  4       pVP                  4       pV^ 8X  g   V^ 8X  d   \	        RV RV 24      hV^8X  d   V^8X  d   \
        P                  ! W4      # V^8X  d   V^8X  d   \
        P                  ! W4      # V^8X  dI   V^8X  dB   \
        P                  ! \
        P                  ! \
        P                  ! V ^ 4      V4      ^ 4      # V^8X  d   V^8X  d   \
        P                  ! W4      # \        WV4      '       Ede   We8  pV'       d   VP                  MT pV'       g   TMV^8X  d   V P                  4       MT p	VP                  p
\        V
RR 4      p\!        \"        P$                  V4      pV	P                  4       ^8H  pV'       d#   VP'                  V	P                  ^,          4       VP)                  WR,          4      pV'       d^   \
        P*                  P,                  P/                  VP                  V	4      V4      pV'       d   VP                  P1                  4       # T# \
        P*                  P,                  P/                  VP                  V	4      V4      # V^8  Ed   V^8  Ed   V^8  d   V P3                  R4      M^pV P3                  R4      pV P                  RR pV^8  d   VP3                  R4      MVP3                  R4      pV^8  d   VP3                  R4      M^p. p\5        V^,
          4       F#  pVP'                  VP3                  V4      4       K%  	  V^8X  d   V^8X  d   V! V^ ,          V^ ,          8g  4      '       d   V! V^ ,          ^8H  4      '       d.   V P6                  '       d   \9        V P                  ^ 4      V4      # V! V^ ,          ^8H  4      '       d-   VP6                  '       d   \9        WP                  ^ 4      4      # \        \
        P:                  ! VV4      4      pVVV.,           p\=        V4      pV P?                  V4      P)                  VVV4      pV^8H  pV'       d<   VV.,           pVP?                  V4      P)                  VV4      P                  ^4      pM-VVV.,           pVP?                  V4      P)                  VVV4      pTpV^8  d   VP'                  V4       V^8  d   VP'                  V4       V'       d0   VPA                  V4      P                  R4      PC                  V4      # VPA                  V4      PC                  V4      # \
        PD                  ! RR 4       R# )	r   )r  guard_or_truez9matmul does not support 0-dimensional tensors, got dims: z and NFc                      R # )z/both arguments to matmul need to be at least 1Dr    r    r)   r*   r   matmul.<locals>.<lambda>  s    $Ur)   r^   r  )#r  r  r  rW   re  rF   dotr:  rS  r.  r`   r  r  r  rN  r  r   rn  r  r  r^  r  r   _unsafe_viewr  rg  r_   r  r  broadcast_shapesr  r  bmmr  r   )r  r  r  r  r  dim_tensor1dim_tensor2rv  r  r  sizes_1ro  folded_dim1t2_is_matrix	t1_foldedr  r  m1batch_tensor1m2r  batch_tensor2r  expand_batch_portiontensor1_expand_sizeexpand_batch_producttensor1_expanded
vector_rhstensor2_expand_sizetensor2_expandeds   &&$                           r*   r  r  L  s    T++-K++-Ka;!+G}TYZeYfg
 	
 aK1,yy**		kQ.xx))		kQ.}}UXXeoogq&A7KQOO		kQ.xx))	Wv	.	.  -	$WZZ'$G+:J799;PW 	 ((GCRL)X\\<8 vvx1}, JJ{BK8	 YY^^00b1A<PF-6699'')BFB99>>..y||B/?NN		kQ. !,aGLLQ\\"cr*!,qW\\"gll26F +aGLLQ#%{Q'A  a1 ( 1q mA.-2BBCCmA.!3449N9N9Ngooa0'::mA.!3449N9N9Ngq'9::  $""=-@ 
 3aW<#$89 #>>*=>FF !R
 !A%
"6""=23-r21  #7"a"@&~~.ABJJ$b!  ,?"?"#''(89AA"EJJ<XX#''(89>>|LLUUVr)   c                    V ^8  d   QhR\         R\        \        \        3,          R\        R\        R,          R\        R,          R\         /# )r,   r   rM  r  r  Nr  rX   r   r   rZ   r3   rv   )r4   s   "r*   r5   r5     s\     T TTsCxT T T\	T
 T\T Tr)   c                 \  a aaaaaaa S P                   w   poo\        SV^ ,          W#4      p\        SV^,          W$4      p\        P                  ! S \        P                  P
                  R7      w  rX\        P                  ! V^ ,          S P                  R7      P                  VR7      p	\        P                  ! V^,          S P                  R7      P                  VR7      p
\        WzV4      p\        WiV4      pVP                  R4      pVP                  4       pVP                  4       pW,
          P                  RR4      pW,
          P                  RR4      pVP                  \        P                  4      pVP                  \        P                  4      pV^,
          W^,           V^,           3pV^,
          W^,           V^,           3o\        V4      o\        V4      pRRuopS P                   \        P"                  8X  d   \%        S4      o\%        V4      pS Uu. uFR  pV^S,          ,          \        P&                  ! V4      R,          ,           P                  \        P(                  4      NKT  	  upoV Uu. uFR  pV^V,          ,          \        P&                  ! V4      R,          ,           P                  \        P(                  4      NKT  	  ppVVV 3R loV VVVV3R	 lo\*        ;QJ d    . V3R
 lV 4       F  NK  	  5M! V3R
 lV 4       4      pS P                   \        P"                  8X  d   Vf   \-        R4      h\/        VVV4      pM\1        R \3        VV4       4       4      p\        P4                  ! S 4      pVP7                  VR7      pV# u upi u upi )r   r  r  r  r   ry   Nr   c                    < \         P                  ! V ^ S^,
          4      p\         P                  ! V^ S^,
          4      p\        P                  SRRW#.4      pV# r   )rF   r   r   r-  )r  r  y_idxx_idxr  in_hin_wr   s   &&   r*   load_bounded0upsample_bicubic2d_default.<locals>.load_bounded  sM    B4!8,B4!8,utT5&@Ar)   c                   <a  \         ;QJ d    . VV 3R  lS 4       F  NK  	  5M! VV 3R  lS 4       4      pSP                  \        P                  8X  d   Sf   \	        R4      h\        VSS4      # \        R \        VS4       4       4      # )c              3   6   <"   T F  pS! SV4      x  K  	  R # 5ir:   r    )r"  x_ofsr!  rg   s   & r*   r#  Cupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>  s     B'l1e,,'s   z4weights_precision_x must not be None for uint8 inputc              3   6   "   T F  w  rW,          x  K  	  R # 5ir:   r    rS  s   &  r*   r#  r&    s     J4IBGG4Ir6  )r   r  rF   r  re  r  r  rQ  )rg   src_xr   ixs_ofsr!  weights_precision_x	weights_xs   f r*   get_x_interp0upsample_bicubic2d_default.<locals>.get_x_interp  sq    B'BB'BB;;%++%"*$J  &eY8KLLJCy4IJJJr)   c              3   4   <"   T F  pS! V4      x  K  	  R # 5ir:   r    )r"  y_ofsr,  s   & r*   r#  -upsample_bicubic2d_default.<locals>.<genexpr>  s     ;7%,u%%7r  z4weights_precision_y must not be None for uint8 inputc              3   6   "   T F  w  rW,          x  K  	  R # 5ir:   r    rS  s   &  r*   r#  r0    s     L6K(2bgg6Kr6  r  r^   )rN  r  r1   rK   r2   r  rF   r  r  r=   r  r`   r  r   r	  rM  r  r  r  r  int16r   re  r  r  rQ  r   r  )r   rM  r  r  r  ra   h_scale_factorw_scale_factorr  r  rc  x_floaty_floatr>   rg   yscaler  iys_ofs	weights_yweights_precision_yr0  src_yrO  r  r,  r  r   r)  r!  r*  r+  s   f&&&&                   @@@@@@@r*   upsample_bicubic2d_defaultr<    s    {{Aq$ $D+a.-QN#D+a.-QN''5#H#H#U#UHA 	[^ELL9<<5<IA[^ELL9<<5<IA#N}EG#N}EG#GAA k  c*Fk  c*F	U[[A	U[[A1uaQA&G1uaQA&G08I08I/3T,,{{ekk!7	B7	B 
 !**+ejjmc.AAEEekkR
	 
 !**+ejjmc.AAEEekkR 	 

K K E;7;EE;7;;E{{ekk!& !WXX#E96IJLc%6KLL //6M];FMI

s   %AN$AN)c          
          V ^8  d   QhR\         R\        \        \        3,          R,          R\        R\        \        \        3,          R,          R\         /# )r,   r~  rM  Nr  r  rX   r  )r4   s   "r*   r5   r5   +  s\     W WWsCx4'W W &-	W
 Wr)   c           
         \         P                  ! \        V4      \        V4      ,           ^8H  R 4       Vf   Vf   \        R4      h\	        \
        \        \        3,          \
        ;QJ d/    . R \        V P                  R,          V4       4       F  NK  	  5M(! R \        V P                  R,          V4       4       4      4      pV'       d   TMRw  rE\        WW$V4      # )r]   c                      R # )z:Must specify exactly one of output_size and scale_factors.r    r    r)   r*   r   (upsample_bicubic2d_vec.<locals>.<lambda>3  s    Lr)   z7scale_factors must not be None when output_size is Nonec              3   \   "   T F"  w  r\        \        V4      V,          4      x  K$  	  R # 5ir:   )r   r   )r"  r0  r   s   &  r*   r#  )upsample_bicubic2d_vec.<locals>.<genexpr><  s*       ?HA 	!u,-- ?s   *,r  NN)
rF   r   r3   re  r   r   rZ   rQ  rN  r<  )r~  rM  r  r  r  r  s   &&&&  r*   upsample_bicubic2d_vecrD  &  s     
LL[D//14L   I  #s(OE  #AGGBK ?EE  #AGGBK ? 
 )6}<G%amgVVr)   c                V    V ^8  d   QhR\         R\        \        R3,          R\         /# r,   r~  r  .rX   r/  )r4   s   "r*   r5   r5   J  s)     	 	v 	c3h 	F 	r)   c                 *   a  V 3R  lp\        S VV4      # )c                    < \         P                  ! V ) W,           SP                  R 7      pV^,
          V^,
          VP                  4       ,
          P                  4       ,
          # r  )rF   r  r  r  r   middler   dim_idxr~  s   &&& r*   r  _reflection_pad.<locals>.idxK  sD    ,,ufnQXXFzVaZ'++-7<<>>>r)   _reflection_or_replication_padr~  r  r  s   f& r*   _reflection_padrQ  E  s     ? *	 r)   c                V    V ^8  d   QhR\         R\        \        R3,          R\         /# rF  r/  )r4   s   "r*   r5   r5   [  s)     	 	 	sCx 	V 	r)   c                 *   a  V 3R  lp\        S VV4      # )c                    < \         P                  ! V ) W,           SP                  R 7      p\         P                  ! V^ V^,
          4      # rI  )rF   r  r  r   rJ  s   &&& r*   r  _replication_pad.<locals>.idx\  s4    ,,ufnQXXF{{7Avz22r)   rN  rP  s   f& r*   _replication_padrV  V  s     3 *	 r)   c          	          V ^8  d   QhR\         R\        \        R3,          R\        \        \        \        .\         3,          R\         /# )r,   r~  r  .idx_fnrX   )r   r   rZ   r   )r4   s   "r*   r5   r5   g  sH      38_ c3_f,- 	r)   c                   a \        V4      ^,          o\        P                  ! V P                  4       S^,           S^,           39   V3R l4       V P                  S) R pV P                  4       S,
          p\        S4       Uu. uF   qQ^S^,
          V,
          ,          ,          NK"  	  pp\        S4       Uu. uF'  qQ^S^,
          V,
          ,          ^,           ,          NK)  	  ppT p\        S4       FU  pR.VP                  4       ,          p	V! We,          W5,          Wu,          4      WV,           &   \        P                  W4      pKW  	  \        P                  ! V4      p
VP                  V
R7      pV# u upi u upi )r,   c                  8   < R S  RS ^,            RS ^,            R2# )reflection_padzd requires zD or zD inputr    r   s   r*   r   0_reflection_or_replication_pad.<locals>.<lambda>o  s"    .[q	sQwiwOr)   Nr  )r  rF   r   rW   rN  r_   r   r-  r1   r   r  )r~  r  rX  	inp_shapenc_dimr  padding_leftpadding_rightrO  r  r  rW   s   &&&        @r*   rO  rO  g  s=   
 g,!
C	LL	C!GS1W%%O IUUWs]F8=c
C
1Aq1-..
LC=B3ZHZQ#'A+.233ZMHF3Z&**,. ),@PQJ##F0  //7M];FM DHs   &E89-E=c           
        a aaa \        V4      ^,          oVP                  S) R  Uu. uF  q3^,
          NK  	  pp\        S4       Uu. uF   qR^S^,
          V,
          ,          ,          NK"  	  pp\        S4       Uu. uF'  qR^S^,
          V,
          ,          ^,           ,          NK)  	  pp. p\        VP                  4       Fl  p^.VP                  ,          p	RW&   VP	                  \
        P                  ! VP                  V,          VP                  R7      P                  V	4      4       Kn  	  VRS)  oVS) R p
R o\        S4       Uu. uF  qZV,          We,          ,           NK  	  pp\        S4       Uu. uF  qVV,          W,          ,
          NK  	  pp\        S4       Uu. uF,  p^WE,          ,          We,          ,           W,          ,
          NK.  	  pp\        S4       Uu. uF.  q[V,          ^ WE,          We,          ,           Wu,          ,           3NK0  	  pp\        P                  ! \        P                  \        S4       Uu. uF  pS! W,          4      NK  	  up4      p\        P                  S VSV,           R4      pVVV V3R lp\        P                  ! \        S4       Uu. uF  p. RONK	  	  up!   F  pV\!        ^ .S,          4      8X  d   K  . p. p\        S4       F  pVV,          ^ 8X  d   W,          pW,          pMiVV,          R8X  d   W,          pW,          ^We,          3pMAVV,          ^8X  d4   W,          pW,          WE,          Wu,          ,
          WE,          ^,
          3pVP	                  X4       VP	                  X4       K  	  V! VVV4      pK  	  V# u upi u upi u upi u upi u upi u upi u upi u upi u upi )r,   Nr  c                 B    V w  rp\         P                  ! W8  W8*  4      # r:   r  )index_ranger  lbubs   &   r*   index_range_condition7_reflection_pad_backward.<locals>.index_range_condition  s"    	r  !'22r)   r   c           	      |  < \        S	4       FF  pW#,          ^,          W#,          ^,          8  p\        V\        4      '       g   K:  V'       g   KD  V u # 	  \        P                  ! \
        P                  V Uu. uF  pS! V4      NK  	  up4      p\
        P                  S
VSV,           R4      pW,           # u upi )r,   r   )r_   r<   r3   rS   r   r   r  r  )r   r   index_rangesr  upper_less_than_lowerrc  r3  gr  rW   r   rf  s   &&&     r*   r  ,_reflection_pad_backward.<locals>.accumulate  s     sA$0OA$69K$K!/66;P;P 
 COP<K";/<P
 %%k4S#Fx Qs   :B9
r^   )r^   r   r]   )r  rN  r_   r  r  rF   r  r  r  rS   r   r   r  r  	itertoolsr
   r   )r   r>   r  ra  dhwr  r_  r`  r  
view_shapexyzcenterleft_reflectright_reflectrange_cr3  r   r  ra   areaoutsri  r   rc  r  rW   rf  s   f&&                     @@@r*   _reflection_pad_backwardrw    sB   
 g,!
C''3$%.
).Qq55.C
)8=c
C
1Aq1-..
LC=B3ZHZQ#'A+.233ZMHG166]S166\

u||AGGAJqxx@EEjQR 
 	#A
3$%.C3 16c
;
1!f|&&
F;6;CjAjOcf,,jLADI#JOJqQZ,/1CF::JMO
 NSSVZMWAsv/-2BBCZ   eCjQj0<jQD $$[$F
CHD  !!c
#C
1J
#CD5!s##sAAw!|i%jaB"o"vq,/:aA#&"vsv0@'@#&1*MKK,  $l3- E0 Kc *CH2 <AO R& $Ds5   N/	&N4>-N9N>=O*2O+4OO
0Or   r   rW   r4  c                h    \         P                  ! WVR 7      p\         P                  ! WVR 7      pW43# )r3  )rF   aminr  )r   rW   r4  ry  r  s   &$$  r*   aminmaxrz    s,     ::dW5D::dW5D:r)   c                    \         P                  \        P                  ! \        P                  ! V 4      ^ V 4      WVR7      # )r   r  )r   r   rF   r{   isnan)r   rW   r4  r  s   &&&$r*   nansumr}    s0     88EKKD 11d;SQV8WWr)   c          
          V ^8  d   QhR\         R\        P                  R,          R\        P                  R\        P                  R,          R\
        /# )r,   r  r  Nr  r  r  r   rF   r  r  r  r3   )r4   s   "r*   r5   r5     sR     
 
	
 ;;
 LL	

 LL4
 
r)   c          
      J    \         P                  P                  ^ V ^WW4R7      # )r   r  r  r  r  r   r  
start_step)r  r  r  r  r  s   &$$$$r*   arange_defaultr    s+     ;;!!	3f "  r)   c                    V ^8  d   QhR\         R\         R\        P                  R,          R\        P                  R\        P                  R,          R\
        /# )r,   r  r  r  Nr  r  r  r  )r4   s   "r*   r5   r5     sZ      	 ;;	
 LL LL4 r)   c          
      H    \         P                  P                  W^W#WER7      # )r]   r  r  )r  r  r  r  r  r  s   &&$$$$r*   arange_startr    s)     ;;!!AU& "  r)   c                      ^ RI Hp V! V / VB # )r   )out_dtype_dense)!torch._higher_order_ops.out_dtyper  )rL   rM   r  s   *, r*   out_dtype_decompr    s    AD+F++r)   c                z    V ^8  d   QhR\         R\         R\        R\        R\         R,          R\        R\         /# )	r,   r   r+  r  marginr   Nr  rX   )r   r   rZ   )r4   s   "r*   r5   r5     sR     ) ))) ) 	)
 TM) ) )r)   c                   a aaa	a
 \         P                  ! S 4      o \         P                  ! S4      oS P                  ^ ,          o
S P                  ^,          o	\         P                  ! V^8H  ;'       g    V^8H  R 4       \         P                  ! S P
                  ^8H  ;'       d    S	^ 8g  V 3R l4       \         P                  ! SP
                  ^8H  ;'       d    SP                  4       S
8H  V
V3R l4       Se[   \         P                  ! S4      o\         P                  ! SP
                  ^8H  ;'       d    SP                  4       S	8H  V	V3R l4       SP                  ^4      o\         P                  ! S ^SR7      pW6,
          S ,           pVP                  ^ 4      pV^8X  d   TMWw,          pSe   VSS,          ,          p\         P                  ! S	S P                  R7      p\         P                  ! VS8g  V^ 4      pV\        P                  P                  8X  d   VP!                  4       # V\        P"                  P                  8X  d)   VP%                  4       VP                  ^,          ,          # VP!                  ^R7      # )r   c                      R # )z only p == 1 and p == 2 supportedr    r    r)   r*   r   #multi_margin_loss.<locals>.<lambda>"  s    +Mr)   c                  "   < R S P                    2# zMExpected non-empty vector or matrix with optional 0-dim batch size, but got: r  r  s   r*   r   r  %  s    _`e`k`k_lmr)   c                  (   < R S  RSP                    2# )z#inconsistent target size, expected r{  r  )nframer+  s   r*   r   r  )  s    5fXYv||nUr)   c                  (   < R S  RSP                    2# )z#inconsistent weight size, expected r{  r  )rW   r   s   r*   r   r  /  s    9#i~Vr)   r  r  r   )rF   
atleast_2d
atleast_1drN  r   r  r  r`   r/  r  r  r  r{   r   r&   r   r  r'   r   )r   r+  r  r  r   r  ur|   r  rW   r  s   ff&&f&   @@r*   multi_margin_lossr    s    U#Ef%F[[^F
++a.C	LLa!!16#MN	LL

a$$C1Hm 
LLq55V\\^v5U !!&)KK1663!6V	
 a FU0A
UA	AA!VAv
,,s5<<
0CC6M1a(AINN(((vvx	imm))	)uuw##vv!v}r)   	is_targetc          
      j    V ^8  d   QhR\         R\         R\        R\        \         \         3,          /# r  r  )r4   s   "r*   r5   r5   E  s9     - --- - 66>	-r)   c                 ,  aa V P                   oVP                   o\        P                  ! V 4      p \        P                  ! V4      pV P                   ^,          p\        P                  ! \	        S4      ^8*  ;'       d    V^ 8g  V3R l4       \        P                  ! \	        S4      ^8*  ;'       d    SS8H  VV3R l4       \        P
                  ! W1P                  R7      pVR	8H  p\        P                  ! \        P                  ! WTV4      R	RR7      pWF8  p\        P                  ! Wq^ 4      p\        P                  ! V R	VR7      p	\        P                  ! WqR	4      p
\        P                  ! WJP                  R	R7      8H  ^R7      pRV	P                  P                  R	R7      ,
          V ,           pVP                  ^ 4      pW,          p\        P                  ! V^ V4      pV\        P                  P                   8X  d"   VP#                  R
R7      P%                  4       pMBV\        P&                  P                   8X  d   VP#                  4       pMVP#                  R
R7      pVP)                  V P*                  4      P-                  S4      pW3# )r]   c                     < R S  2# r  r    )orig_input_shapes   r*   r   0multilabel_margin_loss_forward.<locals>.<lambda>Q  s    _`p_qrr)   c                     < R S RS  2# )zinconsistent target size: z for input of size: r    )r  orig_target_shapes   r*   r   r  U  s    ,->,??STdSefr)   r  Tr3  r  r   ry   r^   r  )rN  rF   r  r   r  r  r  ry  r{   r/  rm  r`   Tr  r   r&   r   r   r  r'   r=   r  r^  )r   r+  r  rW   r  is_endend_idxtarget_masktidx0r  tidx1r  r|   r  r  s   &&&          @@r*   multilabel_margin_loss_forwardr  B  s    {{U#Ef%F
++a.C	LL"//saxr 
LL!#MM(9=M(Mf
 ,,s==
1Cr\FjjV#6BMG-KKKQ/EU%0AKKR0E		#R!88a@Iaccmmm##e+A	AA	AIq!$AINN(((EEgE##%	imm))	)EEGEEgEU[[)112CDI<r)   	attn_maskr   c                    V ^8  d   QhR\         R\         R\         R\        R\        R\         R,          R\        R,          R	\        \         \         3,          /# )
r,   querykeyr   	dropout_p	is_causalr  Nr   rX   )r   rv   r3   r   )r4   s   "r*   r5   r5     ss     A AA	A A 	A
 A }A 4<A 66>Ar)   c                h  a aaa \         P                  ! \         P                  ! S 4      V 3R  l4       \         P                  ! S P                  4       ^8H  ;'       d/    SP                  4       ^8H  ;'       d    SP                  4       ^8H  VV V3R l4       \         P                  ! SR8H  V3R l4       \         P                  ! S P                  ^,          SP                  ^,          8H  ;'       d(    SP                  ^,          SP                  ^,          8H  R 4       \
        P                  P                  S SSVSVRVS P                  ^4      SP                  ^4      8g  R7	      w  rxVP                  ^^ ^^4      P                  \         P                  R7      P                  ^^^ ^4      pWx3# )c                  "   < R S P                    2# )z-query must be FP32, FP64, BF16, FP16 but got r  )r  s   r*   r   <scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>  s    ?}Mr)   c                  n   < R SP                  4        RS P                  4        RSP                  4        2# )z,q, k, v must be a 4 dimensional tensor, got rI  r   )r  r  r   s   r*   r   r    s1    >uyy{m2cggi[XZ[`[d[d[fZghr)   r   c                     < R S  2# )z&dropout probability must be zero, got r    )r  s   r*   r   r    s    $J9+"Vr)   c                      R # )z&q, k, v should have the same head sizer    r    r)   r*   r   r    s    8r)   N)r  r  r  dropout_maskr   
enable_gqar  )rF   r   r  rW   rN  r   "_scaled_dot_product_attention_mathr  rg  rR  r  r  )	r  r  r   r  r  r  r   r  attns	   ffff&$$  r*   *scaled_dot_product_flash_attention_for_cpur    s[    
LL&M 
LL		q@@SWWY!^@@		q0@h 
LLSV 
LLA%++a.(KKSYYq\U[[^-K8
 ::BB::a=CHHQK/ C 
LFF 	q!Q"	%"9"9	:	Aq!	 
 <r)   c                 0   a \        V 4      V3R  l4       pV# )c                  D   < S! V / VB pV ^ ,          P                  V4      # r   )r  )rL   rM   r   outplace_ops   *, r*   
inplace_op$register_inplace.<locals>.inplace_op  s%    4*6*Aw}}S!!r)   r   )aten_opr  r  s   &f r*   register_inplacer    s"    G$" %" r)   c                    V P                  4       '       g-   V P                  4       '       g   \        V4      p\        V4      p\        P                  ! W4      p\        V\        P                  4      '       d   V^8w  d	   WT,          pV^ 8X  d   V# \        V\        P                  4      '       d   V^8w  d	   W,          p W,           # rj   )r  r-  rZ   rF   r  r<   numbersNumber)r   batch1batch2rs   r   rO  s   &&&&& r*   baddbmmr    s     !!##DOO,=,=4yE
YYv&FeW^^,,
qydGNN++tqy{=r)   c                 2    \         P                  ! WR R7      # )r  r:  r<  )r   r  s   &&r*   floor_divider    s     99T88r)   c                 b    \         P                  ! \        P                  V P                  ^4      # rj   )rS   r   rn  r  rN  )r  s   &r*   	sym_numelr    s    HLL!''155r)   c                x    V ^8  d   QhR\         R\        P                  R,          R\         R,          R\         /# )r,   r   r  Nr   rX   r  )r4   s   "r*   r5   r5     sE     	D 	D
	D ;;	D 
$		D
 	Dr)   c                    Vf#   \         P                  P                  V . VR7      # \         P                  P                  V . WR7      # )Nr  )r  r   )r   r   dim_IntListIntList_out)r   r  r   s   &$$r*   sum_defaultr    sA     {xx##D"E#::xx##D"E#CCr)   c                >    V ^8  d   QhR\         R\        R,          /# )r,   r   rW   NrY   )r4   s   "r*   r5   r5     s     . .& .sTz .r)   c           	         \        V \        P                  4      '       g   V # VfA   \        P                  P                  V \        \        V P                  4       4      4      4      # \        P                  P                  W.4      # r:   )	r<   rF   r   r   rS  dimsr  r_   rW   )r   rW   s   &&r*   squeeze_defaultr    s]     dELL))
{||  tE$((*,='>??||  u--r)   c                   a \         ;QJ d3    . V3R  l\        \        V P                  4      4       4       F  NK  	  5M,! V3R  l\        \        V P                  4      4       4       4      pVP                  \
        P                  8X  d   \
        P                  MRpV P                  ^VRVR7      pWVP                  VP                  4      ,          ,          V3# )c              3   8   <"   T F  qS8w  g   K  Vx  K  	  R # 5ir:   r    )r"  r  rW   s   & r*   r#  )_weight_norm_interface.<locals>.<genexpr>  s     @ 31CxQQ 3s   
NT)r4  r  )
r   r_   r  rN  r  rF   r  rv   r0  r=   )r  rk  rW   keep_dim
norm_dtyper0  s   &&f   r*   _weight_norm_interfacer    s     u@c!''l 3@uu@c!''l 3@@H !5>> 9tJ66!Xt:6>DDGGAGG$$%t++r)   assume_uniqueinvertc                   \        V \        P                  4      '       g"   \        P                  ! WP                  R 7      p \        V\        P                  4      '       g5   V'       d   \        P
                  ! W4      # \        P                  ! W4      # ^ RIHp V! VP                  4       R\        V P                  4       R4      ,          8  4      '       d   \        WVR7      # \        WW#R7      # )r  r  g      $@g(\?)r  )r  r  )r<   rF   r   r  r  ner6  r  r  r  r  isin_defaultisin_sorting)elementstest_elementsr  r  r  s   &&$$ r*   isinr    s     h--&&x8L8LMmU\\2288H4488H44Dm))+dS9I55Q.QQRRHFCC=
 	
r)   r  c                    V ^8  d   QhR\         P                  R\         P                  R,          R\         P                  /# )r,   r   r  NrX   )rF   r   r  )r4   s   "r*   r5   r5   %  s9      
,, % \\	r)   c                H   VfA   \         P                  ! V P                  4       \         P                  V P                  R7      pM@\         P                  ! V P                  4       V\         P                  V P                  R7      pW 8  P                  V P                  4      pV# )Nr  )r  r  r  )rF   randrg  r  r  r=   r  )r   r  raw_pr  s   &$  r*   	bernoullir  $  so     

499;emmDKKP

IIK--;;	
 
$**%AHr)   c                   V P                  4       ^ 8X  d'   \        P                  ! V \        P                  R7      # VP                  ^ 8X  d   W8H  pV'       d   V( # T# V P
                  RVP                  ,          ,           pV P                  V4      p\        \        RVP                  ) ^,
          R4      4      pWQ8H  P                  VR7      pV'       d   V( # T# )r   r  r   rj   r^   )
r  rF   
empty_liker3   r  rN  r  r   r_   rm  )r  r  r  r  expanded_elem_shaper>   rW   s   &&$    r*   r  r  7  s    ~~1

;;Q't&3&"..4-2D2D+DD)*A
b=---126
7C
"
"s
"
+CC4"s"r)   c                
   V P                  4       pVP                  4       pV'       d   \        P                  ! WE.4      p\        P                  ! VR R7      w  rxVR,          VRR 8H  p	\        P                  ! V	^ ^.R4      p	V'       d   V	P                  4       p	\        P                  ! V	4      p
V
P                  ^ W4      p
V
^ V P                  4        P                  V P                  4      # \        P                  ! V4      w  r\        P                  ! W4      p\        P                  ! WP                  4       8  V^ 4      pW,          V8H  pV'       d   VP                  4       MTpVP                  V P                  4      # )T)stabler  NFr^   )r  rF   ri  sortr  logical_notr  r  r  r^  rN  searchsortedr{   )r  r  r  r  elements_flattest_elements_flatall_elementssorted_elementssorted_orderduplicate_maskr  sorted_test_elementsra   r  test_idxcmps   &&$$            r*   r  r  D  s<   $$&M&..0 yy-!DE(-

<(M%(,0DD..~1vuM+779N/q,?A()11(..AA"'**-?"@  !5E;;s%?%?%AA3J",=#)coos{{8>>**r)   c                 4    V P                  R4      pW!,          # r\   )r^  )r   r  	flatteneds   && r*   taker  a  s     R Ir)   c                     Vf   \         P                  pV\         P                  8X  d   \        V4      p\        P                  WP                  VR7      # rk  )rF   r  preserve_formatr   r   resizerN  )r   r  r  s   &&&r*   	resize_asr  h  sB    //----e4;;t[[;FFr)   c                H    V ^8  d   QhR\         R\         R\        R\         /# )r,   r   r   	ceil_moder  r  )r4   s   "r*   r5   r5   r  s6     s ss
s s sr)   c                   \         P                  ! 4       '       d   \        # V P                  P                  R8X  d   \        # VP                  R4      pVP                  R4      p	V P                  R4      p
V P                  R4      pVP                  4       ^8H  pV'       g4   VP                  ^ 4      pV P                  ^ 4      p VP                  ^ 4      pVP                  ^ 4      pVP                  ^4      pV P                  \         P                  \         P                  39   pV'       d   \         P                  MV P                  p\         P                  ! W,          W,          VV P                  R7      pV P                  W,          W,          4      pVP                  W,          W,          4      pV'       d    VP                  \         P                  4      pVP                  ^VV4      pVP                  WW4      pV'       d   VP                  V P                  4      p\         P"                  ! V4      pVP%                  VR7      pV'       g   VP'                  ^ 4      pV# )uj  
Decomposition of max_pool2d_with_indices_backward using scatter_add.

This replaces the native implementation with a high-level decomposition
that uses scatter_add for gradient accumulation. The scatter-based approach
provides automatic optimization opportunities for Inductor and handles all
pooling configurations without requiring specialized fallback paths.

Algorithm:
    For each output gradient position, use the corresponding index from the
    forward pass to scatter the gradient to the input position. When multiple
    output positions select the same input position as max, scatter_add
    automatically accumulates their gradients.

Complexity: O(B * C * H_out * W_out)
    Independent of kernel size, unlike traditional O(B * C * H_in * W_in * K²)
    approaches that iterate over input positions and kernel windows.

Known Limitations:
    - FP16/BF16: Uses FP32 accumulation internally to preserve precision when
      many gradients accumulate to the same position (overlapping pooling windows).
      This adds slight overhead but ensures numerical stability.
    - Deterministic mode: Falls back to native implementation to ensure
      consistent results across runs

Args:
    grad_output: Gradient w.r.t. pooling output [B, C, H_out, W_out]
    self: Original input tensor (for shape) [B, C, H_in, W_in]
    kernel_size: Pooling kernel size
    stride: Pooling stride
    padding: Pooling padding
    dilation: Pooling dilation
    ceil_mode: Whether to use ceil for output size calculation
    indices: Indices from forward pass (per-channel linear positions)

Returns:
    Gradient w.r.t. input [B, C, H_in, W_in]
mpsr  r  r  r^   )rF   $are_deterministic_algorithms_enabledNotImplementedr  r  rg  rW   r`   r  r%  r  r  r;  r^  r=   scatter_addr1   r   r  rS  )r   r   r  r  r  r  r  r  	in_heightin_width
out_height	out_width
is_batchedrA  channelsuse_fp32_accumaccum_dtypegrad_input_flatgrad_output_flatrs  rc   r  s   &&&&&&&&              r*    max_pool2d_with_indices_backwardr  q  s   d 1133 %' 		"Iyy}H!!"%J  $I qJ~~a !++A.##A&1Jyy|H
 !&&5==%..*IIN#1%--{7H7HK kk!!	O #**z5 ??:#8*:PQL +..u}}= &11!\CSTO !((ySJ ]];#4#45
 //5M&&]&CJ ''*
r)   c                    V ^8  d   QhR\         R\        P                  R,          R\        P                  R,          R\        P                  R,          R\
        R,          R\        /# )r,   window_lengthr  Nr  r  r  rX   )rZ   rF   r  r  r  r3   r   )r4   s   "r*   r5   r5     se       ;; LL4	
 LL4 t r)   c          	     L    \         P                  P                  V RVVVVR7      # )a  hann_window(window_length, *, dtype=None, layout=None, device=None, pin_memory=False) -> Tensor

Returns a Hann window of size :attr:`window_length` with ``periodic=True``.

Equivalent to :func:`torch.hann_window` with ``periodic=True``.

Args:
    window_length (int): the size of returned window.

Keyword args:
    dtype (:class:`torch.dtype`, optional): desired dtype. Default: global default.
    layout (:class:`torch.layout`, optional): desired layout. Default: ``torch.strided``.
    device (:class:`torch.device`, optional): desired device. Default: current device.
    pin_memory (bool, optional): if ``True``, pins the returned tensor. Default: ``False``.
Tr  )r   hann_windowperiodic)r  r  r  r  r  s   &$$$$r*   r  r    s4    2 $$ %  r)   c                    V ^8  d   QhR\         R\        R\        P                  R,          R\        P                  R,          R\        P
                  R,          R\        R,          R\        /# )	r,   r  r  r  Nr  r  r  rX   )rZ   r3   rF   r  r  r  r   )r4   s   "r*   r5   r5     sm     6 666 ;;	6
 LL46 LL46 t6 6r)   c               @   Ve   TM\         P                  ! 4       pV ^ 8X  d   \         P                  ! RW#WER7      # V ^8X  d   \         P                  ! RW#WER7      # \        P
                  ! V4      pV'       d
   V ^,           MT p\         P                  ! VVVVVR7      pVR\         P                  ,          V^,
          ,          ,          p\         P                  ! V4      pVR,          R,           pV'       d   VP                  ^ ^ V 4      MTp	V	P                  V4      # )a   hann_window(window_length, periodic=True, *, dtype=None, layout=None, device=None, pin_memory=False) -> Tensor

Returns a Hann window of size :attr:`window_length`.

.. math::
    w[n] = 0.5 - 0.5 \cos\!\left(\frac{2\pi n}{N-1}\right)

where :math:`N` is ``window_length + 1`` when ``periodic=True`` (for spectral analysis),
or ``window_length`` when ``periodic=False`` (symmetric window).

Low-precision dtypes (``bfloat16``, ``float16``) are computed in ``float32`` then cast.

Args:
    window_length (int): the size of returned window.
    periodic (bool, optional): if ``True``, returns a periodic window for use with STFT.
        Default: ``True``.

Keyword args:
    dtype (:class:`torch.dtype`, optional): desired dtype. Default: global default.
    layout (:class:`torch.layout`, optional): desired layout. Default: ``torch.strided``.
    device (:class:`torch.device`, optional): desired device. Default: current device.
    pin_memory (bool, optional): if ``True``, pins the returned tensor. Default: ``False``.
r  r  r   r   rj   r   )rF   get_default_dtyper  r  r1   ro  r  picosrh  r=   )
r  r  r  r  r  r  compute_dtyper  r  windows
   &&$$$$    r*   hann_window_periodicr    s    D &EE,C,C,EE{{V
 	
 zzV
 	
 //6M%=A		A 	
S588^q1u%&A		!A	D3A.6QXXaM*AF99Ur)   c                <    V ^8  d   QhR\         R\        R\         /# )r,   r   num_classesrX   rY   )r4   s   "r*   r5   r5   c  s!      & s F r)   c                    VR8X  d/   \        V P                  4       P                  4       4      ^,           p\        P                  P                  \        P                  ! V ^ 8  4      R4       \        P                  P                  \        P                  ! W8  4      R4       V P                  R4      \        P                  ! WP                  V P                  R7      8H  P                  \        P                  4      # )r]   z+one_hot: Class values must be non-negative.z7one_hot: Class values must be smaller than num_classes.r  r^   )rZ   r   r  r   _assert_asyncmsgrF   r7  r`   r  r  r  r=   r	  )r   r   s   &&r*   one_hotr$  b  s    b$((*//+,q0		$!)5 			$$%A
 	r<<::dkkJ	Kbor)   c                V    V ^8  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r,   __all__)__conditional_annotations__r  r   )r4   s   "r*   r5   r5      s       R  c S r)   )FF)noner:   r   )r   NNr]   )r^   FFr   r   re  )r]   r]   F)Fr   )r   ry   N)r   r]   Nr  rC  )NNN)r   r   FT)r   r   Fr  )r   FrO  )r^   (  r'  rS   rm  r  rn  r  collections.abcr   r   
contextlibr   enumr   r   r   r	   r
   typingr   r   rF   torch._meta_registrationstorch._primsr  r  torch._prims_common_prims_commonr1   torch.nn.functionalrW  r  r   r   r   r   torch._decompr   r  r   r   r   r   r   r   torch._prims_common.wrappersr   r   r   r   torch.utilsr   rI   torch.utils._pytreer   r  DispatchKeyr&  _opsr  r   r   rU   r2   r  compute_only_pw_cast_for_opmathpw_cast_for_opmath"pw_cast_for_opmath_non_tensor_argsr  pw_cast_for_int_to_realrb   rn   rq   r}   r   r$  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r)  r-  r&   r   r1  _safe_softmaxr<  rA  rF  r  rc   rP  rT  r   rW  rb  rq  r|  r  r  r  r  r  r  r  r  slicer  r  r  r  r  r  r  r  r  re  r  r  r  r  r  py_implCompositeImplicitAutogradAutogradr  r  r  r  r  r  r  r  r  r  r  r
  r  r  r	  r   r  r(  r/  r6  r;  rY  r_  rc  r  r  r  r  r  r  r  unsafe_chunkr  r  r  no_statsr  r  r  r  r  r  _fused_dropoutr  r  r  lift
lift_freshr  r  r  r  r  r#  r)  r-  _adaptive_avg_pool2drd  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r8  r  r&  r   _upsample_nearest_exact1dr   r)  r  r  r  r  r5  r=  rB  rF  rT  r]  ra  re  rt  r}  rnn_tanhr   r  rnn_relur  r  r  r  r  r  r  r  lstmr  r  r  r  grur  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-  r  r  r+  r3  r9  r<  rB  rE  rM  rV  r  r^  rj  rn  rw  rz  r  r  r  r:  r  r  r  upsample_bicubic2dr<  rD  reflection_pad1dreflection_pad2dreflection_pad3drQ  replication_pad1dreplication_pad2dreplication_pad3drV  rO  reflection_pad1d_backwardreflection_pad2d_backwardreflection_pad3d_backwardrw  rz  r}  r  r  r  r  r  r  r  r  +_scaled_dot_product_flash_attention_for_cpur  r  r  r  r  r   r  rS  rW   r  r  r  r  r  r  r  r  r  r  r  periodic_outr  addbmm_addbmmaddmm_addmv_baddbmm_fill_gelu_r4  
hardswish_	hardtanh_hardtanhhardsigmoid___iand____and____ilshift__
__lshift__r  r  index_reduce_index_reduce__ior____or____irshift__
__rshift____ixor____xor__ldexp_leaky_relu_
leaky_relulogit_logitrelu_r5  renorm_renormround_r  scatter_r]  scatter_add_r  scatter_reduce_scatter_reducesilu_r$  r5   )r'  s   @r*   <module>r}     s.        
 . "  % $      #   , , 0 7   * ( hh""  zz~~ ' 'T #*88@@# 
 uDDLL  &-88@@ & "
 "uDDQQ  **+\2   ,2 --.\4   /4 ../\S   0S
 ))*\
   +
2 ))*+( ,( ))*+" ," (()@   *@ 112\   3 ../\P  0P 'G   (G //0   1 //0\:  1: 001\L   2L **+\)   ,)< **+5  ,5 		"&   #& **+\>   ,>
 **+6 ,6 334% 5% 667
   8
$ 112\<   3< 

#/  $/ &3<>>3G3G1   '1 ../\1   01 **+0 ,0 ++, ^^))		1   -	1 44<<=  > 44??@
R  A
R 00889	  :	 00445
R  6
R#$L ))*\N   +N( ../\.  0.b 001\$  2$N 112 !^^))	1   31& ::;\
 !^^))   <  --. ^^))1   /1 667\
 ^^))		   8	 		")  #) ,,-&  .& ++,	O  -	O 

))*3? +3?l. **+$U  ,$UN ,,-E  .E
 ../O  0O 334\ X !  5X 778 K !  9K*& $M  %M` $]   %]@ 445
  6
 ,,-Y  .Y" ++334
  5
& %kCCDk223 4 E & ++,VVA  -A &  '4 ))*  +6 '  (( 556  7:*
"J 00$//2E2EFG H  	'')C)C)G)GH  ))0015 25 44<<=B >B 

))*/ +/( --55))////f 

#   $" ../   0" 

#	   $	 77??@S&  AS&n 77;;< =8 77??@Q AQj 77;;< =4 ,,4453 63l 55==>H ?HVRj ../UK/( 0 0(4 ''(<(<=''(M(MN 
 O > 
F "";#H#HIG JG AAIIJ K* 55==>( ?(  55>>?( @( @@HHIK JK4: 44<<=1 >14 ??GGHC IC8 22::;1 <14 ++,VV   - &+ !%+ 	+
 #'+ + + 15+  '+b diiAB  C &&{';';<--.VVVV, - / => 00889 :6 77??@i AiZ 77;;<" ="J 778VVV$ % 90 667VVV$ % 82 112d'   3d'N6 ))**8  +*8Z ))*49  +49n (H H H )H 'I I I  (I%@ %@ %@P ))112"";#H#HI J 32 (()< *< (=  )=@, 001Xx (  ! 2( %   &" &; ';
8 //334//334//334$$[%J%JK$$[%9%9:$$[%J%JK$$[%9%9:$$[%J%JK$$[%9%9:	3 ; L ; L ; L 5 5 5	3 66::;66::;66::;##++K,Q,QR##++K,@,@A##++K,Q,QR##++K,@,@A##++K,Q,QR##++K,@,@A	? B S B S B S < < <	?#L 0088$:Q:Q:U:UVW  (()N)NO  (()=)=>Dd;; ; < ? P X; 	##++T-K-K-O-OP ''//0U0UV''//0D0DEDd;G G < F WG 0088$:Q:Q:U:UVW  (()N)NO  (()=)=>Dd;G G < ? P XG 	##++T-K-K-O-OP ''//0U0UV''//0D0DEDd;S S < F WS 0088$:Q:Q:U:UVW  (()N)NO  (()=)=>Dd;Q Q < ? P XQ 	##++T-K-K-O-OP ''//0U0UV''//0D0DEDd;	 	 < F W	   4&>/"+\&,/-d& R ++,[BBC[112. 3 D -.8 ++,[BBC[112. 3 D -.8 **+KAABK001. 2 C ,.@ **+KAABK001. 2 C ,.@/6=@/d 		(>>?--.S / @ )S@ 		'==>,,-S . ? (S>;; &{<<={++,. - > '.6 '==>,,-. . ? (.6 44889!!))+*O*OP!!))+*>*>? @ Q : 33778  (()N)NO  (()=)=> ? P 9 33778  (()N)NO  (()=)=> ? P 9 0044511556##K$I$IJ##K$8$89%%k&K&KL%%k&:&:;&&{'L'LM&&{';';<A = N < M : K 7 6A //779O9O9S9STUK K  VK 	%%t'?'?'C'CD !!))+*>*>?U U  @
U 	&&(A(A(E(EF 
 
 
V/7 7- - I IZ ))112 3 ,,d.?.?@A  B ++,-" ." //019 29 2234C 5C6 AABCM DM23  3 l --.X~&L ' /L@ //0X~&L ' 1L/ /5 5
 
(F F! !N N& &"/ /"! !$ $ 223S   4Sf4 f4R ,,-    .   	#   !	# ==>$)..:N:N1  ?1$ @ [BBC>>?yWu yW  @ DyWx 0088$:Q:Q:U:UVW  (()=)=>T T   ? XTn //334$$[%J%JK$$[%9%9:W W   ; L 5
W4 --.--.--.	   / / /
	 ../../../	   0 0 0
	 8 667667667\T  8 8 8Tn %UE u   & $X4 X  %X ,,dkkoo>?
 !%
 !==	

 #'
 
 
  @
 **+, !%	
 !== #'   - 	", #, ../''(<(<=  ^^))) )  > 0)X ;;<$$,,44[5I5IJX{#- $ K =-x HHPPQA  $A A A RAH '   ( ))*9  +9 '6 (6 ))488<<89	D !%	D 		D 	D :	D --t||/?/?@A. . B. 		==>, ?, 		"
5 
 
  #
( ../ )-  0$
#E 
#+5 + +: 		"  #
 'G (G ==>s ?sl ))1143C3C3G3GHI !% #'	
 #' #   JB ))22D4D4D4Q4QRS6 !%	6
 #'6 #'6 #6 6  T6r t{{ + djj ) djj )  - TYY ' TYY ' $.. 1  / ""D$4$4 5  - !!4?? 3 $.. 1 ##T%6%6 7 t{{ + !!4?? 3  - djj ) !!4?? 3 djj ) TYY ' t{{ + djj )  - ""D$4$4 5 %%t':': ; TYY ' kCCD  Er)   