我有一个应用程序在Tesla X2050适配器上使用CUDA进行一些处理。 在我的系统中,我还有一个Qudaro4000,为此目的,该应用程序不使用它。 另外我还有另一个用于显示图案的Geforce2xx显卡。 显示模式的部分只是在GeForce2xx适配器上创建全屏DX9设备并在每个显示帧上显示不同模式的代码。为此,需要将其显示为VSynched,并且不应跳过或错过任何模式。 我遇到的问题是,当我打开VSync时,所有CUDA处理变得非常慢。如果我禁用VSynch,那么我会撕裂不需要的模式。 如何将CUDA处理和模式显示结合起来? 为了上下文,这是针对结构光系统完成的,其中一个适配器连接到投影仪投影图案。
编辑10.4.2011: 我已经发现为什么序列在一台计算机上完美投影,以及为什么图像会在更强大的计算机中不时停止。 不同之处在于,一个拥有板载intel GPU,另一个拥有3个NVIDIA GPU。好吧,对于这项特殊任务,板载英特尔GPU比任何一款NVIDIA GPU都能做得更好。 这可能是因为不同的驱动程序,我正在寻找是否有任何类型的选项\参数组合在NVIDIA驱动程序中设置,以获得与英特尔GPU相同的完美性能。
谢谢。
奥弗。
答案 0 :(得分:1)
我刚才解决了这个问题。
发生此问题的原因是因为VSync也会停止CUDA计算,它会使整个GPU停顿。所以有两种解决方案:
如果您有特斯拉,那么您可以将特斯拉设置为TCC模式,这是一种独占模式。这意味着显示器GPU中的VSync(一个geforce或quadro)不会阻止特斯拉及其上的CUDA计算。
尝试尽可能晚地调用VSync停止操作,或者代替停顿vsync,执行测试命令。
在DX9中,Present命令有两种模式可以阻止(GPU)并等待VSync,如果存在成功则测试,如果没有,它就不会停止。
结合睡眠,测量最后一帧的时间,或测试是否存在成功,可以使GPU从VSync中尽可能少地停止。 我能够以相同的GPU(GeForce 320M)以这种方式在DX9 + 3D显示器上运行CUDA结构光解码+模式投影。
答案 1 :(得分:0)
一种解决方案是缓冲创建的图像并按顺序显示它们。
您是如何使用DX9上下文的?你是否将2050的结果复制到DX9上下文? 你在计算方面使用AsyncCalls吗?