o
    "j                     @   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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 Zdd Zedkrdee	d  ee
d  eed  e
 ZeD ]
Zee  q[dS dS )    Nc                   @   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   f/var/www/html/Deteccion_Ine/venv/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.   rA   }  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   z%Y-%m-%d %H:%M:%Sr$   r%   )has_rocm_smir   r'   r+   r   r,   r-   r.   r   r/   r0   r   floattimestrftime	localtimer1   r2   r3   r4   )r5   r7   r8   Zmemr9   r:   r;   r<   r=   r>   r   r?   r@   r   r   r	   query_rocm_smiO   s4   &*rN   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   r7   r8   r   intr   r   r'   rA   r7   qr@   r   r   r	   get_gpu_infop   s   rT   c                 C   sd   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	|| |dS )NzDindex,utilization.gpu,memory.total,memory.used,memory.free,timestampr   rO   )
r   rQ   r   r   r'   paddleZdeviceZis_compiled_with_rocmrN   rA   rR   r   r   r	   get_gpu_util~   s   
rV   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   )r7   r6   r8   rP   rR   r   r   r	   get_gpu_process   s   
rW   c                   C   
   t dS )Nr   shutilwhichr   r   r   r	   r&      r   r&   c                   C   rX   )NrC   rY   r   r   r   r	   rI      r   rI   __main__)Nr   NN)NNNrB   r   )r   r/   rZ   r,   rK   rU   r   rA   rN   rT   rV   rW   r&   rI   r   printuir   r   r   r   r	   <module>   s.   

"
!

