【问题标题】:Running GPU on multiple PyTorch tensor operators在多个 PyTorch 张量算子上运行 GPU
【发布时间】:2020-07-14 01:49:24
【问题描述】:

我有以下 PyTorch 张量:

X = np.array([[1, 3, 2, 3], [2, 3, 5, 6]])
X = torch.FloatTensor(X).cuda()

我想知道如果我在一行中运行以下多个 PyTorch 运算符,下面的场景 A 或 B 之间是否有任何差异(尤其是在速度方面)?

场景 A:

X_sq_sum = (X**2).cuda().sum(dim = 1).cuda()

场景 B:

X_sq_sum = (X**2).sum(dim = 1).cuda()

即。场景 A 有两个 .cuda() 而场景 B 只有一个 .cuda()

非常感谢。

【问题讨论】:

    标签: python pytorch gpu


    【解决方案1】:

    它们的性能相同,因为 CUDA 转换只进行一次。

    docs 中所述,如果对象已在 CUDA 内存中,则重复的 .cuda() 调用将是无操作的。

    【讨论】:

    • 感谢@Dario Sučić。这是否意味着因为我在X = torch.FloatTensor(X).cuda() 的顶部调用了cuda(),所以这意味着在运算符中,我不必有任何cuda(),即。我可以只拥有X_sq_sum = (X**2).sum(dim = 1),而这行代码仍将使用 GPU?
    • 是的,差不多就是这样。一旦你在你的张量上调用.cuda(),它就会被转换为一个CUDA张量,并且(大多数)后续操作将在GPU上完成。
    猜你喜欢
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2023-02-20
    • 2021-08-23
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多