Research Project
Project 4 and Graduate Project
Project 4 - 20 points
Graduate Project - 20 points
Both projects are due Friday Apr. 24, 2015

Project Description

This project consists of two parts - a research paper and a programming project. All students must complete the research paper portion of this project for 20 points. Graduate students must also provide a non-trivial implementation (i.e. write a program) of their research topic for an additional 20 points. Undergraduate students may complete the graduate portion for extra credit.

Research Paper (20 points)

Pick a topic related to parallel programming to research. Send your topic choice to the instructor by email by Friday, Apr. 10 at 11:59pm. Each student must pick a different topic, and topics choices will be first-come, first-served. If your topic has already been selected, you may either choose another topic or one will be assigned to you.

After selecting a topic, find five valid references covering your topic. These resources must come from books, journal papers, or conference papers. You may use additional resources, but at least five of your references must be books, journal papers, or conference papers. References must be provided in standard IEEE or ACM format.

After finding your references, write a minimum four page, single spaced, 12-point Times New Roman font research paper covering your topic. The maximum margins for this paper are one-inch. You may use, at most, five of your references to count towards the four page minimum. You must also include a title page in your paper. The title page does not count towards the four page minimum. Any tables or diagrams that you choose to discuss in your paper do not count towards the four page minimum and must be included in an Appendix at the end of your paper.

Your paper must include an introduction, a description of the topic that you are researching, a discussion of the merits and/or performance of the tool/code/algorithm, and a comparison to at least one other algorithm. Graduate students must include the results/performance of their own code, their own testing with a tool, or their own implementation of an algorithm, as described in the next section, in their papers.

Graduate Project (20 points)

Graduate students are required to write a substantial program over their topic of choice. If possible, this program must be tested on the Stampede supercomputer. Short descriptions of valid programs and topics are provided below.

MergeSort - write a program that sorts a large set of random numbers (perhaps 100,000,000 or more integers) and compare its performance to one of the sorting algorithms from the class in your research paper.

Profiling - learn how to use a parallel programming profiler, write about how to use the profiler and its merits, and identify segments of code from a program that you have written. Then improve the code and show proof of the results of the improvement using the profiler in your research paper.

Numerical Algorithms Libraries - read about a numerical algorithms library such as one that performs matrix multiplication like the dgemm function from Intel MKL or OpenBLAS. Write a program that performs matrix multiplication with that tool and compare the performance with an existing program that was written in the course (e.g. the tiled matrix multiplication program).

Submission

Submit your research paper (and your code if you are a graduate student) to the eCompanion dropbox for project 4.