Homework 2
From CSI 702
Contents |
1 Homework 2: Multi-threading the Mandelbrot set
The homework assignment for February 25 (midnight) is to create a multi-threaded version of the Mandelbrot set. The code for the Mandelbrot set is contained in this file :mandel.c.
1.1 Objectives
Details on the mathematics behind the Mandelbrot set are available elsewhere, including [[1]]. There are also some details from the notes . The focus of this project, however, is to create an efficient parallel version of a Mandelbrot generator using the pthreads library.
At the end of the project, students will
- Design a threaded code
- Use the pthreads library to created threaded code
- Use profiling and timing tests to compare codes
- Analyze the difference between the parallel and serial codes.
1.2 Honor Code
As in all projects, you must follow the honor code requirements for citation as outlined in the syllabus. You may NOT use other people's code directly in this project. Using other people's ideas for algorithm design MUST be cited in your report and in the code.
1.3 Turning in the Project
For this project, you should do the following steps
1) Create an effective multi-threaded design for this code. It should be as simple as practical, but still give an effective speedup on a multi-core machine.
2) Implement the design using the original code as the basis using the pthreads library. The code should work on linux machines and include compilation instructions and a basic makefile. The makefile should create a serial and threaded version of the code with executables named "mandelbrot_serial" and "mandelbrot_threaded".
3) Write a short report summarizing the profiles for both the serial and threaded version. You should experiment with both the "n" and "itmax" variables to see how changing these values affects performance. You should summarize your design, and how effectively it works, along with any problems you had creating this code. The final report should be submitted in
4) Once the project is completed, follow these steps
- Create a directory called "youremail_702_hw2" and put the following files in it
- Makefile
- the codes
- the documentation
- the final report (PDF form please!)
- Create a tar and zipped version of the file using the command "tar cvfz youremail_702_hw2.tgz youremail_702_hw2"
- Send the email to jwallin@gmu.edu with the subject line "csi 702 - hw2"
1.4 Grading
The grade will be based on the following criteria - (30 pts) Does the threaded program effectively speed up the code over the serial version? - (20 pts) Is the code well documented and easy to understand? - (30 pts) Are the profiles and documentation well written and sufficient to understand the implementation and results? - (20 pts) Are the standards and naming conventions being followed?
Late assignments will face a penalty.
