循环会降低GPU的利用率吗?

问题描述

在PyTorch中,我的DeepLearning管道的前部有一个循环,以标准化中间结果。

它将在CPU上运行并降低GPU的利用率吗?

一些摘要如下:

def forward(self):
    ...
    for b in range(batch_size):
        self.points[b] = self.unit_cube(self.points[b])
    ....

解决方法

在Pytorch中,是否在GPU或CPU上进行操作取决于数据的位置。 Pytorch的主要卖点之一是,您(通常)不必关心数据在哪里;界面是相同的。

如果张量数据在GPU上,则该操作在GPU上完成。如果在CPU上,则该操作在CPU上完成。您选择如何组织这些操作(iffor loop等)对此没有影响。

>>> import torch
>>> a = torch.randn(3,4,5)
>>> b = a.cuda()
>>> a.device
device(type='cpu')
>>> b.device
device(type='cuda',index=0)
>>> c = b
>>> for x in range(10):
...   c = c * 2
... 
>>> c.device
device(type='cuda',index=0)

在上面的示例中,我使用了for循环将b翻倍10次,并将结果存储在c中。这些都是在GPU上完成的,而我同样可以在a上完成,使其在CPU上实现。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...