Posted By: Charles | Aug 25th, 2006 @ 9:58 AM | 51,319 Views | 32 Comments
David Tarditi and Sidd Puri are doing some really cool work over in Microsoft Research. They've built a development technology, Accelerator, that  "provides a high-level data-parallel programming model as a library that is available for all .Net programming languages. The library translates the data-parallel operations on-the-fly to optimized GPU pixel shader code and API calls. Future versions will target multi-core cpus." Watch this video!

Download the Accelerator library and SDK!

Check out the Accelerator Wiki for more info.
Media Downloads:
Rating:
0
0
ktr
ktr
two sides to everything

watching it now..

12:35 - hahaha I love Charles
CRPietschmann
CRPietschmann
Chris Pietschmann

Awesome! I'll have to download it and check it out.

I like it. I was doing something similar with this 2 years ago, except mine you had to write the PS code by hand so it wasn't nearly as cool.

jvervoorn
jvervoorn
Caption
This is pretty cool, it looks like you guys are thinking ahead some.

I am trobled by how many times charles is the one trying to introduce groups to what other people are working on. It would be great to improve the communcation that should be going on while at the same time cutting down on the e-mail that is overwhelming you all there.

If you can improve comunication and get all these ideas to work together I see a real future with some of the things that may be possible in the next 10-15 year range. Also if microsoft can learn from it's mistakes and be more agile, have more ctp (customer technology preview) and take the feedback from that maybe microsoft can get it great in the second version instead of the third.
Andrew Davey
Andrew Davey
www.aboutcode.net
Defered evalution is definately a very interesting subject.  The work being done with LINQ is along the same lines. The compiler generates an expression tree that can then be passed around as data and transformed before evaluation. 
I wonder if its possible to take expression trees generated by LINQ and transform them into parallelisable computations. I suppose it really comes down to "map" and "reduce" functions in the end. Whilst you are kind of limited to pure arithmetic operations in the GPU, the future of multi-cores certainly could widen the scope.

Of course, I can't talk about abstract syntax trees without once again mentioning syntactic macros Wink It would be interesting to look at using syntactic macros to perform staged computation. I'm sure some of the parallelising of operations can be decided at compile time. That could make for even more performance increases since you can take some weight off the JIT compiler. Big Smile

Anyway... Awesome work and great video Charles.
BTW: Charles, you need to get a secondary job at MSR being "social glue"! We need to get all these academics down to the bar to mix their ideas.
Fascinating stuff. The potential for this is truly astounding!
How does programming with this library compare with other concurrent languages such as Occam-pi?

BTW Is that a pyramid of 14 patent cubes in the background??

- Jonathan

Thanks for the video. It should be noted, however, that one can create an array "computation" type library today. It is merely a matter of syntax and abstracting away the loops from the end user of your functions. Whether it would take advantage of a multi-core system setup is another thing entirely, so good work here.

The brief GPU discussion/explanation was also interesting. Additionally, I'm curious, however, as to what the conversion routines for data parallel arrays and regular arrays look like. Perhaps I should check out the SDK? Is much code shared in the SDK or is it pretty much a "black box" type approach?

Andrew Davey
Andrew Davey
www.aboutcode.net
Even if the SDK has no source it's managed code, so you can get Reflector in there and have a snoop around Tongue Out
Microsoft Communities