o
    piJ                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ G dd dZ	dddZ
dd	d
Zd ddZd ddZd!ddZd!ddZd!ddZdd Zdd Zdd Zdd Zedkreed  eed  eed  e ZeD ]
Zee  qwdS dS )"    N)corec                   @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )Infoc                 C   s
   t | jS N)str__dict__self r	   l/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/paddle/distributed/launch/utils/nvsmi.py__repr__      
zInfo.__repr__c                 C   s   t | jS r   )jsondumpsr   r   r	   r	   r
   r      s   z	Info.jsonc                 C   s   | j S r   )r   r   r	   r	   r
   dict!   s   z	Info.dictNc                    sB   |d u r	 j  }t|tr|d} fdd|D }d|S )N,c                    s   g | ]}t  j|d qS ) )r   r   get).0kr   r	   r
   
<listcomp>+   s    zInfo.str.<locals>.<listcomp>)r   keys
isinstancer   splitjoin)r   r   valuesr	   r   r
   r   $   s   



zInfo.strr   )__name__
__module____qualname__r   r   r   r   r	   r	   r	   r
   r      s
    r   gpuc                 C   sD  t  sg S ddg}t| tr|dkr|dd| g nt| tr6|dr6|dd| g ndS t|trOt|d	krO|d
d|g t|tr\t|t| krctgt|  }t	j
|dd}|dtj}g }|D ](}|s|qwt }	t| |d|D ]\}
}}t|	|
dd|| q||	 qw|S )z!
    query_type: gpu/compute
    
nvidia-smiz--format=csv,noheader,nounitsr   z--query-gpu={}r   computez--query-compute-apps={}Nr   z--id={}   timeoututf-8z, ._)has_nvidia_smir   listextendformatr   
startswithlenr   
subprocesscheck_outputdecoder   oslinesepr   zipsetattrreplaceappend)query
query_typeindexdtypecmdoutputlinesretlineinfor   vdr	   r	   r
   	query_smi/   s.   rB   }  c                 C   sZ  t  sg S dg}t|trt|t| krtgt|  }tj|dd}|dt	j
}g }|D ]z}|s5q0t| dksCd| v rDq0t }	| }|d |d d t|d d	  ||t|d
 d t|d
 d	   d ||t|d
 d t|d
 d	   d  tdt g}t| ||D ]\}
}}t|	|
dd|| q||	 q0|S )Nrocm-smir!   r"   r$      ZDCUr            d   %Y-%m-%d %H:%M:%Sr%   r&   )has_rocm_smir   r(   r,   r   r-   r.   r/   r   r0   r1   r   floattimestrftime	localtimer2   r3   r4   r5   )r6   r8   r9   Zmemr:   r;   r<   r=   r>   r?   r   r@   rA   r	   r	   r
   query_rocm_smiQ   s4   &*rP   c                 C   s2  t  sg S ddg}t|trt|t| krtgt|  }tj|dd}|dt	j
}g }d}|D ]c}|s8q3td|}	t|	}
|
dvsJd	|	v rKq3d
d |	D }	t }||	d |	d t|	d t|	d t|	d  tdt g}	|d7 }t| |	|D ]\}}}t||dd|| q|| q3|S )Nnpu-smir?   r!   r"   r$   r   z
,|/|\s+|\|)      ZNPUc                 S   s   g | ]}|r|qS r	   r	   )r   itemr	   r	   r
   r      s    z!query_npu_smi.<locals>.<listcomp>   rH      rJ   rG   r%   r&   )has_npu_smir   r(   r,   r   r-   r.   r/   r   r0   r1   rer   rL   rM   rN   rO   r2   r3   r4   r5   )r6   r8   r9   r:   r;   r<   r=   ir>   resultlengthr?   r   r@   rA   r	   r	   r
   query_npu_smir   s<   
r\   c                 C   s   g }t |trt|t| krtgt|  }tt D ]I}t|}t|d d }t	|d d }|||||| t
dt
 g}t }	t| ||D ]\}
}}t|	|
dd|| qN||	 q|S )Ni   rJ   r%   r&   )r   r(   r,   r   ranger   Zget_xpu_device_countZget_xpu_device_utilization_rateZget_xpu_device_total_memoryZget_xpu_device_used_memoryrM   rN   rO   r   r2   r3   r4   r5   )r6   r8   r9   r=   Zdev_idZutilization_xpuZ	mem_totalZmem_usedrZ   r?   r   r@   rA   r	   r	   r
   query_xpu_smi   s*   
r^   c                 C   sN   d d}tttttttg}| d u st| tr| nt|  d} t|| |dS )NzEindex,uuid,driver_version,name,gpu_serial,display_active,display_moder   r8   r9   r   intr   r   r(   rB   r8   qrA   r	   r	   r
   get_gpu_info   s   rd   c                 C   s   d d}ttttttg}| d u st| tr| nt|  d} tj r+t|| |dS tj	dr8t
|| |dS t rCt|| |dS t|| |dS )NzDindex,utilization.gpu,memory.total,memory.used,memory.free,timestampr   r_   Znpu)r   ra   r   r   r(   paddleZdeviceZis_compiled_with_rocmrP   Zis_compiled_with_custom_devicer\   Zis_compiled_with_xpur^   rB   rb   r	   r	   r
   get_gpu_util   s   
rf   c                 C   sL   d d}tttttg}| d u st| tr| nt|  d} t|| d|dS )Nz.pid,process_name,gpu_uuid,gpu_name,used_memoryr   r    )r8   r7   r9   r`   rb   r	   r	   r
   get_gpu_process   s   
rg   c                   C   
   t dS )Nr   shutilwhichr	   r	   r	   r
   r'      r   r'   c                   C   rh   )NrD   ri   r	   r	   r	   r
   rK      r   rK   c                   C   rh   )NrQ   ri   r	   r	   r	   r
   rW      r   rW   c                   C   rh   )Nzxpu-smiri   r	   r	   r	   r
   has_xpu_smi   r   rl   __main__)Nr   NN)NNNrC   )NNNr   )r   r0   rX   rj   r-   rM   re   Zpaddle.baser   r   rB   rP   r\   r^   rd   rf   rg   r'   rK   rW   rl   r   printurY   r   r	   r	   r	   r
   <module>   s:   

"
!
'


