You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NPP是否支持流重叠操作?多异步卷积场景执行未重叠

关于NPP库多流异步卷积操作无法重叠的问题

我尝试使用NVIDIA NPP库的nppiFilterBorder_32f_C1R_Ctx方法,对单张图像用多个滤波器执行多异步2D卷积。但即使创建了多个流并分配给NPPI方法,操作仍未重叠,NVIDIA的nvvp工具也显示了这一点(工具截图显示操作无重叠)。因此我困惑NPP是否支持上下文操作重叠。以下是代码简化版本,仅展示异步方法调用及相关变量:

std::vector<NppStreamContext> streams(n_filters);

for(size_t stream_idx=0; stream_idx<n_filters; stream_idx++)
{
  cudaStreamCreateWithFlags(&(streams[stream_idx].hStream), cudaStreamNonBlocking);
  streams[stream_idx].nStreamFlags = cudaStreamNonBlocking;
  // 填充NppStreamContext剩余字段
  // 分配图像和滤波器指针内存
}

for(size_t stream_idx=0; stream_idx<n_filters; stream_idx++)
{
  cudaMemcpyAsync(..., streams[stream_idx].hStream);
  nppiFilterBorder_32f_C1R_Ctx(..., streams[stream_idx]);
  cudaMemcpy2DAsync(..., streams[stream_idx].hStream);
}

for(size_t stream_idx=0; stream_idx<n_filters; stream_idx++)
{
  cudaStreamSynchronize(streams[stream_idx].hStream);
  cudaStreamDestroy(streams[stream_idx].hStream);
}

注意:所有输出图像和输入滤波器的设备指针都存储在std::vector中,通过当前流索引访问(例如float *ptr_filter_d = filters[stream_idx])

内容的提问来源于stack exchange,提问作者Gustavo Stahl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:41:30