During these labs you will discover a few aspects of concurrent and parallel programming.
Concurrent programming: how to write a correct multi-threaded program, and avoid data races and deadlocks using synchronisation primitives?
Parallel programming: how to write an efficient parallel program that takes advantages of multi-threading and hardware (for us, GPU) to do computations on large data sets?
The last lab will be graded.
oct 16th, oct 23rd Lab 1 (C)
PThread library. Notion of thread, data race, mutex, deadlock,
deadlock-avoidance.
nov 5th Lab 2 (JAVA) / TP 2 Java threads. Atomic instructions, monitors, condition variable, semaphore.
nov 13th TP 3 Loop parallelisation. Map Reduce. Cellular automaton simulation.
nov 20th 15:45-18:45 Lab 4 (PYTHON) CUDA/GPU Programming. Image processing. Game of Life.
nov 27th Lab 4 / Exam