Python 基于GPU的PyTorch慢批量矩阵乘法
我在两个大小分别为Python 基于GPU的PyTorch慢批量矩阵乘法,python,pytorch,Python,Pytorch,我在两个大小分别为(100128128)的3d张量上使用批量矩阵乘法 import torch a = torch.randn(100,128,128) b = torch.randn(100,128,128) import time t0 = time.time() torch.bmm(a,b) print(time.time() - t0) 0.03233695030212402 现在,如果我在GPU上做同样的事情,它需要更长的时间 a = a.cuda() b = b.cuda()
(100128128)
的3d张量上使用批量矩阵乘法
import torch
a = torch.randn(100,128,128)
b = torch.randn(100,128,128)
import time
t0 = time.time()
torch.bmm(a,b)
print(time.time() - t0)
0.03233695030212402
现在,如果我在GPU上做同样的事情,它需要更长的时间
a = a.cuda()
b = b.cuda()
t0 = time.time()
torch.bmm(a,b)
print(time.time() - t0)
30.574532985687256
为什么要花这么长时间才能在GPU上解决
我有一个GTX 1050 Ti 4GB
处理器核心i3-6100 3.7GhzGPU:
30.57秒是通过以下步骤所花费的总时间:
如果有更多的计算要做,那么GPU的加速将压倒CPU-GPU通信所需的额外时间 原来我的GPU忙于其他事情,cuda上变量和结果的初始化需要时间。我所要做的就是调用
torch.cuda.synchronize()
来确定时间。