19th March 2020 | Guides2020 GPGPU Roundup: Metal vs. CUDA vs. OpenCL, AMD vs. NvidiaIntroductionSo you’re a Mac user and a creative, plus it’s 2020. GPU hardware acceleration is a thing, and it has been a thing for quite some time now. You’ve heard of it, but you’ve also heard lots of confusing terms bandied around, GPGPU, CUDA, real-time rendering, OpenCL, Mercury Graphics Engine, Metal. What does it all mean? Well, pull up a chair because Create Pro is here to break it all down.What is GPGPU?Let’s start at the beginning. When we talk about GPU acceleration we’re talking about GPGPU, that is, general-purpose computing on graphics processing units. So now we know what GPGPU stands for, what does it actually do? GPGPU takes advantage of software frameworks such as CUDA (Nvidia), OpenCL (open source) and Metal (Apple) to accelerate certain functions in your favourite creative software with the goal of making your work life quicker and easier. This could be a reduction in rendering time, better real-time previewing, or access to higher-quality effects.If you want to dig deeper, GPGPU is the act of a GPU performing tasks normally handled by the CPU (processor). Before GPGPU, data could be passed from the CPU to the GPU, but not back. GPGPU changes this and allows data to flow in both directions. This bidirectional processing is hugely beneficial in a wide variety of tasks relating to video, still image and 3D graphics.The GPGPU frameworks you have access to depend on the GPU you have in your Mac. Nvidia cards support CUDA and OpenCL, AMD cards support OpenCL and Metal.2015 Article, what’s new?You may remember, we first published an article on this very topic back in 2015, some of it still stands, but a lot has changed and it’s definitely time for an update. GPGPU is still the way to go if you’re a creative professional, but the advice is now a little different.So what exactly has changed? Well, unfortunately, Nvidia has dropped GPU support for Mac systems. This means that starting with macOS 10.14 Mojave, Nvidia GPUs are no longer compatible with Mac systems (this doesn’t include Nvidia cards shipped with Mac systems, such as those in retina MacBooks). To put it bluntly, if you’re required to work on macOS 10.14 or newer, Nvidia cards are out of the question for you. This doesn’t mean they should be completely counted out though, there are still some situations where Nvidia cards remain the best choice.The second big change since 2015 has been Apple’s own GPGPU framework, Metal. Since being debuted in 2014 Metal has come into its own as a real player in the GPGPU scene. As of 2020, it’s now the best choice for many apps/situations. Metal is currently only supported by AMD cards only, so this is something to keep in mind.AMD vs. Nvidia in 2020Back in 2015, there was a huge performance gap between Nvidia and AMD. If you read our previous article our recommendation was “In our view, Nvidia GPUs (especially newer ones) are usually the best choice for users, with built-in CUDA support as well as strong OpenCL performance for when CUDA is not supported. The only situation in which we would recommend an AMD GPU to professionals is when they are exclusively using apps that support OpenCL and have no CUDA option”. Nowadays, whilst AMD is still ever so slightly behind when it comes to raw GPU power, the two are now much more closely aligned.So, what was once an easy decision has been made a little more difficult. Fortunately (or in some cases, unfortunately) for us, Nvidia has made this decision a little easier by cutting support for their cards in newer versions of macOS. This means that for most, the choice is between AMD and it’s ease of use and Metal prowess, or figuring out whether the hoops you’re required to jump through make the potential benefits of using an Nvidia card are worth it.Let’s take a look at the current strengths of each GPGPU framework to see what factors might impact your choice of GPU.CUDA/NvidiaCUDA, despite not currently being supported in macOS, is as strong as ever. The Nvidia cards that support it are powerful and CUDA is supported by the widest variety of applications (see full table below for more info).Something to keep a note of is that CUDA, unlike OpenCL, is Nvidia’s own proprietary framework. This means that unlike other open-source frameworks, CUDA is constantly being worked on by its own team and Nvidia are constantly providing resources to further this development. Having this consistent and well-resourced team is certainly positive for CUDA.So which users should go for Nvidia cards? In our opinion, due to compatibility issues, we would only recommend Nvidia cards to users who use applications that support CUDA exclusively. Some popular apps and plugins that only support CUDA are; Adobe SpeedGrade, Avid Media Composer & Motion Graphics, RED Giant Effects Suite & Magic Bullet Looks, The Foundry HIERO, NUKE, NUKEX & Mari, as well as industry favourite OTOY Octane Render.If you are going to use an Nvidia card, please keep in mind the macOS compatibility issues previously mentioned, if you have any questions, feel free to ask in the comments below.OpenCLOpenCL, open-source and now widely supported, bolstered by the great line up of AMD cards currently available is a very compatible and powerful GPGPU framework currently. OpenCL is available to both AMD and Nvidia GPUs.Unlike CUDA, the fact that OpenCL is open-source means it doesn’t necessarily have the same consistent development team or funding as CUDA, but with this in mind, it has certainly achieved a lot with what it does have at its disposal.It would be remiss of us to neglect to mention that Metal has in many ways rendered OpenCL a little irrelevant. Metal is supported by the same AMD cards that OpenCL performs best on and in most cases, when both frameworks are supported, Metal is the best option. However, there are a few select apps, such as Capture One, which support only OpenCL, so the framework does have a little life in it still.MetalThe new kid on the block, but certainly not one to underestimate, Metal has been the rising star of the GPGPU scene in the last few years. Metal has sought to combine OpenCL and OpenGL in a single low-level API. As Metal is embedded within macOS at the lowest level, it’s super-efficient and provides huge performance benefits.Like CUDA, Metal has its own consistent development team and as part of Apple has access to huge resources, this means steady updates and more great things to come in the future.Currently, you’ll need an AMD card to take advantage of Metal in macOS. This isn’t a bad thing though, because the current crop of AMD cards is nothing to scoff at.Metal currently provides the best performance boosts across the Adobe suite, Blackmagic DaVinci Resolve and Final Cut Pro X. With this in mind, if you’re using any of these apps, you should be using Metal. For full compatibility check the table below.ApplicationOpenCLCUDAMetalAdobe Photoshop CC✓✓✓Adobe After Effects CC✓✓✓Adobe Premiere Pro CC✓✓✓Adobe SpeedGrde✓✓Capture One✓Avid Media Composer✓Avid Motion Graphics✓Blackmagic DaVinci Resolve✓✓✓Final Cut Pro X✓✓RED REDCINE-X✓✓RED Giant Effects Suite✓RED Giant Magic Bullet Looks✓Sony Vegas Pro✓✓The Foundry HIERO✓The Foundry NUKE & NUKEX✓The Foundry Mari✓CINEMA 4D✓✓As you can see from the table above, CUDA is the GPGPU framework with the widest range of support, however as macOS now does not support Nvidia GPUs, this can be a slightly moot point.Final ThoughtsIn our mind it’s like this, Metal is the best option for Mac users if available. If you have to choose between CUDA and OpenCL, CUDA will probably have better performance, but setting up with AMD will be easier and more future proof. Remember, your app may adopt Metal in the future, as we’re sure more and more apps will.Here are a few simple rules if you’re stuck, remember you can always leave questions in the comments below:If your app of choice supports metal, grab an AMD GPU and run with Metal. This will give you the best performance and ease of use, so is a no brainer. If your app supports OpenCL, but not metal, again grab an AMD GPU. If your app only supports CUDA, or only CUDA and OpenCL, and performance is extremely important, consider running an older (pre-macOS 10.13.6) OS and using an Nvidia card. But keep compatibility issues in mind.