Update GPU detection logic

This commit is contained in:
Deniz Şafak
2025-05-20 03:32:29 +03:00
parent b3b420beec
commit 814c171a90
2 changed files with 25 additions and 32 deletions
+5 -7
View File
@@ -263,15 +263,13 @@ if "%MISAKI_LANG%" NEQ "en" (
) )
) )
:: Check GPU vendor :: Check for NVIDIA GPU via is_nvidia()
echo Checking GPU vendor... for /f %%i in ('%PYTHON_CONSOLE_PATH% -c "from abogen.utils import is_nvidia; print(is_nvidia())"') do set IS_NVIDIA=%%i
set GPU_VENDOR=unknown echo NVIDIA GPU detected: %IS_NVIDIA%
for /f %%i in ('%PYTHON_CONSOLE_PATH% -c "from abogen.utils import get_gpu_vendor; print(get_gpu_vendor())"') do set GPU_VENDOR=%%i
echo GPU Vendor: %GPU_VENDOR%
:: Check if torch is installed with CUDA support :: Check if torch is installed with CUDA support
echo Checking CUDA availability... echo Checking CUDA availability...
if /I "%GPU_VENDOR%"=="nvidia" ( if /I "%IS_NVIDIA%"=="true" (
for /f %%i in ('%PYTHON_CONSOLE_PATH% -c "from torch.cuda import is_available; print(is_available())"') do set cuda_available=%%i for /f %%i in ('%PYTHON_CONSOLE_PATH% -c "from torch.cuda import is_available; print(is_available())"') do set cuda_available=%%i
if "%cuda_available%"=="False" ( if "%cuda_available%"=="False" (
@@ -287,7 +285,7 @@ if /I "%GPU_VENDOR%"=="nvidia" (
echo CUDA is available on NVIDIA GPU. echo CUDA is available on NVIDIA GPU.
) )
) else ( ) else (
echo Non-NVIDIA GPU detected (%GPU_VENDOR%). Skipping PyTorch CUDA installation. echo GPU is not NVIDIA. Skipping PyTorch CUDA installation.
) )
:: Ask user if they want to create a desktop shortcut :: Ask user if they want to create a desktop shortcut
+20 -25
View File
@@ -212,31 +212,26 @@ def calculate_text_length(text):
return char_count return char_count
def get_gpu_vendor(): def is_nvidia():
os_name = platform.system() try:
cmd = None from torch import cuda # Attempt to import cuda from torch
if os_name == "Windows": # Check if there are any CUDA-capable devices
cmd = "wmic path win32_VideoController get name" device_count = cuda.device_count()
elif os_name == "Linux": if device_count == 0:
cmd = "lspci | grep -i 'vga\\|3d\\|display'" return False
if cmd: # Iterate through available devices to find an NVIDIA GPU
try: for i in range(device_count):
# Call create_process with capture_output=True device_name = cuda.get_device_name(i).lower()
proc = create_process(cmd, text=True, capture_output=True) print(f"Device {i}: {device_name}") # Debugging output
output, _ = proc.communicate(timeout=5) # Add a timeout if 'nvidia' in device_name:
if proc.returncode == 0 and output: return True
output_lower = output.lower()
if "nvidia" in output_lower: # If loop completes, CUDA devices are present, but none are identified as NVIDIA
print("GPU Vendor: NVIDIA") return False
return "nvidia" except Exception:
elif "amd" in output_lower or "radeon" in output_lower: # Catch any other exceptions (e.g., CUDA driver issues, unexpected errors)
print("GPU Vendor: AMD") return False
return "amd"
except (subprocess.TimeoutExpired, FileNotFoundError, Exception): # Catch more specific exceptions
# Log error or handle as appropriate
return "unknown" # Fallback in case of any error
return "unknown"
def get_gpu_acceleration(enabled): def get_gpu_acceleration(enabled):