如何解决循环会降低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上完成。您选择如何组织这些操作(if
,for 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上实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。