Description
1 description
Write a sequential program, a P-thread program, an CUDA program, and an MPI program to simulate an astronomical N-body system, but in two-dimensions. The bodies are initially at rest. Their initial positions and masses are to be selected randomly (using a random number generator). The gravity between N-body should be described by the following equation:
Also you should consider the collision and bouncing, otherwise, all the points will be collasped into a singular point. Display the movement of the bodies using xlib or other GUI systems on your computers.
Bounus(10 points): Write an MPI + OpenMP program for a two-dimensional N-body simulation.
2 requirement
-
You need to implement four versions of the tasks, which are Sequential version,openMP version,MPI version and a Pthread version. And hand in the codes for these four versions in four seperate code files.
-
In your submit code, it should display an image with size of 800 × 800, and with 200 bodies moving for a fixed number of iterations.
-
Include the results in your report by capturing a picture on your screen.
-
Record a video of your result.
-
You need to specify the command line about how to compile and run your program.
-
You need to compare the performance of different implementation and configurations in your report.
– The number of processes or threads used in the program (up to at least 33 processes and threads)
– MPI vs Sequential vs Pthread vs CUDA vs openmp
– you should fix the size of the display window and the number of iterations, instead you should change
the number of bodies (ranging from small, medium to large size).
– More if you have
-
You need to include three figures describing the structure of your MPI program, Pthread program, openmp and CUDA program.
-
The report should be written in appropriate format.
-
When measuring the running time of the program, make sure only measure the computation time. (Because Imgui’s or xlib’s drawing are time consuming.)
-
You should start your homework as soon as possible, do not try to finish it in the last two days before the deadline.
-
Debug your program on the VM that is built on the image centos. Make sure the program is
-
Make sure use ‘sbatch’ command to submit your jobs onto the master machine, do not directly run your program on the master machine.
-
Try to limit your program running time within 60 seconds. If your program is running slow, try
to improve your code or reduce the image’s size.
4 Where and What to Turn in Your Homework
-
Please turn in a zip file includes
– Report
– Codes
– video demonstrating your program results
-
zip your source codes, result video, paper in a zip file, and name it studentID.zip, then submit it on Blackboard.
-
Late submission penalty, 5 points deduction for each 12 hours after the deadline. We won’t receive any submission for 24 hour after deadline.
5 Due: 23:59,Nov,17,2020