CUDA

Multiple mini-projects for learning about GPGPU technologies, mainly CUDA.

Realized as multiple mini-projects during the CUDA course. It tries to give students a good overview of various algorithms that exists in massively parallel programming, and don't forget to talk about problems that may arises when accessing data with thousands of cores at the same time. Programming with SIMD technologies can be tricky, and this course really helped to understand the basics and start my B.Sc. final project.
CUDA, OpenMP, C++, Boost


The Project

Fractals and simple mathematics applications

Basic mathematic algorithms for fractals generation, mainly Mandelbrot, Julia and Newton sets were explored. Implementations were not difficult, but helped us to discover CUDA, the working environment for the course and understand the main principles for SIMD programming.

Simulating opengl with GPGPU computations

OpenGL is a very good library for exploiting GPUs power when rendering 3D scenes. Here we tried to write a simplified OpenGL for rendering scenes composed only of perfect mathematical-defined spheres, using ray-tracing technology (without ray re-emitting), thus leading to simple OpenGL Phong rendering.

Advanced research project on performance drawbacks and optimization

Despite CUDA is a powerful technology, misusing it can lead to very poor performances, sometimes below the initial 'sequential' performances obtained on a standard processor. In the final part of the course, we were encouraged to do advanced research on a particular lab of our choice, trying to understand its efficiency limitations, with the goal of trying various configurations of it until we found an optimal one.


Miscellaneous

Type Course project
Degree B.Sc. HE-Arc HE-Arc, 3rd year
Course CUDA Programming
Duration ~60 hours
Supervisor Prof. Cédric Bilat