List of Suggested Projects

List of Suggested Projects

  1. For students with a Physics background, here is a problem based on the simple Ising model. Program the message-passing Metropolis algorithm, which is sketched in the notes, doing red/black updating of the Ising model. Write one version of the program which communicates a neighboring value every time it is needed, and another which communicates all the neighboring values in a block before the update. Compare these two versions. Here is report (at MIT) of a project on this area. A nice simulation in Java is available here.

  2. If your background in mechanical or aerospace engineering then an interesting project would be an implementation to simulate a 2-D inviscid flow through an axisymmetric nozzle. The simulation should yield contour plots of some of or all flow variables, including velocity components, pressure, mach number, and density. The plots need to show the location of any shock wave that would reside in the nozzle. Your code basically will find the steady state solution to the 2-D Euler equations. A similar work was done 2 years ago as a class project. The student used high performance fortran (HPF) for his simulation. More on this project can be found here. If you are interested in doing something similar to this you will need to use MPI. Let me know about this. Also, you can find a nice simulation in Java here.

  3. Implement the adaptive parallel Romberg integration algorithms sketched in class. Write both the All-to-All and Neighbor versions of the program in MPI. Time and compare. (A test function to integrate will be provided.)

    Useful links:

  4. If you are interested in neural networks a good parallel simulation would be to simulate multiple feedforward nets, each with input layer, one or more hidden layer(s), and output layer. You can either make them share the same input layer or perhaps each network reads part of the input, simulate it and then have the master sort out the various results to produce the final one. This simulation can be done in more than one way. Also, the same thing can be done for feedback networks as well. I could provide more information on this if any is interested. Here is a last minute and very simple neural net project that was done two years ago: sample project.

    Useful links:

  5. 2-D quality mesh generation and Delaunay triangulator in parallel. This is to implement a parallel version of a quality mesh generator based upon Delaunay triangularization. A fair amount of work has already been done in the area of parallelizing the Delaunay triangularization algorithm. So a reasonable first step will therefore be to survey some of the existing literature on parallel Delaunay and quality mesh generation then pick an algorithm to use as a first step. If you need more info on this please see me.

  6. Parallel Ray Tracing using MPI. A similar project was done a couple of years ago using HPF.

  7. Multigrid method for elliptic PDEs using MPI. Multigrid is more efficient in parallel than the Jacobi for solving the Poisson Equation. (in parallel: log^2 N vs. N for the Jacobi, and serially N vs. N^2 for the Jacobi). After looking at the above references, take a look at this note on parallelizing multigrid.

  8. If you are interested in marketing, there are a number of analytical and methodological tools that can be studied and parallelized. One example is the use of clustering and cluster analysis to study, for example, consumer spending or product demand, etc. For more info on this, take a look at Market Strategies page.

  9. Domain decomposition method for elliptic PDEs using MPI.

  10. Parallel matrix-matrix multiply: matrix-matrix multiplication is a simple sequential kernel (can be obtained from Netlib). However, its parallelization has motivated a great deal of research papers. Communication issues need to be addressed. Also, multiplying rectangular (non-square) matrices may lead to severe load imbalance problems. The objective of this work is to understand best known algorithms (via making a nice synthesis of the existing literature) and then put them to test.

  11. Modeling of Complex Systems: This can involve either parallel modeling of relatively static things like stress on bridges or modeling of systems that have easily expressible simple rules, instead of average calculations using differential equations.

    Complexity is just about everywhere in nature, so one can simulate for example:

  12. Data Mining: Here is a short summary.

    Some Useful Pointers

  13. Parallel N-body Simulations Here are few useful links and explanations:


You are welcome to suggest your own project as well.
saleh@npac.syr.edu