Accelerator project - compiling data-parallel programs to graphics processor units (GPUs) and multiprocessors
Back in October, I said farewell to the DeviceEmulator, and joined a new project in Microsoft Research. That project is still secret - I joke that at next TechFest, we'll have a booth, but it'll just be 4 black-curtained walls, with no computers and no people. But if you've seen me around the campus, you'll know by my smile that it is that great combination of a very tough problem and a strong team to solve it. I'm having a ridiculous amount of fun!
Along the way, I have been learning about GPUs and 3D graphics programming. This is a new area for me - I have worked in the VB runtime, WOW64 (which was focused on server scenarios) and DeviceEmulator (mobile scenarios), and none of those had much need for DirectX and D3D.
The Accelerator team have been very helpful in my crash course in GPU programming. If you haven't heard of Accelerator, please do check it out - it is a set of libraries for .NET that makes it straightfoward to write data-parallel code that downloads and runs on the GPU hardware. You need to know nothing about GPUs, only managed arrays. Their original paper is:
David Tarditi, Sidd Puri, Jose Oglesby. "Accelerator: simplified programming of graphics-processing units for general-purpose uses via data-parallelism", Technical Report MSR-TR-2004-184, Microsoft Corporation, December, 2005.
You can download Accelerator here. They're hiring, by the way, if you have a passion for concurrent programming and experience in this field. I'm looking forward to multi-core CPU version - Accelerator gives you a new/different way of efficiently spreading computation across your available computing resources.