Ë
    [^(hÛ.  ã                   óŽ   — d dl Z d dlmZ d dlmZ  G d„ de«      Z G d„ de«      Z G d„ de j                  j
                  «      Z	y)	é    N)ÚFunctionc                   ó,   — e Zd Zed„ «       Zed„ «       Zy)ÚSyncBatchNormc
           
      ó°  — |j                  t        j                  ¬«      s0|j                  t        j                  ¬«      s|j	                  «       }|�|j	                  «       }t        |j                  «       |j                  d«      z  «      }
|
dk(  r|	dk  rt        d|
› �«      ‚|j                  d   }|j                  «       dkD  r�t        j                  ||«      \  }}t        j                  d|j                  «       |j                  d«      z  |j                  |j                  ¬«      }t        j                  |||gd¬«      }n2t        j                  d|z  dz   |j                  |j                  ¬«      }|j!                  «       d	k7  rŽ|j                  «       }t        j"                  d||	z  |j                  |j                  ¬«      }t%        j&                  |||d
¬«       t        j(                  ||	|f«      }t        j*                  ||d¬«      \  }}}nwt-        |	«      D �cg c]  }t        j.                  |«      ‘Œ }}t%        j0                  |||d
¬«       t        j2                  |d¬«      }t        j*                  ||d¬«      \  }}}t        j4                  j7                  «       rt        j4                  j9                  «       s#|j;                  d«      dk\  }||   }||   }||   }|j=                  d«      }|�4|j                  |j                  k7  r|j?                  |j                  «      }t        j@                  ||||||||«      \  }}| jC                  |||||j?                  t        jD                  «      «       || _#        |j                  «       dkD  rt        jH                  ||||||«      S t        j.                  |«      S c c}w )N©Úmemory_formaté   é   zEExpected more than 1 value per channel when training, got input size r   )r	   ©ÚdtypeÚdevice©ÚdimÚglooF©Úasync_opéÿÿÿÿ)%Úis_contiguousÚtorchÚchannels_lastÚchannels_last_3dÚ
contiguousÚintÚnumelÚsizeÚ
ValueErrorÚshapeÚbatch_norm_statsÚfullr   r   ÚcatÚzerosÚ_get_backend_nameÚemptyÚdistÚall_gather_into_tensorÚreshapeÚsplitÚrangeÚ
empty_likeÚ
all_gatherÚstackÚcudaÚis_availableÚis_current_stream_capturingÚsqueezeÚviewÚtoÚ#batch_norm_gather_stats_with_countsÚsave_for_backwardÚint32Úprocess_groupÚbatch_norm_elemt)ÚselfÚinputÚweightÚbiasÚrunning_meanÚrunning_varÚepsÚmomentumr5   Ú
world_sizer   Únum_channelsÚmeanÚinvstdÚcountÚcombinedÚcombined_sizeÚcombined_flatÚmean_allÚ
invstd_allÚ	count_allÚ_Úcombined_listÚmaskÚcountss                            úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/nn/modules/_functions.pyÚforwardzSyncBatchNorm.forward   s]  € ð ×Ñ¬e×.AÑ.AÐÔBØ×"Ñ"´×1GÑ1GÐ"ÔHà×$Ñ$Ó&ˆEØÐØ×&Ñ&Ó(ˆFä�5—;‘;“= E§J¡J¨q£MÑ1Ó2ˆØ�1Š9˜ ašÜØWÐX\ÐW]Ð^óð ð —{‘{ 1‘~ˆØ�;‰;‹=˜1Òä ×1Ñ1°%¸Ó=‰LˆD�&ä—J‘JØØ—‘“ §¡¨A£Ñ.Ø—j‘jØ—{‘{ô	ˆEô —y‘y $¨°Ð!6¸AÔ>‰Hô —{‘{Ø�LÑ  1Ñ$¨E¯K©KÀÇÁôˆHð ×*Ñ*Ó,°Ò6à$ŸN™NÓ,ˆMÜ!ŸK™KØØ 
Ñ*Ø—n‘nØ—‘ô	ˆMô ×'Ñ'Ø˜x¨Àõô —}‘} ]°ZÀÐ4OÓPˆHä.3¯k©k¸(ÀLÐVWÔ.XÑ+ˆH�j¡)ô BGÀzÓARÖS¸AœU×-Ñ-¨hÕ7ÐSˆMÐSÜ�O‰O˜M¨8°]ÈUÕSÜ—{‘{ =°aÔ8ˆHä.3¯k©k¸(ÀLÐVWÔ.XÑ+ˆH�j )ä—
‘
×'Ñ'Ô)¬e¯j©j×.TÑ.TÔ.Vð ×$Ñ$ RÓ(¨AÑ-ˆDØ! $™ˆIØ ‘~ˆHØ# DÑ)ˆJð —‘ Ó#ˆØÐ#¨¯©¸×8JÑ8JÒ(JØ—Y‘Y˜|×1Ñ1Ó2ˆFÜ×@Ñ@ØØØØØØØØó	
‰ˆˆfð 	×Ñ˜u f¨d°F¸I¿L¹LÌÏÉÓ<UÔVØ*ˆÔð �;‰;‹=˜1ÒÜ×)Ñ)¨%°¸¸tÀVÈSÓQÐQä×#Ñ# EÓ*Ð*ùòU Ts   È)Oc                 óø  — |j                  t        j                  ¬«      s0|j                  t        j                  ¬«      s|j	                  «       }| j
                  \  }}}}}d x}x}}	| j                  }
|j                  «       dkD  �rVt        j                  |||||| j                  d   | j                  d   | j                  d   «      \  }}}}	| j                  d   rØ|j                  d   }t        j                  ||gd¬«      }t        j                  j                  |t        j                  j                  j                  |
d¬«       t        j                   ||«      \  }}|�4|j"                  |j"                  k7  r|j%                  |j"                  «      }t        j&                  ||||||||«      }|�| j                  d   sd }|�| j                  d   s•d }	n’|j                  d   }| j                  d   rtt        j(                  d|z  |j"                  |j*                  ¬«      }t        j                  j                  |t        j                  j                  j                  |
d¬«       |||	d d d d d d f	S )	Nr   r   r	   r
   r   Fr   r   )r   r   r   r   r   Úsaved_tensorsr5   r   Úbatch_norm_backward_reduceÚneeds_input_gradr   r    ÚdistributedÚ
all_reduceÚReduceOpÚSUMr'   r   r1   Úbatch_norm_backward_elemtr!   r   )r7   Úgrad_outputÚsaved_inputr9   rA   rB   Úcount_tensorÚ
grad_inputÚgrad_weightÚ	grad_biasr5   Úsum_dyÚ
sum_dy_xmur@   rD   s                  rN   ÚbackwardzSyncBatchNorm.backward}   sw  € ð ×%Ñ%´E×4GÑ4GÐ%ÔHØ×(Ñ(´u×7MÑ7MÐ(ÔNà%×0Ñ0Ó2ˆKØ:>×:LÑ:LÑ7ˆ�V˜T 6¨<Ø/3Ð3ˆ
Ð3�[ 9Ø×*Ñ*ˆà×ÑÓ Ó"ô ×0Ñ0ØØØØØØ×%Ñ% aÑ(Ø×%Ñ% aÑ(Ø×%Ñ% aÑ(ó	ñØØØØð ×$Ñ$ QÒ'à%Ÿ|™|¨A™�Ü Ÿ9™9 f¨jÐ%9¸qÔA�Ü×!Ñ!×,Ñ,ØÜ×%Ñ%×.Ñ.×2Ñ2Ø!Ø"ð	 -ô ô &+§[¡[°¸<Ó%HÑ"�˜
ð Ð%¨&¯,©,¸$¿*¹*Ò*DØ#ŸY™Y t§z¡zÓ2�FÜ"×<Ñ<ØØØØØØØØ ó	�
ð ˆ~ T×%:Ñ%:¸1Ò%=Ø"�àˆ~ T×%:Ñ%:¸1Ò%=Ø ‘	ð '×,Ñ,¨QÑ/ˆLØ×$Ñ$ QÒ'ä Ÿ;™;Ø˜Ñ$¨K×,=Ñ,=Àk×FXÑFXô�ô ×!Ñ!×,Ñ,ØÜ×%Ñ%×.Ñ.×2Ñ2Ø!Ø"ð	 -ô ð ˜;¨	°4¸¸tÀTÈ4ÐQUÐUÐUó    N©Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrO   ra   © rb   rN   r   r      s/   „ Øñr+ó ðr+ðh ñRVó ñRVrb   r   c                   ó.   — e Zd Zedd„«       Zed„ «       Zy)ÚCrossMapLRN2dc                 ó†  — || _         || _        || _        || _        d | _        |j                  «       dk7  rt        d|j                  «       › d�«      ‚| j                  xs |j                  «       | _        |j                  «       }|j                  d«      }|j                  |«       | j                  j                  |«       |}t        j                  |d|¬«       t        | j                   dz
  dz  dz   «      }	t        |	|«      }
| j                  j                  dd«      }|j                  «        t        |
«      D ]#  }|j!                  |j                  d|«      «       Œ% t        d|«      D ]²  }| j                  j                  d|dz
  «      }| j                  j                  d|«      }|j#                  |«       |||	z
  dz   k  r+|j                  d||	z   dz
  «      }|j!                  |d¬«       ||	kD  sŒ‹|j                  d||	z
  «      }|j!                  |d	¬«       Œ´ | j                  j%                  | j                  | j                   z  «      j!                  | j                  «       t        j                  | j                  | j                   |¬«       |j%                  |«       | j'                  ||«       |S )
Né   z,CrossMapLRN2d: Expected input to be 4D, got z
D instead.r	   r
   ©Úoutr   ©Úalphar   )r   rp   ÚbetaÚkÚscaler   r   ÚnewÚ
resize_as_r   Úpowr   ÚminÚselectÚzero_r(   Úadd_Úcopy_Úmul_r3   )Úctxr8   r   rp   rq   rr   ÚoutputÚchannelsÚinput_squareÚpre_padÚpre_pad_cropÚscale_firstÚcÚscale_previousÚscale_currentÚsquare_nextÚsquare_previouss                    rN   rO   zCrossMapLRN2d.forwardÔ   s`  € àˆŒØˆŒ	ØˆŒØˆŒØˆŒ	à�9‰9‹;˜!ÒÜØ>¸u¿y¹y»{¸mÈ:ÐVóð ð —I‘IÒ, §¡£ˆŒ	Ø—‘“ˆØ—:‘:˜a“=ˆà×Ñ˜%Ô Ø�	‰	×Ñ˜UÔ#ð ˆÜ�	‰	�%˜ Õ-ä�s—x‘x !‘| qÑ(¨1Ñ,Ó-ˆÜ˜7 HÓ-ˆà—i‘i×&Ñ& q¨!Ó,ˆØ×ÑÔä�|Ó$ò 	8ˆAØ×Ñ˜\×0Ñ0°°AÓ6Õ7ð	8ô
 �q˜(Ó#ò 
	>ˆAØ ŸY™Y×-Ñ-¨a°°Q±Ó7ˆNØŸI™I×,Ñ,¨Q°Ó2ˆMØ×Ñ Ô/Ø�8˜gÑ%¨Ñ)Ò)Ø*×1Ñ1°!°Q¸±[À1±_ÓE�Ø×"Ñ" ;°aÐ"Ô8à�7‹{Ø".×"5Ñ"5°a¸¸W¹Ó"E�Ø×"Ñ" ?¸"Ð"Õ=ð
	>ð 	�	‰	�‰�s—y‘y 3§8¡8Ñ+Ó,×1Ñ1°#·%±%Ô8ä�	‰	�#—)‘)˜cŸh™h˜Y¨FÕ3Ø�‰�EÔà×Ñ˜e VÔ,Øˆrb   c           	      óž  — | j                   \  }}|j                  «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  || j                  z   dz
  ||«      }	|j                  ||«      }
d| j                  z  | j                  z  | j                  z  }t        | j                  | j                  dz
  dz  z
  «      }|j                  |«       t        j                  | j                  | j                   |¬«      j                  |«       |	j                  «        |	j                  d||«      }t        |«      D ]à  }t        j                  ||   ||   |¬«       |j                  | j                  |   «       t        j                   |	j                  dd| j                  dz
  «      dd|
¬«       t        |«      D ]]  }|
j#                  |	|| j                  z   dz
     «       ||   |   j%                  ||   |   |
| ¬«       |
j#                  |	|   d	¬
«       Œ_ Œâ |d d d d fS )Nr   r	   r
   é   rm   F)Úkeepdimrn   )Úvaluer   ro   )rQ   rt   r   rp   rq   r   ru   r   rv   rs   r|   ry   Únarrowr(   ÚmulÚdiv_Úsumrz   Úaddcmul_)r}   rY   r8   r~   r\   Ú
batch_sizer   Úinput_heightÚinput_widthÚpaddded_ratioÚaccum_ratioÚcache_ratio_valueÚinversePrePadÚpadded_ratio_centerÚnr„   s                   rN   ra   zCrossMapLRN2d.backward  s  € à×)Ñ)‰ˆˆvØ —_‘_Ó&ˆ
à—Z‘Z “]ˆ
Ø—:‘:˜a“=ˆØ—z‘z !“}ˆØ—j‘j “mˆàŸ	™	 (¨S¯X©XÑ"5¸Ñ"9¸<ÈÓUˆØ—i‘i ¨kÓ:ˆà §	¡	™M¨C¯H©HÑ4°s·x±xÑ?ÐÜ˜CŸH™H¨¯©°1©¸Ñ'9Ñ9Ó:ˆà×Ñ˜eÔ$Ü�	‰	�#—)‘)˜cŸh™h˜Y¨JÔ7×<Ñ<¸[ÔIà×ÑÔØ+×2Ñ2°1°mÀXÓNÐÜ�zÓ"ò 	=ˆAÜ�I‰I�k !‘n f¨Q¡iÐ5HÕIØ×$Ñ$ S§Y¡Y¨q¡\Ô2Ü�I‰IØ×$Ñ$ Q¨¨3¯8©8°a©<Ó8ØØØõ	ô ˜8“_ò =�Ø× Ñ  ¨q°3·8±8©|¸aÑ/?Ñ!@ÔAØ˜1‘˜aÑ ×)Ñ)Ø˜!‘H˜Q‘K Ð5FÐ4Fð *ô ð × Ñ  ¨qÑ!1¸Ð Õ<ñ=ð	=ð  ˜4  t¨TÐ1Ð1rb   N)g-Cëâ6?g      è?r	   rc   rh   rb   rN   rj   rj   Ó   s)   „ Øò4ó ð4ðl ñ$2ó ñ$2rb   rj   c                   ó,   — e Zd Zed„ «       Zed„ «       Zy)ÚBackwardHookFunctionc                 ód   —  | j                   |D �cg c]  }|j                  rŒ|‘Œ c}Ž  |S c c}w ©N)Úmark_non_differentiableÚrequires_grad)r}   ÚargsÚargs      rN   rO   zBackwardHookFunction.forward4  s0   € à#ˆ×#Ñ#°TÖ%S¨cÀ×ARÓAR¢cÒ%SÑTØˆùò &Ts   ‘-£-c                 ó   — |S rž   rh   )r}   r¡   s     rN   ra   zBackwardHookFunction.backward9  s   € àˆrb   Nrc   rh   rb   rN   rœ   rœ   3  s(   „ Øñó ðð ñó ñrb   rœ   )
r   Útorch.distributedrT   r$   Útorch.autograd.functionr   r   rj   Úautogradrœ   rh   rb   rN   ú<module>r§      sD   ðã Ý  Ý ,ôIV�Hô IVôX]2�Hô ]2ô@˜5Ÿ>™>×2Ñ2õ rb   