【问题标题】:NPP: Overlapping computation and data transferNPP:重叠计算和数据传输
【发布时间】:2017-01-22 16:52:10
【问题描述】:

CUDA 允许使用 cuMemcpy 异步函数和 重叠计算和数据传输。但是 NPP(Performance Primitives) 有可能吗?

一点背景。我正在尝试使用 NPP 图像调整大小函数来利用 GPU(在我们的例子中是 nppiResize_8u_C3R)。我正在使用固定内存并使用 cuMemcpy2DAsync_v2每个线程流 成功地将数据传输到 GPU。问题是 nppiResize_8u_C3R 和所有其他计算函数不接受流。

当我运行 Nvidia Visual Profiler 时,我看到了下一个:

  1. 固定内存让我可以更快地传输数据 - ~6.524 GB/s。
  2. memcpy 与计算并行执行的时间百分比为 0%。

【问题讨论】:

    标签: cuda npp


    【解决方案1】:

    问题 [原文如此] 是 nppiResize_8u_C3R 和所有其他计算函数不接受流。

    NPP 本质上是一个无状态 API。但是,要将流与 NPP 一起使用,您可以使用 nppSetStream 为后续操作设置默认流。文档的第 2 页上提到了一些关于在流中使用 NPP 以及切换流时推荐的同步做法的注意事项。

    【讨论】:

    • 是否可以使用 nppSetStream 来提升性能?我试过了,但没有成功。我感觉 NPP 不是为并发或重叠场景设计的,要使用 GPU 我需要直接使用 CUDA 驱动 API。
    猜你喜欢
    • 2013-01-05
    • 2015-12-02
    • 2017-09-11
    • 1970-01-01
    • 2020-12-04
    • 2017-04-06
    • 2014-05-15
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多