GPU上的PyTorch慢批矩阵乘法

2024-04-23 17:39:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用批量矩阵乘法对2个大小为(100 , 128 , 128 )的三维张量。在

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上做同样的事情,那就需要更长的时间

^{pr2}$

30.574532985687256

为什么在GPU上求解要花这么长时间?在

我有一台GTX 1050 Ti 4GB

和处理器核心i3-6100 3.7Ghz


Tags: importgputime时间矩阵torch批量事情
1条回答
网友
1楼 · 发布于 2024-04-23 17:39:35

GPU:

30.57secs是以下步骤所用的总时间:

  1. CPU在设备(GPU)上启动内核*
  2. CPU在GPU上分配内存
  3. CPU将输入数据复制到GPU
  4. CPU在GPU上启动内核来处理输入数据
  5. CPU将输出结果复制到自己

*内核是一个串行代码,它是原始代码的一小部分。在

CPU

鉴于,0.0323secs是指下列任一项所用的总时间:

  1. CPU内部通信
  2. CPU和主存通讯

它们的速度非常快,而且它们也必须执行更少的命令来完成工作。在

结论

因此,在命令的复杂性(CPU命令更复杂)和命令的并行性和更简单的性质(GPU可以激发更多的并行线程,它们本质上更简单)之间进行权衡。在

如果有更多的计算要做,那么GPU加速将压倒CPU-GPU通信所花费的额外时间。在

相关问题 更多 >