What changes there in terms of the programming model?

It's not really the programming model that changes, it's just now the call to the CUDA kernel will return immediately and you'll go back to your CPU thread, and if you want to read back you'll do a request to read, and that won't return, but the idea is that you can kick off a kernel now and go and do other stuff with your CPU and not block there.

So there's just a callback to your app and you handle that, rather than spin and wait?

You'd have to ask Ian. It's possible just now that there's no new API in terms of a callback.

And it was always going to have to be async to exploit CPU-GPU parallelism, right?

Right, there's an opportunity here. A lot of applications want to do a lot of data transfer to and from the board, so you want to overlap that transfer and have a kernel running that does a lot of compute while you're doing that. If you can overlap transfer and compute, you do better.

So we should switch gears a little here and take the interview in a different direction and talk about the education side of things. It seems you have a big push to make sure that kids coming out of the schools/universities in the future have parallel programming in mind, be they CS students or CEng, or anyone that takes a class with programming, that they're aware that the future is a parallel one. So did you see that coming, did NVIDIA and you specifically see that coming and know you'd have to go out and do the education?

So I guess what we're asking is are you disappointed that the schools haven't gotten there already, even though you really enjoy it, or is it OK and did you see it coming that you'd have to go out and do it now?

I definitely saw it coming. I have the advantage here of knowing what we're going to build, and what we're building now, and there's also the fact that multi-core and hit the world and everyone was completely unprepared. Nobody did anything with the software, and I didn't want us to be the same way with what we're building. And it's a slippery slope, because if the product isn't announced yet and I go to a school and talk about it too early, and I tell them, "you need to teach this!", and they'll ask why, and it's a big giveaway. But we're at a point where we'd made the announcement and we could talk about it, so I talked to some schools and it became clear to me that this makes what we're doing as a product is just more valuable if we contribute to the education. Parallel programming is the future, and in fact it's now, so I'm really happy with how it's going with the education and that we're doing it and that I'm personally involved with that.

Do you feel that a current graphics programmer has an advantage programming CUDA, because they already have an understanding of the underlying hardware and the way it goes about its 3D business?

I think the guys who are current writing 3D shader code, and especially the guys who have already tried using 3D shaders to do non-graphics applications, those guys take to CUDA really well.