I am an MS student in the CS department. My interests include scientific computing and graphics, with an emphasis on simulating physical phenomena (e.g, simulating elastic solids, fluids, or constrained rigid body dynamics).
I am interested in parallel computing because it allows for the solution of larger and more physically accurate systems. I have a particular interest GPU based algorithms for real time simulations.
Many Worlds Browsing is an application to allow controlled simulation of rigid body dynamics.
Simulation of rigid bodies (and other physical phenomena) is a commonly used in the video game and film industries. For a given set of rigid bodies (their mass, geometry, friction properties, etc), with a given set of initial conditions (position, velocity, etc), the trajectories of these bodies is governed by a system of differential algebraic equations (in particular, Newton's laws from high school physics, plus additional terms to handle contact and friction). Solving these equations using standard numerical methods produces results which look natural, which is desirable from an artistic standpoint.
The drawback of using such simulation methods is that their natural looking results come at the price of a lack of control. For example, in the below figure, the artist may wish for the letters in this pachinko machine to spell out the word "SIGGRAPH," but selecting initial conditions to do so is an intractable task for a number of reasons (poor conditioning of the problem, sensitivity to numerical error, etc).
Many Worlds Browsing addresses this problem by running a number of simulations from the same (or similar) specified initial conditions with each simulation having small perturbing forces added to it. This in effect samples the space of perturbing forces. The user of the application can then direct the simulation by selecting or rejecting sets of perturbations based on the results they produce.
In the following figure, the user has been presented with a large number of input simulations (left). The user may create positive constraints, requiring that the simulations to be further sampled have the object fall down a particular region of the staircase (center), or the user may create negative constraints, requiring that the simulations to be further sampled have the object avoid a particular region of the staircase (right).
Many Worlds Browsing exploits the parallel nature of the sampling problem. Producing a quality animation requires finding a set of perturbations which produces a desirable result. A key aspect to finding this set of perturbations is sampling a large number of options for the user to guide and choose from. The work required to produce the result from each sample includes running a full multibody dynamics simulation. Running such a simulation is a computationally expensive task, especially considering the fact that the user of the application will expect a significant number of samples to be produced while maintaining interactivity. Each sample simulation may be run independently, so running these sample simulations is an obvious candidate for parallelization.
When running Many Worlds Browsing, the user's machine generates requests for simulations to be run which are passed to a parallel virtual machine master, which the further distributes the work to a number of nodes in a cluster as illustrated below.
Many Worlds Browsing is implemented using a custom message-passing interface based on sockets. Because the cluster being used in this application also doubled as a computer lab (where machines needed to be shared and could be expected to periodically shut down), Many Worlds Browsing is required to be robust to having its cluster's nodes periodically disappear. Early implementations of the application used the Condor-PVM API (which may also be taxonomized as a message-passing interface), but some of the idiosyncrasies of the platform (in particular its lack of robustness to disappearing nodes) rendered it unusable.
The use of a cluster (of about 24 nodes) to produce samples for the user to browse through was necessary in order to make Many Worlds Browsing an interactive (as opposed to offline) application.
One of the challenges in this approach is that each sample produces a massive amount of data, and as the number of samples grows being produces by the cluster grows, this puts a larger and larger burden on the user's machine. Many Worlds Browsing uses a number of heroic compression schemes to alleviate this problem.
The choice of the size of the cluster (24 machines) was based on the availability of hardware. Many more machines (going to the order of 100 or 1000 machines) would rapidly reach a point of diminishing returns in that the user's machine would not be able to process the additional output produced by those machines at interactive rates, and the additional sampling of the space may not be of use to the user.
There are a number of interesting aspects to this project.
The use of clusters for interactive applications. Most of the applications of clusters that I have seen have been offline, that is, the user will specify a set of work to do, wait hours or perhaps days for the result, and then evaluate it. Many Worlds Browsing is somewhat unique in that it is an application which harnesses a cluster yet still maintains a very tight user feedback loop. I am curious to see what other interactive cluster-based professional or consumer applications exist.
The preference for lower level solutions over general purpose APIs. As mentioned earlier, the Condor-PVM API had many idiosyncrasies which ultimately led to its abandonment for this project. For many applications, simpler, lower-level tools (perhaps not as low-level as sockets) often prove more useful than higher level constructs.
Many-Worlds Browsing for Control of Multibody Dynamics, with Doug L. James, in ACM SIGGRAPH 2007. [project]
Controlling Multibody Dynamics via Browsing and Time Reversal, Ph.D. thesis, Carnegie Mellon University.