2

我在华硕 RoG fx553 笔记本电脑的 Nvidia GeForce GTX 1050 上进行 GPU 计算,出于某种原因,尽管 Nvidia 官方网站将此 GPU 列为与线程内在指令(GL_NV_shader_thread_group等)兼容,但使用#extension GL_NV_shader_thread_group : require不断抛出错误和报告扩展名不可用,即使我使用的是 4.3 上下文#version 430(我也尝试了 4.4 无济于事)。由于我是加载扩展的新手,我不知道我是否缺少 Glad/GLFW 端的一些设置。

编辑:我下载了 OpenGL 扩展查看器,它继续告诉我我的 GPU 应该支持GL_NV_shader_thread_group,即使在 OpenGL 4.3 上下文中也是如此。

OGLEV 显示 GL_NV_shader_thread_group 在 OpenGL 4.3 下可用

4

1 回答 1

4

既然你提到你在笔记本电脑上运行,我假设这台笔记本电脑也有一个 iGPU(例如,一个集成到 CPU 中的 Intel GPU)。问题很可能是您的程序未在 NVIDIA GPU 上运行,而仅在 iGPU 上运行。一种解决方案是在 NVIDIA 驱动程序控制面板中设置应用程序配置文件,以使其将 NVIDIA GPU 用于您的应用程序。还应该有一个选项可以全局强制使用 NVIDIA GPU 进行所有操作(但不推荐)。另一种方法(我通常使用的方法)是将以下代码行添加到您的程序中

extern "C" __declspec(dllexport) DWORD NvOptimusEnablement = 1U;

这将导出驱动程序在加载到您的进程时检查的全局变量的相应符号。如果符号存在且变量设置为 1,则驱动程序将使用 NVIDIA GPU 进行该特定进程……</p>

于 2019-01-18T13:23:52.423 回答