Synchronization Between Physics Threads

There are several ways to make scalable communication. Applying the right technique depends on the game’s rules. But with respect to scalability, there are two major cases. First, if there are a constant number of point-to-point interactions independent of the number of threads, the game would be scalable. Second, if there are effects that have a collective nature, such as gravity between objects—potentially n2 point-to-point operations—the game is not likely to scale. (We consider this to be worst.) There are a variety of techniques to improve the scalability of such n2 point-to-point operations. In selecting the right technique, you should also take into account that the serial computation of these effects can be more efficient (linear time) than the scalable point-to-point computation.

As an example, a real physics computation is rigid body physics. There are two cases. Each rigid body may lie within one or a few domains. In this case, it is scalable because the physics will be computed by each thread on bodies within its domain. If, however, the rigid body spans all domains substantially, an advanced technique must be used. In this case, you could consider the computations done in molecular dynamics (MD), which have similar characteristics. MD computations have been implemented in an extremely scalable manner in the NAMD application (http://en.wikipedia.org/wiki/NAMD), which won a Gordon Bell award for scalability. It is not likely that ...

Get Intel Threading Building Blocks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.