CoolAsAMoose
Newcomer
In the "professional visualization" industry, using expensive SGI systems, the parallelization has been known (and used) for at least 10-15 years. Already at the Performer (an scene-graph API, if you didn't know about it) level you have multi-CPU-support in the form of App-Cull-Draw running in parallel on separate CPUs. This, of course, introduces a 2 frame latency which may be acceptable at 60 fps (33 ms extra latency) or higher (lower latency).
With an even higher level scene-graph API, like Vega, you can have even more separate processes running other tasks like collision detection, without you as a programmer needing to think about how to parallelize it.
As a programmer, you then of course have additional ways of extending the parallel nature of the whole system. The application could be divided into separate processes running the flight-model simulation, radar simulation, communication, etc - example from flight simulators which is what I used to work with developing.
The problem with this approach is that some tasks running as a single process (and therefore can't be subdivided) may be much more complicated than the other tasks - making this the bottleneck in the system. No matter how many extra CPUs you throw in, you won't get an improvement. And this is where the main problem of parallization lies: how do you parallelize a task that doesn't have a parallel nature?
/Per
With an even higher level scene-graph API, like Vega, you can have even more separate processes running other tasks like collision detection, without you as a programmer needing to think about how to parallelize it.
As a programmer, you then of course have additional ways of extending the parallel nature of the whole system. The application could be divided into separate processes running the flight-model simulation, radar simulation, communication, etc - example from flight simulators which is what I used to work with developing.
The problem with this approach is that some tasks running as a single process (and therefore can't be subdivided) may be much more complicated than the other tasks - making this the bottleneck in the system. No matter how many extra CPUs you throw in, you won't get an improvement. And this is where the main problem of parallization lies: how do you parallelize a task that doesn't have a parallel nature?
/Per