从被动(非活动)GPU运行CUDA GUI示例

时间:2015-02-12 16:58:38

标签: cuda nvidia nsight amd-processor

我使用GeForce GTX 750 Ti成功运行CUDA程序,同时使用AMD Radeon HD 7900作为渲染设备(实际连接到显示器)this guide;例如, Vector Addition 示例运行良好。但是,我只能运行不产生视觉输出的应用程序。例如, Mandelbrot CUDA示例未运行并因错误而失败:

Error: failed to get minimal extensions for demo:
  Missing support for:  GL_ARB_pixel_buffer_object
This sample requires:
  OpenGL version 1.5
  GL_ARB_vertex_buffer_object
  GL_ARB_pixel_buffer_object

错误源于向glewIsSupported()询问这些扩展程序。有没有办法运行一个应用程序,比如这些CUDA样本,以便CUDA操作像往常一样在GTX上运行,但Window是在Radeon卡上绘制的?我试图说服 Nsight Eclipse 运行远程调试会话,我自己的PC作为远程主机,但其他东西马上就失败了。这应该真的有效吗?是否可以使用VirtualGL

1 个答案:

答案 0 :(得分:3)

一些涉及图形的NVIDIA CUDA样本,例如Mandelbrot样本,实现了一种有效的渲染策略:它们将OpenGL数据结构(Mandelbrot中的像素顶点对象)绑定到包含模拟数据和渲染的CUDA数组他们直接来自GPU。这避免了在每次模拟迭代结束时将数据从设备复制到主机,并导致快速渲染阶段。

回答你的问题:NVIDIA采样,因为他们需要在执行模拟阶段的同一GPU上运行渲染阶段,否则,处理图形的GPU将没有数据在它的记忆中呈现。

这并不排除可以修改样本以使用多个GPU。应该可以在每次迭代结束时将模拟数据复制回主机,然后使用自定义方法渲染它,甚至通过网络发送它。这需要(1)通过分离和进行独立的模拟和渲染阶段来修改代码,以及(2)接受由此产生的每秒帧数的巨大损失。