2017-01-22 143 views
0

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

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

当我运行Nvidia的视觉探查我看到了未来:

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

回答

2

的问题[原文]是nppiResize_8u_C3R和所有其他计算功能不接受流。

NPP从根本上说是一个无状态的API。但是,要使用带有NPP的流,请使用nppSetStream为后续操作设置默认流。在文档的第2页中提到了关于在切换流时使用NPP流和建议的同步做法的几点注意事项。

+0

使用* nppSetStream *可以获得性能提升吗?我试过了,但没有成功。我有一种感觉,NPP并非针对并发或重叠场景而设计的,而要利用GPU,我需要直接使用CUDA驱动程序API。 –