Previous | Next --- Slide 2 of 59
Back to Lecture Thumbnails
Holladay

I found this interesting paper regarding parallelizing ocean currents entitled "Finding and Exploiting Parallelism in an Ocean Simulation Program: Experience, Results and Implications" by Jaswinder Pal Singh and John L. Hennessy from Stanford (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.76.9658&rep=rep1&type=pdf). However, their method for parallelizing wasn't what interested me the most.

Despite the fact that the paper was published 1992 (!), the authors discuss the importance of thinking in parallel. They remark that simply adding on parallelism on obvious loops, while helpful, is not enough. Instead they suggest using domain knowledge to reason about the problem to be able to more fundamentally parallelize the overall computation. This motivation echos what was stated in class.

Hence, while the paper is 24 years old and almost definitely no longer state of the art, it seems to be way ahead of its time in discussing parallel thinking.

Split_Personality_Computer

If anyone is more interested in water-based simulations, I took a class called "simulation methods for animation and digital fabrication" (15-467) where we implemented water particles based on this paper: http://mmacklin.com/pbf_sig_preprint.pdf . Basically, whether you're in 2D or 3D, you have to consider pressure forces and gravity (pressure's the hard part because all of your particles kind of have to agree on their new state for each iteration).

The equations governing water simulation (as well as smoke, fire, and a few other things that you can model like water) are called the Navier-Stokes equations and can either be solved using Eulerian (grid structure like above) or Lagrangian (individual particles) methods. Both methods have their challenges but you can basically think of Lagrangian methods as trying to simulate water as if it were a bunch of giant water molecules/droplets while Eulerian methods are trying to simulate currents like some sort of giant vector field. Both are nicely parallel because you can think of the grid method as parallelizing over cells, while the particle method can obviously parallelize over particles.