Share via


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.

Comments

  • Anonymous
    April 02, 2007
    Accelerator rocks! I didn't realize they had released new bits, so thanks for making me check them out again :)One thing I think would be cool is for them get Acelerator working under XNA. Having the ability to do some serious processing on 360s would be neat. Of course we'll need a better way to get data to/from the 360 for processing, but details :)