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

时间:2020-08-11 01:55:24

标签: python tensorflow pytorch gpu

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

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

一些摘要如下:

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

1 个答案:

答案 0 :(得分:2)

在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上实现。