You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需TensorFlow/PyTorch,如何检测GPU是否可用?

不用深度学习框架检测GPU可访问性的方法

首先纠正一个误区:psutil.virtual_memory().percent是用来检测系统物理内存使用率的,和GPU完全无关,你之前用错工具了。下面是几种靠谱的检测方法:

1. 针对NVIDIA GPU:nvidia-smi命令

这是NVIDIA官方提供的工具,只要装了NVIDIA驱动就会自带,直接在终端运行nvidia-smi就能看到GPU型号、使用率、显存占用、正在运行的进程等信息。如果要在Python里自动化检测,可以用subprocess调用并解析输出:

import subprocess

def check_nvidia_gpu():
    try:
        # 调用nvidia-smi获取关键GPU信息,格式化为csv
        result = subprocess.run(
            ['nvidia-smi', '--query-gpu=name,utilization.gpu,memory.used,memory.total', '--format=csv,noheader,nounits'],
            capture_output=True, text=True, check=True
        )
        gpu_list = result.stdout.strip().split('\n')
        if not gpu_list:
            print("未检测到可用NVIDIA GPU")
            return False
        
        print("检测到NVIDIA GPU信息:")
        for idx, info in enumerate(gpu_list):
            name, gpu_util, used_mem, total_mem = info.split(', ')
            print(f"GPU {idx+1}: {name}")
            print(f"  使用率: {gpu_util}%")
            print(f"  显存使用: {used_mem}/{total_mem} MB")
        return True
    except subprocess.CalledProcessError:
        print("nvidia-smi调用失败,可能未安装NVIDIA驱动或无NVIDIA GPU")
        return False

2. 跨平台通用:OpenCL(支持NVIDIA/AMD/Intel GPU)

OpenCL是跨厂商的并行计算框架,通过pyopencl库可以检测所有支持OpenCL的GPU设备:

import pyopencl as cl

def check_opencl_gpu():
    try:
        platforms = cl.get_platforms()
        has_gpu = False
        for platform in platforms:
            # 只筛选GPU设备
            gpu_devices = platform.get_devices(device_type=cl.device_type.GPU)
            if gpu_devices:
                has_gpu = True
                print(f"\n平台:{platform.name}")
                for idx, device in enumerate(gpu_devices):
                    print(f"GPU {idx+1}: {device.name}")
                    print(f"  总显存: {device.global_mem_size / 1024**2:.2f} MB")
                    print(f"  最大工作组大小: {device.max_work_group_size}")
        if not has_gpu:
            print("未检测到支持OpenCL的GPU")
        return has_gpu
    except Exception as e:
        print(f"OpenCL检测失败:{str(e)}")
        return False

3. 针对NVIDIA GPU:pycuda库

pycuda是专门针对NVIDIA CUDA平台的Python库,能直接检测GPU并获取硬件参数:

import pycuda.driver as cuda

def check_pycuda_gpu():
    try:
        cuda.init()
        device_num = cuda.Device.count()
        if device_num == 0:
            print("未检测到NVIDIA GPU")
            return False
        
        print(f"检测到 {device_num} 个NVIDIA GPU:")
        for i in range(device_num):
            device = cuda.Device(i)
            print(f"GPU {i+1}: {device.name()}")
            print(f"  总显存: {device.total_memory() / 1024**2:.2f} MB")
            print(f"  计算能力: {device.compute_capability()}")
        return True
    except Exception as e:
        print(f"PyCUDA检测失败:{str(e)}")
        return False

4. 针对AMD GPU:rocm-smi命令

如果是AMD GPU,安装ROCm驱动后可以用rocm-smi命令查看GPU状态,Python里同样可以用subprocess调用解析:

import subprocess

def check_amd_gpu():
    try:
        result = subprocess.run(['rocm-smi', '--showgpu'], capture_output=True, text=True, check=True)
        print("AMD GPU信息:")
        print(result.stdout.strip())
        return True
    except subprocess.CalledProcessError:
        print("rocm-smi调用失败,可能未安装ROCm驱动或无AMD GPU")
        return False

内容的提问来源于stack exchange,提问作者justRandomLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:05:27