Nvidia Nsight 4.0 无法在 OpenGL 4.3 中分析代码

Posted

技术标签:

【中文标题】Nvidia Nsight 4.0 无法在 OpenGL 4.3 中分析代码【英文标题】:Nvidia Nsight 4.0 cannot profile code in OpenGL 4.3 【发布时间】:2014-08-30 10:33:04 【问题描述】:

我正在使用带有 Nvidia NSights 4.0 的 Visual Studio 13。在我的应用程序中,我混合了不同类型的渲染,但为了测试 proiler,我做了一个简单的场景渲染。我打开了图形调试器,当我打开 GUI 并按空格键捕获帧时,我收到此错误:

无法进入帧调试器。 Nsight 只支持帧调试 D3D9、D3D10、D3D11 和 OpenGL 4.2。 原因:glEnd

我使用的是 GT540m,我检查了我的 OpenGL 版本,它是 4.3 如果我尝试使用性能分析工具并跟踪 OpenGL(按照说明),我总是会得到一定百分比的 CPU 帧和 0 个 GPU 帧。

我不知道我做错了什么。是否有任何解决方案或替代方法来分析 OpenGL?

【问题讨论】:

【参考方案1】:

您是否使用即时模式绘图? IE。 glBegin(..); glVertex ; glEnd()

来自Nsight User Guide's Supported OpenGL Functions page:

NVIDIA® Nsight™ Visual Studio Edition 4.0 帧调试支持由 OpenGL 4.2 核心配置文件定义的 OpenGL 操作集。请注意,无需创建核心配置文件上下文即可使用帧调试器。使用兼容性配置文件上下文但将自身限制为使用 OpenGL 4.2 核心子集的应用程序也可以工作。还支持一些 OpenGL 4.2 兼容性配置文件功能,例如支持 alpha 测试和默认顶点数组对象。

因此,将立即模式渲染替换为更新的绘图函数,如顶点数组对象的 glDrawArrays 和 glDrawElements。

更好的是,创建一个核心配置文件上下文,以确保您没有使用已弃用的功能。

我的建议:远离过时的在线教程,阅读最新版的红皮书(OpenGL 编程指南),它仅涵盖现代 OpenGL。

您还可以尝试在Win 8 SDK 中找到的更基本的GPUView 工具

更新:

至于为什么检索到0个GPU帧,你确定你的GPU在list of supported hardware。我遇到了同样的问题,NSight 大部分时间都在工作(能够分析其他方面),但收集了 0 个 GPU 帧。后来意识到我的卡没有官方支持。

【讨论】:

我正在使用 glDrawElements 但我从其他教程中复制了一些代码,因此我可能会进行深入检查。谢谢(我已经发现我正在使用 glBegin 和 glend 渲染四边形)顺便说一句,核心配置文件仅适用于着色器还是我可以在主机中使用它?因为我在我的着色器上启用了 ARB_compatibility。 现在它似乎工作了,即使它给了我一个警告“Insufficient OpenGL version”,版本:未知。我安装了 4.3,也许 NSight 没有检测到什么? 性能分析工具呢?我仍然得到 0 个 GPU 帧 据我所知,上下文版本和配置文件独立于着色器 GLSL 版本和配置文件。上下文配置文件规范将取决于窗口工具包(检查有关创建和初始化窗口的文档部分)。对于 GLUT,使用 glutInitContextProfile(GLUT_CORE_PROFILE);【参考方案2】:

现已推出 Nsight 4.5 RC1,可与 cuda sdk 7 RC 配合使用,并且在其功能中,现在支持 openGL 4.3!

【讨论】:

以上是关于Nvidia Nsight 4.0 无法在 OpenGL 4.3 中分析代码的主要内容,如果未能解决你的问题,请参考以下文章

Nvidia Nsight 与 localhost 的连接失败

Nvidia Nsight - 如何连接到本地主机?

在 nvidia nsight 中安装 CUB

如何在 VS 2010 中使用 Nvidia NSight 查看 CUDA 线程值?

如何测量 NVIDIA nsight 系统中复制的数据量?

NVIDIA Parallel Nsight 和 OpenCL