Page 1 of 1

MadMapper with eGPUs

Posted: Tue Jan 22, 2019 8:45 am
by jasonbeyers
I've been trying to find success stories of people using MadMapper with eGPUs on Mac, but I haven't found any evidence that this combo works. Has anyone actually tried this, and does it work like you'd expect?

If I use an eGPU to drive a projector, will it negate any gains if I keep the main Madmapper program open on my macbook's own screen? In this case, it seems that shaders would be running on the eGPU and the built-in graphics card at the same time. Does MM allow acceleration on the internal Retina display via a eGPU?

I'm considering getting an eGPU specifically for MadMapper but I'm nervous, as I haven't found any official blessing by Garagecube that MM works with eGPUs.

Also kind of related, Apple has officially dropped support for OpenGL and is trying to get apps to migrate to their own Metal framework. Will this be problematic / will MM be adopting the new framework in a future release? The reason I ask is that apps using the Metal framework seem to run better on eGPUs vs apps w/ openGL, according to some articles I found.

Thanks!
-Jason

Re: MadMapper with eGPUs

Posted: Wed Jan 23, 2019 1:17 am
by jasonbeyers
And I have a follow-up question in case anyone here knows the answer. If I published a projector (in MM) to Syphon, to be used internally by MM, would this make use of an eGPU? My MadMapper projects usually have a handful of Syphon outputs routed back to MM for a number of reasons, and judging by GPU load in my current environment (without a eGPU), I can tell that Syphon puts heavy load on the graphics card.

Also I did a little more digging and found that other VJ tools like VDMX explicitly support eGPUs and offer options for which GPU to use at any given time: https://docs.vidvox.net/vdmx_gpu.html

I hope the absence of such options in the MM menus does not mean that MM can't make use of eGPUs..

Re: MadMapper with eGPUs

Posted: Sat Mar 09, 2019 1:52 pm
by panicoescenico
Did you get any answer?
I’m also pondering the egpu scenario for further works, but I still have those questions in mind.

Re: MadMapper with eGPUs

Posted: Mon Mar 11, 2019 3:53 am
by goldcat
I have an eGPU at work, and a Mac I can ask my colleague to try it, my Mac doesn't have USB-C.

What is the specific thing you are trying to test though as there's no activity monitor for GPU activity on Mac OS that I am aware of.

Re: MadMapper with eGPUs

Posted: Tue Mar 12, 2019 10:25 am
by franz
keep in mind that: (from vdmx website):
Though an eGPU will almost always likely outperform (a discreete one) for rendering real-time generators and FX processing, when pushed to the limits for basic playback multiple layers of 4k Ultra-HD (and bigger) movie playback, a low end integrated card may out perform a powerful eGPU connected over Thunderbolt 3 due to the amount of image data being transferred.

Re: MadMapper with eGPUs [UPDATE]

Posted: Sat Apr 20, 2019 1:53 pm
by jasonbeyers
So I ended up getting an eGPU to use with madmapper. I knew there was a risk it either (A) wouldn't work or (B) wouldn't improve performance. However, I'm glad I went this route, with one big caveat about syphon.

I got a AMD Radeon Vega 56 and a Akitio Node Pro, connected it with a 40 GB/s thunderbolt 3 cable, and used it with my 2018 Macbook Pro with a built-in AMD Radeon Vega 20. The external card has double the graphics memory of the internal one: 8gb vs 4gb.

Two things are necessary to get madmapper to use the eGPU:
1. click "Prefer external GPU" for the Madmapper application file before starting madmapper. This only needs to be done once, but maybe also after each madmapper upgrade you do
2. run the madmapper UI on a display that is connected to the eGPU - not the internal macbook display

After I did those, I was able to verify that MM was using the eGPU, by running some graphics-intensive ISFs and checking the "GPU history" chart in the OSX Activity Monitor.

I mainly use realtime visuals in madmapper, and there are certain ISFs & materials that are choppy on the internal GPU but are smooth on the eGPU. I increased the ISF resolutions repeatedly until things got choppy on the eGPU too, and by my rough estimates I am getting a ~30-40% improvement in performance with the external vega 56 vs the internal vega 20. Now, I'd imagine the improvement would be greater at lower resolutions, since I'm likely hitting the limits of thunderbolt 3 at the higher resolutions.

I then found a particular ISF & resolution to just barely saturate my internal graphics card -- 100% load that I see in the activity monitor. I moved things over to the eGPU and noticed only a ~60-70% load (along with very low internal GPU load), with that same ISF and resolution. My macbook ran a lot cooler too, which is nice.

In all of my tests, I was driving a 1080p projector and a 1440p monitor, with the madmapper UI running on the monitor (for the eGPU case). Previews and the entire output window were visible in the madmapper UI at the time, and there was one 1080p syphon output being routed back into madmapper.

However, it looks like syphon is only ever using the internal graphics card. As a test, I created four 1080p syphon outputs, fed them some ISFs, and used those syphon outputs as inputs for some surfaces. After moving things to the eGPU, these syphon outputs still put load on the internal card, even when my macbook lid is closed. Disabling the syphon outputs reduced the internal GPU load significantly.

So, it is concerning that I can't leverage the external card for syphon, as I use syphon is every project, and often with a handful of these kinds of outputs. I don't know much about syphon internals and haven't found much info about it online, so I don't know if this is expected or avoidable. But I'm hoping there is a way to move this to the eGPU.

Also, something strange happened when running madmapper 3.6.8 on my eGPU with only DMX output (no display other than for madmapper UI) to a Pixlite 16 MKII controller. I stepped aware for 10 minutes and came back to the external card (vega 56) blowing air at full blast. I've never heard a card get that loud! I frantically turned off the eGPU and noticed my macbook was hung - not just madmapper, but OSX and the touchbar too. Force-rebooting my macbook and the eGPU fixed things, and I wasn't able to reproduce it again with the exact same project and for same waiting period.

The other day, I also experienced the same macbook issue (but without the 1080p projector, when I accidentally created an infinite loop in one of my shaders. The first time just made madmapper hang (requiring restart), but my second attempt (out of curiosity) . the entire operating system was hung, forcing a hard reboot -- just like the first scenario I mentioned earlier but I know these my be unrelated.

So to answer the questions from my first post:
* Can MM run on a eGPU: yes
* Can an eGPU improve performance when MM UI is is running on internal display? *No, not without *Garagecube adding the "Accelerate internal graphics" option to Madmapper, which would be lovely*
* Does a eGPU improve graphics performance over a built-in card: *definitely yes, but it's lower than you might expect*

Hope this helps! If anyone is looking to go this route and has any questions about my setup, feel free to ask me!

Thanks,
-Jason Beyers

Re: MadMapper with eGPUs

Posted: Wed Aug 05, 2020 5:19 pm
by pele2010
Hey Jason,

this sounds very good !

Re: MadMapper with eGPUs

Posted: Fri Aug 14, 2020 10:27 am
by mad-matt
Hi Jason,
Syphon uses Apple "IO Surfaces". If Apple decide to create the IO Surfaces in the internal GPU VRAM, I'm afraid we can't deal with that :-/
I'll check that though.
Thanks for your feedback!
Cheers
Matt