The pursuit of computer science is to achieve ever increasing computing capacity with new technologies developed almost every day. To solve computational intensive problems it is an effective technique to divide it into sub-problems and process them in parallel: after having smaller, independent problems numerous hardware with limited computing capacity can work on solving the main problem, achieving a greater performance altogether.
The aim of the project is to apply one of the leading video card manufacturers, NVidia’s Compute Unified Device Architecture (CUDA) technology in practice. This technology provides an application programming interface for developers to design programs that run on the GPU.
Among the typically computation intensive tasks, this thesis emphasizes on the algorithms used by physics engines where a large amount of bodies interact with each other solving the interactions and applying Newtonian forces of a rigid body physics simulation in parallel. This includes the detection of interaction between bodies, applying momentum and doing transformations in 3D space.