有啥方法可以在 NVIDIA 显卡上的 Visual Studio 中运行程序调试?
Posted
技术标签:
【中文标题】有啥方法可以在 NVIDIA 显卡上的 Visual Studio 中运行程序调试?【英文标题】:Any ways to run program debugging in Visual Studio on NVIDIA graphics card?有什么方法可以在 NVIDIA 显卡上的 Visual Studio 中运行程序调试? 【发布时间】:2015-07-13 11:57:44 【问题描述】:我有集成 Intel 和 NVIDIA 显卡的笔记本,我想在 NVIDIA 卡上的 Visual Studio 2013 社区版中运行我的程序(用 .NET 编写的 C#)调试,因为我的程序广泛适用于 OpenGL 和 Intel 卡而不是支持最新的 OpenGL 功能。但默认设置程序在 Intel 卡上运行。
我曾尝试在 NVIDIA 设置中为我的程序更改默认显卡,但它看起来像是在重置程序重新编译设置后。
那么,还有其他简单的方法可以在 NVIDIA 显卡上运行程序吗?也许有特殊的命令行参数或类似的东西?
【问题讨论】:
【参考方案1】:最简单的方法是在程序的某处添加这段代码:
extern "C"
_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
更多信息,请看这里:http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf
【讨论】:
但是我的程序是用.NET写的,所以不能导出变量。至少不会对已编译的程序集进行一些黑客攻击。 另一种解决方案可能是在 nvidia 控制面板中将默认显卡设置为 nvidia。但是在.Net中导出这个变量可能有一个技巧。【参考方案2】:我目前使用 Visual Studio 2017 专业版,还需要使用 OpenGL。就像@Omich 所说,在 NVIDIA 设置中更改 VS2017 的默认显卡不起作用。最后,我尝试右键单击“Visual Studio 2017”快捷方式(或 devenv.exe,结果相同)并选择选项“使用图形处理器运行->高性能 NVIDIA 处理器”,它就可以工作。这种方式很简单,但似乎有点琐碎,因为每次启动时都必须右键单击 VS 图标。
【讨论】:
【参考方案3】:最简单的方法可能是将您的程序编译为 .NET DLL 并从用 C++/CLI 编写的可执行文件调用您的 Main
函数,该可执行文件导出 NvOptimusEnablement
变量,正如 Jerem 在另一个答案中提到的那样。
【讨论】:
如何链接一个用 c++ 编写的导出这个变量的 DLL。这行得通吗? @Jerem:我想过这个,但我不确定它是否可行。【参考方案4】:您可以使用 NVidia 控制面板应用程序。我相信它是在安装 NVidia 驱动程序时安装的,但我不太确定。启动它并:
选择管理 3D 设置 -> 程序设置选项卡
-
选择要自定义的程序:单击添加按钮
找到您的可执行文件并点击添加所选程序
选择首选图形处理器...
选择您的 NVidia 处理器
当您运行 exe 时,即使使用 Visual Studio 调试器,它也会使用选定的图形处理器。
【讨论】:
你测试了吗?我知道你的意思,但我知道有时父启动器 EXE 会让子 EXE 继承它,然后你要么一直在离散 GPU 上运行主机/父级,要么子级将在集成的所有时间 是的,我测试过了。使用 Visual Studio 2019,我构建了一个 .exe。然后打开 NVidia 控制面板应用程序并按照上面的说明浏览到 exe。回到 Visual Studio 并通过调试器运行 .exe。我的 Windows 任务栏有一个 NVidia 图标,每当它被使用时它就会亮起,并且还会列出使用该卡的程序。此新 .exe 的图标亮起。即使在我修改和重建 .exe 后它仍然亮起。【参考方案5】:经过几个小时的搜索,我在http://drivenbynostalgia.com/files/SOP.cs找到了解决方案
我想这比将整个项目移动到 dll 并使用 C++/CLI 启动器要好。
【讨论】:
以上是关于有啥方法可以在 NVIDIA 显卡上的 Visual Studio 中运行程序调试?的主要内容,如果未能解决你的问题,请参考以下文章