As you will remember from last quarter, the principle investigators of the Anhinga project, Alan Kaminsky and Hans-Peter Bischof, have conjectured that the Anhinga Project's Many-to-Many Invocation (M2MI) has applicability to parallel computing. A lot of studies must be preformed to assertain the validity of this conjecture. As a class, we will be working to perform one such study. Unfortunately, the current version of M2MI is experiencing difficulties with message timeouts on clusters, so we will focus on comparisons with shared memory openMP programs. (The message timeout issue was discovered while performing another similar study last spring in this class!)
This programming assignment is designed to provide
Odd-Even Transposition Sort
You will work as a team to improve the openMP implementation of the Odd-Even Transposition Sort that was implemented last quarter; I have them if you don't. We are generating data points for comparison with the results of the Anhinga (M2MI) implementation of the same sort. In addition, the Odd-Even Transposition Sort will be implemented using M2MI.
The Odd-Even Transposition Sort is not an algorithm that can take advantage of the power of M2MI. The Bucket Sort would seem to be one that might. The Bucket Sort will be implemented in openMP and M2MI to provide other data points. Please implement both the one bucket/processor version and the multiple buckets/processor version of this sort. Please write the bucket sort so it has the same set of command line arguments as for the OE sort. It probably would be wise to add two arguments that indicate the range of numbers being sorted. Indicate in your Readme file how to run this sort.
Information about using M2MI is available at http://www.cs.rit.edu/~anhinga/m2mi.shtml, including CLASSPATH information.
What To Submit:
The hardcopy for BOTH sorts should include:
- Listings of the openMP and M2MI programs submitted,
- A discussion of the changes that were made to improve the performance of the Odd-Even Transposition Sort openMP code (Be sure to compare the results with the results from last quarter!),
- A discussion of the algorithms that were implemented especially those using M2MI,
- A discussion of the issues that arose while using M2MI, a comparison of M2MI and openMP with respect to ease of use, and any bugs you may have discovered in M2MI,
- A timing study of the problem size versus the number of processors for both sorts, all versions. This should include tables and graphs of sorting various data set sizes (try at least 1000, 10000, 100,000, 500,000, 1,000,000 and 10,000,000) on various numbers of processors (1 - 4 on parasite or paradise. Be sure to use either paradise or parasite to do ALL of the timing studies.) Since the metrics used in parallel computing include speedup and efficiency, these should be calculated and plotted as well. (Please note that traditionally, the number of processors is plotted on the x-axis and the time/speedup/efficiency are on the y-axis. Also, please plot the results of timing of ALL datasets on the same plot)
Discuss the results of the timing study, including a comparison of the results for the Odd-Even Transposition Sort versus the Bucket Sort.
You are to electronically submit a directory called lab1dir using the following command:
This directory will contain two directories, oddEven and bucket containing the the appropriate source files, a makefile, and a READ_ME file, if pertinent. Do not submit executable files. I should be able to create the executables by typing make openMP and make M2MI. The name of the executable file created should be OE for the openMP version and OE.class for the M2MI version for the Odd-Even Transposition Sort and bucket and bucket2 for the openMP versions and Bucket.class and Bucket2.class for the M2MI version of the Bucket Sort.
The gradesheet I will used may be viewed here.