Technology Sneek Peek: Adobe® Mercury Playback Engine
Lets start with the big, bold, brash, brazen, big-time, blow-your-mind (are there any other 'big' adjectives I've missed?) statement about the Adobe® Mercury Playback Engine: It is a game changer.
Haven't heard about the Mercury Playback engine yet? Good - Read on!
Let's start with the back-story or history on the Adobe Mercury Playback engine. Back at IBC in September, the show happened in Amsterdam and while Adobe was there talking about several things including Adobe Story - over at the NVIDIA booth, we were showing a technology preview with quiet undertones. It didn't have the name Mercury and it wasn't even really the big thing we were showing. However, John at FXGuide was over there and among several other tidbits, included Adobe in a podcast that he did over at the show. A month crawls along and during that time, the podcast starts to get some mentions in various forums and chatter amongst the creative crowd... People start to get excited about the possibilities and ask questions. Here's the high bandwidth version for your viewing pleasure.
Let me be clear before I go any further: This is a technology demo only and while Adobe is very excited, it’s not something that is available now in CS4 nor are we commenting about exactly when it will make an appearance. Now, back to our regularly scheduled exciting blog post...
Somewhere along the way, amidst the growing awareness at Adobe, we conferred upon how to let our customers know about this exciting technology that we were working on and how to respond to the growing awareness of it. Simple questions like, 'How do we respond?', 'How much do we tell customers' and several more like it. Another question was, 'What do we call it?' For, as each person began to play with prototypes of this technology, each was convinced of its incredible potential. This group included myself and my first casual examination of the Mercury Playback engine convinced me of it's importance - more on that later.
Mercury as a name is interesting. You could think of Greek/Roman mythology. The God Hermes/Mercury was the winged messenger (makes me think of Gustav Holst's "The Planets.") Mercury was fast, which makes sense in this context. There's also the idea of Quicksilver, another name for the element Mercury, which again connotes speed and value (quick + silver). Better perhaps is the idea of fluidity in the sense of the fluid editing experience that the Mercury Playback Engine creates. Mercury the element has several unique properties, the foremost of which is it is the only metal that has a liquid state at room temperatures. The Mercury Playback Engine has the potential of being very unique among the NLE players like the uniqueness of the element.
All of these things offer some shading and nuance to my thoughts about Adobe's Mercury and cause me to have this level of enthusiasm.
So, here we are today - what is the Mercury Playback engine about? In a word, performance! It makes Premiere Pro do cartwheels and flips and barely breaks a sweat. It's like rocket fuel for your car. It's flat out incredible...
In my first test of Mercury, I dropped several P2 clips on a timeline, made them picture-in-picture and looked to see if there were any dropped frames during playback...nada. I added more clips, bringing it up to eight or nine on my HP XW9400 with 12 cores of AMD goodness... Think it's the CPU? No! It's only being used at about 20-30%. It's GPU! I keep going and there is no hesitation in Premiere Pro. Okay, lets add some color correction to each one and while we're at it, lets drop in some blurs (that will stop it right?) Still playin' like buttah!
I could go on but I think you get the idea. As the FX Guide video described, we had 4 or 5 RED 4K images playing in real-time with very little CPU overhead which enabled us to do so much more in other areas.
So as a thought, lets put the pieces together. Premiere Pro CS4 is 64-bit optimized and making huge inroads into the high-end and having people all over the world taking another look if they're not using it today. In October, we announced that the next version of Premiere Pro would be 64 bit native and 64 bit only. So, in the future, not only will you have the most current programming code on either platform (very important!), you will have among the best CPU utilization in the business, you will have 64 bit native goodness throughout and you have the insane performance of the GPU backing you up to make more things possible at once than ever before. What's not to like? Good question - lets take some now...
Question: "What makes all of this 'crazy' stuff possible?"
Answer: It is a combination of different things. Really, this is a great example of where the whole is greater than the sum of the parts. What are the parts then? It’s 64-bit native code, greater memory addressing, fantastic CPU optimization and finally NVIDIA CUDA technology. Every one of these is critical, absolutely critical to making the future of non-linear editing better and more powerful than ever before. Multi-core goodness and memory addressing are already hard at work in Premiere Pro CS4. The 64-bit native code has been announced and now we bring in NVIDIA CUDA technology to be the icing on the cake and a powerful new engine to squeeze out performance in Premiere Pro. Before I wax philosophic on GPU, let me officially tip my hat to the incredible engineers at Adobe and their work here for the Mercury Playback Engine. Their passion, intelligence and outright cunning is what’s making this possible. Bravo!
On NVIDIA: I've always been a fan of NVIDIA and their Quadro product line has a huge market share in the professional graphics card industry, so it makes a lot of sense for us to partner with them to provide the horsepower behind this new technology. In addition, NVIDIA has been deeply involved in helping make this happen because like us, they know the customer and try to deliver the technology to enable more powerful and flexible workflows.
Question: "Why should I care about this?"
Answer: It's a fair question. Ultimately, the harnessing of the GPU provides Adobe with another way to fulfill a key strategic goal when designing our products: namely, removing the need for a user have to wait for the software to catch up to their creative vision. Another way to think of it from Adobe's perspective is that we already have great multi-processor CPU utilization, where can we get more power for the customer? The answer is CUDA and hence the Mercury Playback engine.
One other aspect to this is the rate of innovation on GPU development. While CPU's from Intel and AMD continue to evolve and grow, the rate of innovation has slowed down dramatically. This hasn't been the case for GPU development. We continue to see dramatic leaps in performance every 12-18 months. The Quadro XXXX of today will be the GeForce of tomorrow and that means that your performance on a given system will be able to develop rapidly over time at a much lower cost than ever before.
Question: "I don't do 10 layers of video Dennis, how does this help me?"
Answer: Okay, but as we see more people doing digital film, working with RED 4K files (with bigger on the way), as well as complex, temporal based codecs such as AVCHD, the idea of harnessing the GPU in addition to the CPU promises benefits for nearly everyone. Plus, while you may not do 10 layers of video at any one time, most people are using basic color correction, levels, curves and many other things on a regular basis. I think Mercury will help you even if you're just using a couple of layers.
Question: "Are there any downsides to this technology?"
Answer: I guess it depends on your point of view but my 'net-net' answer is no, there is no downside. A more pragmatic and perhaps nuanced answer is 'depends'. If you're an ATI fan, you know that CUDA is NVIDIA products only and consequently, you'll either do without this feature or you'll switch to NVIDIA. Adobe has a valuable relationship with ATI/AMD and we're looking at things like OpenCL, which is a cross-platform GPU approach to what CUDA is.
Question: "Why didn't you use OpenCL then?"
Answer: OpenCL wasn't finished or ratified when this decision was made. Given a choice between doing it with CUDA or not doing it for a while because of OpenCL, we chose the former. Besides, as I mentioned, NVIDIA has a hugely dominant market share in the professional graphics market, so we think that most people will be comfortable with the options available to them.
Question: "Will you support OpenCL in the future?"
Answer: Clearly this is an answer for someone higher up to answer, but my hunch is that we'll certainly look at it in the future as it aligns with our goals of being open and non-propietary.
Question: "Anything else I should know?"
Answer: Yes. The list of approved GPU cards will be limited initially to ensure that we have a consistent experience for our customers. Obviously this begs the question of which cards are you going to support? I think the answer here could be a moving target but two cards that I've been told will be supported are the GeForce GTX 285, the Quadro FX 4800, 5800 and the Quadro CX. I'm currently doing my testing with the Quadro 4800. The GeForce GTX 285 card should be one to really look at as it's street price is only about $300.00 and provides a real value to users that are looking to get the maximum bang for the buck.
Lest you think that you Mac folks will be left out, you'll notice that both the GeForce GTX 285 and the Quadro 4800 are both available for Mac...and so is the Mercury Playback Engine!
NVIDIA has announced that new cards will ship in early 2010 and I don't know how that will impact which cards we support, but our general goals will be to a) provide consistent GPU performance across the cards we support b) support as many cards at as many prices as possible. My hunch is that the initial list will be small, but we'll do our best to expand upon that in future. With new cards on the way, I wouldn’t run out to buy a card now unless I had to, but if you do, at least you have a good sense of what will be supported.
In addition, I don't think there will be any approved laptop GPU processors as most of them are designed to be for laptops and just don't provide the kind of horsepower to make a real difference. This bums me out as I typically demo and present on a laptop, but the engineers and product management are telling me that there just isn't enough juice to get a real sizeable performance difference out of them. Again, this probably changes over the course of time.
Seeing is believing and I hope that you’ll have the opportunity to see the Mercury Playback Engine in action some time in the future. I know if I’m the one presenting it to you, that I’ll be excited to show it!