nvidia-smi入门
介绍
nvidia-smi是一个用于管理和监控NVIDIA GPU(图形处理器)的命令行实用程序。它提供了一个简单而强大的方式来查看GPU的使用情况、温度、内存占用等信息,以及进行一些基本的管理操作。 本篇文章将介绍如何使用nvidia-smi以及常见的用法和参数选项。
安装
nvidia-smi通常与NVIDIA显卡驱动一起安装。如果您已经安装了合适的驱动程序,可以在命令行中直接运行nvidia-smi。
plaintextCopy codenvidia-smi
如果nvidia-smi不可用,则需要确保已正确安装NVIDIA显卡驱动。您可以访问NVIDIA官方网站下载和安装最新的显卡驱动程序。
基本用法
运行nvidia-smi命令时,将显示当前系统上所有可用的NVIDIA GPU的相关信息。每个GPU的索引、温度、使用率等信息都会被列出。 运行以下命令以查看系统上的GPU信息:
bashCopy codenvidia-smi
您将会看到类似以下的输出:
ruby
plaintextCopy code+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.39 Driver Version: 460.39 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:1E.0 Off | 0 |
| N/A 41C P8 8W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
此外,nvidia-smi还支持许多其他命令行选项,以获取更详细的关于GPU的信息以及进行一些管理操作。
常见选项
以下是nvidia-smi命令中常见的选项:
--list-gpus
:仅列出GPU的索引、名称和总内存大小。--query-gpu=QUERY
:使用查询语句来获取更详细的GPU信息。例如,使用--query-gpu=temperature.gpu,fan.speed,memory.total,memory.used
可以获取GPU的温度、风扇速度以及内存情况。--format=FORMAT
:指定输出格式,包括csv、json、xml等。--display=DISPLAY
:指定将信息显示在哪个GPU上。--gpu-reset
:重置指定的GPU。--help
:显示帮助信息。
示例
以下是一些示例用法:
-
列出所有GPU的索引和名称:
bashCopy codenvidia-smi --list-gpus
-
获取GPU的温度和内存使用情况:
bashCopy codenvidia-smi --query-gpu=temperature.gpu,memory.used --format=csv
-
显示指定索引的GPU信息:
bashCopy codenvidia-smi --display=1
-
重置指定索引的GPU:
bashCopy codenvidia-smi --gpu-reset=2
我们可以根据实际需求选择合适的选项和参数。
结论
nvidia-smi是一个免费的命令行实用程序,用于管理和监控NVIDIA GPU。它提供了丰富的功能和选项,让用户可以方便地查看GPU的状态、性能和内存使用情况。通过nvidia-smi,用户可以更好地了解和管理他们的GPU资源。 希望本篇文章对您理解和使用nvidia-smi有所帮助。如果您对nvidia-smi还有其他问题,请参考官方文档或其他资源以获取更多信息。
示例代码:使用nvidia-smi监控GPU温度并发送警报
在一些GPU密集型的应用场景中,对GPU的温度进行及时监控是非常重要的。下面是一个示例代码,使用nvidia-smi获取GPU的温度,并在温度超过阈值时发送警报。
ini
pythonCopy codeimport subprocess
import smtplib
from email.mime.text import MIMEText
def get_gpu_temperature():
result = subprocess.run(['nvidia-smi', '--query-gpu=temperature.gpu', '--format=csv,noheader'], capture_output=True, text=True)
temperatures = result.stdout.strip().split('\n')
return [int(temp) for temp in temperatures]
def send_email_alert(message):
sender_email = 'your_email@example.com'
receiver_email = 'recipient_email@example.com'
password = 'your_email_password'
msg = MIMEText(message)
msg['Subject'] = 'GPU Temperature Alert'
msg['From'] = sender_email
msg['To'] = receiver_email
with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp:
smtp.login(sender_email, password)
smtp.send_message(msg)
# 设置温度阈值
temperature_threshold = 80
# 获取GPU温度
gpu_temperatures = get_gpu_temperature()
# 检查是否有GPU温度超过阈值,如果有则发送警报邮件
for i, temp in enumerate(gpu_temperatures):
if temp > temperature_threshold:
message = f'GPU {i} temperature is {temp}°C, exceeding the threshold of {temperature_threshold}°C!'
send_email_alert(message)
请注意,在运行上述示例代码之前,请确保您的系统已正确安装并配置了nvidia-smi命令行工具,并且您已正确配置了发送邮件的SMTP服务器信息。 上述示例代码通过调用nvidia-smi
命令获取GPU温度信息,并使用subprocess
模块捕获命令执行的输出。然后,它将获取的温度与预先设置的阈值进行比较,如果有任何GPU的温度超过阈值,则会发送一封警报邮件。 您可以根据实际需求进行修改和扩展,例如增加定时检查、记录温度历史数据等功能。
注意:该示例代码只是提供了一个基本的框架,实际应用中需要根据具体情况进行适当修改和调整。同时,如果您要捕捉异常并在GPU温度异常时发送警报邮件,还需设置适当的错误处理和循环机制,以保证代码的健壮性和稳定性。另外,在发送邮件时,请合法使用SMTP服务器,并遵守相关的安全和隐私政策。
nvidia-smi的缺点
- 依赖于NVIDIA驱动程序:nvidia-smi是NVIDIA提供的命令行工具,它依赖于NVIDIA显卡驱动程序的安装和正常运行。如果驱动程序没有正确安装或出现故障,nvidia-smi可能无法正常工作。
- 仅适用于NVIDIA显卡:nvidia-smi只能用于监控和管理NVIDIA显卡,不适用于其他品牌的显卡。这限制了它在一些混合GPU环境中的应用。
- 命令行接口:nvidia-smi是通过命令行接口来进行交互的,对于不熟悉命令行操作的用户来说使用起来可能不够直观和友好。
- 不支持实时监控:nvidia-smi是一个静态命令,它提供一次性的GPU信息查询。如果需要实时监控GPU温度等参数,需要使用其他工具或编写自定义脚本。
类似的工具
- GPU-Z:GPU-Z是一款用于监控和显示显卡信息的工具,支持多种显卡品牌,包括NVIDIA、AMD等。与nvidia-smi相比,GPU-Z提供了更友好的图形界面,可以动态显示GPU温度、功率、负载等参数,并具有一些额外的功能,如显卡型号识别、BIOS信息查看等。
- MSI Afterburner:MSI Afterburner是一款显卡超频工具,可以监控和调整NVIDIA和AMD显卡的性能参数。它提供了实时的GPU参数监控,如温度、频率、负载等,并可以通过图表和日志记录来展示显卡的性能变化。除了监控功能,它还支持显卡调频、风扇控制、视频截取等功能。
- Open Hardware Monitor:Open Hardware Monitor是一款开源的硬件监控工具,除了支持CPU和内存等硬件信息的监控外,还可以监控GPU的温度、负载和频率等参数。它提供了图形界面和API接口,方便用户实时查看硬件状态,并可以生成报告和日志记录。 以上列举的工具都可以作为nvidia-smi的替代方案,根据实际需求选择适合的工具来监控和管理GPU。这些工具提供了更丰富的功能和更友好的界面,能够满足不同用户的需求。