Thursday, January 15, 2009

The parallelism shift and C++'s memory model

Johan Torp (who now works at DICE) wrote this great master thesis (pdf) about programming for parallelism and the C++/C++0x memory model.

It is a great and exhaustive read of the topic at 134 pages. Recommended for programmers or researchers that are fully serious about parallelism and/or interested in the changes & improvements C++0x brings to the field.


The first part of the thesis is an overview of the paradigmatic shift to parallelism that is currently taking place. It explains why processors need to become parallel, how they might function and which types of parallelism there are. Given that information, it explains why threads and locks is not a suitable programming model and how threading is being improved and used to extract parallel performance. It also covers the problems that await new parallel programming models and how they might work. The final chapter surveys the landscape of existing parallel software and hardware projects and relates them to the overview. The overview is intended for programmers and architects of desktop and embedded systems.

The second part explains how to use C++'s upcoming memory model and atomic API. It also relates the memory model to classical de nitions of distributed computing in an attempt to bridge the gap in terminology between the research literature and C++. An implementation of hazard pointers and a lock-free stack and queue are given as example C++0x code. This part is aimed at expert C++ developers and the research community.

Wednesday, January 14, 2009

Conference slides

Found the neat site which can freely host & embed presentations (up to 100mb per presentation).

I've uploaded a few of the (public) external presentations that I've done the last couple of years. Planning a new talk for GDC this year (focused on DX10/11 rendering) and hopefully another one for the Siggraph real-time rendering course as well, should be interesting as always!

Don't miss the course notes for Siggraph course.