by jasonbeyers » Sat Apr 20, 2019 1:53 pm
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