Skip to content
Snippets Groups Projects
Commit 2dd229a7 authored by paul.tresson_ird.fr's avatar paul.tresson_ird.fr
Browse files

check gpu before install

parent 18e5cef6
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,10 @@ import inspect
cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]
def classFactory(iface):
from .dialogs.check_gpu import has_gpu
from .dialogs.packages_installer import packages_installer_dialog
packages_installer_dialog.check_required_packages_and_install_if_necessary(iface=iface)
device = has_gpu()
packages_installer_dialog.check_required_packages_and_install_if_necessary(iface=iface, device=device)
# packages_installer_dialog.check_required_packages_and_install_if_necessary(iface=iface)
from .iamap import IAMap
return IAMap(iface, cmd_folder)
import subprocess
import platform
def check_nvidia_gpu():
try:
# Run the nvidia-smi command and capture the output
output = subprocess.check_output(["nvidia-smi", "--query-gpu=name,driver_version", "--format=csv,noheader"], stderr=subprocess.STDOUT)
output = output.decode("utf-8").strip()
# Parse the output
gpu_info = output.split(',')
gpu_name = gpu_info[0].strip()
output_cuda_version = subprocess.run(['nvidia-smi'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
for line in output_cuda_version.stdout.split('\n'):
if 'CUDA Version' in line:
cuda_version = line.split('CUDA Version: ')[1].split()[0]
return True, gpu_name, cuda_version
except (subprocess.CalledProcessError, FileNotFoundError):
return False, None, None
def check_amd_gpu():
try:
if platform.system() == "Windows":
output = subprocess.check_output(["wmic", "path", "win32_videocontroller", "get", "name"], universal_newlines=True)
if "AMD" in output or "Radeon" in output:
return True
elif platform.system() == "Linux":
output = subprocess.check_output(["lspci"], universal_newlines=True)
if "AMD" in output or "Radeon" in output:
return True
elif platform.system() == "Darwin":
output = subprocess.check_output(["system_profiler", "SPDisplaysDataType"], universal_newlines=True)
if "AMD" in output or "Radeon" in output:
return True
except subprocess.CalledProcessError:
return False
return False
def has_gpu():
has_nvidia, gpu_name, cuda_version = check_nvidia_gpu()
if has_nvidia:
return cuda_version
if check_amd_gpu():
return 'amd'
return 'cpu'
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment