如何使用CUDA处理实时视频

stanford_lhi 2010-02-05 05:27:58
我是CUDA新手。
我现在想利用CUDA做实时视频处理(算法比较复杂,但并行性比较好,应该可以实现)
但大家实时处理总共耗时不能超过40ms,而且上一帧的处理结果在下一帧仍旧有用
因此,我感觉需要每帧都在GPU和CPU中相互拷贝数据,那么这样的话,岂不是速度会很慢(我测试的拷贝需要100ms),我使用clock()函数和WINDOWS API函数都测试过,很慢!也可能是我测试错误?如果测试时间的代码有特殊的地方,麻烦贴一下代码。
不知道怎么处理这样的实时视频,但既然可以用来做游戏和视频质量处理,那么肯定能处理实时视频,只是我不知道该怎么做,希望各位大侠帮帮忙,小弟在此拜谢!
...全文
461 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stanford_lhi 2010-02-24
  • 打赏
  • 举报
回复
谢谢,我已经解决了!主要的做法是
1. 将不需要传出的数据保持在GPU上循环使用,不再传入传出
2. 修改算法的数据结构,使传入数据尽量少
  • 打赏
  • 举报
回复
1)处理结果直接保留在gmem中,这样可以避免一次不必要的上传.
2)用异步流重叠传送和处理时间.
3)在kernel中直接访问opengl中的缓冲区.
  • 打赏
  • 举报
回复
用流和异步能改进一部分性能,但余地不大。

如果只是视频解码显示,那可以考虑用cuda中对d3d或opengl的支持,直接把数据弄到显示缓冲区。

357

社区成员

发帖
与我相关
我的任务
社区描述
CUDA高性能计算讨论
社区管理员
  • CUDA高性能计算讨论社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧