CSCI 3366 (Introduction to Parallel and Distributed Processing), Spring 2009:
Homework 4

Assigned:
March 31, 2009.

Due:
April 9, 2009, at 5pm. Revised due date: April 23.

Credit:
30 points.

Overview

Your mission for this assignment is write a parallel version of the well-known sorting algorithm quicksort. (If you don't remember the details of quicksort, the Wikipedia article seems reasonable. The algorithm I want you to implement is the one that sorts in place. I also like the discussion here.)

Details

Sequential starter program

To help you get started, I wrote some Java classes, one for the actual sorting (with most details left out) and two to test it.

Comments in the code explain the command-line parameters. You will need to fill in the body of the qsort method. Feel free to find code on the Web or in a textbook (though you should try to understand the code you use even if you don't write it yourself), and/or to add additional methods.

Parallel program

Your mission is to write a parallel version of this application that allows you to specify at runtime (via an additional command-line argument) the maximum number of threads to be used. (I recommend cloning all three of my classes and making appropriate changes.)

Performance of parallel program

Once you have working parallel code, experiment with input values until you get a problem size/configuration big enough to make it reasonable to hope for good speedups with multiple UEs. Then time your parallel program for this problem size and different numbers of UEs and plot the results, as in Homework 2.

What to turn in and how

Turn in the following:

Submit source code and other files by sending mail to bmassing@cs.trinity.edu, with each file as an attachment. Please use a subject line that mentions the course number and the assignment (e.g., ``csci 3366 homework 4''). If there's any question of which file(s) correspond to which problems, explain in the body of the mail message. You can develop your programs on any system that provides the needed functionality, but I will test them on one of the department's Fedora 9 Linux machines, so you should probably make sure they work in that environment before turning them in.



Berna Massingill
2009-04-16