Random people Random location Random misc

Programming the Cell Processor: A simple raytracer from pseudo- to spu-code

In recent years several processors have emerged which emphasise multi-threaded performance to the detriment of single-threaded performance. Of these, the Cell processor from IBM, Sony & Toshiba, is certainly one of the more adventurous designs.

With a fully functional - but relatively slow - general purpose processor core, extracting good performance from the Cell more or less requires the programmer to utilise the 8 vector co-processors, or SPUs. Each SPU has 128 128-bit registers, and a specialised SIMD instruction set. The SPUs can not directly address main memory, instead they each have 256 KB of local memory which can be populated via a per-SPU DMA engine.

Needless to say, the Cell architecture presents some new challenges for programmers. In this talk we hope to explore some of the issues encountered while programming for the Cell, possibly including:
* The trade-off between performance, portability and code readability.
* The effects of data structure design and memory layout on performance,
and if/how this differs on Cell vs conventional CPUs with L1/L2 cache.
* The challenges posed by the 256KB limit on local store, and strategies to
deal with this.

To explore these issues we have developed a simple raytracer, currently around 1200 lines of C code. We believe raytracing is a good candidate application as it is conceptually simple, yet computationally complex. And if it works you get pretty pictures as well.

We will be developing the code under Linux on the Playstation 3. For the talk we hope to bring one or two PS3s to Melbourne, for a live demo, and may also have remote access to a dual-cell IBM blade for comparison.

Project: Simple Cell Raytracer 


Michael Ellerman

Michael works as a Linux kernel developer at IBM OzLabs in Canberra. Prior to working at Ozlabs he completed the Bachelor of Software Engineering at the Australian National University, developed software for an Australian micro-satellite project at CSIRO, and worked as a Linux/Unix system administrator. Since 2004, Michael has worked on the Linux kernel, primarily developing for the powerpc (formerly ppc64) architecture. In 2005 he wrote much of the powerpc-specific code to support Kdump, presenting on the results at LCA Dunedin. Since 2006 he has been part of the Linux on Cell kernel team, working on kernel debugging support for the Cell, new hardware support, and general bug duty. In 2006/2007 he also implemented support for PCI MSI on the powerpc architecture.

Michael Ellerman

Michael works as a Linux kernel developer at IBM OzLabs in Canberra. Prior to working at Ozlabs he completed the Bachelor of Software Engineering at the Australian National University, developed software for an Australian micro-satellite project at CSIRO, and worked as a Linux/Unix system administrator. Since 2004, Michael has worked on the Linux kernel, primarily developing for the powerpc (formerly ppc64) architecture. In 2005 he wrote much of the powerpc-specific code to support Kdump, presenting on the results at LCA Dunedin. Since 2006 he has been part of the Linux on Cell kernel team, working on kernel debugging support for the Cell, new hardware support, and general bug duty. In 2006/2007 he also implemented support for PCI MSI on the powerpc architecture.

© 2007 MEL8OURNE LCA2008 and Linux Australia | Linux is a registered trademark of Linus Torvalds | Site map | Valid XHTML 1.0

rja