For this assignment, you will discuss what you did to speed up the C++ program from the first optimization assignment in groups of 3-5, and spend a at least 3 more hours using your group’s insights to optimize the program a bit more. You only need to modify optimize.cpp (or whichever code results in your optimize binary), not wavesolve*.

The “discussion” can take any reasonable form you would like, ranging from sharing your notes and a few messages on Slack to meeting in person for three hours to work on optimizing your programs together. By default I will assign your groups randomly, but if you have partners in mind send me a message to let me know your choice of group.

Amend the notes you wrote for the original assignment with updated timing information and discussion about what else you tried after talking with your group, making clear which optimizations are new. If you have already tried everything brought up by your group (e.g. if you spent way more than a few hours on the original assignment), that’s okay–your new optimizations don’t have to come from any particular source.

Submission

In similar fashion to the first optimization assignment, develop in a branch named phase5 or tag a commit containing cpp-optimization.txt and your updated code phase5.

Grading

This phase is worth 15 points. The following deductions, up to 15 points total, will apply for a program that doesn’t work as laid out by the spec:

Defect Deduction
Failure to compile optimize 4 points
Failure to run successfully (e.g. due to a segmentation fault or hang) 4 points
Failure of optimize to output “5.39”, and only “5.39”, to stdout 4 points
Failure of optimize to run within a second on m9 with 8 threads 4 points
optimize isn’t relevant to the assignment, just prints “5.39” or similar, or hasn’t undergone any significant change since phase 3 8 points
Answers in the essay are nonsensical or no significant changes have been made since phase 3 1-8 points
The informal essay doesn’t clearly denote which changes are new 4 points

An extra credit point will be awarded to submissions that run in less than 0.1 seconds with 8 threads on m9.