NVIDIA CUDA Toolkit 5.0 Visual Profiler“启用并发内核分析”应用程序要求

时间:2012-10-03 09:04:44

标签: opencv cuda nvidia

操作系统:Windows 7 64位 编译器:Visual Studio 2010 Professional 司机:306.23 设备:GeForce GTX 680或GeForce GT 650M 我正在使用CUDA Toolkit 5.0,因为我需要使用此Toolkit的NVIDIA Visual Profiler的新功能,该功能允许在时间轴中查看异步执行的并发内核(这在CUDA Toolkit 4.2中是不可能的)。出于这个原因,我在我的电脑上安装了这个工具包(5.0)(成功地)构建了OpenCV 2.4.2的源代码(这是在OpenCV博客上向我建议的),我能够正确地编译和执行具有并发内核的应用程序:其中一些是由OpenCV_GPU模块的函数调用的,而另一些则是我在CUDA中直接编写的内核。 不幸的是,如果启用该功能,CUDA 5.0 NVIDIA Visual Profiler无法跟踪我的应用程序的时间线:“启用并发内核分析”。 它为使用ONLY OpenCV函数编写的代码和使用ONLY CUDA函数编写的代码正确创建时间轴。实际上,当我在同一个应用程序中混合使用它时,它会停止工作。 我认为这可能是因为OpenCV调用应该使用与CUDA代码的其余部分相同的CUDA Context。 如何管理CUDA上下文以允许Profiler跟踪时间线?

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

好吧,试图解决我的问题,我试验说这不是CUDA上下文的问题:使用CUDA和OpenCV编写的应用程序可以被Profiler很好地跟踪。相反,它是一个内存问题:简单地说,在包含我的算法的CUDA版本和OpenCV版本的应用程序中,我使用了大量的两倍于我在应用程序中使用的只有一个版本的流算法,这超出了Profiler的内存容量。我认为这是Profiler的问题,因为使用这两种方法的应用程序正确运行,并且只有当我从“启用并发内核执行”模式中的Profiler运行它以跟踪时间线时它才会停止。这必须通过Profiler使用更多内存来跟踪此模态中的时间轴这一事实来解释,因此流的数量限制低于同步模态。但是,我是初学者,所以我最好不要冒险提出假设。我用更少的流解决了它。我为这个误导性的问题道歉。