Hide menu

Multicore and GPU programming

Information page for the CPU lab work and lessons at the course Multicore and GPU programming (TDDD56)


Download general informations, , the slides of lesson 1 and theory notes.

Current status of TDDD56 2014 season parallel programming challenge

Konrad Zuse category

Latest results

Southfork category

Latest results

You can checkout the latest results on http://www-und.ida.liu.se/~nicme26/ (updated once a day)

Getting started with tools used in laboratories

Lab0a: Introduction to C and the pthread API

A quick introduction by example to C syntax, data type and their use, functions, modules, as well as spawning and waiting for threads. Find another introduction from lab00 of the course "Concurrent programming and Operating Systems" (TDDB68), which include more C-related issues such as pointer management. Lab2 of TDDC78 (http://www.ida.liu.se/~chrke/tddb78/ also provides an introductory work to pthreads.

[source files]

Lab0b: Performance measurement: prefix sum

Introduction by example to performance measurement helper scripts.

[source files to parallelize and measure] [solution source and measurements files]

Lab work

Lab1: The Mandelbrot set and load balancing

Parallelize a generator of visual representation of the Mandelbrot set, fractals, observe load-balancing issues and implement a solution to them.

[source files] [instructions]


Lab2: Non-blocking stack

Implement and measure the performance of a non-blocking, Treiber stack

[source files] [instructions]

Lab3: High performance parallel sorting

Use the observations from previous labs to implement a high performance parallel sorting algorithm. The performance are measured and compared accross volonteer groups in a competition rewarding the best parallel programmers.
Find below a document that gives more detailed information on Drake, with an almost-complete Drake streaming application example.

[source files] [instructions] [drake documentation]

Page responsible: Nicolas Melot
Last updated: 2015-11-24