# Parallel programming Practical 2012/2013

### General

I found a bug!
Hurray! Please send an email to the person listed as "contact" in the assignment you found the bug in.
The sequential algorithm used in the assignment seems to be less than optimal. Can/Should i optimize it in my parallel version?
No, there is no need to optimize the sequential algorithm. This course tries to teach how to parallelize an application, not how to implement a 15-puzzle solver or SOR ;) Moreover, if you do optimize the application, please calculate speedups compared to the optimized algorithm, not the original. Otherwise, it wouldn't be fair.
Can I use another algorithm than the suggested one to parallelize the sequential application?
Yes, it's possible, as long the your solution is correct, efficient, and well described in your report. It would be interesting if you implemented both algorithms, compared them and analyzed why one of them performs better. Look in the literature as well.
Using a different algorithm is possible, but you are not expected to do it: implementing algorithms suggested in the webpage (and/or discussed in the class) is enough.
I've measured the speedup of my program and it is superlinear. Is this correct?
It depends. Verify first that you measure time and compute the speedup correctly and use large enough problem size. (Hint: this webpage and lectures explain it all).
Analyze and explain in your report why there would be superlinear speedup, try to estimate it theoretically.
I've measured the speedup of my program and it seems to not be good enough. What should I do?
Create a performance breakdown of your program. Understand what processors do, why they are idle. When you know the answers, you might redesign and recode your solution. If inefficiencies are inevitable, explain and estimate the slowdown in your report.
I've measured the speedup of my program and it seems ok, close to linear. Is that it?
Well, almost. We also require you to analyze the performance of the program, estimate it theoretically, understand and explain why the speedup is good. Does your speedup scale?
Does the speedup of my program count in the grade?
Yes, it does. However, we don't give any exact numbers for comparison.
Does my code have to work for one processor?
Yes!
Does my code have to work for a number of processors which is not a power of two?
Yes!
I already started this practical last year or earlier, can I do one of the old assignments?
No, you can only do the current assignments. Any grades for either the MPI or the Java assignment are still valid though. If you already have a passing grade for one of the assignments, you are allowed to only do the remaining assignment.

### MPI

How do I abort my program? What happens if one processor exits and the others don't?
Use MPI_Abort(...) to abort the execution of the parallel MPI program.

### Java

Can I use the java.util.concurrent package?
Yes, you can. However, it is discouraged to use these classes as this package usually only leads to overly complex code. The standard synchronized mechanism of Java should be enough to implement the assignment.

## What's new?

October 31, 2012:
The new assignments are available on the blackboard.

October 31, 2012:
The site for PPP has moved on the blackboard.