0

我有一个应用程序在 Tesla X2050 适配器上使用 CUDA 进行一些处理。在我的系统中,我还有一个 Qudaro4000,应用程序不为此目的使用它。此外,我还有另一个 Geforce2xx 显卡,用于显示图案。显示图案的部分只是在 GeForce2xx 适配器上创建全屏 DX9 设备并在每个显示帧显示不同图案的代码。为此,它需要将其显示为 VSynched,并且不应跳过或错过任何模式。我遇到的问题是,当我打开 VSync 时,所有的 CUDA 处理都变得非常缓慢。如果我禁用 VSynch,那么我会在不需要的模式中撕裂。如何将 CUDA 处理和模式显示结合起来?为了上下文,

编辑 10.4.2011:我发现了为什么序列可以完美地投影在一台计算机上,以及为什么图像在更强大的计算机中时不时停止。不同之处在于一个有一个板载英特尔 GPU,一个有 3 个 NVIDIA GPU。好吧,对于这个特定的任务,板载的英特尔 GPU 比任何 NVIDIA GPU 都做得更好。这可能是因为不同的驱动程序,我正在寻找是否有任何类型的选项\参数组合可以在 NVIDIA 驱动程序中设置以具有与英特尔 GPU 相同的完美性能。

谢谢你。

提供。

4

2 回答 2

1

我前段时间解决了这个问题。

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

  1. 如果您有特斯拉,那么您可以将特斯拉设置为 TCC 模式,这是一种独占模式。这意味着显示 GPU(A geforce 或 quadro)中的 VSync 不会停止 Tesla 和其上的 CUDA 计算。

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

在 DX9 中,Present 命令有两种模式,即阻塞(GPU)并等待 VSync 或测试 Present 是否成功,如果不成功,它不会停止。

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

于 2011-06-15T09:58:53.297 回答
0

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

您如何使用 DX9 上下文?您是否将 2050 的结果复制到 DX9 上下文?你在计算端使用 AsyncCalls 吗?

于 2011-04-06T16:44:41.673 回答