Original Post
To start this, I would like to say that I have never programmed a multithreaded program before, and have never used an SLI computer. All that I say here is based on what I have heard other posters or websites say. To summarize, I am a newb on these topics. Also, everything here is a generalization. The specifics will change many things, obviously. I have heard that SLI splits the screen into two and passes one half to one card, and the other to the other card. This is definately a very simplistic view of what is going on, but it is enough(I hope) for this post. SLI seems to be very very effective at increasing performance. nVidia advertises an increase of 80-90% FPS for some cards. Not only that, but it requires no work on the programmer's part (apart from some optimizations that can be made). No redesigning the entire program to make it work for SLI. From what I've heard, multithreaded programs almost always give one core one task and another core another task. So, as an example, one thread ends up with audio, another AI, and another for physics. Then they are all integrated back together. This seems fundamentally different from the approach of SLI. So, here comes the main point of this post. Why isn't SLI handled like multithreaded programs and why aren't multithreaded programs handled like SLI? As I see it, if multithreaded programs were to take the SLI approach, and have, say, one thread take the first half of the physics, and the second thread take the second half, wouldn't you be able to take away much of the downtime waiting for other threads to finish or communicating between threads? As I see it, audio of one frame does not need to communicate with audio of the same frame, physics does not need to communicate with other physics during the same frame, and AI does not need to communicate with other AI during that same frame. Thus, an SLI-like approach *may* be faster or easier to program. And if an SLI-like approach isn't going to be faster, why does nVidia use it? If any of this information is incorrect, please tell me. And if there are some programs that use a multithreading settup that is similiar to how SLI works, please tell me.