mirror of
https://github.com/blw1138/Zordon.git
synced 2026-02-05 13:46:10 +00:00
GPU Reporting in UI (#120)
* Add basic GPU info reporting to UI * Update GPU display to showcase multiple GPUs, if available * Add fallback for Windows for fetching GPU info * Improve Windows GPU lookup. Add GPUtil to requirements.txt * Clean up GPU and CPU naming in UI * Update Linux GPU fetching * Update misc_helper.py Fix getting GPU names on Linux * Update .gitignore
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
''' app/ui/main_window.py '''
|
||||
import ast
|
||||
import datetime
|
||||
import io
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
@@ -15,7 +17,7 @@ from PyQt6.QtWidgets import QMainWindow, QWidget, QHBoxLayout, QListWidget, QTab
|
||||
QTableWidgetItem, QLabel, QVBoxLayout, QHeaderView, QMessageBox, QGroupBox, QPushButton, QListWidgetItem, \
|
||||
QFileDialog
|
||||
|
||||
from api.api_server import API_VERSION
|
||||
from src.api.api_server import API_VERSION
|
||||
from src.render_queue import RenderQueue
|
||||
from src.utilities.misc_helper import get_time_elapsed, resources_dir, is_localhost
|
||||
from src.utilities.status_utils import RenderStatus
|
||||
@@ -54,6 +56,7 @@ class MainWindow(QMainWindow):
|
||||
self.server_info_ram = None
|
||||
self.server_info_cpu = None
|
||||
self.server_info_os = None
|
||||
self.server_info_gpu = None
|
||||
self.server_info_hostname = None
|
||||
self.engine_browser_window = None
|
||||
self.server_info_group = None
|
||||
@@ -122,6 +125,7 @@ class MainWindow(QMainWindow):
|
||||
self.server_info_os = QLabel()
|
||||
self.server_info_cpu = QLabel()
|
||||
self.server_info_ram = QLabel()
|
||||
self.server_info_gpu = QLabel()
|
||||
server_info_engines_button = QPushButton("Render Engines")
|
||||
server_info_engines_button.clicked.connect(self.engine_browser)
|
||||
server_info_layout = QVBoxLayout()
|
||||
@@ -129,6 +133,7 @@ class MainWindow(QMainWindow):
|
||||
server_info_layout.addWidget(self.server_info_os)
|
||||
server_info_layout.addWidget(self.server_info_cpu)
|
||||
server_info_layout.addWidget(self.server_info_ram)
|
||||
server_info_layout.addWidget(self.server_info_gpu)
|
||||
server_info_layout.addWidget(server_info_engines_button)
|
||||
server_info_group.setLayout(server_info_layout)
|
||||
|
||||
@@ -238,15 +243,42 @@ class MainWindow(QMainWindow):
|
||||
|
||||
def update_server_info_display(self, hostname):
|
||||
"""Updates the server information section of the UI."""
|
||||
self.server_info_hostname.setText(hostname or "unknown")
|
||||
self.server_info_hostname.setText(f"Name: {hostname}")
|
||||
server_info = ZeroconfServer.get_hostname_properties(hostname)
|
||||
|
||||
# Use the get method with defaults to avoid KeyError
|
||||
os_info = f"OS: {server_info.get('system_os', 'Unknown')} {server_info.get('system_os_version', '')}"
|
||||
cpu_info = f"CPU: {server_info.get('system_cpu_brand', 'Unknown')} ({server_info.get('system_cpu_cores', 'Unknown')} cores)"
|
||||
cleaned_cpu_name = server_info.get('system_cpu_brand', 'Unknown').replace(' CPU','').replace('(TM)','').replace('(R)', '')
|
||||
cpu_info = f"CPU: {cleaned_cpu_name} ({server_info.get('system_cpu_cores', 'Unknown')} cores)"
|
||||
memory_info = f"RAM: {server_info.get('system_memory', 'Unknown')} GB"
|
||||
|
||||
# Get and format GPU info
|
||||
try:
|
||||
gpu_list = ast.literal_eval(server_info.get('gpu_info', []))
|
||||
|
||||
# Format all GPUs
|
||||
gpu_info_parts = []
|
||||
for gpu in gpu_list:
|
||||
gpu_name = gpu.get('name', 'Unknown').replace('(TM)','').replace('(R)', '')
|
||||
gpu_memory = gpu.get('memory', 'Unknown')
|
||||
|
||||
# Add " GB" suffix if memory is a number
|
||||
if isinstance(gpu_memory, (int, float)) or (isinstance(gpu_memory, str) and gpu_memory.isdigit()):
|
||||
gpu_memory_str = f"{gpu_memory} GB"
|
||||
else:
|
||||
gpu_memory_str = str(gpu_memory)
|
||||
|
||||
gpu_info_parts.append(f"{gpu_name} ({gpu_memory_str})")
|
||||
|
||||
gpu_info = f"GPU: {', '.join(gpu_info_parts)}" if gpu_info_parts else "GPU: Unknown"
|
||||
except Exception as e:
|
||||
logger.error(f"Error parsing GPU info: {e}")
|
||||
gpu_info = "GPU: Unknown"
|
||||
|
||||
self.server_info_os.setText(os_info.strip())
|
||||
self.server_info_cpu.setText(cpu_info)
|
||||
self.server_info_ram.setText(memory_info)
|
||||
self.server_info_gpu.setText(gpu_info)
|
||||
|
||||
def fetch_jobs(self, clear_table=False):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user