【发布时间】:2019-03-02 17:23:46
【问题描述】:
我使用带有 GPU 支持的 Torch 和 Numpy 使用下面的函数执行了逐元素乘法,发现 Numpy 的循环速度比 Torch 快,这不应该是这种情况,我怀疑。
我想知道如何使用 GPU 使用 Torch 执行一般算术运算。
注意:我在 Google Colab notebook 中运行了这些代码 sn-ps
定义默认张量类型以启用全局 GPU 标志
torch.set_default_tensor_type(torch.cuda.FloatTensor if
torch.cuda.is_available() else
torch.FloatTensor)
初始化 Torch 变量
x = torch.Tensor(200, 100) # Is FloatTensor
y = torch.Tensor(200,100)
有问题的功能
def mul(d,f):
g = torch.mul(d,f).cuda() # I explicitly called cuda() which is not necessary
return g
当调用上面的函数时
%timeit mul(x,y)
返回:
最慢的运行时间是最快的运行时间的 10.22 倍。这可以 意味着中间结果正在被缓存。 10000 次循环,最佳 3:每个循环 50.1 µs
现在试用 numpy,
使用来自 torch 变量的相同值
x_ = x.data.cpu().numpy()
y_ = y.data.cpu().numpy()
def mul_(d,f):
g = d*f
return g
%timeit mul_(x_,y_)
退货
最慢的运行时间是最快的运行时间的 12.10 倍。这可以 表示正在缓存中间结果。 100000 次循环,最佳 3:每个循环 7.73 µs
需要一些帮助来了解支持 GPU 的 Torch 操作。
【问题讨论】:
标签: python-3.x numpy gpu pytorch