我正在ASUS RoG fx553笔记本电脑的Nvidia GeForce GTX 1050上进行GPU计算,尽管出于某种原因,尽管Nvidia官方网站将此GPU列为与线程内在指令兼容(GL_NV_shader_thread_group
等) ),即使我使用的是#extension GL_NV_shader_thread_group : require
的4.3上下文(我也尝试4.4无效),但使用#version 430
时常会引发错误并报告扩展名不可用。由于我不熟悉加载扩展程序,因此不知道是否缺少Glad / GLFW端的设置。
编辑:我下载了OpenGL扩展查看器,然后继续告诉我,即使在OpenGL 4.3上下文中,我的GPU也应该支持GL_NV_shader_thread_group
。
答案 0 :(得分:4)
由于您提到自己是在笔记本电脑上运行的,因此我假设该笔记本电脑还具有iGPU(例如,集成到CPU中的Intel GPU)。问题很可能是您的程序未在NVIDIA GPU上运行,而仅在iGPU上运行。一种解决方案是在NVIDIA驱动程序控制面板中设置应用程序配置文件,以使其针对您的应用程序使用NVIDIA GPU。还应该有一个选项,可以全局性地在所有内容上强制使用NVIDIA GPU(尽管不建议这样做)。另一种方式(我通常使用的方式)是add the following line of code to your program:
extern "C" __declspec(dllexport) DWORD NvOptimusEnablement = 1U;
这将为全局变量导出相应的符号,驱动程序在将其加载到您的进程时将对其进行检查。如果该符号存在且变量设置为1,则驱动程序将使用NVIDIA GPU进行特定处理……