Mixing and matching compute capabilities?

I have two cards in one machine: the GTX 295 and the new 480 card. I would like to write code that would use both at once, but I’m not sure if that’s possible. Help?

So far, all devices of a given compute capability support code compiled for all previous capability versions as well. If you compile your code for compute capability 1.0, 1.1, 1.2 or 1.3, it will work on both cards.

My main machine has THREE different compute levels! A 2.0 GTX480, a 1.3 GTX295 and a 1.2 GT240. There’s no problem.

I did find some awkward issues when running 1.2-level code on the GTX480 when compiled with the 2.3 toolkit. No problems with 3.0.

I currently run my kernel compiled for 1.2. But I did experiment with compiling for 2.0… there was no speed boost or loss, so I kept 1.2.
If compiling for 2.0 had given a boost, I’d just have two versions of my kernel in two different .cu files (each just including the same kernel from a third file, but with different global kernel names) and then my program would pick between them at runtime by testing the card’s compute support level. That may still be what I do in the future, especially since I already plan to rewrite some of my code to use the new ballot() intrinsic.