【问题标题】:why and when to use torch.cuda.Stream()为什么以及何时使用 torch.cuda.Stream()
【发布时间】:2021-11-26 18:45:37
【问题描述】:

我发现torch.cuda.Stream()是在一些开源代码中手动定义的。

    self.input_stream = torch.cuda.Stream()
    self.model_stream = torch.cuda.Stream()
    self.output_stream = torch.cuda.Stream()

torch page,上面写着

You normally do not need to create one explicitly: by default, each device uses its own “default” stream.

试图理解为什么他们必须手动定义它。从快速的谷歌搜索中,有很多如何使用cuda.Stream(),但没有为什么/何时/最佳实践可以使用它。

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    流是 cuda 内核的序列。不同流中的操作可以并行运行。我不相信他们可以使用它们。他们只是让代码更加并行,因此希望更快。

    【讨论】:

      【解决方案2】:

      我在 StackOverflow post 中读到了关于它的信息。虽然它也是how 使用。 但看完之后,我得到的只是:

      • Why/When 使用流:并行化一些计算。
      • Best Practices 使用流:通过并行化提升一些非常广泛的计算任务。 (大多数情况下;如果找到更好的答案,欢迎您发表评论。)

      参考:

      【讨论】:

      • 你从哪里得到的信息,torch 只允许 2 个流?甚至问题中的代码也包含 3。如果我使用 8 个 GPU,我肯定会使用至少 8 个流。
      • 我可能错了,因为我无法访问更多 GPU。而且因为它是非常有限的知识。所以我要删除那句话。感谢您指出。
      猜你喜欢
      • 2013-06-13
      • 2021-01-24
      • 2013-01-05
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多