我想知道Pytork是否正在使用我的GPU。使用nvidiasmi
可以检测在这个过程中是否有来自GPU的任何活动,但是我想要用python
脚本编写一些东西。
有没有办法做到这一点?
开始运行训练循环后,如果您想从终端手动观察程序是否在使用GPU资源以及使用程度,则只需使用watch
,如下所示:
$ watch -n 2 nvidia-smi
这将持续每2秒更新一次使用情况统计,直到您按下ctrlc
如果您需要更多的GPU统计数据,您可以使用更复杂的版本的nvidia-smi与--query-gpu=...
。下面是一个简单的例子:
$ watch -n 3 nvidia-smi --query-gpu=index,gpu_name,memory.total,memory.used,memory.free,temperature.gpu,pstate,utilization.gpu,utilization.memory --format=csv
它会输出这样的统计数据:
注意:在--query gpu=
。否则这些值将被忽略,并且不会返回任何统计信息。
此外,您还可以通过执行以下操作检查PyTorch安装是否正确检测到CUDA安装:
In [13]: import torch
In [14]: torch.cuda.is_available()
Out[14]: True
True
状态意味着PyTorch配置正确并且正在使用GPU,尽管您必须在代码中移动/放置带有必要语句的张量。
如果要在Python代码中执行此操作,请查看此模块:
https://github.com/jonsafari/nvidia-ml-py或者在pypi中:https://pypi.python.org/pypi/nvidia-ml-py/
因为这里没有提出,所以我添加了一个使用torch的方法。设备
,因为在正确的设备
上初始化张量时,这非常方便。
# setting device on GPU if available, else CPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Using device:', device)
print()
#Additional Info when using cuda
if device.type == 'cuda':
print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0)/1024**3,1), 'GB')
print('Cached: ', round(torch.cuda.memory_reserved(0)/1024**3,1), 'GB')
编辑:火炬。库达。缓存的内存
已重命名为torch。库达。保留内存
。因此,对于较旧的版本,请使用缓存的内存。
输出:
Using device: cuda
Tesla K80
Memory Usage:
Allocated: 0.3 GB
Cached: 0.6 GB
如上所述,使用
设备
可以:
>
torch.rand(10).to(device)
要直接在
设备上创建张量
:
torch.rand(10, device=device)
这使得CPU和GPU之间的切换舒适而无需更改实际代码。
由于对缓存和分配的内存存在一些问题和困惑,我将添加一些关于它的附加信息:
>
torch.cuda.max_memory_cached(设备=无)
返回给定设备的缓存分配器管理的最大GPU内存(以字节为单位)。
torch.cuda.memory_allocated(设备=无)
返回给定设备的当前GPU内存使用情况,按张量以字节为单位。
你可以直接交出一个设备
,如上文在文章中进一步说明的那样,也可以不交出任何设备,它将使用当前的设备()
。
附加说明:具有Cuda计算能力3.0或更低版本的旧图形卡可能可见,但Pytorch无法使用<感谢hekimgil指出这一点“找到GPU0 GeForce GT 750M,该GPU具有cuda 3.0功能。PyTorch不再支持此GPU,因为它太旧了。我们支持的最小cuda功能为3.5。”
这应该行得通:
import torch
torch.cuda.is_available()
>>> True
torch.cuda.current_device()
>>> 0
torch.cuda.device(0)
>>> <torch.cuda.device at 0x7efce0b03be0>
torch.cuda.device_count()
>>> 1
torch.cuda.get_device_name(0)
>>> 'GeForce GTX 950M'
这告诉我CUDA是可用的,可以在您的一个设备(GPU)中使用。目前,PyTorch
正在使用设备0或GPUGeForce GTX 950M
。
问题内容: 我想知道是否正在使用我的GPU。在此过程中,可以检测是否有来自GPU的任何活动,但是我想要在脚本中编写一些东西。 有办法吗? 问题答案: 这将起作用: 这告诉我GPU正在被使用。
与此问题相同,但适用于caffe。我想要一个命令,我可以把我的python脚本,以检查是否使用gpu。 当我的模型运行时,我检查了nvidia smi,我看到python被认为是一个进程,但使用情况不适用。 我还试着经营咖啡馆。设置_mode_cpu()命令时,考虑到时间会非常不同,但有命令的时间和没有命令的时间相同。
问题内容: 我通过单击具有特定类的div来调用下面的函数。 有没有一种方法可以在启动功能时检查用户是否正在使用Internet Explorer并在用户使用其他浏览器时中止/取消它,以便仅为IE用户运行?这里的用户都将使用IE8或更高版本,因此我不需要介绍IE7和更低版本。 如果我能告诉他们使用的是哪种浏览器,那很好,但是不是必需的。 示例功能: 问题答案: 使用以下JavaScript方法: 您
问题内容: 我正在尝试创建一个bash实用程序脚本以检查我的服务器中是否正在运行docker守护进程。除了运行这样的代码之外,还有没有更好的方法来检查docker守护进程是否正在我的服务器中运行? 我想创建一个bash shell脚本,该脚本将检查我的docker守护程序是否正在运行。如果它正在运行,则什么也不做,如果没有,则启动docker守护程序。 我的伪代码是这样的。我正在考虑解析ps -e
问题内容: 有什么方法可以检查给定线程是否正在休眠? 问题答案: 您可以呼叫并检查状态是否为。 请注意,但这并不一定意味着调用的线程也可能正在调用中或其他类似的事件中等待。
问题内容: 我有一堆字符,想删除所有不是’#’‘的字符。“ E”和“ G”。 我试图用这个: 但是遇到了不兼容类型的问题。 问题答案: