@@ -179,68 +179,90 @@ def temperature():
179
179
# TODO: Built in function for *nix in psutil, for Windows can use WMI or a third party library
180
180
181
181
182
- def display_gpu_stats (load , memory_percentage , memory_used , temperature ):
182
+ def display_gpu_stats (load , memory_percentage , memory_used_mb , temperature ):
183
183
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
+ )
200
206
201
207
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
+ )
214
226
215
227
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
+ )
231
248
232
249
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
+ )
244
266
245
267
if THEME_DATA ['STATS' ]['GPU' ]['TEMPERATURE' ]['TEXT' ].get ("SHOW" , False ):
246
268
display .lcd .DisplayText (
@@ -265,20 +287,20 @@ def stats():
265
287
nvidia_gpus = GPUtil .getGPUs ()
266
288
267
289
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 )
269
291
270
292
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 )
272
294
273
- memory_percentage = (memory_used / memory_total ) * 100
295
+ memory_percentage = (memory_used_mb / memory_total_mb ) * 100
274
296
275
297
load_all = [item .load for item in nvidia_gpus ]
276
298
load = (sum (load_all ) / len (load_all )) * 100
277
299
278
300
temperature_all = [item .temperature for item in nvidia_gpus ]
279
301
temperature = sum (temperature_all ) / len (temperature_all )
280
302
281
- display_gpu_stats (load , memory_percentage , memory_used , temperature )
303
+ display_gpu_stats (load , memory_percentage , memory_used_mb , temperature )
282
304
283
305
@staticmethod
284
306
def is_available ():
@@ -297,20 +319,20 @@ def stats():
297
319
i = i + 1
298
320
299
321
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 )
301
323
302
324
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 )
304
326
305
- memory_percentage = (memory_used / memory_total ) * 100
327
+ memory_percentage = (memory_used_bytes / memory_total_bytes ) * 100
306
328
307
329
load_all = [item .query_load () for item in amd_gpus ]
308
330
load = (sum (load_all ) / len (load_all )) * 100
309
331
310
332
temperature_all = [item .query_temperature () for item in amd_gpus ]
311
333
temperature = sum (temperature_all ) / len (temperature_all )
312
334
313
- display_gpu_stats (load , memory_percentage , memory_used , temperature )
335
+ display_gpu_stats (load , memory_percentage , memory_used_bytes / 1000000 , temperature )
314
336
elif pyadl :
315
337
amd_gpus = pyadl .ADLManager .getInstance ().getDevices ()
316
338
@@ -320,8 +342,8 @@ def stats():
320
342
temperature_all = [item .getCurrentTemperature () for item in amd_gpus ]
321
343
temperature = sum (temperature_all ) / len (temperature_all )
322
344
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 )
325
347
326
348
@staticmethod
327
349
def is_available ():
0 commit comments