A lot of people have been wondering if OpenCL has uses in real software, and Autodesk’s Maya is about to answer that question. At GDC, there was a joint Autodesk/AMD tech demo aimed at speeding up Maya, and it looks to have worked.
Normally we would put in lots of pictures or videos, but the demo gods colluded to make sure that didn’t happen. While we would normally say something like “well, it is a pre-alpha demo of a technological testbed”, this time there was a clear cause, Windows. The PC that the demo was set up on had Windows throw a proverbial hissy fit, enough to warrant a reinstall. The obvious culprit, the new software, didn’t actually seem to be the problem, Windows just didn’t like life, so no live demo.
That said, the idea is pretty simple, Maya is a character modeling and animation program, and there are many parts to it. The idea is to take a complex high poly count model, 1-3 million polygons is typical now, and run it through a complex series of deformations and animation steps. Each one needs positioning, blending, making sure the skins don’t crack, and all sorts of minutia that can ruin even a basic movement. There is a lot to do every frame.
With the OpenCL code path, the parts of the chain up to the deformation step are all done the ‘old’ way, same old same old. Once that is done, the data is shipped off to the GPU, and the steps starting at the deformation are done there. Since all the points are computed independently, this is the perfect scenario for a GPU with tons of little cores, it can fly. Then once these steps are done, the result is shipped back to the CPU. In the end, Autodesk is claiming a 5-7x speedup for the steps where OpenCL is applied.
This doesn’t mean you can take a 3 million poly model and run it at 60FPS or even 30FPS, not even close. What OpenCL will do is take a task that was slow, think SPF not FPS, and in the current state of optimization, make it possible to animate tolerably. While this doesn’t sound amazingly good to people used to tens of FPS on games, for the hard parts of animation, it can radically change the workflow. Instead of going out to lunch while a few frames render, you can get a decent preview of things at full rez, that is a game changer.
The interesting bit isn’t that this is possible, or any specific numbers, but that the first stab at OpenCL code paths lead to tangible benefits. There wasn’t much attempt to optimize the workflows, the data is computed on the CPU, and sent to the GPU one frame at a time. Simple optimizations like keeping common blocks on the GPU are not done, nor were multiple frames rendered in parallel. Basically, there is a lot that can be done to potentially speed up that 5-7x by, well, lots more.
What we have in the end is a technology demo that, in a very rough incarnation, pays off with useful dividends. The OpenCL codepath will make things that had to be done non-interactively into a potentially interactive workflow. That in itself makes the process worthwhile, and further optimizations will undoubtedly improve both the speed, and the areas where OpenCL is applicable to Maya. For 3D artists, going from waiting while rendering to visible results is nothing short of a godsend. With luck, AMD and Autodesk will bring that to you soon, maybe even at this week’s AFDS conference.S|A