@@ -179,68 +179,90 @@ def temperature():
179179 # TODO: Built in function for *nix in psutil, for Windows can use WMI or a third party library
180180
181181
182- def display_gpu_stats (load , memory_percentage , memory_used , temperature ):
182+ def display_gpu_stats (load , memory_percentage , memory_used_mb , temperature ):
183183 if THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("SHOW" , False ):
184- # logger.debug(f"GPU Load: {load}")
185- display .lcd .DisplayProgressBar (
186- x = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("X" , 0 ),
187- y = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("Y" , 0 ),
188- width = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("WIDTH" , 0 ),
189- height = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("HEIGHT" , 0 ),
190- value = int (load ) if not math .isnan (load ) else 0 ,
191- min_value = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("MIN_VALUE" , 0 ),
192- max_value = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("MAX_VALUE" , 100 ),
193- bar_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BAR_COLOR" , (0 , 0 , 0 )),
194- bar_outline = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BAR_OUTLINE" , False ),
195- background_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BACKGROUND_COLOR" , (255 , 255 , 255 )),
196- background_image = get_full_path (THEME_DATA ['PATH' ],
197- THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BACKGROUND_IMAGE" ,
198- None ))
199- )
184+ if math .isnan (load ):
185+ logger .warning ("Your GPU load is not supported yet" )
186+ THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ]['SHOW' ] = False
187+ THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ]['SHOW' ] = False
188+ else :
189+ # logger.debug(f"GPU Load: {load}")
190+ display .lcd .DisplayProgressBar (
191+ x = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("X" , 0 ),
192+ y = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("Y" , 0 ),
193+ width = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("WIDTH" , 0 ),
194+ height = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("HEIGHT" , 0 ),
195+ value = int (load ),
196+ min_value = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("MIN_VALUE" , 0 ),
197+ max_value = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("MAX_VALUE" , 100 ),
198+ bar_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BAR_COLOR" , (0 , 0 , 0 )),
199+ bar_outline = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BAR_OUTLINE" , False ),
200+ background_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BACKGROUND_COLOR" ,
201+ (255 , 255 , 255 )),
202+ background_image = get_full_path (THEME_DATA ['PATH' ],
203+ THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BACKGROUND_IMAGE" ,
204+ None ))
205+ )
200206
201207 if THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("SHOW" , False ):
202- display .lcd .DisplayText (
203- text = f"{ int (load ):>3} %" if not math .isnan (load ) else f"{ int (0 ):>3} %" ,
204- x = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("X" , 0 ),
205- y = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("Y" , 0 ),
206- font = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("FONT" , "roboto-mono/RobotoMono-Regular.ttf" ),
207- font_size = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("FONT_SIZE" , 10 ),
208- font_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("FONT_COLOR" , (0 , 0 , 0 )),
209- background_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("BACKGROUND_COLOR" , (255 , 255 , 255 )),
210- background_image = get_full_path (THEME_DATA ['PATH' ],
211- THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("BACKGROUND_IMAGE" ,
212- None ))
213- )
208+ if math .isnan (load ):
209+ logger .warning ("Your GPU load is not supported yet" )
210+ THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ]['SHOW' ] = False
211+ THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ]['SHOW' ] = False
212+ else :
213+ display .lcd .DisplayText (
214+ text = f"{ int (load ):>3} %" ,
215+ x = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("X" , 0 ),
216+ y = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("Y" , 0 ),
217+ font = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("FONT" , "roboto-mono/RobotoMono-Regular.ttf" ),
218+ font_size = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("FONT_SIZE" , 10 ),
219+ font_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("FONT_COLOR" , (0 , 0 , 0 )),
220+ background_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("BACKGROUND_COLOR" ,
221+ (255 , 255 , 255 )),
222+ background_image = get_full_path (THEME_DATA ['PATH' ],
223+ THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['TEXT' ].get ("BACKGROUND_IMAGE" ,
224+ None ))
225+ )
214226
215227 if THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("SHOW" , False ):
216- # logger.debug(f"GPU Load: {load}")
217- display .lcd .DisplayProgressBar (
218- x = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("X" , 0 ),
219- y = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("Y" , 0 ),
220- width = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("WIDTH" , 0 ),
221- height = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("HEIGHT" , 0 ),
222- value = int (memory_percentage ),
223- min_value = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("MIN_VALUE" , 0 ),
224- max_value = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("MAX_VALUE" , 100 ),
225- bar_color = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("BAR_COLOR" , (0 , 0 , 0 )),
226- bar_outline = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("BAR_OUTLINE" , False ),
227- background_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BACKGROUND_COLOR" , (255 , 255 , 255 )),
228- background_image = get_full_path (THEME_DATA ['PATH' ],
229- THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("BACKGROUND_IMAGE" , None ))
230- )
228+ if math .isnan (memory_percentage ):
229+ logger .warning ("Your GPU memory relative usage (%) is not supported yet" )
230+ THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ]['SHOW' ] = False
231+ else :
232+ display .lcd .DisplayProgressBar (
233+ x = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("X" , 0 ),
234+ y = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("Y" , 0 ),
235+ width = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("WIDTH" , 0 ),
236+ height = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("HEIGHT" , 0 ),
237+ value = int (memory_percentage ),
238+ min_value = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("MIN_VALUE" , 0 ),
239+ max_value = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("MAX_VALUE" , 100 ),
240+ bar_color = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("BAR_COLOR" , (0 , 0 , 0 )),
241+ bar_outline = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("BAR_OUTLINE" , False ),
242+ background_color = THEME_DATA ['STATS' ]['GPU' ]['PERCENTAGE' ]['GRAPH' ].get ("BACKGROUND_COLOR" ,
243+ (255 , 255 , 255 )),
244+ background_image = get_full_path (THEME_DATA ['PATH' ],
245+ THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['GRAPH' ].get ("BACKGROUND_IMAGE" ,
246+ None ))
247+ )
231248
232249 if THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("SHOW" , False ):
233- display .lcd .DisplayText (
234- text = f"{ int (memory_used / 1000000 ):>5} M" ,
235- x = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("X" , 0 ),
236- y = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("Y" , 0 ),
237- font = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("FONT" , "roboto-mono/RobotoMono-Regular.ttf" ),
238- font_size = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("FONT_SIZE" , 10 ),
239- font_color = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("FONT_COLOR" , (0 , 0 , 0 )),
240- background_color = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("BACKGROUND_COLOR" , (255 , 255 , 255 )),
241- background_image = get_full_path (THEME_DATA ['PATH' ],
242- THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("BACKGROUND_IMAGE" , None ))
243- )
250+ if math .isnan (memory_used_mb ):
251+ logger .warning ("Your GPU memory absolute usage (M) is not supported yet" )
252+ THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ]['SHOW' ] = False
253+ else :
254+ display .lcd .DisplayText (
255+ text = f"{ int (memory_used_mb ):>5} M" ,
256+ x = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("X" , 0 ),
257+ y = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("Y" , 0 ),
258+ font = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("FONT" , "roboto-mono/RobotoMono-Regular.ttf" ),
259+ font_size = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("FONT_SIZE" , 10 ),
260+ font_color = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("FONT_COLOR" , (0 , 0 , 0 )),
261+ background_color = THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("BACKGROUND_COLOR" , (255 , 255 , 255 )),
262+ background_image = get_full_path (THEME_DATA ['PATH' ],
263+ THEME_DATA ['STATS' ]['GPU' ]['MEMORY' ]['TEXT' ].get ("BACKGROUND_IMAGE" ,
264+ None ))
265+ )
244266
245267 if THEME_DATA ['STATS' ]['GPU' ]['TEMPERATURE' ]['TEXT' ].get ("SHOW" , False ):
246268 display .lcd .DisplayText (
@@ -265,20 +287,20 @@ def stats():
265287 nvidia_gpus = GPUtil .getGPUs ()
266288
267289 memory_used_all = [item .memoryUsed for item in nvidia_gpus ]
268- memory_used = sum (memory_used_all ) / len (memory_used_all )
290+ memory_used_mb = sum (memory_used_all ) / len (memory_used_all )
269291
270292 memory_total_all = [item .memoryTotal for item in nvidia_gpus ]
271- memory_total = sum (memory_total_all ) / len (memory_total_all )
293+ memory_total_mb = sum (memory_total_all ) / len (memory_total_all )
272294
273- memory_percentage = (memory_used / memory_total ) * 100
295+ memory_percentage = (memory_used_mb / memory_total_mb ) * 100
274296
275297 load_all = [item .load for item in nvidia_gpus ]
276298 load = (sum (load_all ) / len (load_all )) * 100
277299
278300 temperature_all = [item .temperature for item in nvidia_gpus ]
279301 temperature = sum (temperature_all ) / len (temperature_all )
280302
281- display_gpu_stats (load , memory_percentage , memory_used , temperature )
303+ display_gpu_stats (load , memory_percentage , memory_used_mb , temperature )
282304
283305 @staticmethod
284306 def is_available ():
@@ -297,20 +319,20 @@ def stats():
297319 i = i + 1
298320
299321 memory_used_all = [item .query_vram_usage () for item in amd_gpus ]
300- memory_used = sum (memory_used_all ) / len (memory_used_all )
322+ memory_used_bytes = sum (memory_used_all ) / len (memory_used_all )
301323
302324 memory_total_all = [item .memory_info ["vram_size" ] for item in amd_gpus ]
303- memory_total = sum (memory_total_all ) / len (memory_total_all )
325+ memory_total_bytes = sum (memory_total_all ) / len (memory_total_all )
304326
305- memory_percentage = (memory_used / memory_total ) * 100
327+ memory_percentage = (memory_used_bytes / memory_total_bytes ) * 100
306328
307329 load_all = [item .query_load () for item in amd_gpus ]
308330 load = (sum (load_all ) / len (load_all )) * 100
309331
310332 temperature_all = [item .query_temperature () for item in amd_gpus ]
311333 temperature = sum (temperature_all ) / len (temperature_all )
312334
313- display_gpu_stats (load , memory_percentage , memory_used , temperature )
335+ display_gpu_stats (load , memory_percentage , memory_used_bytes / 1000000 , temperature )
314336 elif pyadl :
315337 amd_gpus = pyadl .ADLManager .getInstance ().getDevices ()
316338
@@ -320,8 +342,8 @@ def stats():
320342 temperature_all = [item .getCurrentTemperature () for item in amd_gpus ]
321343 temperature = sum (temperature_all ) / len (temperature_all )
322344
323- # Memory usage not supported by pyadl
324- display_gpu_stats (load , - 1 , - 1 , temperature )
345+ # Memory absolute (M) and relative (%) usage not supported by pyadl
346+ display_gpu_stats (load , math . nan , math . nan , temperature )
325347
326348 @staticmethod
327349 def is_available ():
0 commit comments