【问题标题】:Jetson TK1 Multiple Streams parallel executionJetson TK1 多流并行执行
【发布时间】:2016-04-25 01:01:11
【问题描述】:

考虑到 Tk1 有单个 SM,真的可以同时运行流吗?即使使用最新版本的 cuda 库,我也无法这样做。

真的有可能吗?任何示例代码都会很棒。 cuda Blas 下的示例代码也按视觉分析器上显示的顺序运行。

还可以更好地了解“流”在单个 SM 中的好处?

[已经在 nvidia dev 论坛上问过,我认为论坛不是很活跃]

【问题讨论】:

  • 并发内核执行是流并行的一个方面。 TK1 上的并发内核执行中断了一段时间。该问题应该在 TK1 的最新固件中得到纠正,因此请确保您已更新到支持 TK1 的最新 JetPack。话虽如此,并发内核执行很难目睹,因此需要特制的案例才能使其在分析器中轻松可见。除此之外,流允许复制和计算的重叠。但是由于内存是统一的,在 Jetson 上应该避免复制操作;它们应该是不必要的。
  • 如原始问题所述,CUDA Blas 样本在可视化探查器中也不显示并行性。我已经在最新的喷气背包上。我想知道是否真的可以在 TK1 上同时执行内核执行。其次,它只有 1 个 SM 处理器,这与在代码中创建的 Cuda Streams 有何关系。

标签: cuda nvidia


【解决方案1】:

使用单个 Kepler SM,不可能同时运行多个流。开普勒不支持抢占。这与 CUDA 版本无关,而与 SM 的能力有关。在 GTC 2016 上讨论了有关 Pascal 的一些与抢占有关的问题,但之前没有。

关于单个 SM 流的实际使用,某些异步函数在流 0 和其他流之间的行为可能略有不同。因此,我假设异步 memcopy 和执行的某些极端情况可能会从具有单个 SM 的流中受益——因为 TK1 设备查询读取它具有并发复制并使用 1 个复制引擎执行。 (尽管 ZeroCopy 可能是 TK1 上更好的方法)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多