CPT S 483: Final White Paper (instructions and guidelines)

When to submit?                     Noon PDT, December 15, 2016 (Thursday of Finals week)
Where to submit?                    OSBLE dropbox AND email ananth@eecs.wsu.edu (do both before deadline)
Will there be any extension?    No
Assignment type:                      Individual
Submission file type:                Each submission will be accepted only as a single PDF


This course has a white paper required for all students instead of a final exam. The paper is due at or before Noon of December 15, 2016 (Thursday of the Finals week). This is an individual assignment (i..e., not team-based).

How it works?

Step 1)  Problem Identification (Due date: November 10, 2016)

The problem for the white paper is to design and implement parallel counting sort.

Input: An array A of n numbers, where each number's value is bounded in a fixed interval of [min, max].
Output: An array B, which is the sorted array for A.

We already discussed in detail how to do counting sort in serial and also discussed ways to implement counting sort algorithm in parallel for distributed memory platforms (MPI).

Based on these discussions, you are expected to develop three implementations for parallel counting sort:
a) serial implementation;
b) OpenMP multitthreaded implementation;
c) MPI distributed memory parallel implementation.

Once you implement, you need to design experiments to answer and report on the following questions:

1) How do the implementations scale as a function of the number of processors/threads, and as a function of the input size?
2) Report on the speedups and efficiencies as observed through your experiments, using the serial implementation as your baseline.
3) How do the implementations compare against themselves (i.e., OpenMP vs. MPI vs. serial)? For MPi code you might want to split your total runtime into computation time vs. communication time.


Step 2) Work on the problem (Recommended completion date: November 30, 2016)

In this phase you are supposed to work on the design and programming part of the problem.

Step 3) Review White Paper (Recommended timeframe: Dead week)

During the dead week you will have the opportunity to go over your programming projects and/or the written report (partial or complete) with me for comments and feedback. I can suggest ways to improve it. This doesn't need to happen during the class time. We can set up individual times (please email to schedule).

Step 4) Write and submit white paper (Hard submission deadline: Noon PDT, December 15, 2016)


The white paper should be NOT EXCEED 5 pages including any required references. It should be written like a short scientific paper. The document should use 1.5 line spacing, 11pt Times New Roman font (or comparable font). The final submission should be uploaded as one single PDF.

The white paper should be organized as follows:
Section 1) Introduction
        - provide problem background,

Section 2) Problem Statement 
        - problem definition (what is the input? what is the output?), use a formal definition to the extent possible. We used formal ways to define a problem in the class. Look at parallel prefix sum or other problems for example. Please use those as examples.

Section 3) Key Challenges in Parallelization
        - State briefly why parallelization poses challenges for this problem

Section 4) Proposed Approach(es)
        -  Propose your key ideas and approach elements here. It is encouraged that you describe your algorithm precisely in the form of a pseudocode. Use figures to help illustrate and articulate the main ideas clearly. This section should also do a complexity analysis of your algorithm - space and run-time complexity. 

Section 5) Experimental Results and Discussion
         - Please report your experimental results and your evaluation of those results in this section. Also add your discussion in an objective manner.

Section 6) References
        - This section should consist of citations to any literature that you have cited in the main text (any of the above sections). The bibliography format should be that of IEEE format (other similar ones okay), which means that each reference will be numbered and the numbered entries would appear like this:

[1] [author1_initial}. author1_Lastname,
[author2_initial}. author2_Lastname. "Paper title", {Conference or Journal name}, {page and volume numbers}, {Year of publication}.

If you look up papers on Google Scholar there will be a CITE link next to each paper. If you click that it will show you different formats. You can use one of them.



Confirmed List of White Paper Topics (Presentation schedule will be posted in November):
Please check and report any discrepancies!

Name Topic Problem statement? Quad chart
Template