NVIDIA dishes about OpenCL
We spent some time on the phone with NVIDIA today in the wake of last night's official release of the OpenCL GPU-processing spec, and we learned some interesting things. NVIDIA thinks OpenCL is going to bring a lot more attention to general-purpose GPU computing, and it's planning on stoking the flames -- not only is it accelerating the CUDA release schedule, it's planning on working with Microsoft on DirectX 11 Compute. Hit the break for some more highlights!
- NVIDIA feels that the basic ideas behind CUDA are reinforced by OpenCL -- the basic model is the same, although OpenCL is a lower-level architecture that requires coders to do their own memory management, etc., while CUDA allows non-professional programmers like scientists and researchers to program GPGPU code.
- In fact, in order to meet the needs of the 25,000 active CUDA devs, NVIDIA is bumping up the CUDA release schedule, with three releases scheduled for 2009, culminating in CUDA 3.0.
- NVIDIA thinks the CPU still has a big role to play -- not every app is best run on a GPU, and every app has code that's best run on a traditional CPU. However, unlike Intel, which thinks the GPU is dead in water, NVIDIA thinks the value of traditional CPUs is rapidly diminishing, and that graphics and parallel-compute intensive apps are going to drive the market forward. (Yes, we've heard this before.)
- That's not to say the two companies can't work together -- although Intel's been highly critical of NVIDIA and GPGPU in the past, it was an eager and willing participant in the OpenCL process -- a process that went from start to finish in basically six months flat after Apple submitted the spec. That's record time for a standard like this, something NVIDIA credits to broad industry participation and enthusiasm.
- Of course, notably absent from all the OpenCL group is Microsoft, and while NVIDIA wouldn't confirm that it's working on a Windows implementation of OpenCL, we were told repeatedly that all the partner companies are interested in making it happen, and that no one will be surprised when it arrives. Ditto for Linux.
- Microsoft is working on DirectX 11 Compute, however, and NVIDIA says it'll be there -- it's not going to stay out of any market, it'll go where the customers are. Seems like marketing-speak, but they were really insistent about this on the phone, telling us NVIDIA refuses to "pick sides."
- OpenCL will basically run on any card that can do CUDA, which is a lot of chips -- pretty much any 8-series GPU with 256MB of RAM or above. Here's a list.
- They wouldn't talk about Apple's plans, of course, but they did say that NVIDIA has a strong relationship with the company, as evidenced by the new MacBook line, and that Apple "wouldn't pick a supplier without knowing how their strategy is going to play out." That's certainly interesting -- maybe those dual GPUs in the new MacBook Pros are bound for something special after all.
- OpenCL isn't done yet -- 1.0 is still waiting on performance testing, and a 1.1 version with additional features the working group felt weren't an immediate priority is due later sometime in 2009.


















Surprising.
I read in a lot of places that people were expecting NVidia to ditch CUDA in favor of OpenCL (that is, replace CUDA with OpenCL, as they helped develop it anyway). Lots of people familiar with it said they were basically the same (or, in NVidia-speak, reinforce the same basic ideas), and there was no point in NVidia replicating it with CUDA.
And before the fanboys get here bashing OpenCL as being too complicated: Apple will probably get around that with Objective-C's garbage collection, which is a feature of most modern programming languages (such as C#)
What's sad about this announcement is that OpenCL is backed by all the industry, with one notable exception: Microsoft.
The beast of Redmond isn't using OpenCL but is developing its own proprietary approach in DirectX 11 Compute Shader instead.
Plus ça change.
All the signs point towards Cell-like processors in future computers, which are fully programmable yet have massive parallel multicore architectures. Roll on!
I'd certainly like my graphics card to run more than just games and Folding@Home.
even better, from the makers of folding@home, folding with friends. it's the newest in MMOPFGs (massive multiplayer online protein folding game)
Do IBM not have patents all over cell processors.
Does you not speak english.
@andres
If it gets people to switch from endless WoW session to finding a cure for cancer, I'm all for it!
"Roll on!" is totally gonna be my new catch phrase!
@Eric: With the exception of the missing question mark, Kris's sentence was perfectly well formed. Questions are posed using that structure quite often here in England.
Shouldn't they be working on the problem they cause with Macbooks that have maxed out ram?
No, that's for Apple to deal with.
Because NVIDIA is a small business with only just enough capability to work on one project at a time.
Yes, but I think their 1 employee is sick.
They can handle more than one task at a time, you know.
To me it looks like nvidia are just trying to hang on to GPUs by using the whole CUDA and OpenCl to keep them going for as long as possible. I'm not saying that GPus won't be used in the future. But Nvidia are trying to get involved with as many projects as possible to keep the whole GPU thing alive.
Not really,
They are doing 2 fantastic things,
1. Laying the founding blocks for ditching x86 which celebrated its 30th birthday earlier this year.
2. Giving programmers experience with using vast numbers of cores on massively multi-threaded tasks.
Once GPGPU's start coming into mainstream use, Nvidia is going to pretty much dominate the market and rake in the cash since they have already done the vast majority of the R&D now instead of when it becomes nescessary.
There's nothing wrong with x86. It's been going strong because by now it's a highly optimised and flexible system. And extensions like SSE are doing well where it falls short. In fact, it's doing so well that Apple switched to it and benefited from a major performance boost over PPC. In addition to that, platforms like Atom are trying to push the x86 system out further, to MIDs and one day cellphones. And in addition to _that_, leaked Intel benchmarks show that x86 has a future in GPUs as well.
There's no need to change the instruction set. If there's a problem at the CPU level, you probably just need a better compiler. GCC, MSVC and the Intel compiler are all pretty good.
I just don't see the point of this any more. The point of a GPU is that hardware that is specialized for graphics processing will perform better than simply having another general purpose CPU and having it do the graphics processing. If we're going to then turn around and say the GPU should be used for general purpose computing, why not just have another general purpose CPU instead of the GPU?
These days a Core2Duo chip is about the same price as a 9800GT card. Why not just make a dual CPU motherboard, pop another CPU in there, and forget about the GPU? Just put some extra RAM in there to replace the GPU memory. Graphics cards seem to only have 512MB these days, which is chump change. When you go to play a game, have the OS push all the usual GPU tasks to the second CPU, and not allow any other tasks to be sent to it, unless it's really got a light load.
The only video card we would need would be a tiny board with a DVI/Display Port/HDMI/etc. outputs.
By that logic, why not just get rid of your ram and have another hard drive in its place, same price right?
A Core i7 EE could not outperform a GMA X3100 at 3D rendering. Now realize why we want to use a GTX280 for GP. Unbridle power*
... for the right kinda instructions*.
GPUs and general purpose processing.
GPUs CAN do gpp, but what they are very good at is at maths and vector based processing. So if you have to do some complex calculations, or a bunch of simple calculations, then you should use a GPU.
If you want to use control structures, comparisons, interrupt based processing, etc, you should use the CPU.
So yes, I do see a bright future for Altivec, eee , sorry, for GPUs.
"...Intel, which thinks the GPU is dead in water..."
well yeah, most GPUs will be dead when you put them in water.
The GPU is just evolving like the 8086 or the Z80. With all the emphasis placed on it's massive parallel architecture one day it'll make it to becoming a common general processor graphix unit like the cpu... The GPU aspires to be the general processor that the CPU is...
anyone know which cards ati will support for opencl?
DX10(+) ones I imagine.
This could be one of the best commented blogs I've ever read on the interweb.
Great great posting!
Well, if the badaboom numbers are to be believed, an OpenCL (or CUDA, not sure) video encoding job went from roughly 11.5 hours to 50 minutes. Or about a 14:1 speedup.
And AMD/ATI is claiming a 23 minute video conversion (90 minutes of 1080p MPEG-2 video converted to h.264) on a 4850 vs. a 3.0GHz Core 2 Extreme QX9650 taking 4 hours and 23 minutes. A speedup of about 11:1. This one is a Stream spec, but whatever.
So at least for certain jobs, this is a serious amount of acceleration. For my video encoding jobs, like using TivoToGo, this would be a godsend. Obviously the question is whether there is mass adoption and support of this spec across ALL of the video encoding/transcoding programs out there. Videora, ffmpeg, TTG, Roxio, Vegas, Adobe, blah blah blah...
I just used CUDA-based Badaboom to encode a DVD this morning. It went at about 90 frames per second, using my Geforce 260 Core 216. That's roughly triple playing speed. 90 minutes of DVD video was compressed to quarter size with high quality in under 30 mins. For highly parallelizable tasks, I think GPU parallelism-enabled apps will take over the market extremely quickly.
CUDA is door-opener for unleashed power of GPU's. One good example is Folding@home project, allowing scienists to use GPU-s all over the world getting access to PETAFLOPS power.
Jaak, http://estoniadonates.wordpress.com/