Project #2: High Performance, Parallel, N-Body Simulations
Objectives
To understand and apply:
- serial high performance techniques
- design of dynamic parallel algorithms
- load balancing
- parallel random number generation
- analysis techniques for HPC
- empirical analysis methods
Approach
In this project we are assigned the task of modeling a collection of N
particles in a 2-dimensional balloon. The particles are assumed not to
collide with one another and all have a fixed mass. The only
interaction that particles have with one another is when then collide
with the balloon wall. We will detect this by computing the convex
hull of the points. We will assume that the balloon follows hooks law,
that is the force in the balloon wall is F = K L where
F is the force, K is Hooks constant, and L
is the length of the balloon.
The algorithm proceeds as follows:
- Advance the particle positions using delta x / delta t
= v
- Compute convex hull of particles
- compute force in balloon wall using Hooks law
- compute acceleration applied to particle using F = m a and
vector addition of wall forces
- update particle velocity using delta v / delta t =
a
- Advance to next time-step and continue
To create your initial conditions, create N particles assigned random
positions within a square centered at the origin with sides of length
2, -1 >= x >= 1, -1 >= y >= 1. Assign each particle a
velocity, Vinit in a random direction. Assume all particles
have a mass of 1.
Based on the initial velocity, and K, use the N-body simulation to estimate the
area of the balloon.
In the design of your program provide an analysis of the expected
performance of various algorithmic options. Document your algorithm
selection criteria based on both analysis and experimental results.
Include these results in your report.
Measure the performance of these algorithms on any candidate
architecture. Describe your measurement methodology: How many
measurements did you take? What was the variation in the
measurements? What architecture did you use? What properties did
this architecture have and does it match your model? Use statistical
techniques if necessary.
What details do you need to consider?
- How do we obtain random numbers in parallel?
- How do we develop an efficient and robust convex hull algorithm?
- Use robust geometric predicates in the implementation, as
described in the papers provided.
- Use any algorithm that you like for the convex hull,
including the quick-hull algorithm discussed in class
- You may need to consider load balancing to achieve high
performance, depending on your algorithmic strategy.
- What are the performance bottlenecks in this application? What
analysis techniques are appropriate?
What do you turn in?
- A research report documenting your work. Include references
where necessary. This report should document: analysis of algorithms,
software techniques used, experimental methods and results, comparison
of analysis to experimental results. A hardcopy of this report will
be turned in during class time. Document how the work was divided
amongst your group members and who worked on what parts.
- The software you created. Include all source files and
makefiles and an instruction file on how to compile and run. Do not
include binaries or .o files! Use tar to create a single file and send
this file as an attachment to luke@cs.msstate.edu. The
project source code is due by 2pm on the due date.
Due Date:
The project is due December 4th at 2:00pm. last class
luke@cs.msstate.edu
Last modified: Mon Oct 28 09:49:34 CST 2002