A few weeks ago, I wrote a forum post to try to clarify some things about CUDA, the Mercury Playback Engine, and what it all means for Adobe Premiere Pro. I wrote this as a forum post because I wanted to invite questions and conversation. But, as forum threads do, it got a little messy, so I thought that I should consolidate the information here.
If you want to ask a question about this subject, please do so on the forum thread, not on this blog post. It’s very difficult to have a conversation in the comments of a blog post
What is the Mercury Playback Engine, and what is CUDA?
Mercury Playback Engine is a name for a large number of performance improvements in Adobe Premiere Pro CS5. Those improvements include the following:
– 64-bit application
– multithreaded application
– processing of some things using CUDA
Everyone who has Premiere Pro CS5 has the first two of these. Only the third one depends on having a specific graphics card.
CUDA is a technology (architecture, programming language, etc.) for a certain kind of GPU processing. CUDA is an Nvidia technology, so only Nvidia cards provide it.
Confusingly-because of one of our own early videos that was unclear-a lot of people think that Mercury just refers to CUDA processing. This is wrong. To see that this was not the original intent, you need look no further than the project settings UI strimangs Mercury Playback Engine GPU Acceleration and Mercury Playback Engine Software Only, which would make no sense if Mercury meant “hardware” (i.e., CUDA).
What is required for Premiere Pro to use CUDA processing?
The official and up-to-date list of the cards that provide the CUDA processing features is here:
Adobe Premiere Pro CS5 system requirements
Some of the cards on that list are only enabled if you have the recent updates. Go here to read about the most recent updates.
If you don’t have one of these CUDA cards, you can still use Premiere Pro CS5; you just won’t get the advantages of processing with CUDA.
On Mac OS, CUDA processing features of Premiere Pro CS5 require Mac OSX v10.6.3 or later.
What does Premiere Pro accelerate with CUDA?
Here’s a list of things that Premiere Pro CS5 can process with CUDA:
some effects (complete list at the bottom of this post)
scaling (details here)
color space conversions
It’s worth mentioning one set of things that Premiere Pro CS5 doesn’t process using CUDA: encoding and decoding.
A common misconception is that CUDA processing is only used for rendering for previews. That is not true. CUDA processing can be used for rendering for final output, too. See this page for details about what rendering is.
Whether a segment of a sequence gets a red or yellow render bar is influenced by whether the project is set to use CUDA processing (i.e, whether the project’s Renderer setting is Mercury Playback Engine GPU Acceleration or Mercury Playback Engine Software Only). See this page for details.
Note that whether a frame can be processed by CUDA depends on the size of the frame and the amount of RAM on the graphics card (VRAM). This article gives details about that, toward the bottom
Processing with CUDA doesn’t just mean that things are faster. In some cases, it can actually mean that results are better, as with scaling. See this article for details.
For export, scaling with CUDA is always at maximum quality, regardless of quality settings. (This only applies to scaling done on the GPU.) Maximum Render Quality can still make a difference with CUDA-accelerated exports for any parts of the render that are processed on the CPU. Over time, we are working on reducing the list of exceptions to what can be processed on the GPU. For an example of a limitation that can cause some rendering to fall back to the CPU, see this article: “Maximum dimensions in Premiere Pro CS5?.
When rendering is done on the CPU with Maximum Render Quality enabled, processing is done in a linear color space (i.e., gamma = 1.0) at 32 bits per channel (bpc), which results in more realistic results, finer gradations in color, and better results for midtones. CUDA-accelerated processing is always performed in a 32-bpc linear color space. To have results match between CPU rendering and GPU rendering, enable Maximum Render Quality.
Note: There are two places to enable or disable Maxium Render Quality-in the sequence settings and in the export settings. The sequence setting only applies to preview renders; the export setting (which defaults to the sequence setting) overrides the sequence setting.
Why are only some video cards supported?
There’s a lot of testing work that goes into making sure that a given card works without problems and actually provides the features in a way that we can support. We don’t want to say that people can use any card and then have some cards cause problems. We learned this the hard way on the After Effects side, where a lot of problems arise from people trying to use the OpenGL features with cards that we haven’t been able to test against and verify.
If there’s a specific card that you want us to add to the list of cards that Premiere Pro CS5 can use for CUDA processing, then let us know with a feature request.
What about OpenCL?
As we were beginning the work for Premiere Pro CS5, OpenCL wasn’t far enough along for us to use it for the Mercury Playback Engine.
Regarding plans for future versions: Sorry, but we can’t comment on what may or may not be done in future versions. That said, we rely heavily on feature requests to determine how many people want a specific feature. If you’d like to see us use OpenCL for processing, please submit a feature request.
What about OpenGL?
OpenGL is a different technology that is implemented through GPUs. It is not exclusive of CUDA; it’s a different thing altogether, and a card that uses CUDA will also use OpenGL for some things. OpenGL is used to do such things as render 3D and accelerate drawing of items to the screen. After Effects uses it some. Premiere Pro, not so much.
What about Mercury in After Effects?
The term Mercury Playback Engine refers to Premiere Pro. It has nothing to do with After Effects. After Effects CS5 is a 64-bit application, and it has been multithreaded for a long time, so those improvements are there. But After Effects doesn’t use CUDA (though a few third-party plug-ins do).
How can I make Premiere Pro faster?
This page is a good place to start.
What effects are CUDA-accelerated in Premiere Pro?
To show in the Effects panel only effects that can be accelerated by CUDA, click the Accelerated Effects icon at the top of the Effects panel.
Here’s a list of the effects and transitions that can be accelerated by CUDA in Adobe Premiere Pro CS5 (5.0.3):
– Alpha Adjust
– Basic 3D
– Black & White
– Brightness & Contrast
– Color Balance (RGB)
– Color Pass
– Color Replace
– Drop Shadow
– Fast Color Corrector
– Feather Edges
– Gamma Correction
– Garbage Matte (4, 8, 16)
– Gaussian Blur
– Horizontal Flip
– Luma Corrector
– Luma Curve
– Proc Amp
– RGB Curves
– RGB Color Corrector
– Three-way Color Corrector
– Track Matte
– Ultra Keyer
– Video Limiter
– Vertical Flip
– Cross Dissolve
– Dip to Black
– Dip to White