Assignment 5 - Barnes Hut in MPI

Extra Credit

This assignment, like assignment 3, would be a 2 phase submission. In phase 1, you will submit your code and update the spreadsheet with your performance measurements for 5 extra credit points. The best 3 submissions after phase 1 submission earn 10 more extra credit points.
Your final submission will be due a couple of days after phase 1 submission and the final top 3 performing codes get 20 extra credit points.

Leapfrog Verlet Integrator

This is a code snippet for obtaining the acceleration and the new position of an nbody by virtue of force exerted by other bodies in the nbody system.

Parameters

soften = 18.0, //used while computing acceleration
damping = 0.1, //used while moving the nbody
theta = 0.5, // the multipole acceptance criteria

For example usage of the soften and damping factor please refer to the code snippet posted above.

For simplicity, reset the acceleration of the body to 0 after each iteration.
Dimensions of the system: (-9999.0,-9999.0) to (9999.0,9999.0)

Test Inputs

Here are the test inputs to evaluate the performance of your code. Submission for extra credit is due on March 22, 11:59 pm. Instructions for submission are listed below.

Test input 1 : Test 1 Corrected Test input 1 : Test 1 V2
Test input 2 : Test 2 Corrected Test input 2 : Test 2 V2
Test input 3 : Test 3 Corrected Test input 3 : Test 3 V2
Test input 4 : Test 4 Corrected Test input 4 : Test 4 V2

Correctness Check

The best way to check your code would be to verify it against a serial implementation. Here are sample outputs for 3 test inputs. These are just to verify correctness. For performance comparison, I'll be putting up another set of test inputs on March 18/19.

Parameters used : timestep = 1 and num_iterations = 3

Test input 1 : Input_10 Output_10
Test input 2 : Input_50 Output_50
Test input 3 : Input_1000 Output_1000

Performance Measurements

Getting good performance is one of the main aims of this assignment. There will be bonus points for the top 3 performing submissions. As with the previous assignments, we will use PAPI to count the microseconds taken by your program to execute I will share a google spreadsheet where everyone can see the performance numbers that the rest of the class is able to get. Please update this spreadsheet when you submit your code for phase 1. You are free to keep updating your performance on this google doc as you improve your code.

Your performance measurement should not include file I/O. The counters should be started right before you scatter the data and they should be stopped right after you gather the data from all processes. This is to ensure a fair comparison among all submissions.

Submission Instructions

The first submission for this assignment is due on March 22 by 11:59pm.
The final submission for this assignment is due on March 25 by 11:59pm.

Prepare a tar file for your submission. That tar file should have your your source code, job script for longhorn and a readme file. The readme file should have your names, your initial performance measurements in microseconds, instructions for compiling your code and the number of slip hours used. I have also shared a google spreadsheet with the class -- update your timings in that sheet as well.

To submit your assignment, use the following command
turnin --submit akanksha hw5_sub1 < your_tar >

Instructions for final submission
Prepare a tar file for your submission. That tar file should have your your source code, job script for longhorn, report and a readme file. The readme file should have your names, your final performance measurements on the test inputs in microseconds, instructions for compiling your code and the number of slip hours used. The total number of slip hours should be mentioned as "slip_hours_used:< number >" in the readme file. (I will use a script to read this, so ensure you stick to this format.)

To submit your assignment, use the following command
turnin --submit akanksha hw5 < your_tar >

Final Report
In your report, make sure you mention the optimizations you tried, what worked, what did not work and most importantly, your insight about why things worked/did not work. I will try to put up the best reports on my website as soon as possible.