
    Αi                         S SK r S SKJr  S SKJr  S SKJr   " S S5      r " S S5      r\	S	:X  a'  \R                  5       r\" \R                  5       5        gg)
    N)core)get_all_custom_device_type)get_available_custom_devicec                   (    \ rS rSrSrSrSrSrSrSr	g)	
DeviceType   cpugpuxpuipucustom_device N)
__name__
__module____qualname____firstlineno__CPUGPUXPUIPUCUSTOM_DEVICE__static_attributes__r       h/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/launch/context/device.pyr   r      s    
C
C
C
C#Mr   r   c                       \ rS rSrSS jrS r\S 5       r\S 5       r\S 5       r	\S 5       r
\
R                  S	 5       r
S
 rSS jrS r\S 5       r\S 5       rSrg)Device   Nc                 (    Xl         X l        X0l        g N)_dtype_memory_labels)selfdtypememorylabelss       r   __init__Device.__init__    s    r   c                 8    SR                  U R                  5      $ N,)joinr"   r#   s    r   __str__Device.__str__%   s    xx%%r   c                     U R                   $ r   )r    r-   s    r   r$   Device.dtype(   s    {{r   c                 >    [        U R                  5      =(       d    S$ )N   )lenr"   r-   s    r   countDevice.count,   s    4<< %A%r   c                     U R                   $ r   )r!   r-   s    r   r%   Device.memory0       ||r   c                     U R                   $ r   )r"   r-   s    r   r&   Device.labels4   r9   r   c                     [        U[        5      (       a  UR                  S5      U l        g [        U[        5      (       a  Xl        g / U l        g r*   )
isinstancestrsplitr"   list)r#   lbss     r   r&   r;   8   s7    c399S>DLT""LDLr   c                    U R                   [        R                  :X  a  gU R                   [        R                  :X  a  gU R                   [        R                  :X  a  gU R                   [        R
                  :X  a  gU R                   [        R                  :X  a'  [        5       nU(       a  [        US   5      OSnSU S3$ g	)
NFLAGS_selected_cpusFLAGS_selected_gpusFLAGS_selected_xpusFLAGS_selected_ipusr    FLAGS_selected_sFLAGS_selected_devices)	r    r   r   r   r   r   r   r   r>   r#   custom_device_typesdevice_types      r   get_selected_device_keyDevice.get_selected_device_keyA   s    ;;*..((;;*..((;;*..((;;*..((;;*222"<">/B'*+  %[M33'r   c                 f   U(       d9  [        S[        U R                  5      5       Vs/ s H  n[        U5      PM     sn$ UR	                  S5       Vs/ s H  o"R                  5       PM     nnU Vs/ s H'  n[        U R                  R                  U5      5      PM)     sn$ s  snf s  snf s  snf )z<
return the device label/id relative to the visible devices
r   r+   )ranger4   r"   r>   r?   stripindex)r#   devicesxdevsds        r   get_selected_devicesDevice.get_selected_devicesR   s     $)!S->$?@$?qCF$?@@'.}}S'9:'9!GGI'9D:8<=1C**1-.== A:=s   B$B)3.B.c                 N    [        5       nU(       a  [        US   5      OSnSUS.$ )Nr   rG   xccl)PADDLE_DISTRI_BACKENDPADDLE_XCCL_BACKEND)r   r>   rK   s      r   get_custom_device_envsDevice.get_custom_device_envs\   s/    8:5Hc-a01b%+#.
 	
r   c                 >   [        5       nS n[        5       nU(       aa  [        R                  Ul        [        US   5      nUR                  5        S3nU[        R                  ;   a  [        R                  " U5      nOS[        R                  ;   a,  [        R                  Ul        [        R                  " S5      nOS[        R                  ;   a,  [        R                  Ul        [        R                  " S5      nOoS[        R                  ;   a[  [        R                  " 5       (       a  [        R                  Ul        O[        R                  Ul        [        R                  " S5      nUb  US:w  a  UR                  S5      Ul        U$ U R!                  5       $ )Nr   _VISIBLE_DEVICESXPULINK_VISIBLE_DEVICESXPU_VISIBLE_DEVICESCUDA_VISIBLE_DEVICESallr+   )r   r   r   r   r    r>   upperosenvirongetenvr   r   is_compiled_with_xpur   r?   r"   detect_device)r#   devvisible_devicesrL   rM   visible_devices_strs         r   parse_deviceDevice.parse_deviced   s.   h8:#11CJ1!45K%0%6%6%8$99I"J"bjj0"$)),?"@&"**4#CJ ii(ABO"bjj0#CJ ii(=>O#rzz1((**'^^
'^^
 ii(>?O&?e+C)//4CK 
 %%''r   c                 X   S n[        5       nSnS n[        5       nU(       aj  [        US   5      n[        R                  Ul        U" U5      nUR                  5        S3nU[        R                  ;   a  [        R                  " U5      nGO*[        R                  " 5       (       aA  [        R                  Ul        [        R                  " 5       n[        R                  " S5      nO[        R                  " 5       (       aA  [        R                  Ul        [        R                   " 5       n[        R                  " S5      nOt[        R"                  " 5       (       aZ  [        R$                  Ul        [        R&                  " 5       n[)        SUS-   5       Vs/ s H  n[        U5      PM     snUl        U$ US:X  a  [        R,                  Ul        U$ Ub  US:X  a-  [)        SU5       Vs/ s H  n[        U5      PM     snUl        U$ UR/                  S5      Ul        U$ s  snf s  snf )	Nc                     [        5       nU Vs/ s H  o"R                  S5      S   PM     nnUR                  U 5      nU$ s  snf )N:r   )r   r?   r5   )rM   all_custom_devicesdevicecustom_devices_counts       r   get_custom_devices_count6Device.detect_device.<locals>.get_custom_devices_count   sR    !<!>3E"3ES!!$3E  " $6#;#;K#H ''	"s   Ar   ra   rd   rc   r3   re   r+   )r   r   r>   r   r   r    rf   rg   rh   ri   r   is_compiled_with_cudar   get_cuda_device_countrj   r   get_xpu_device_countis_compiled_with_ipur   get_ipu_device_countrQ   r"   r   r?   )	r#   rw   rl   numrm   rL   custom_device_typern   rU   s	            r   rk   Device.detect_device   s   	( h8:!$%8%;!<#11CJ*+=>C%++-..>?   #bjj0"$)),?"@''))#CJ,,.C ii(>?O&&((#CJ++-C ii(=>O&&((#CJ++-C+0C!G+<=+<a3q6+<=CKJ!8#CJ 
 $5(@+0C=9=a3q6=9CK 
 *//4CK
 > :s   H"+H')r    r"   r!   )NrG   rG   )rG   )r   r   r   r   r'   r.   propertyr$   r5   r%   r&   setterrN   rX   r^   classmethodro   rk   r   r   r   r   r   r      s    
&   & &     ]] (">
  < , ,r   r   __main__)rg   paddle.baser   paddle.base.corer   paddle.devicer   r   r   r   ro   rW   printrX   r   r   r   <module>r      sZ    
  7 5$ $Q Qh zA	!
 
 
"# r   