This assignment involves solving the Traveling Salesperson Problem (TSP) using Java remote method invocation.
To receive 70% of the credit: Write a RMI program to parallelize the serial program found in star1:~pjh/public/tsp. Keep one global priority queue of states and one global data structure for tracking the best solution found so far.
To receive 85% of the credit: In addition to obtaining the 75% level, modify your program for the 75% level to distribute the priority queue of states among the nodes. That is, eliminate the global queue and have all nodes manage their own priority queues. Implement one of the schemes described in class or in the Quinn book for distributing states among the nodes. Be careful how you handle termination.
To receive 100% of the credit: In addition to obtaining the 85% level, modify your program for the 85% level to have multiple threads, each with its own priority queue, executing at each node. Set the number of threads at each node to be at least two, but you do not need to experiment by varying the number of threads per node.
Two test data sets are available: a 15-city problem and a 17-city problem. Use the 15-city problem when debugging. Use the 17-city problem when analyzing the performance of your program. The first command-line argument to the serial program selects the problem size.
A second command-line argument to the serial program sets the maximum size of the priority queue. This defaults to 10000 but the serial program seems to solve the 17-city problem fastest with a maximum queue size of 50000. You do not need to experiment with this value in your parallel program, but do think about the potential effect on the performance of your parallel program if this value was varied. Is there a correct value to use with regard to computing speed-up numbers? Be sure to discuss this issue in your report.
Experiment with your program using 1, 2, 4 and 8 processors on the Star Cluster. 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 (70%, 85% 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. 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 November 19. 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 prog3 FINAL-REPORT *.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 prog3The 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.
Comments and questions should be directed to pjh@cs.unh.edu