Multiple GPU 's and Vuo

Hey all, just a bit of a technical question.

If our systems have more than one GPU, such as an internal Intel GPU and external Nvidia or AMD, (or two AMD as in the Mac Pro) which GPU does Vuo use? Is Vuo able to move its GPU processing onto the active GPU screen? If we use two GPU’s for two screens will it utilise both GPU’s for super fast rendering? Also if the editor is on a lesser powered GPU, like an Intel internal I-GPU then does that effect the performance of the rendered window GPU? (Wow- too many GPU’s in that paragraph!)

Thanks in advance! :-)

When Vuo runs on a MacBook Pro with dual GPUs, it should always use the more-powerful discrete GPU.

When Vuo runs on a Mac Pro with dual GPUs, and a display is only plugged into one GPU, Vuo uses the GPU the display is plugged in to.

Vuo Editor itself typically doesn’t use the GPU (although Mac OS X does use the GPU to composite Vuo Editor’s window with the other windows and stuff). Vuo Editor does use the GPU when exporting a movie.

If you want to check which GPU a composition is on, enter this in Terminal —

defaults write org.vuo.Editor debug -boolean true

— then run the composition. Look for a Console message like VuoGlContext.cc:289 VuoGlContext_getRenderer() Renderer: NVIDIA GeForce GT 650M OpenGL Engine.

To disable the debug info from above, do —

defaults delete org.vuo.Editor debug

It’s somewhat more complicated than the Console message suggests, because Mac OS X’s GPU virtualization means that the GPU printed when the composition starts might not be the one used throughout the entire process lifetime.

You might also want to check out the OpenGL Driver Monitor app, specifically the Device Utilization metric (if available for your GPUs).

1 Like

Thanks @jstrecker!!

That’s what I thought. What occours when you plug in a display per gpu on a Mac Pro and render out a window to each? Do both gpus share the load?

I don’t know what happens with a display per GPU. If you’re able to test that setup, please let me know what you find out from the Console messages and/or OpenGL Driver Monitor!

Hi, I’m just gonna jump in here instead of making a new thread. I have a hacklntosh (I know, I know, stay with me) with an nVidia GTX 970, and my test composition runs just fine, outputting 4 separate windows at what feels like 60fps.
Now when I enable the internal GPU (it’s an i5 2500K, so a HD 3000), the rendering performance drops down drastically (pretty much to the level I see on my Early 2015 MBP with its Iris 6100 iGPU), even with all composition windows on displays connected to the GTX 970.

(Note: I enable/disable the iGPU in the BIOS settings, which involves a reboot.)

Is there a known way to force Vuo to use the nVidia card to its full potential and still be able to use the iGPU’s output for the Vuo Editor?

My (ideal) scenario is a quad-channel projection (GTX 970 has 4 outputs), plus one control monitor.

4beamertest.vuo (13.7 KB)

Vuo asks macOS to use whichever GPU macOS thinks is the best in the system. Sounds like your macOS is not deciding correctly for some reason.

There is currently no way to override that decision in Vuo, but maybe printing some debug info would give you a hint of how you might reconfigure your system to make it work better. You can do so using defaults write org.vuo.Editor debug -boolean true, as I described in a comment above. (Or if you don’t want to sort through the many Console messages from your entire system, you can export the composition to app and run the app in Terminal with debug info enabled, giving you the output from your composition only.)  

Thanks. Yeah, I will try that. Maybe with the nVidia cards not officially supported by Apple, macOS tends to give the Intel chip the higher priority. I have an older Radeon card lying around, which has support built into macOS, maybe that’ll work better.

Now to find out how to tell macOS which card to prefer…

(I removed the “VuoCompositionLoader / VuoGlContext.cc:50 / …” from all lines)
VuoGlContext_renderers() Renderer 0: NVIDIA GeForce 6xx or Quadro 4000/K5000
VuoGlContext_renderers() Online : yes
VuoGlContext_renderers() Accelerated : yes
VuoGlContext_renderers() Video memory : 4096 MB
VuoGlContext_renderers() Texture memory : 4096 MB
VuoCompositionLoaderVuoGlContext_renderers() Display mask : 0x7f
VuoCompositionLoaderVuoGlContext_renderers() Sanyo Electric Co.,Ltd.: SANYO DWL100 (1473, 2009-W45)
VuoCompositionLoaderVuoGlContext_renderers() Acer Technologies: Acer H6517ST (1824, 2017-W49)
VuoCompositionLoaderVuoGlContext_renderers() Sanyo Electric Co.,Ltd.: SANYO DWL100 (1067, 2009-W49)
VuoCompositionLoaderVuoGlContext_renderers() OpenGL version : 4
VuoCompositionLoaderVuoGlContext_renderers() OpenGL 2 : NVIDIA GeForce GTX 970 OpenGL Engine (2.1 NVIDIA-10.13.68 367.15.10.15f03) maxTextureSize=16384
VuoGlContext_renderers() OpenGL Core Profile: NVIDIA GeForce GTX 970 OpenGL Engine (4.1 NVIDIA-10.13.68 367.15.10.15f03) maxTextureSize=16384
VuoGlContext_renderers() OpenCL supported : yes
VuoGlContext_renderers() Renderer 1: Intel HD 3000
VuoGlContext_renderers() Online : yes
VuoGlContext_renderers() Accelerated : yes
VuoGlContext_renderers() Video memory : 579 MB
VuoGlContext_renderers() Texture memory : 512 MB
VuoGlContext_renderers() Display mask : 0x380
VuoGlContext_renderers() Messeltronik Dresden GmbH: MD 20160 (16843009, 2012-W00)
VuoGlContext_renderers() OpenGL version : 3
VuoGlContext_renderers() OpenGL 2 : Intel HD Graphics 3000 OpenGL Engine (2.1 INTEL-10.2.10) maxTextureSize=8192
VuoGlContext_renderers() OpenGL Core Profile: Intel HD Graphics 3000 OpenGL Engine (3.3 INTEL-10.2.10) maxTextureSize=8192
VuoGlContext_renderers() OpenCL supported : no
VuoGlContext_renderers() Renderer 2: Apple Software Renderer (GenericFloat)
VuoGlContext_renderers() Online : yes
VuoGlContext_renderers() Accelerated : no
VuoGlContext_renderers() Display mask : 0x3ff
VuoGlContext_renderers() Messeltronik Dresden GmbH: MD 20160 (16843009, 2012-W00)
VuoGlContext_renderers() Sanyo Electric Co.,Ltd.: SANYO DWL100 (2710, 2009-W45)
VuoGlContext_renderers() Sanyo Electric Co.,Ltd.: SANYO DWL100 (1473, 2009-W45)
VuoGlContext_renderers() Acer Technologies: Acer H6517ST (1824, 2017-W49)
VuoGlContext_renderers() Sanyo Electric Co.,Ltd.: SANYO DWL100 (1067, 2009-W49)
VuoGlContext_renderers() OpenGL version : 4
VuoGlContext_renderers() OpenGL 2 : Intel HD Graphics 3000 OpenGL Engine (2.1 INTEL-10.2.10) maxTextureSize=8192
VuoGlContext_renderers() OpenGL Core Profile: Intel HD Graphics 3000 OpenGL Engine (3.3 INTEL-10.2.10) maxTextureSize=8192
VuoGlContext_renderers() OpenCL supported : no
VuoGlContext_renderers() Driver: AppleIntelHD3000Graphics
createContext() Created OpenGL context 0x7fc99881a000 on Intel HD 3000
VuoCompositionLoader VuoGlPool.cc:319 VuoGlTexture_getMaximumTextureBytes_block() 384 MB

Why would it choose to use the Intel HD 3000 instead of the GTX? Is there a way to maybe disable OpenGL for the Intel, so that it wouldn’t even appear on this list?

Update: I found a workaround! (I am very, very happy right now)

The trick was to delete the GL driver kext for the Intel GPU ( /System/Library/Extensions/AppleIntelHD3000GLDriver.kext).
Now I can use the monitor attached to the iGPU, albeit with some small artefacts, and the nVidia OpenGL renderer is the only one left so it is the one which is used. Even displaying a composition window on the monitor attached to the iGPU works and looks fine.

(P.S. of course I haven’t deleted the kext, I moved it to another folder so I can restore it later If I need to.)

Yay! :)

Thanks again.

2 Likes