eGPUs and my MacBook Pro 🥔 tato
So, for a while now, I've been thinking of upgrading, I bought a MacBook Pro way back in 2016. I use it for almost everything and though I have become fond of it, faults and all, It's showing its age and has some issues I'd like to fix. So, in this article I'll be looking at experiments I did with an eGPU enclosure, comparing it against a new PC. I'll be looking at rendering performance in a couple of my most used applications which are Blender and Davinci Resolve.
So, what's wrong with my macbook exactly?
Issue # 1 - Limited RAM
The model I got has only 8GB of RAM, which I can't change, the RAM is soldered to the motherboard (maybe I could try to upgrade it with the right chips and a soldering iron, but I fear the Apple Kraken awakening if I do). This is bad for a lot of the stuff I'd like to do. For example, video editing or modelling/animation in Blender. So why mention this if I can't fix it?
Mostly because there are shiny new Macs coming out now, with bold claims on superior performance, but still, they are shipping with just 8GB of RAM. This is disappointing, looking at how my current machine struggles. I predict exactly the same bottleneck happening with the new M1 based macs.
For me upgrading to a new Mac isn't an option unless the base model has significantly more RAM. If you're wondering why RAM is important, have a look at our video on it to get an idea for why it matters in Blender.
Issue # 2 - no GPU
The most important limitation for me is that there's no GPU. So everything must be done on the CPU. The CPU in this machine is an intel i5-5257U CPU @ 2.70GHz. It has two cores; four threads. Its rather good at turning electricity into heat, and average at computing. Being fair, this CPU came out over seven years ago, so trying to run the latest applications isn't all that wonderful or a fair test against a newer machine, save to see how much better modern hardware is.
Issue # 3 - Storage is pretty pathetic for what I actually need
The amount of data building up on my system is out of control! Rendering out videos, downloading assets or offloading footage creates TBs of data very easily. Storage in a Mac is pretty expensive per GB too if you look at the options. I'm going to cover storage issues in another article, though.
All these factors mean that I can't really be productive, probably should have bought a PC maybe? Anyway, this can't go on, I need to upgrade!
In this article I am going to consider; A. buying a new PC; and B. using an eGPU with the MacBook. The PC is a Ryzen 9 3950X based system, with 32GB of 3200Mhz RAM. I provide the full specs later on, lets just say its fairly capable to run the GPU we're using which is a Radeon RX5700XT 8GB card from Aorus.
And by the way, thanks a bunch to Mwave Australia for providing us with all the gear used in this article! Including the PC we used for the tests in this article (you can see the build video here, perfect if you like watching software guys pretend they know how to build a computer!). Their support made this and many other things we do here at Crowdrender possible. Go check out their website for all your PC and accessory needs if you're in Australia or New Zealand :)
Right, lets look at the gear we're working with!
Razor Core X eGPU Enclosure
So what is a Razor Core X eGPU enclosure then? Basically its a box that takes a GPU card, and lets you connect it to a computer via cable. This particular one uses intel's thunderbolt technology to do that. There are more and more devices (not just Apple ones) that support thunderbolt these days, so you might want to check your devices to see if you've got one. Obviously if you don't this whole article is only going to have curiosity value, ah well.
The Razor Core X has a 300W power supply and one thunderbolt 3 port for connecting to your computer. Inside, It has two eight pin power connectors and a single PCIe x 16 slot for your GPU. Its also got cooling fans and a nice slide in/out caddy for the internals.
Swapping the GPU card in/out is tool-less and fast. It's also pretty sturdy with an all metal construction, which is good if you put it on the floor and have a tendency to kick things under your desk.
Getting it Setup
For MacBook owners, if you have thunderbolt 3 ports, then this is supposed to just work with MacOS High Sierra or later, however, Big Sur might not work, though some folks seem to be able to make it happen on this thread.
It's also speculation at this point whether M1 macs will support eGPUs, currently they do not. Another reason to wait and see before buying an Apple Silicon based mac as you might find yourself not able to add extra compute power to it later on, or multiple display support, or RAM, or etc.
If you are on a windows device, adding an eGPU might be easier. We're going to test this for sure in another article. You can check this list of compatible laptops in the meantime.
I have a thunderbolt 2 based mac, which doesn't support eGPUs out of the box. I had to use third party tools to get the eGPU enclosure to work. Thankfully this wasn't terrible. There's a great site supporting eGPU users of all OS platforms, head on over to https://egpu.io to learn more as they'll more than likely have you covered.
I used the purge-wrangler.sh script from their software page to get my mac to work with the eGPU. This took very little time, and only a little bit of command line work.
There is a requirement to disable system integrity protection and secure boot. This is all easy to follow with fairly well guided steps. You'll want to familiarise yourself with the risks before doing all this.
Plugging in the eGPU for the first time caused the MacBook to crash, however, this was easily circumvented by following the instructions for not hot plugging the eGPU during the script's "Setup eGPU" step. Easy enough and I was up and running surprisingly quickly.
The Tests and Results
The first test was to find out how much faster Blender could render. Here's where I hit the first problem (to Mac computers anyway). Apple, it seems decided to get rid of support for OpenCL a while back, and as a result, Blender no longer supports OpenCL on macOS, so cycles can't detect your AMD cards. Trying with an Nvidia card also doesn't work for reasons best known to Apple and Nvidia. The web drivers on MacOS seem to 'work' but the card won't show up in either Blender or Resolve.
Thankfully for our tests, we can use Radeon ProRender, which does work on macOS. So the first test was a benchmark cooked up specifically for this problem (you can see a screenshot of a render from this file below).
ProRender is a different engine to cycles though, and, different enough so that Blender's benchmarks don't really render properly, which is why we built our own benchmark file. It was a fun afternoon figuring all this out.
So was it faster? Of course it was! The RX5700XT was way faster.
The difference in render times is night and day! Really should have upgraded a long time ago! The eGPU lets my MacBook now render in almost 1/10th the time! Seeing this for the first time was really cool, I felt like I might actually be able to use Blender for more than just testing our network rendering addon (a slight plug there, hope you don't mind!).
Though, looking at the results above, there was something a bit concerning, the PC we used, with exactly the same card, was in some runs, nearly half the render time, and in every case it was always faster by a noticeable margin. What gives? I did sort of expect the card to be slightly faster, being plugged into the PCIe slot in the PC and all. But I wasn't sure by how much. Now I was wondering if the eGPU was bottlenecking the GPU somehow.
So I did more tests, a lot more actually, here's what I found.
As you can see, when installed in the eGPU enclosure and connected to my MacBook, the GPU runs slower consistently. On average the RX 5700XT is about 35% faster when installed directly into a PC's motherboard than in the eGPU. I wondered what might be causing this. One theory was that the scene I used was quite large, so maybe the MacBook, with its puny 8GB of RAM, was struggling somewhere.
The benchmark scene causes Blender to consume well above 8GB of RAM, likely resulting in hard disk paging and slowing the process of synchronising data to the GPU. So, this isn't a great test of the eGPU.
But it's informative nonetheless. Recall how Apple has been saying its new M1 based machines are really fast? They probably are... until they run out of RAM. And since you can't upgrade the RAM in these systems, the only way out is a completely new system.
Getting back on track, I decided to try again with another scene that was a bit smaller, one that wouldn't cause paging. This test was a bit more representative of the performance of the eGPU when the host computer isn't having to juggle data around.
In the chart above you can see the results of the second test with a slimmed down version of the original. The total amount of RAM used at its peak was about 5GB, so paging should have been way less of an issue.
A couple of features are notable. First, there are a lot less differences in the render times between the PC and eGPU tests, and second, the eGPU render times have a lot less variability in them. Its interesting because this is actually the same scene as the former test! The only difference being I used a lower resolution HDRI. This reduced the system RAM required, but everything else was constant.
So the effects here are only due to the scene being smaller. This highlights the importance of having enough system RAM to contain the data to be rendered. If you run out of RAM, then, well, you get what you saw for the eGPU in the first chart, which less performance than you could have gotten if you'd had sufficient resources. Its important to know this, if you plan to run out and buy an eGPU, make sure you have enough RAM in the host system for your work!
More food for thought on the topic of paltry RAM configurations vs what apps for media production require or recommend. Davinci Resolve has a minimum requirement of 32GB of RAM. Blender's own system requirements require 8GB as the minimum and state a recommended 16GB and the optimum is 32GB (though I can safely say 'optimum' is going to be dependent on your particular circumstances).
With the M1, it seems you can't get more than 16GB at the moment, even in the new M1 based iMac. I am personally not considering a new M1 based mac until they can support 32GB.
Something else I noticed
After doing a few more runs, the sync phase of the render stood out as causing the majority of the increase in total render time, which made total sense. Once the GPU is rendering, the host system's CPU is hardly used and so doesn't impact the rendering part of the task.
The sync part of the render happens before any pixels are rendered and consists of a variety of steps including building the BVH (Bounded Volume Hierarchy) and other things like loading images and meshes into a separate memory space for use in rendering. This is all CPU bound and memory intensive.
This explains why when the MacBook ran out of free RAM, the sync time blew out, but the rendering portion of the total render time was quite stable. You can also see that in the smaller scene test, the sync time is very similar to the PC which indicates that the setup including MacBook, eGPU and thunderbolt connection, is quite capable when compared to the more modern PC setup. So long as the scene fits in memory!
Usability tests for Blender
These are somewhat harder to convey in text and still pictures, so take my word for it that the whole system is way more responsive with the rendering of Blender's UI offloaded to the GPU. As you can imagine! The UI experience in Blender is super smooth, with no stuttering. Though there is still an issue when it comes time to do anything on the CPU, like duplicate a mesh, or run a python script or addon that generates geometry. This is to be expected, the eGPU isn't being used in these cases.
Though we couldn't test viewport rendering in cycles, Radeon ProRender came in clutch and I was able to work with a rendered 3D viewport for the first time in ages. It was fairly slick and fast to update. Overall the usability tests were all positive, certainly nothing was worse! The best thing was the responsiveness which was really nice!
Conclusions and recommendations for rendering in Blender with an eGPU
Asides from the system RAM issue, the results going from standard MacBook Pro-tato to eGPU MacBook Pro-tato were awesome! Being able to render in 1/10th the time was really cool. The additional benefits of a fast user interface and good viewport performance were also much appreciated.
In your case, if you're thinking of upgrading and don't want or can't afford to replace your current system, if you have thunderbolt ports, then this is something to definitely consider.
Still we have more to test!
Davinci Resolve Rendering/Transcoding Tests
Next up, Davinci Resolve, I use resolve for all my video production, whether for Crowdrender or for my own amusement. I am no pro user, but no novice either. Typically I will cut, edit and grade shots and apply titles, sometimes getting fancy and using Resolve's fusion effects system. Each of these operations, and the final render/encode requires some form of compute.
Let's look at how the eGPU stacks up in a range of tests involving 4K and 2K footage I have on hand. The 2K footage I shot is called "Hank" by the way and is some GoPro footage of an Octopus shot in Sydney's harbour. I got lucky whilst out snorkelling one day :). The 4K footage was a mix of inside/outside shots edited together with colour grading applied, again shot on a GoPro.
There's at least a 50% reduction in transcoding time when using the H264 codecs, and a slightly better speedup when rendering. Not bad, but the real impact is the newer H265 codecs. The intel chip in the MacBook doesn't have hardware support for H265, so this shouldn't be surprising.
For me this is huge, just like the improvement in Blender all over again. I've often reverted to using H264 and lower resolutions, because the rendering time for H265 has been insanely long. To watch the eGPU/RX5700XT combo plough through transcoding/rendering H265 is totally cool.
However, your mileage may vary. If you have a chip with hardware support for H265 codecs, you might not see the same massive improvements, and given the lack of open data on resolve benchmarks, its hard to say whether your system would be slower than this particular setup.
For a list of intel chips with hardware support for H265 codec support in hardware, see this resource from Intel). For a H265 performance comparison between Intel and AMD's Ryzen architecture, see this resource, the TLDR of which shows AMD apparently having the lead against intel's H265/HEVC codec support with chips like the i9-9900K and i9-10900K loosing out the 3900X and 5900X AMD parts.
Blackmagic Speed Test Results
Davinci Resolve comes with its own benchmarking tools, so I did a run of Blackmagic's RAW video format benchmark, which I believe is meant to tell you what frame rates in playback you can expect given certain compression ratios, resolutions used on your hardware.
The results are that with just the CPU, I am good only up to 4K 30fps with RAW, which certainly beats the pants off other formats! Hats off to resolve here if this is legit (none of my cameras support BRAW sadly, so can't verify) as the MacBook CPU struggles to play back 4K at 30fps with GoPro footage. In reality, i am limited to 1080p in my current CPU only setup.
With the eGPU however, apparently, I am good to 8K, which certainly sounds fantastic! In my real world use, I have to admit, 4K is far more pleasant with the eGPU connected. Though I do find if I begin to include lots of transitions or titles, these do slow the playback down. It almost feels like it is still using the CPU for some tasks. But then I turn off the eGPU, and realise how lucky I am to have it as the experience is far worse!
Usability tests for Davinci Resolve
Massive! In one word, simply massive. Well for me anyway. The user experience is way better, I can easily scrub through footage and achieve smooth continuous playback where prior the scrubbing was stuttering and delayed and the playback fps quite unstable.
As far as increased performance goes, the eGPU solution certainly is a no brainer over sticking with the MacBook as is. A few other benefits is that it is portable in the sense that if someone else in the office needs it, they can just plug in and use it without having to resort to shutting down my computer and pulling parts plus the reverse of that to install it. I've been able to hot plug/unplug with minimal interruption so its really convenient as well. I can see this being useful if you're on a budget and can only afford one GPU for your micro studio.
It's also upgradable since the enclosure can host a variety of GPUs, and its also really fast to swap in out cards with no tools required what so ever.
Its fairly quiet too, you'd only notice its cooling fans in a 'can hear a pin drop' quiet room. There's an external disk drive next to it that drowns out the sounds of the eGPU. This is really handy for me when doing narration or voice over and I need to have low noise levels. The PC, by comparison, is much louder and is hard to cancel out thanks to the variable speed of its cooling fans.
That is some of the good, is there any bad?
Not really? Its a bit big for the number of GPUs you can fit in it, being one. I think it might have been possible to either slim it down a bit or move internals to allow a double card configuration. Though I'm not sure who'd want this other than me!
Its only got on thunderbolt port on the back, some devices allow daisy chaining, which might have been cool, to be able to daisy chain multiple enclosures together and then use multiple eGPUs to build mini render farms. Though again, this may be something only I am interested in, be sure to comment if you feel the same way! Or the opposite way even, all points of view welcome :)
Comparisons with other upgrade options
One of the goals I had in these tests was to try to figure out what the best value for money was when considering either a new PC, like the one we built here at Crowdrender, or the eGPU plus a card to go in it. So lets take a look at what I found
First, we're only going to be able to consider Blender. I am frugal as can be and so haven't yet bought the studio version of Davinci Resolve, which means no GPU support in windows, though you do get it on macOS for some reason.
The prices today are also totally insane, so we're going to use the retail prices from our supporter Mwave Australia when we took delivery of the parts since this was prior to the silicon shortage when the cost of GPUs made some sense to me.
The RX5700XT is the card we used, so its cost is the same between the two systems, though we want to still compare the total costs for each working system.
The PC we built was 'sturdy' to say the least, its specs are;
CPU: AMD Ryzen 9 3950X 16 core 32 threads
RAM: 32GB Crucial Ballistix 3200 MHz RAM
MOBO: Gigabyte Aorus Elite wifi
Case: Cooler Master MB530P
Power Supply: Gigabyte Aorus AP750GM 750W
Hard Drive: Samsung 970 EVO plus 1TB NVMe M.2
CPU Cooler: Cooler Master MasterLiquid ML240R RGB AIO Liquid cooler
GPU: Radeon RX5700XT 8GB
These prices put the system at AUD3620, many comment on how we're paying a lot more than other countries at these prices, but that is the cost of living on an island with incredible beaches, natural beauty, clean air and water and no COVID-19.
To be honest I'm fine with that.
The Razor Core X eGPU enclosure cost just AUD1418 plus about $100 for cables to be safe (we needed an adapter, an Apple adapter no less 0_0 ). Also, you can check out the Razor Core X in Mwave's store at this link -> https://bit.ly/3v1afH0
So clearly the eGPU enclosure is the thrifty option here. It doesn't really require doing much more analysis to see that the eGPU option has the better value! Just considering rendering in Blender, even when the PC outpaces the MacBook/eGPU combo, completing the job in almost half the time, the eGPU option is still attractive given how much cheaper it is than building a whole new system.
No matter how you look at it, for the money, the eGPU option has a lot to like about it. Plus with the right accessories, its possible to plug this eGPU into your PC tower as well. An interesting way to increase your GPU power even more!
I am going to be experimenting again soon with this option to see how that goes and if its possible to revive an old PC this way since I happen to have one and like to do weird experiments like this!
So, like the busker who plays his tune and then holds for applause plus money for snacks, I'd like to ask you, if you enjoy our content, please support our project by sharing this article on social media, the web and yeah even e-mail is good :) This really helps more than you can imagine.
Or perhaps you could be tempted to try out our network rendering or distributed rendering software that lets you combine the power of many computers to speed up rendering? You can also donate to our development fund which keeps our lights on and helps us keep making software that helps you create your own personal render farm and get stuff done a whole lot faster :)
You can read more about supporting our development fund here -> https://www.crowd-render.com/crowdfunding
Take care till the next article, you can subscribe to our website here for more -> https://discovery.crowd-render.com/sign-up