Ë
    [^(hK  ã                   óD  — d dl Z d dlmZ d dlmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZ ddgZd	eej                   ee   eed
f   eeef   f   deej                      fd„Z	 	 ddee   dee   deeeeef         deeeeeej.                  f            dee   f
d„Zy)é    N)ÚSequence)ÚAnyÚcastÚOptionalÚUnion)ÚExceptionWrapper)Ú_get_device_index)ÚModuleÚ	get_a_varÚparallel_applyÚobj.Úreturnc                 óp  — t        | t        j                  «      r| S t        | t        t        f«      r3t        t        | «      D ]   }t        |t        j                  «      sŒ|c S  t        | t        «      rAt        t        | j                  «       «      D ]   }t        |t        j                  «      sŒ|c S  y )N)	Ú
isinstanceÚtorchÚTensorÚlistÚtupleÚmapr   ÚdictÚitems)r   Úresults     ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/nn/parallel/parallel_apply.pyr   r      sŽ   € ô �#”u—|‘|Ô$Øˆ
ä�#œœe�}Ô%Üœ) SÓ)ò 	ˆFÜ˜&¤%§,¡,Õ/Ø’ð	ô �#”tÔÜœ) S§Y¡Y£[Ó1ò 	ˆFÜ˜&¤%§,¡,Õ/Ø’ð	ð ó    ÚmodulesÚinputsÚ
kwargs_tupÚdevicesc                 ór  ‡‡‡‡— t        | «      t        |«      k(  sJ dt        | «      › dt        |«      › �«       ‚|�t        | «      t        |«      k(  s,J ‚t        t        t        t        f   i «      ft        | «      z  }|�t        | «      t        |«      k(  sJ ‚dgt        | «      z  }|D �cg c]  }t        |d«      ‘Œ }}|D �cg c]!  }t        j                  j                  |«      ‘Œ# }}t        j                  «       Ši Št        j                  «       t        j                  «       cŠŠ	 	 ddt        dt        dt        dt        t        t        f   d	t        t         t        t        j"                  f      d
t        t        j                  j$                     ddfˆˆˆˆfd„}t        | «      dkD  r‚t'        t)        | ||||«      «      D ���	�
��cg c](  \  }\  }}	}
}}t        j*                  ||||	|
||f¬«      ‘Œ* }}}
}	}}}|D ]  }|j-                  «        Œ |D ]  }|j/                  «        Œ n |d| d   |d   |d   |d   |d   «       g }t1        t        |«      «      D ]8  }‰|   }t3        |t4        «      r|j7                  «        |j9                  |«       Œ: |S c c}w c c}w c c}}}
}	}}w )a  Apply each `module` in :attr:`modules` in parallel on each of :attr:`devices`.

    Args:
        modules (Module): modules to be parallelized
        inputs (tensor): inputs to the modules
        devices (list of int or torch.device): CUDA devices

    :attr:`modules`, :attr:`inputs`, :attr:`kwargs_tup` (if given), and
    :attr:`devices` (if given) should all have same length. Moreover, each
    element of :attr:`inputs` can either be a single object as the only argument
    to a module, or a collection of positional arguments.
    zThe number of modules z& is not equal to the number of inputs NTÚiÚmoduleÚinputÚkwargsÚdeviceÚstreamr   c                 ó6  •— t        j                  ‰	«       |€<t        |«      }|€‰
5  t        d| › d�¬«      ‰| <   d d d «       y |j	                  «       }|€t         j
                  j                  |«      }	 t         j
                  j                  |«      5  t         j
                  j                  |«      5  t         j                  j                  d‰¬«      5  t        |t        t        f«      s|f} ||i |¤Ž}d d d «       d d d «       d d d «       ‰
5  ‰| <   d d d «       y # 1 sw Y   y xY w# 1 sw Y   Œ6xY w# 1 sw Y   Œ:xY w# 1 sw Y   Œ>xY w# 1 sw Y   y xY w# t        $ r0 ‰
5  t        d| › d|› �¬«      ‰| <   d d d «       Y y # 1 sw Y   Y y xY ww xY w)Nzin replica zQ, no device was provided and no tensor input was found; device cannot be resolved)ÚwhereÚcuda)Úenabledz on device )r   Úset_grad_enabledr   r   Ú
get_devicer(   Úcurrent_streamr$   r%   ÚampÚautocastr   r   r   Ú	Exception)r    r!   r"   r#   r$   r%   ÚtÚoutputÚautocast_enabledÚgrad_enabledÚlockÚresultss           €€€€r   Ú_workerzparallel_apply.<locals>._workerE   s›  ø€ ô 	×Ñ˜|Ô,Øˆ>Ü˜%Ó ˆAØˆyØñ Ü!1Ø +¨A¨3ð /4ð 4ô"�G˜A‘J÷ð
 Ø—\‘\“^ˆFØˆ>Ü—Z‘Z×.Ñ.¨vÓ6ˆFð	Ü—‘×"Ñ" 6Ó*ñ 2¬E¯J©J×,=Ñ,=Øó-ñ 2ä�y‰y×!Ñ! &Ð2BÐ!ÓCñ2ô " %¬$´¨Ô7Ø"˜H�EÙ Ð1¨&Ñ1�÷2÷ 2÷ 2ð ñ $Ø#�˜‘
÷$ð $÷#ð
 ú÷
2ð 2ú÷ 2ð 2ú÷ 2ð 2ú÷$ð $ûäò 	Øñ Ü-Ø'¨ s¨+°f°XÐ>ô�˜‘
÷÷ ó úð	ús›   ¨D#Á7E Â EÂ6"D;Ã"D/Ã:D;ÄEÄ

E ÄEÄE Ä#D,Ä/D8Ä4D;Ä;E	Å EÅEÅE ÅEÅE ÅE ÅFÅ*F
Æ FÆ
F	ÆFÆFé   )ÚtargetÚargsr   ©NN)Úlenr   r   Ústrr   r	   r   r(   r,   Ú	threadingÚLockÚis_grad_enabledÚis_autocast_enabledÚintr
   r   r   r$   ÚStreamÚ	enumerateÚzipÚThreadÚstartÚjoinÚranger   r   ÚreraiseÚappend)r   r   r   r   ÚxÚstreamsr6   r    r!   r"   r#   r$   r%   ÚthreadsÚthreadÚoutputsr1   r2   r3   r4   r5   s                    @@@@r   r   r      sÏ  û€ ô$ ˆw‹<œ3Øóò ð bà	¤ G£˜~Ð-SÔTWÐX^ÓT_ÐS`Ðaóbð ð ÐÜ�7‹|œs :›Ò.Ð.Ð.äœ4¤¤S ™>¨2Ó.Ð0´3°w³<Ñ?ˆ
ØÐÜ�7‹|œs 7›|Ò+Ð+Ð+à�&œ3˜w›<Ñ'ˆØ3:Ö;¨aÔ   DÕ)Ð;€GÐ;Ø5<Ö=°Œu�z‰z×(Ñ(¨Õ+Ð=€GÐ=Ü�>‰>Ó€DØ€Gä×ÑÓÜ×!Ñ!Ó#ð #€LÐ"ð 6:Ø.2ñ#Üð#äð#ô ð#ô ”Sœ#�X‘ð	#ô
 œœs¤E§L¡LÐ0Ñ1Ñ2ð#ô œŸ™×*Ñ*Ñ+ð#ð 
÷#ð #ôJ ˆ7ƒ|�aÒô
 ?HÜ�G˜V Z°¸'ÓBó?÷	
ó 
ñ ;�Ñ:�F˜E 6¨6°6ô ×ÑØ a¨°¸ÀÈÐ%Oöð
ˆõ 
ð ò 	ˆFØ�L‰L�Nð	àò 	ˆFØ�K‰K�Mñ	ñ 	��7˜1‘:˜v a™y¨*°Q©-¸À¹ÀWÈQÁZÔPà€GÜ”3�v“;Óò ˆØ˜‘ˆÜ�fÔ.Ô/Ø�N‰NÔØ�‰�vÕð	ð
 €NùòK <ùÚ=ù÷\
s   Â.J%Ã&J*Ç-J/r:   )r=   Úcollections.abcr   Útypingr   r   r   r   r   Útorch._utilsr   Útorch.cuda._utilsr	   Útorch.nn.modulesr
   Ú__all__r   r   r   r   r   r<   rA   r$   r   © r   r   ú<module>rW      së   ðÛ Ý $ß -Ó -ã Ý )Ý /Ý #ð Ð(Ð
)€ðØ	ˆu�|‰|˜T #™Y¨¨c°3¨h©¸¸cÀ3¸h¹ÐGÑ	Hðàˆe�l‰lÑóð( 6:ØFJñ	bØ�fÑðbà�S‰Mðbð ˜ $ s¨C x¡.Ñ1Ñ2ðbð �h˜x¨¨c°5·<±<Ð.?Ñ(@ÑAÑBÑCð	bð
 
ˆ#�Yôbr   