It’s just like two separate GPUs, unfortunately. That’s what the GTX590 physically is: two devices on one board, with a little extra logic to let them share the PCIE bus. This is still great hardware, but it does mean you need the extra coding to deal with multiple GPUs and do your work partitioning and synchonization with that in mind.
The good news is that this is exactly the same coding you need to do for multi-GPU support in general, so once you have that done, you can use any combination of GTX580s and GTX590s together or separate or whatever, and your code just sees them as more GPUs.
The confusion with the GTX590 (and the previous GTX295) is that to gamers, this is all abstracted away from them, so the marketing can say “twice the graphics horsepower!” and it’s true for the gamers (and to a reasonable extent, the game programmers, who usually are abstracted behind the graphics API like DirectX). But CUDA is different and gives you the GPUs for you to coordinate yourself.