Multi-Frame Rendering (AKA multithreading/multiprocessing) is back, and better than ever. It's currently in open beta so anyone can start trying it out today. Depending on your hardware configuration, namely number of cores and the amount of RAM (memory), you should expect to see a 1.5x - 3x rendering speed improvement with the current beta release.
After Effects generally only uses 10-20% of the CPU power of your computer. Multi-Frame Rendering aims to unlock its full potential. In recent times, GPU acceleration has had a lot of focus. This has brought about significant performance gains for the effects and codecs it supports. This makes it the perfect time to also remove any single-threaded CPU bottlenecks.
The current beta version supports Multi-Frame Rendering for foreground exports via Render Queue only. Upcoming betas will also support Preview, Motion Graphics templates, Dynamic Link, Adobe Media Encoder and AERender Command Line Interface (partially implemented). This goes far beyond the original 2008 implementation.
Back in 2008, CS3 was released with a new multiprocessing feature where you could enable an option "Render Multiple Frames Simultaneously". The was an attempt to allow After Effects to better utilise available CPU cores. Due to its single-threaded code, it limited to a single core. Rather than a complete code overhaul to a multi-threaded environment, Adobe implementation worked by essentially running multiple instances of After Effects in the background during rendering. Each instance would run one of the cores, and they would render frames in parallel.
This implementation survived until the release of Adobe After Effects 2015, where the feature was removed. In that time, it proved unreliable. There were still many bottlenecks and incompatibilities and issues with certain plugin effects and expressions. Each instance duplicated memory which meant large memory requirements and increased memory management in general.
There are third-party solutions that use this same concept to speed up renders. Essentially, a script will start up concurrent After Effects instances on a single computer. Each instance is assigned a different range of frames to render in parallel. This is discussed in an earlier blog After Effects Network Rendering.
Using Multi-Frame Rendering (MFR) Now
In Adobe Creative Cloud, look for Beta apps in Categories. Here you can install After Effects (Beta). Version is 18.1 at time of writing.
You will see the new option in Preferences / Memory & Performance.
A few things to note with the current 18.1 beta version -
- 200 out of the 290 native effects support MFR. You will see a yellow warning icon in the effect control window if the effect is not supported. Eg. Lumetri Color and Warp Stabilizer. The goal is to support all of these effects. Adobe are also working with third-party plugin developers to ensure their plugins are optimised for MFR.
- Depending on hardware and the composition, there can be variable MFR startup/preparation time (time before actual rendering begins). The plan is to eliminate this entirely.
- There will be further optimisations made to extract as much as possible out of your machine. This will include monitoring CPU, RAM, GPU and VRAM usage during rendering and dynamically adjust the number of concurrent frames being rendered. Some users have reported that their system becomes unresponsive while rendering when the rendering is using all the resources. The option to allow reserving system resources for the OS is being looked at. Note, currently, when using Mercury Software, MFR is limited to using about half the CPU cores (up to 8). This leaves cores to process other effects.
- Neither AE itself, nor MFR have yet enabled support for processor groups ie. multi-processor.
Testing On My Macbook Pro
Let's try a benchmark test on my 2019 MacBook Pro using Adobe's benchmark project. Processor is a 2.6 GHz 6-Core Intel Core i7. Hyperthreading provides 12 threads in total. (2 per core). It has 32 GB of memory. Graphics card is an AMD Radeon Pro 5500M 4 GB. (GPU usage was minimal in this benchmark)
Note: When benchmarking, it is important to Edit / Purge / All Memory & Disk Cache… between renders.
In my test, the Single-Frame Render took 24 Min 8 Sec and the Multi-Frame Render took 19 Min 46 Sec. This is only a modest render speed increase. It is definitely on the low end compared to what you may see on other hardware configurations. Having said that, I expect to see further optimisations that will see performance increase on my MacBook Pro.