The purpose of my thesis is to create a gravitational N-body simulator using different parallel computing methods.
Most of the modern processors have the ability of parallel program execution, which means a significant computing potential. However, the proper exploitation of processors in many cases is a difficult problem. To mention a few of the main difficulties: using different logic than in case of sequential programming, preservation of data integrity, implementation of communication between parallel running elements and also the knowledge of the available hardware.
The gravitational N-body problem is a common issue in astronomy, which describes the movement of the continuously interacting orbs. To describe the movement of these bodies the simulation uses Newton's gravitational law, and the numeral evaluation of these equations gives the base of the simulation. This task requires large computing capacity, consequently that is a proper task to implement using parallel programming methods.
At the beginning of my thesis in a short theoretical overview I describe the N-body problem and the commonly used algorithms along with the deduction of the implemented formulas. Then from the available parallel programming technologies I focus on the structure and programming of graphics processors.
Following the synopsis, I detail the designed and implemented N-body simulator. Firstly, I present a MATLAB prototype of the simulation then I demonstrate a C++ based implementation, which uses the multithreading of OpenMP and the parallel programing options offered by SSE/AVX vectorization. Then I describe a graphics processor based application, which uses NVIDIA CUDA platform. Finally, I end my thesis by evaluating the results and comparing the achieved computing performance of each implementation.