OpenMP parallelization of Memory Efficient Dynamic Programming 0/1
Knapsack Problem
The objective of this assignment is for you to review OpenMP
parallelization, implement the memory efficient dynamic programming
algorithm, parallelize it in OpenMP and measure its performance. Next, you
will implement a
multi-pass version. Everything except this is
something that you must have done in a previous class such as CS475 (if you
took a parallel programming class elsewhere where you did not do this
specific set of program, please discuss with the instructor).
- First
do PA3
of CS 475 (from Fall 2016). Do not do the coarse grain
parallelization or the extra credit (unless you are having too much
fun). Be sure to complete the report (or at least gather the
performance data and plot the results) since they are going to motivate
the next part.
- Next do the multi-pass version as described below.
You may notice that the value of C greatly influences the performance
(the performance is highest when C is smaller than a certain
machine-dependent parameter. The trick in this part is to "fill up"
the table in (vertical bands) of a certain, width, but to still do
this in a memory efficient manner. We call such a section of the
table a pass. The problem is that in each row, the last
wi elements just computed are going to be required in the
next pass, and must be saved in memory (so the program is not as
memory efficient as the original one, but this extra memory is a
tunable parameter, although exploring this part is beyond the scope of
this assignment).
Submit, using the Checkin tab, your sequential and parallel codes, your
time and speedup statistics, and observations in a report (maximum 4
pages).