Parallism and Concurrency

Ray tracer

The age of massively parallel and concurrent programming has begun [1] and I developed some parallel programs in my spare time.

I chose a ray tracer as an example application. A number of spheres is drawn with some point lights. The camera looks from the outside to the center of the scene and turns around the scene in a circle. An environment map / texture is also used.

A ray tracer is straightforward to parallelize: The idea is to split the screen into disjunct areas and to calculate each area in parallel and join the results afterwards into the final picture.

Not all problems are that easy. Finding the right algorithm for the hardware used is one of the main tasks in developing parallel software. See for example the 13 patterns ("dwarfs") of parallel algorithm design by David Paterson et.al..

The following screenshots shows this ray tracer running on a Mac.

Simple ray tracer   Ray tracer with environment map

Architectures

I used the following architectures / programming languages.

Valid XHTML 1.0 Strict Firefox 3 Firebug - Web Development Evolved
Last modified: