编辑:这不是完全重复的,因为这个问题适用于特定于Ubuntu 的解决方案,而另一个问题适用于跨平台溶液
为了节省功耗,在最近的图形架构中,在离散的高性能和集成的低性能GPU之间动态切换是常见的,其中高性能GPU仅在需要额外性能时才启用。
对于nvidia GPU,此技术被标记为Optimus。
然而,由于这些技术的非标准化运作方式,从开发人员的角度管理它们可能是一场噩梦。例如,来自nvidia的this PDF关于这个问题,他们解释了作为开发人员在一个平台上管理nvidia Optimus时必须担心的许多复杂性,局限性和陷阱。
例如,在上面链接的PDF中,以下是在Windows上选择GPU的提示:
extern "C" {
_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}
但是,这只适用于Windows平台。 Ubuntu下的等价物是什么?
我特别感兴趣的是如何使用OpenCL和OpenGL(互操作)可靠地完成这项工作,因为这是我项目的预期目标。我正在使用nvidia硬件(闭源驱动程序v367)在Ubuntu 16.04-amd64下使用C ++ 14 / Qt5.7 / OpenCL / OpenGL代码库。