
    0Fie                       d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZ d d
lmZ d dlmZ  G d de          Zed             Zed             Zed             Z dS )    )annotationsN)without_property_validation)BasicTickerColumnDataSource	HoverToolNumeralTickFormatterOpenURLTapTool)figure)escapeformat_bytes)DashboardComponentadd_periodic_callback)BOKEH_THEME
TICKS_1024env)update)
log_errorsc                  P    e Zd ZdZedd            Zeed                         ZdS )GPUCurrentLoadz!How many tasks are on each workerX  c                   d| _         || _        t          ddgddgddgddgddgddgddgddgddgd		          | _        t	          d"d
dt          |dz            dd|}|                    | j        ddddd          }d |_        t	          d"ddt          |dz            dd|}|                    | j        ddddd          }d |_        t          d"i t          |j
        d         _        t          d          |j        d         _        t          j         dz  |j        _        d|j        _        ||fD ]l}d|j        _        d|j        _        d|j        _        t1          t3          d                    }|                    |           d |_        d|j        _        mt9                      }	d|	_        d|	_        |                    |	           t9                      }	d |	_        d|	_        |                    |	           || _        || _         |j!        | j         _!        d| j         j        _        d!| j         j        _"        d S )#Nr         g      ?1B2Bab	memorymemory-halfmemory_textutilizationutilization-halfworkerz	gpu-indexyescaped_workerz
GPU Memory gpu_memory_histogram)titletoolswidthnamer"   r'   r!   z#76B900)sourcexr'   r-   heightcolorzGPU Utilizationgpu_utilization_histogramr%   r$   z0.0 b)format   Fz"./info/worker/@escaped_worker.html)url)callbackz@worker : @utilization %follow_mousez@worker : @memory_textd    )#last	schedulerr   r/   r   intrectnonselection_glyphr   r   axistickerr   xaxis	formattermathpimajor_label_orientationx_rangestartminor_tick_line_alphayaxisvisibleygridr
   r	   	add_toolstoolbar_locationr   tooltipspoint_policymemory_figureutilization_figurey_rangeend)
selfr<   r-   kwargsr!   r>   r$   figtaphovers
             Elib/python3.11/site-packages/distributed/dashboard/components/nvml.py__init__zGPUCurrentLoad.__init__   s   	"&a& #Qx $d| !1v%(!H*VV#&*
 

 
  
eai..'	
 

 
 
 {{;  
 
 #' 
#eai..,	
 

 
 
 ;    
 
 #' + 9 9j 9 9A$8$H$H$HQ!04x"}, K( 		& 		&C./CI+ %CI %CI7/S#T#T#TUUUCMM##'C  %CI3+e$$$1+#"-*0.'01'-.1'+++    c           
        t          | j        j                                                  }g }g }g }g }d}d}g }t	          |          D ]\  }	}
	 |
j        d         }n# t          $ r Y  w xY w|
j        d         }|d         }|d         }|d         }t          ||          }||z  }|	                    t          |                     |	                    |           |	                    |
j                   |	                    |	           |	                    |	           d |D             }|d |D             ||d |D             |||d	 |D             d
	}d                    t          t          |                    t          |                    | j        j        _        || j        j        _        t)          | j        |           d S )Nr   gpur$   zmemory-usedzmemory-totalc                ,    g | ]}t          |          S r:   r   .0ms     rZ   
<listcomp>z)GPUCurrentLoad.update.<locals>.<listcomp>   s    7771|A777r\   c                    g | ]}|d z  S r   r:   r`   s     rZ   rc   z)GPUCurrentLoad.update.<locals>.<listcomp>   s    222aAE222r\   c                    g | ]}|d z  S re   r:   )ra   us     rZ   rc   z)GPUCurrentLoad.update.<locals>.<listcomp>   s     < < <1Q < < <r\   c                6    g | ]}t          j        |          S r:   )r   
url_escape)ra   ws     rZ   rc   z)GPUCurrentLoad.update.<locals>.<listcomp>   s#    DDDv033DDDr\   r    zGPU Memory: {} / {})listr<   workersvalues	enumerateextraKeyErrormetricsmaxappendr=   addressr4   r   sumrQ   r+   textrG   rT   r   r/   )rU   rl   r$   r!   	gpu_indexr'   memory_total
memory_maxr&   idxwsinforq   rg   mem_used	mem_totalr#   results                     rZ   r   zGPUCurrentLoad.updateq   s    t~-446677	
 )) 	 	GCx   j'G&A}-H^,IZ33JI%Ls1vv&&&MM(###MM"*%%%S!!!HHSMMMM77777 226222&& < < < < <"DDVDDD

 

 )>(D(DV%%&&)
 )
 % *4"&t{F#####s   A
A*)A*N)r   )__name__
__module____qualname____doc__r   r[   r   r   r:   r\   rZ   r   r      sc        ++R2 R2 R2 ZR2h !0$ 0$ Z ! 0$ 0$ 0$r\   r   c                    t          | d          }|                                 t          ||d           |                    |j                   t
          |_        d S Nstretch_bothsizing_moder9   )r   r   r   add_rootrQ   r   themer<   ro   docgpu_loads       rZ   gpu_memory_docr      sV    i^DDDHOO#x---LL'(((CIIIr\   c                    t          | d          }|                                 t          ||d           |                    |j                   t
          |_        d S r   )r   r   r   r   rR   r   r   r   s       rZ   gpu_utilization_docr      sV    i^DDDHOO#x---LL,---CIIIr\   c                f   t          | d          }|                                 t          ||d           |                    |j                   |                    |j                   d|_        t          |_        t          j
        d          |_        |j                            |           d S )Nr   r   r9   z	Dask: GPUzgpu.html)r   r   r   r   rQ   rR   r+   r   r   r   get_templatetemplatetemplate_variablesr   s       rZ   gpu_docr      s    i^DDDHOO#x---LL'(((LL,---CICI#J//CL!!%(((((r\   )!
__future__r   rD   bokeh.core.propertiesr   bokeh.modelsr   r   r   r   r	   r
   bokeh.plottingr   tornador   
dask.utilsr    distributed.dashboard.componentsr   r   *distributed.dashboard.components.schedulerr   r   r   distributed.dashboard.utilsr   distributed.utilsr   r   r   r   r   r:   r\   rZ   <module>r      s   " " " " " "  = = = = = =                " ! ! ! ! !       # # # # # # V V V V V V V V S S S S S S S S S S . . . . . . ( ( ( ( ( (J$ J$ J$ J$ J$' J$ J$ J$Z       
) 
) 
) 
) 
)r\   