CS735/CS835
Programming Assignment 2
(due Sun Oct 21)


This program concerns the parallel implementation of a linear system solver using Java remote method invocation.

Write a Java RMI program to parallelize the serial program (gaussian.java) found in ~cs735/public/gaussian.

To receive 75% of the credit: Provide a parallel implementation of both the Gaussian elimination phase and the back substitution phase.

To receive 100% of the credit: Provide a parallel implementation of both the Gaussian elimination phase and the back substitution phase that utilizes reduction and broadcast operations that are implemented using hypercube-style ("Log P") algorithms.

Experiment with your program using 1, 2, 4 and 8 and 16 processors on the Star Cluster. (For full credit on the 100% level also use some processor counts that are not powers of two.) Use systems of 1024 equations for the final experiment. (At least, to fully understand the behavior of the program you may need to run even bigger data sizes as well.) Report on your running times, compute speedup numbers, and analyze any trends that you recognize in the data you collect. Be sure to time your program at each grading level completed and compare the performance of the different levels.

Place your findings in the "flat" Ascii file named FINAL-REPORT. (Please no files in Postscript, PDF, Microsoft WORD, etc.) Also document in this report the basic design of your parallel program and clearly indicate what level (75% or 100%) of the assignment you have obtained.

Do ten runs for each data point to try to avoid anomalies. Try to do your timings at "off hours" when the Star Cluster is not heavily in use. (This may require that you not do your work at the last minute!) In your report provide all the raw data as well as a summary. (If your display of the raw data is very large, please put the raw data in a separate file called RAW-DATA.) Be sure to explain how you summarized the data.

Also include in your report instructions for how to build and execute your program.

Submitting your assignment: To receive full credit for the assignment, you must turn in your files prior to 8am on Monday October 22. Late submissions will be accepted at the penalty of 5 points per day up to one week late. To turn in this assignment, type (on lava.cs.unh.edu)

   ~cs735/bin/submit prog2 FINAL-REPORT *.java
or
   ~cs735/bin/submit prog2 FINAL-REPORT RAW-DATA *.java

If there are additional files (e.g. scripts) that I need to execute your program, please provide them to me as well when you do the submit.

NOTE: You must submit your assignment for grading from lava.cs.unh.edu.

Submissions can be checked using ~cs735/bin/scheck. For example, to check your assignment:

    ~cs735/bin/scheck prog2
The scheck program can only be executed on lava.cs.unh.edu.

Remember: as always you are expected to do your own work on this assignment.

Also: you should adequately document and structure your programs.

And: take care with the writing of your report. Use complete sentences, proper punctuation, etc. Use a spell checker. Most importantly, allocate some time for writing your report. Review and revise as necessary. Finally, don't forget to include the required analysis in your report.


Last modified on October 12, 2001.

Comments and questions should be directed to pjh@cs.unh.edu