NPRG058: Advanced Programming in Parallel Environment

Extra Assignment - Mandelbrot

Take the naïve solution of Mandelbrot set sampling (in /home/_teaching/advpara/cuda-mandelbrot) and write your own kernel that utilizes the Dynamic Parallelism feature of the modern NVIDIA GPUs.

Hint: The Mandelbrot set is continuous (in geometric sense). Hence, if you find a rectangle/square, that has all its border points in the set, the whole of its interior is in the set. The same observation can be made for the points, which needed the same number of iterations to determine when they started to diverge. This observation can be employed in combination with the standard grid space division approach to dynamically subdivide a problem (i.e., spawn more threads) when a grid rectangle is too coarse.

The problem is explained in more detail in the labs. Also, be advised that this is a voluntary assignment. I.e., you do not have to upload it into Git and when you are done, you can compare your notes with a case study of NVIDIA.