GPU调试

在 Linux 系统中,查询运行在某个特定 GPU 上的进程主要有以下几种方法,最常用的是 NVIDIA 官方提供的工具。

1. 使用 nvidia-smi (最常用)

这是最直接的方法。在终端输入以下命令:

bash 复制代码
nvidia-smi

如何查看:

  1. 在输出的上半部分,你会看到 GPU 的列表(ID 从 0 开始)。
  2. 往下看,找到 "Processes"(进程)表格。
  3. 关键列:
    • GPU UUID / GPU: 标识该进程运行在哪个 GPU 上。
    • PID: 进程 ID。
    • Type: 通常是 C (Compute 计算进程,如 Python/PyTorch) 或 G (Graphics 图形进程)。
    • Process Name: 进程名称。

只显示特定 GPU 的进程:

如果你只想看 GPU 0 上的进程,可以使用:

bash 复制代码
nvidia-smi --query-compute-apps=gpu_uuid,pid,process_name,used_memory --format=csv -i 0

2. 使用 fuser 查询设备文件

GPU 在 Linux 中被视为设备文件。你可以通过查询这些文件的使用者来找到进程。

步骤:

  1. 查看哪些进程占用了 /dev/nvidia* 设备:

    bash 复制代码
    sudo fuser -v /dev/nvidia*
  2. 输出解读:

    • 列表会显示 PID。
    • 通常 /dev/nvidia0 对应 GPU 0,/dev/nvidia1 对应 GPU 1,以此类推。

3. 结合 psnvidia-smi 进行关联查询

如果你通过 nvidia-smi 看到了 PID,想进一步查看这个 PID 具体是什么任务(例如是哪个 Python 脚本),可以使用 ps 命令。

查询特定 PID 的详细信息:

bash 复制代码
ps -fp <PID>

或者

bash 复制代码
ps aux | grep <PID>

批量查询(高级用法):

你可以编写一行命令,直接列出 GPU 进程及其对应的命令行参数:

bash 复制代码
# 先获取所有 GPU 进程的 PID,然后查询这些 PID 的详细信息
nvidia-smi --query-compute-apps=pid --format=csv,noheader,nounits | xargs -I {} ps -p {} -o pid,ppid,cmd,%mem,%cpu --sort=-%mem

4. 使用 gpustat (第三方工具,更美观)

如果你安装了 gpustat (可以通过 pip install gpustat 安装),它提供了一个更简洁的界面。

安装与使用:

bash 复制代码
pip install gpustat
gpustat -cp

输出特点:

  • -c 参数显示命令名(Command)。
  • -p 参数显示 PID。
  • 它通常能直接显示是哪个 Python 脚本在占用,比原生 nvidia-smi 更直观。
相关推荐
Smoothcloud_润云5 天前
Hermes Agent 的上下文记忆机制:一个开源 Agent 是怎么"记住"你的
人工智能·agent·gpu
RainbowC010 天前
CUDA软件实现跨线程块同步
gpu
劈星斩月13 天前
从“画图”到“算数”:GPU如何站上AI时代的C位
人工智能·gpu
逻极14 天前
Windows 平台 Ollama AMD GPU 一键编译指南:基于 ROCm 7.1 的自动化实战
人工智能·windows·stm32·自动化·gpu·amd·ollama
Luchang-Li16 天前
GPU传输带宽等信息监控nvidia-smi
人工智能·gpu·监控·性能·带宽
海砥装备HardAus16 天前
大载重工业吊运无人机动力学耦合与负载抑制底层控制技术
无人机·pid·工业无人机
海砥装备HardAus16 天前
工业重载吊运无人机:载荷摆动产生机理与主流抑摆控制方案详解
无人机·pid·加速度·大载重无人机
插件开发17 天前
CUDA11-VS2015安装-工具链测试-Helloworld程序
c++·gpu·cuda
DigitalOcean18 天前
微调后的 LLM 如何部署到生产环境?从GPU 推理端点的搭建、测试与上线全流程
llm·gpu
ALINX技术博客20 天前
【黑金云课堂】FPGA技术教程Linux开发:摄像头GPU渲染显示/Qt OpenGLES使用
linux·qt·fpga开发·gpu