实操
C:\Users\***>nvidia-smi
Tue Oct 25 16:25:08 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 511.65 Driver Version: 511.65 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-PCIE... TCC | 00000000:25:00.0 Off | 0 |
| N/A 42C P0 48W / 250W | 4369MiB / 32768MiB | 99% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 33596 C ...\pytorch_cu113\python.exe 1501MiB |
| 0 N/A N/A 37652 C ...\pytorch_cu113\python.exe 1433MiB |
| 0 N/A N/A 74620 C ...\pytorch_cu113\python.exe 1433MiB |
+-----------------------------------------------------------------------------+
C:\Users\***>nvidia-smi -L
GPU 0: Tesla V100-PCIE-32GB (UUID: GPU-8cc29e84-119e-c7c5-178c-bb9639c50241)
CMD查看gpu使用情况命令
如果 PyTorch 的变量和模型都已经被移动到 GPU 上,并且 PyTorch 的计算任务也在 GPU 上运行,但是使用 nvidia-smi
命令查看 GPU 进程时没有显示相关进程,可能是以下几个原因:
PyTorch 只在需要时才会申请 GPU 资源进行计算,计算完成后就会释放 GPU 资源。如果在 nvidia-smi 命令执行期间没有进行任何计算任务,就可能无法在进程列表中看到 PyTorch 的进程。可以尝试在计算任务执行期间运行 nvidia-smi
命令,以便及时查看 GPU 占用情况。
PyTorch 的计算任务可能比较短暂或者轻量级,导致在 nvidia-smi 命令执行期间已经执行完毕并释放了 GPU 资源,因此无法在进程列表中看到 PyTorch 的进程。可以尝试使用更大的数据集或者更复杂的计算任务,以便占用更多的 GPU 资源,从而更容易在 nvidia-smi 命令中看到 PyTorch 的进程。
可能是 GPU 进程被隐藏了。有些 GPU 驱动程序会隐藏某些进程,例如 NVIDIA 驱动程序会隐藏 Windows 系统进程和某些用户进程,以防止这些进程被意外中断或终止。如果是这种情况,可以尝试使用 nvidia-smi -L
命令查看可用的 GPU 设备列表,
比如
>nvidia-smi -L
GPU 0: Tesla V100-PCIE-32GB (UUID: GPU-8cc29e84-119e-c7c5-178c-bb9639c50241)
并使用 nvidia-smi -i <device_id>
命令查看指定设备的进程列表,以便查看是否有 PyTorch 的进程被隐藏了。
比如 nvidia-smi -i 0
pytorch 内部查看gpu
在使用 PyTorch 进行 GPU 加速的时候,我们需要先检查是否有可用的 GPU 设备。PyTorch 提供了 torch.cuda 模块,可以方便地查看和控制 GPU 设备的状态。
以下是一个查看可用 GPU 设备的示例代码:
import torch
# 检查是否有可用的 GPU 设备
if torch.cuda.is_available():
# 获取可用的 GPU 设备数量
device_count = torch.cuda.device_count()
print(f"{device_count} GPU(s) are available:")
# 遍历所有可用的 GPU 设备并打印其名称和类型
for i in range(device_count):
device_name = torch.cuda.get_device_name(i)
device_type = torch.cuda.get_device_capability(i)
print(f" {i}: {device_name} (type: {device_type})")
else:
print("No GPU available.")
在这个示例中,我们首先使用 torch.cuda.is_available() 方法检查是否有可用的 GPU 设备。如果有,我们使用 torch.cuda.device_count() 方法获取可用的 GPU 设备数量,并遍历所有可用的 GPU 设备,并打印其名称和类型。
布置模型和变量到gpu上面
PyTorch 可以很方便地使用 GPU 进行计算加速,需要做的只是将数据和模型移动到 GPU 上。具体来说,需要使用 to() 方法将 PyTorch 中的 Tensor 和模型移动到 GPU 上。
以下是一个使用 GPU 进行 PyTorch 计算的示例代码:
import torch
# 创建一个 PyTorch Tensor
x = torch.randn(3, 3)
# 创建一个 PyTorch 模型
model = torch.nn.Linear(3, 1)
# 将 Tensor 和模型移动到 GPU 上
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
x = x.to(device)
model = model.to(device)
# 在 GPU 上进行计算
y = model(x)
# 将结果移回 CPU 并打印
y = y.to('cpu')
print(y)
在这个示例中,我们首先使用 torch.cuda.is_available() 方法检查是否有可用的 GPU 设备。如果有,我们创建一个 PyTorch Tensor 和一个 PyTorch 模型,并将它们移动到 GPU 上。最后,我们使用模型进行计算,并将结果移回 CPU 上打印。
需要注意的是,如果计算量较大,使用 GPU 可以显著提高计算速度。但是,如果计算量较小,则将数据和模型移动到 GPU 上的时间可能会占用计算的大部分时间,反而会降低计算效率。因此,在使用 GPU 进行计算时,需要根据实际情况进行选择。
检查变量和模型是否在GPU上面
可以使用 x.is_cuda
和 model.is_cuda
方法检查 Tensor 和模型是否已经移动到 GPU 上。