以跨平台方式启用/禁用Optimus / Enduro

时间:2016-11-18 19:03:29

标签: opengl opencl optimus

为了节省功耗,在最近的图形架构中,在离散的高性能和集成的低性能GPU之间动态切换是常见的,其中高性能GPU仅在需要额外性能时才启用。

这项技术被标记为nvidia OptimusAMD Enduro两个主要GPU供应商。

然而,由于这些技术的非标准化运作方式,从开发人员的角度管理它们可能是一场噩梦。例如,来自nvidia的this PDF关于这个问题,他们解释了作为开发人员在一个平台上管理nvidia Optimus时必须担心的许多复杂性,局限性和陷阱。

例如,在上面链接的PDF中,以下是在Windows上选择GPU的提示:

extern "C" {
 _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}

但是,这仅适用于Windows平台上的nvidia GPU。在OSX / Linux和AMD硬件上,AMD / Intel的等价物是什么?

所以我的问题更详细,我怎么能

  1. 以编程方式检测Optimus / Enduro的存在以及可能的其他动态=切换GPU架构?
  2. 选择应以编程方式启用哪些GPU?
  3. 以跨所有相关平台跨平台的方式这样做?
  4. 以与可能使用GPU的所有技术(如DX / OpenGL / Vulkan / OpenCL / CUDA / Qt)协同工作的方式这样做?
  5. 我正在使用nVidia硬件在Ubuntu 16.04-amd64下使用C ++ 14 / Qt5.7代码库。

0 个答案:

没有答案