9am Monday 9 March 2009
I will describe a system developed at Codeplay for offloading parts of application source code to run on accelerator processors with scratchpad memories (e.g. the SPE cores in the Cell BE processor). The idea is that code enclosed in a “sievethread” block is compiled to run with standard semantics on an accelerator. Versions of all functions associated with call-graphs rooted in a sievethread block are also compiled for offloading to the accelerator.
The advantage of such a system is that it allows heterogeneous multi-core processors to be programmed in C++ using a paradigm similar to traditional POSIX threads, and allows homogeneous and heterogeneous versions of an application to coexist in one source base.
The research challenge is in the duplication of methods. This raises many interesting issues, including: separation of pointers to data in host memory from pointers to data in local store, duplication and offloading of methods called via function pointers, and complex C++ features such as virtual methods.
Most of the talk will focus on these issues: I will describe the solutions we have devised and implemented in a version of the system for a major semiconductor company.
Alastair Donaldson has a PhD from Glasgow University for his work on model checking. He is currently a Research Engineer for Codeplay in Edinburgh, working on compiler technology for novel architectures.