CSE 160/260: PROGRAMMING ASSIGNMENT #2

Due Date: 5/7/99 11:59 PM

The goal of this assignment is to learn how to implement an embarrassingly parallel program using a manager/worker model and the dynamic load balancing technique, work queue. As with the last assignment, this assignment will be done individually.


Resources:
Assignment description: Edge detection algorithm

You will perform an edge detection algorithm using the Sobel operator as described on pg. 342 in your text. Below shows an example of the edge detection algorithm using an image off Dmitrii Zagorodnov's web page:
INPUT IMAGE OUTPUT IMAGE

Images:
Command line format:
You should be able to specify the input filename, the output filename, and the work chunk size via command line inputs. The command line should be of the following form:
mpirun -np <num> -machinefile <machines> pedge_detect -i <input filename> -o <output file name> -x <width of work chunk> -y <height of work chunk>


Timings:
You will be required to time the total execution time of your program (the manager can handle this). In addition, for each process, you will be required to time the overhead time (communication time + idle time) and the computation time. These timings will come in handy for your next programming assingment which will be about how to get better performance out of your program. No specific format is required for these timing messages. Also, feel free to insert any other additional timing messages that you think are important.

Instructions for turning in programming assignment #1:
Tar up your makefile and your source code (i.e. no *.o's and no executables).
Grading:

Due to the size of this class and the limited number of computers available for you to work on (for CSE 160 students), extra credit will be offered as an incentive to turn in your program early. So, if you turn in your assignment before 11:59 PM on April 30, you will receive an extra 5%.