Final Cut Pro X and eGPU

A few days ago the BlackMagicDesign eGPU has been ‘dropped’ !
Final Cut Pro X users have been quick to respond and ask – why BMD and not Apple ?
Is Apple ditching the Pro users again ?
Over the last days I reached out to several friends, colleagues and resources that all know more than me about the inner workings of FCPX and GPUs then I do.
I have been involved with heavy computation since 20 years, as 3D / CGI effects artists, GPU and multi processor systems have been a daily companion. Understanding their architecture, benefits and bottlenecks has been a integral part of streamlining heavy computational challenges.
Bases on my past experience I set out to ask question of what Final Cut Pro was ready to handle, after several people have voice concerns over the apparent lack of support on the FCPX side.
The verdict
 
The verdict is, that FCPX does support eGPU – when enabled from OS side with appropriate drivers, yet it does not make efficient usage of them at current point in time.
 
The reason for this is, that there is no real ‘multi task’ manager for GPU yet. FCPX uses which ever is presented to it.
 
I got a bit of background information related to eGPU performance, vs. internal. TB3 is running a fraction of the speed of the internal processor bus, hence a massive bottle neck is presented when transferring large data set forth and back. 
FCPX seems to perform all tasks related to image processing, eg. plugins, filters, transitions, composting etc. on the fly in realtime.
Needless to say – this requires fast linkage between GPU/CPU/RAM and drive.
This leaves the current state of affairs at, that there is no significant change in performance with or without eGPU. Beside that only the latest models of MacBooks and co have Thunderbolt 3 built-in. The same machine already have highly optimized GPUs on board.
eGPU – what are they good for
GPUs are designed based on a multitude on processing cores, like a super multi core processor only faster and bigger. This GPU cores are running reduced instruction languages, this instructions are purpose build and liked to the GPU to get the maximum performance.
The reduced instruction set has been tailored over the years to suit computational tasks used in graphics processing, namely 3D work for games etc.. This instruction sets have little usage outside of 3D computation and would most likely have to be heavily augmented to deliver performance increases to applications like Final Cut Pro.
Current eGPUs running over PCIe or Thudnerbolt 3, benefit from tasks that have a defined computation model, eg. game scene. That is loaded once and processed in real-time. This game engines, like Unity or Unreal are also extremely optimized to make usage of GPUs over CPU power.
Game designers streamline every aspect, from polygon counts, to texture map sizes and bit depths, to run at required frame rates and visual performance.
Video editing software does not provide any of this aspects that could benefit at current time. Final Cut Pro requires to ‘stream’ the video data, each frame, to the processing unit, perform its computation and send it back to the video delivery device, or storage medium – hard drive / SSD.
A top of the line GPU like NVIDIA GTX 1080 TI hosts on average around 10GB of graphics memory, where the new BlackMagicDesign eGPU comes with 8GB.
Saturating that memory by caching video frames would make sense as long as work as performed only on a define, smaller than available memory size. The moment the total project size would be over that limit, data would have to travel constantly from disk to GPU and back, something that would defeat the use of a NLE in the first place, it is all about random access.
This leaves GPUs benefits for dedicated tasks, such as 3D work and gaming.
Final Cut Pro X and GPU
 
The current model of Final Cut Pro would have to change in terms of internal working scheme. A more clustered approach apart from multi processing, where background render tasks are out sourced to GPU, to keep the system performance in tact while editing.
As fantastic as this might sound at first glance, the bottle neck one interface to eGPU and storage medium throughput would still create limitations.
Hard drives might benefit today, with Apples new file system APSF, where multi access to one file is allowed, over the older HFS+. Allowing parts of the system to read data and send it over to GPU, while the same files are read and processed in the editing environment.
Further, generation of Proxy media, transcoding or calculation of optical flow can be outsourced to GPUs.
With a segmented approach, the built-in GPU will handle the real-time tasks.
All of this will only provide a net gain, if the storage solution is fast enough. RAID configurations of SSD drives will provide a viable solution to deliver data to multiple processing units at once, paired with APSF performance increases can be expected to meat the needs of video editing.
Conclusion
Apple has not been shunning the Pro community again, they are on a road map that require more than one change for the next generation of power increase for video editing. In short, Apple is either going to do it right or not at all.
Bear in mind, they are working on the next generation MacPro Desktop version, that will combine all of the above into a new architecture. Providing PCIe slots on a motherboard would increase power fractionally. Most likely new interfaces, beyond TB3 will come to light that will last longer then the current 1-2 years cycles.
I could imagine optical pipelines to come into play sooner than later, since coper based interfaces can not be made much faster without increasing their mechanical complexity, length restrictions etc.. A next generation fibre channel interface would be a game changer, if tied directly into the motherboard bus.

Leave a comment