Why getting your apps and drivers talking isn't as easy as it sounds
When I set out to evaluate the Adobe CS4 Production Bundle and NVIDIA’s Quadro CX display board, which was designed to work optimally with it, I’d hoped to confirm what was promised: closely matched GPU acceleration across several key processes. I was going to start with After Effects, move on to Photoshop and finish with Premiere. I knew going in that Premiere would likely be the most accelerated application in this suite, due to an Elemental plug-in supplied by NVIDIA. Because a new version of CS will likely come out later this year, I wanted to focus on the GPU acceleration suggested by NVIDIA for its Quadro CX card, a card that has been specifically optimized for use with Creative Suite 4.
I was frustrated. Here I sat with more than a terraflop of GPU power sizzling in my system, and I couldn’t use it. I checked with Premiere Pro CS4, and discovered that it indeed recognized the CX and I immediately did some film transcoding to see how fast it would go. Indeed it is swift, especially on difficult stuff like converting a 1080p Flash movie into H.264 Blu-ray using Elemental Accelerator from Elemental Inc., an NVIDIA supplied third-party Premiere plug-in. This bit of code is specifically optimized for the CX GPU and does seem able to capitalize on that computational fire power. Transcoding with the Elemental Accelerator is relatively fast.
One thing I noticed is that Both Elemental and NVIDIA are constantly putting out software and driver updates. Each Elemental software update requires the latest NVIDIA driver. Thankfully, the Premiere plug-in warns you each time you need to update.
The Elemental GPU acceleration of Premiere Pro CS4 video effects and transitions significantly reduces rendering time. However, only a few effects are supported. Those that are get a significant boost. Effects and transitions are accessed via the Premiere Pro user interface and are processed on the GPU when Elemental Accelerator is selected from the Export Settings dialog box. Those effects not supported are automatically handled by the regular Adobe media encoder on the CPU.
Here’s a list of the processes and effects directly accelerated by the Elemental Plug-in:
Motion (position)
Scale (uniform and independent)
Opacity (blend has to be set to normal)
Fast Color Corrector (excluding output, split view and layout)
Hue balance and angle
Balance magnitude, gain and angle
Saturation
Contrast (input/output level settings)
Brightness (input/output level settings)
Cross Dissolve
Fade to Black
Fade to White
It would be so cool if all the effects were accelerated.
Coding for GPU acceleration is very different from regular programming. It’s a different thought process and as far as I can tell, there just are not a lot of coders out there that are comfy with it. I suspect as developers get their people used to coding for GPUs, we’ll see acceleration options become standard on all number-crunching apps.
Solving the After Effects Problem
Getting everything working actually took weeks of tech support phone calls. NVIDIA’s support people were much more knowledgeable and helpful than the regular Adobe call into technical assistants. Surprisingly, many of the Adobe people I spoke with had never heard of an NVIDIA GPU or the acceleration and seemed to be working from a canned script. This surprised me, as Adobe is one of my favorite companies, and I hate to criticize them. But it seems to me that their specialized support, maybe as a result of their growth as a company and moves into broader consumer markets, has fallen significantly in the last year or so.
After trying normal channels to get an answer to the “No GPU” problem in After Effects, I called my Adobe PR rep. After some dead ends, I got a call back the following day from Erik Verbeek, director of Adobe’s worldwide technical response team, who clearly knew what I was talking about. He had the same setup as I did and was able to duplicate the problem. We tried a number of different tacks but I ended up backdating my driver again as the only solution, something I clearly didn’t want to do.
My next effort was to call NVIDIA. I got on the phone right away with Sean Kilbride, NVIDIA’s Technical Marketing Manager, Workstation Product Reviews. He suspected that AE could not recognize the new OpenGL 3.2 id strings, but he wasn’t sure, since this was an issue related to Adobe code. While on the phone we checked and Adobe had just released an update to After Effects and amazingly, NVIDIA had just released an update to the Quadro CX driver. I downloaded both and, lo and behold, AE now recognized NVIDIA and the two of them began to play nicely together.
What’s my point? GPU acceleration is still in its nascent stages, and getting drivers and apps to talk to one another is a tricky business, at best. The most fascinating and effective uses of the GPU seem to be found in university research projects. As new design and development applications come to light, more and more software development teams are jumping into what I hope soon becomes a mad race to outdo each other in using the GPU number-crunch intensive operations as fluid dynamics and atmospheric lighting models. I’m also hoping for much better GPU accelerated real-time rendering.
Beside finally getting an answer to my initial problem, I did confirm something else I’ve suspected while nosing around various software development teams: the next generation of content creation software will, across the board, have increased use of GPU acceleration. I know now that NVIDIA and ATI are both developing close relationships with companies that make our daily use software in digital graphics, especially in animation. I’m still working to find out about some of those vfx plug-ins for After Effects and 3ds Max, Maya, Softimage XSI, Vue, LightWave, Photoshop, and even the audio processing software we use. Audio processing can also be very computationally intensive, especially digital audio effects, and GPU acceleration will be a welcome time saver there as well.
Even if these next-gen tools don’t sizzle, it will be a start. After all, there is nothing more motivating than software that snaps and crackles, doing our bidding in near real-time, saving us time and increasing what is possible. Just look at 2012 and Avatar. Trust me, all those amazing FX were not rendered solely on CPUs.
The Big Question
If you are developing GPU-accelerated applications, you want them to work not just on NVIDIA or ATI, you want them to work efficiently with the fastest hardware out there, automatically. NVIDIA CUDA technology is the only C-language development environment that uses GPU processing power to solve complex compute-intensive crunches. The problem with programming solely in the CUDA environment, however, is that it doesn’t work on some of the equally powerful ATI boards. Same with ATI. Like NVIDIA, AMD offers a broad set of tools to analyze your GPU applications, optimize run-time performance, reduce your development effort and speed your time to market. This February AMD launched its “Open GPU” support Web site for Open GPU developers. In fact, ATI is gaining popularity among Linux users due to the Open GPU drivers that are now available. These drivers typically outperform ATI’s Catalyst driver.
But the even bigger breakthrough is OpenCL (Computing Language), a framework for developing applications that can execute on just about any platform. Beyond being direly needed and sensible, it is a brilliant idea for the world of application development. Much like OpenGL is for graphics, OpenCL consists of a core C-like language for writing Kernels and various APIs used to define and control processes on the various hardware platforms. OpenCL is particularly good for designing multithreaded tasks that can be efficiently routed either to the GPU or the CPU, depending on what kind of processing is needed. Because it is a universal language, acceleration code developed for say, 3ds Max, will work across platforms, cutting development time and allowing users to cherry pick the fastest GPU technology, regardless of branding. IMHO this is where the heavy development efforts should and will be focused.
Sections: Technology
Topics: Feature
Did you enjoy this article? Sign up to receive the StudioDaily Fix eletter containing the latest stories, including news, videos, interviews, reviews and more.
Leave a Reply