The objective of this homework is to write three OpenMP programs, to debug and test them on a Ski-area machine (in Lab 225) such as wolf-creek, and to experimentally determine the gains you get in running it in parallel with 1, 2, 3, 4, 5 and 6 threads. The parallelizations are relatively simple, and the results should be interesting in terms of speedup. You should measure and plot the performance of your parallelization as a function of the number of threads, and analyze your observations.
You are responsible for editing the makefile to have the following commands:
and make should produce both sequential and multi-threaded executables, e.g. mat_vec_SEQ and mat_vec.
During testing we will run make clean; and make; followed by a series of automated tests on your executables. Your executables must be named: stencil_1D_SEQ, stencil_1D, stencil_2D_SEQ, stencil_2D, mat_vec_SEQ and mat_vec.
We will be performing automated testing on your output. Do not change the output format from the existing format.
Here is an example:
~...PA1 36>stencil_1D_SEQ 4000 200000
data[0]: 5000.000000
data[1]: 5000.000000
data[400]: 2639.187105
data[800]: 1031.572483
data[2000]: 15.758161
Data size : 4000 , #iterations : 200000 , time : 0.998575 sec
~...PA1 37>stencil_2D_SEQ 800 2000
Data : 800 by 800 , Iterations : 2000 , Time : 1.686642 sec
Final data
10000.000000 10000.000000 10000.000000 10000.000000 10000.000000
10000.000000 10000.000000 10000.000000 10000.000000 10000.000000
10000.000000 10000.000000 9994.530989 9991.153834 9986.982415
10000.000000 10000.000000 9991.153834 9985.691261 9978.943961
10000.000000 10000.000000 9986.982415 9978.943961 9969.014964
~...PA1 38>mat_vec_SEQ 25000 10000
N=25000, M=10000
c[0] = 49995000.000000
c[3125] = 81245000.000000
c[6250] = 112495000.000000
c[9375] = 143745000.000000
c[12500] = 174995000.000000
c[15625] = 206245000.000000
c[18750] = 237495000.000000
c[21875] = 268745000.000000
elapsed time = 0.223439
The checkin website will perform preliminary testing of your
makefile and code..
These tests do not indicate your final grade. They can however
catch small mistakes in your submission. You can re-submit
your file until you get 100% on the preliminary testing.
Failure of preliminary testing at due-date(time) will lead
to a zero in your final grade. So, please make sure to submit
in advance and pass on the Preliminary Testing.
In your report you will present your performance results. Here is a general outline of such a report
Grading Logistics