繁体   English   中英

使用CUDA 7.0 / VS2012 C ++ / CLI / OpenCV将多线程CPU转换为GPU

[英]Multithreaded CPU to GPU Using CUDA 7.0/VS2012 C++/CLI/OpenCV

我有一个基本的VS2012 C ++ / CLI应用程序,该应用程序从多个摄像头中提取图像,然后使用OpenCV对它们进行对象识别。 当前,每个网络摄像头都有其自己的线程。 这可行,但是我没有获得想要的帧速率。

我想在NVidia GPU上实现一些代码。 因此,我希望我的每个CPU线程都能够异步调用GPU并执行一系列功能。

我是GPU新手,所以我想知道哪个更有意义:

1)一次将对GPU的访问锁定到一个CPU线程; 要么

2)每个CPU线程都可以调用GPU的东西,或者只有某些内核在该线程上工作(其他内核在其他线程上工作); 要么

3)作业被缓存的地方。

如果#2是一个不错的选择,那么是否有一些有关如何操作的指南? 我需要在每个CPU线程专用的GPU内存中保留一些内容。

感谢您的指导。

下一步可能是使用CUDA-Streams 因此,独立线程可以在GPU上同时运行。 但是要小心,因为要查看所使用的内存,寄存器和内核变得越来越复杂。 这意味着您需要其他代码来避免占用过多或用完寄存器。 随时记住,GPU上的每个资源都是有限的。 对于开普勒,请参阅第6-8页的开普勒白皮书以及第79和80页的CUDA编程指南中的性能指南。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM