0

操作系统:Windows 7 64 位编译器:Visual Studio 2010 Professional 驱动程序:306.23 设备:GeForce GTX 680 或 GeForce GT 650M 我正在​​使用 CUDA Toolkit 5.0,因为我需要使用此工具包的 NVIDIA Visual Profiler 的新功能,它允许在时间轴中查看异步执行的并发内核(这在 CUDA Toolkit 4.2 中是不可能的)。出于这个原因,我使用安装在我的电脑上的这个工具包(5.0)构建(成功)OpenCV 2.4.2 的源代码(这是在 OpenCV 博客上向我建议的),并且我能够正确编译和执行我的具有并发内核的应用程序:其中一些是由模块 OpenCV_GPU 的函数调用的,另一些是我直接在 CUDA 中编写的内核。不幸的是,如果我启用该功能,CUDA 5.0 NVIDIA Visual Profiler 将无法跟踪我的应用程序的时间线:“

感谢您的关注。

4

1 回答 1

1

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

于 2012-10-06T16:31:35.057 回答