
    ΑiG                         S SK r S SKrS SKrS SKrS SKJr  \" SS5      rS rSrS r	S r
S rS	 rS
 rS rS rS rS rS rS rg)    N)
get_loggerINFOroot   c                    S n SnS/n[         R                  " U5      R                  S5      R                  [        R
                  5      nSU  3nU HD  nUR                  U5      S:  d  M  UR                  5       R                  5       S   nU" U5      n  U$    U$ ! [         a"  n[        R                  SU 35         SnAgSnAff = f)	z
get cpu info from lscpu
c           
          / nU R                  S5      nU Hb  n[        UR                  S5      S   5      [        UR                  S5      S   5      pTUR                  [        [	        XES-   5      5      5        Md     U$ )N,-r   r   )splitintextendlistrange)iprocessed_cpu_info
cpu_ranges	cpu_rangestartends         f/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/utils/process_utils.py_process_raw_cpu_info,_get_cpu_info.<locals>._process_raw_cpu_info!   sv    WWS\
#IIOOC(+,IOOC(+,  %%d5a+@&AB $ "!    Nlscpuutf-8noder      _get_cpu_info failed, reason:)
subprocesscheck_outputdecoder   oslinesepfindstrip	Exceptionloggerwarning)	numa_idr   cpuscmdoutputnuma_keylineraw_cpu_infoes	            r   _get_cpu_infor1      s    
	"i((-44W=CCBJJO'#Dyy"a'#zz|113A6,\: 
  6qc:;s$   A$B -+B B 
C	'CC	c                  .    [         R                  " S5      $ )z"
check if nvidia-smi is available

nvidia-smishutilwhich r   r   _has_nvidia_smir8   <   s     <<%%r   c                  .    [         R                  " S5      $ )z
check if xpu-smi is available
xpu-smir4   r7   r   r   _has_xpu_smir;   C   s     <<	""r   c                     [        U R                  5       5      S:X  a  g U R                  S5      n[        U5      U::  a  g X!   $ )Nr   r	   )lenr%   r   )str_device_list
local_rankvisible_devicess      r   _get_xpu_device_from_envrA   J   sD    
?  "#q(%++C0O
?z)&&r   c                     [         R                  " S5      nUb  [        X5      $ [         R                  " S5      nUb  [        X 5      $ [         R                  " S5      nUb  [        X05      $ [        U 5      $ )z+
get currently used xpu physical device id
XPULINK_VISIBLE_DEVICESXPU_VISIBLE_DEVICESCUDA_VISIBLE_DEVICES)r"   getenvrA   str)r?   xpulink_visible_devicesxpu_visible_devicescuda_visible_devicess       r   _get_xpu_devicerK   S   st     !ii(AB*'(?LL))$9:&'(;HH99%;<''(<IIz?r   c                     [         R                  " S5      nUb  US:X  a  [        U 5      $ UR                  S5      n[	        U5      U ::  a  gX   $ )z+
get currently used gpu physical device id
rE   N r	   )r"   rF   rG   r   r=   )r?   rJ   s     r   _get_gpu_devicerN   h   sW     99%;<#';r'A:/55c:
 J.++r   c                      SSSSU /n[         R                  " USS9R                  S5      nUR                  5       R	                  5       S   nU$ ! [
         a"  n[        R                  S	U 35         S
nAg
S
nAff = f)z#
get gpu numa info from nvidia-smi
r3   topoz-Cz-ir   timeoutr   r   N)r   r    r!   r%   r   r&   r'   r(   )gpu_idr+   r,   r)   r0   s        r   _get_gpu_numa_inforU   u   sy    VT48((a8??H,,.&&(, 6qc:;s   AA 
A<A77A<c           	         [        U 5      n / SQn[        R                  " S5      S:X  a  / SQn[        R                  " USS9R                  S5      nUR                  5       U S-      R                  5       S	   n/ nUR                  S
5       HF  nUR                  S5      u  pgUR                  [        [        U5      [        U5      S-   5      5        MH     U$ )N)r:   rP   z-mCUDA_DEVICE_ORDEROAM_ID)r:   rP   z-mo<   rQ   r   r   r	   r
   )
r   r"   rF   r   r    r!   
splitlinesr   r   r   )xpu_idr+   r,   cpu_affinityaffinity_maskaffinity_ranger   r   s           r   _get_xpu_affinity_maskr`      s    [F
#C	yy$%1 )$$S"5<<WEF$$&vz288:2>LM&,,S1#))#.
U3u:s3x!|<= 2 r   c                     [        5       (       d  [        R                  S5        [        $ [	        [        [        R                  " SS5      5      S5      n [        U 5      nUc  [        R                  S5        [        $ [        U5      nUc  [        R                  S5        [        $ US:X  a  [        R                  S5        [        $ [        U5      nUc  [        R                  S	5        [        $ [        R                  " S5      n[        R                  S
U 35        [        R                  " SU5        [        R                  " S5      n[        R                  SU 35        [        $ )z
set affinity for gpu
zQnvidia-smi is not available, set_affinity is aborted, plz check your environment.PADDLE_LOCAL_RANK0r   zgFailed to get device id from cuda_visible_devices, set_affinity is aborted, plz check your environment.zMFailed to get numa info, set_affinity is aborted, plz check your environment.zN/Aznvidia-smi topo return numa id as N/A, set_affinity is aborted, plz check your environment. (Notice: This is expected behavior when executed on single numa node environment)zLFailed to get cpu info, set_affinity is aborted, plz check your environment.Check affinity before setting: zcheck affinity after setting: )r8   r'   r(   	FAIL_CODEmaxr   r"   rF   rN   rU   r1   sched_getaffinityinfosched_setaffinitySUCCESS_CODE)r?   	device_idr)   r^   affinitys        r   set_affinity_gpurm      s5    _	
 S#6<=qAJ
+Iu	
  +G[	
 % |	
 !'*MZ	
 ##A&H
KK1(<=M*##A&H
KK0
;<r   c                     [        5       (       d  [        R                  S5        [        $ [	        [        [        R                  " SS5      5      S5      n [        U 5      nUc  [        R                  S5        [        $ [        U5      n[        R                  " S5      n[        R                  SU 35        [        R                  " SU5        [        R                  " S5      n[        R                  SU 35        [        $ )z
set affinity for xpu
zNxpu-smi is not available, set_affinity is aborted, plz check your environment.rb   rc   r   zMFailed to get device id, set_affinity is aborted, plz check your environment.rd   zCheck affinity after setting: )r;   r'   r(   re   rf   r   r"   rF   rK   r`   rg   rh   ri   rj   )r?   rk   r^   rl   s       r   set_affinity_xpuro      s     >>\	
 S#6<=qAJ
+I[	
 *95M##A&H
KK1(<=M*##A&H
KK0
;<r   c                      [         R                  R                  5       (       a
  [        5       $ [         R                  R	                  5       (       a
  [        5       $ [        R                  S5        [        $ )Nz-Currently set_affinity only supports gpu env.)	paddledeviceis_compiled_with_cudarm   is_compiled_with_xpuro   r'   r(   re   r7   r   r   set_affinityru      sO    }}**,,!!		+	+	-	-!! 	FGr   )r"   r5   r   rq   "paddle.distributed.utils.log_utilsr   r'   rj   re   r1   r8   r;   rA   rK   rN   rU   r`   rm   ro   ru   r7   r   r   <module>rw      se    
    9	FF	#	@&#'*
, &R2r   