Directx 特斯拉适配器上的CUDA和另一个NVIDIA适配器上的全屏DX窗口

Directx 特斯拉适配器上的CUDA和另一个NVIDIA适配器上的全屏DX窗口,directx,cuda,fullscreen,tesla,Directx,Cuda,Fullscreen,Tesla,我有一个应用程序在特斯拉X2050适配器上使用CUDA进行一些处理。 在我的系统中,我还有一个Qudaro4000,应用程序不使用它。 此外,我还有另一个Geforce2xx图形卡,用于显示图案。 显示模式的部分只是在GeForce2xx适配器上创建全屏DX9设备并在每个显示框中显示不同模式的代码。为此,它需要显示VSynched,并且不应跳过或错过任何模式。 我遇到的问题是,当我打开VSync时,所有CUDA处理都变得非常慢。如果禁用VSynch,则会出现不需要的模式撕裂。 如何结合CUDA处

我有一个应用程序在特斯拉X2050适配器上使用CUDA进行一些处理。 在我的系统中,我还有一个Qudaro4000,应用程序不使用它。 此外,我还有另一个Geforce2xx图形卡,用于显示图案。 显示模式的部分只是在GeForce2xx适配器上创建全屏DX9设备并在每个显示框中显示不同模式的代码。为此,它需要显示VSynched,并且不应跳过或错过任何模式。 我遇到的问题是,当我打开VSync时,所有CUDA处理都变得非常慢。如果禁用VSynch,则会出现不需要的模式撕裂。 如何结合CUDA处理和模式显示? 出于上下文的考虑,这是针对结构光系统进行的,其中一个适配器连接到投影图案的投影仪

2011年4月10日编辑: 我已经发现了为什么序列可以完美地投射到一台计算机上,以及为什么图像在功能更强大的计算机上时不时会停滞。 不同之处在于,其中一个有一个板载intel GPU,另一个有3个NVIDIA GPU。对于这个特定的任务,车载英特尔GPU比英伟达GPU的任何一个都要出色。 可能是因为驱动程序不同,我在寻找英伟达驱动程序中是否有任何选项-参数组合来设置英特尔GPU具有的同样完美的性能。 多谢各位


Ofer.

一种解决方案是缓冲创建的图像并按顺序显示它们

如何使用DX9上下文?您是否正在将2050的结果复制到DX9上下文中?
您是否在计算端使用异步调用

我刚才解决了这个问题

发生此问题的原因是VSync也会暂停CUDA计算,它会暂停整个GPU。因此有两种解决方案:

  • 如果您有特斯拉,则可以将特斯拉设置为TCC模式,这是一种独占模式。这意味着显示GPU(geforce或quadro)中的VSync将不会暂停特斯拉和CUDA的计算

  • 尝试尽可能晚地调用VSync暂停操作,或者执行测试命令,而不是暂停VSync

  • 在DX9中,Present命令有两种模式,一种是阻塞(GPU)并等待VSync,另一种是测试Present是否成功,如果不成功,则不会暂停

    通过结合睡眠、测量最后一帧的时间或测试当前帧是否成功,可以使GPU在VSync中尽可能少地暂停。
    通过这种方式,我能够在同一个GPU(GeForce 320M)上运行DX9+3D显示中的CUDA结构光解码+模式投影。

    DX9竞赛与特斯拉完全不同。我从两个方向都不复制任何东西。DX9上下文的目的是使用结构光在投影仪上显示图案。到目前为止,我所做的是使用一台单独的计算机来运行DX9部件。它工作得很好。问题是当我试图在同一台计算机上进行计算和模式投影时。这应该是可能的,但我的i7和3个gpu似乎不能很好地处理这种类型的多任务。我的投影仪会暂停,因此一切都不同步。