Parallel Extensions to the .NET FX CTP
The shift to multi- and many-core processors that is currently underway presents an exciting opportunity for everyone in the software industry. With an expected increase of 10 to 100 times today’s compute processing power, the opportunities to deliver powerful and immersive new user experiences and business value are just awesome.
Today we released an early preview of the Parallel Extensions to the .NET Framework technology, available for download on MSDN. This release contains new APIs to make programming on the .NET Framework simpler as well as supporting documentation and samples.
Parallel Extensions runs on .NET FX 3.5, and relies on features available in C# 3.0 and VB 9.0 and includes:
- Imperative data and task parallelism APIs, including parallel for and foreach loops, to make the transition from sequential to parallel programs simpler.
- Declarative data parallelism in the form of a data parallel implementation of LINQ-to-Objects. This allows you to run LINQ queries on multiple processors.
- First class tasks that can be used to schedule, wait on, and cancel parallel work.
- New concurrency runtime used across the library to enable lightweight tasks and effectively map and balance the concurrency expressed in code to available concurrent resources on the execution platform.
- Several great examples of how to use parallelism in real world problems to obtain impressive speedups, including a raytracer, Sudoku puzzle generator, and other simple puzzle solvers and smaller samples.
Along with the Parallel Extensions release, we have also launched a new MSDN dev center dedicated to concurrent programming. It has a collection of whitepapers (including a whitepaper that describes the broader vision for parallel computing at Microsoft) and will be used to announce and house future developments in the parallel computing space.
Our work on concurrent programming is another great example of close, ongoing collaboration between product teams and Microsoft Research. Although we understand the shift to parallel computing is a gradual road ahead for our whole industry, we are excited by the prospect and believe that the Parallel Extensions library is a large step in the right direction.
Looking forward to hearing your feedback as you start getting your feet wet in this space.
Namaste!
Comments
Anonymous
November 28, 2007
Soma, the dev center link is dead. WM_FYI -thomas woelferAnonymous
November 28, 2007
the download link also.Anonymous
November 28, 2007
links do not workAnonymous
November 28, 2007
I just started foaming at the mouth to work with PLINQ and the link is dead as the other commented. I feel as sad as a 10 year old on christmas who opened a present thinking it was an XBox360.. to find underwear.Anonymous
November 28, 2007
Looks like someone forgot to turn a switch on, or this post has been sent too son...Anonymous
November 29, 2007
You've been kicked (a good thing) - Trackback from DotNetKicks.comAnonymous
November 29, 2007
Sorry for the confusion, the links are now live.Anonymous
November 29, 2007
The Parallel Computing Platform team has launched a new Parallel Computing Dev Center along with ourAnonymous
November 29, 2007
The Parallel Computing Platform team has launched a new Parallel Computing Dev Center along with ourAnonymous
November 29, 2007
The comment has been removedAnonymous
November 29, 2007
The comment has been removedAnonymous
November 29, 2007
.NET FX CTP could be really useful! Hopefully, this won't automagically turn piggy code into code that is 10 or 100 times more piggy. I really hope you guys consider incorporating some sort of higher level heuristics into the IDE (or runtime), where something like auto-profiling is built-in and developers can keep a handle on slow code that now uses more cores (IMHO if you write a Piggy Code Enhancer, this severely defeats some of multi-core and many-core main benefits).Anonymous
November 29, 2007
The comment has been removedAnonymous
November 29, 2007
Parallel Extensions to the .NET FX CTP(Somasegar's WebLog)より 前から少し話に出ていた PLINQ(Parallel LINQ) の初の CTP が公開になっていますね。Anonymous
November 29, 2007
Somasegar's WebLog : Parallel Extensions to the .NET FX CTP Joe Duffy's Weblog - Parallel ExtensionsAnonymous
November 29, 2007
Somasegar's WebLog : Parallel Extensions to the .NET FX CTP Joe Duffy's Weblog - Parallel ExtensionsAnonymous
November 29, 2007
This is just awesome, I've been waiting to play with these APIs :)Anonymous
November 29, 2007
Time for another weekly round-up of developer news that focuses on .NET, agile and general developmentAnonymous
November 29, 2007
Hi Somasegar (and Veeral, Joe). I was really excited about Accelerator too, but kinda disappointed with how it actually worked, I thought the solution was too clunky. In any case, I have an open source effort for a LINQ-to-GPU going on here http://brahma.ananthonline.net. You may find this approach interesting. -AnanthAnonymous
November 29, 2007
@Ananth, I had a quick peek at your site, you have taken an interesting approach with LINQ. I will download your solution over the weekend to tinker with. I admit accelerator is a bit rough but the idea is there which is very important. @Joe Is MS going to develop any good debugging tools for multicore programming similar to what is available on the MAC OS X with its default IDE shipping with the OS. From memory I maybe incorrect here but I do recall their debugger allowed you to trace processes running on individual cores etc.Anonymous
November 30, 2007
The comment has been removedAnonymous
November 30, 2007
Nice.. one of the features that i can't wait to use.. RegardsAnonymous
November 30, 2007
pirklk - The devcenter link is now linked to in the post above.Anonymous
November 30, 2007
The CLR Team has been working with the Parallel Computing Platform Team for the past year on some innovativeAnonymous
November 30, 2007
The CLR Team has been working with the Parallel Computing Platform Team for the past year on some innovativeAnonymous
November 30, 2007
I have a question. Does ParallelFX offer a "task stealing" mechanism such as was implemented in CILK and is implemented in Threading Building Blocks? I didn't see anything about this in my initial perusal of the documentation. If ParallelFX doesn't currently have a task stealing mechanism, is it planned to introduce this later on? Without such a mechanism, it would seem like cases where particular tasks take much longer than other tasks (for example, problems where the computation ends when a limit condition is reached) will leave processor cores unnecessarily idle, reducing scalability. If ParallelFX does currently offer task stealing, can you point us to any documentation on how it works?Anonymous
November 30, 2007
Introduction November 29: Soma has announced a CTP release of the Parallel Extensions to the .NET frameworkAnonymous
December 01, 2007
Microsoft Parallel Extensions to .NET Framework 3.5, December 2007 Community Technology Previewが公開されています。Anonymous
December 01, 2007
MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasisAnonymous
December 01, 2007
MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasisAnonymous
December 01, 2007
MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasisAnonymous
December 01, 2007
MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasisAnonymous
December 01, 2007
Collected from Mahesh Kumar http://cyberiafreak.spaces.live.com/ I. 20 Ways to Come Up With Amazing IdeasAnonymous
December 03, 2007
Anyone have any luck viewing content in the .chm on the download page? I've got the index, but every page shows "Page cannot be displayed" errorsAnonymous
December 03, 2007
Hi Kevin, Yes, the scheduler that underlies the whole library does in fact use dynamic work stealing, a la MIT CILK, to ensure good load balance and scalable queue management. Please see this article on MSDN for a bit more detail on this: http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/. Thanks, ---joe duffyAnonymous
December 03, 2007
Keith, You have to first save the CHM file to disk, and then open it from there. This seems to be a limitation with CHM files (or at least the way we have generated ours). Hope that works for you, ---joe duffyAnonymous
December 04, 2007
Joe, that's how I'm trying to read it. No content even when I have it saved to my desktop. Maybe it's that it's using an ancient-looking help viewer? HHA.dll is 4.74 & the others are 5.02, but I didn't catch anything in the requirements about a particular version of the help viewerAnonymous
December 04, 2007
Keith, Thank you for reporting this CHM issue. There are occassionally problems with copying a CHM to Windows Vista due to the heightened security measures regarding Web pages. There's a step in that process that was possible to compromise, so Vista takes the safest approach for you, which is to not render any content. To fix this, we will wrap it in a .zip file and repost. For the time being, you can download and install the MSI to get the exact same CHM without the security issue. Thanks, Ed Essey - MSFTAnonymous
December 04, 2007
Microsoft has released an early preview of ParallelFX (Parallel Extensions to the .Net Framework) , aAnonymous
December 05, 2007
Ed, I'm seeing this on an XP machine, not Vista. Also, I'm on a corporate workstation that disallows installations (I have yet to run an installer from MS that does not require admin rights). Makes software development quite a pain, I know, but the days of the "XCopy Install" never quite made it, and the reality is that lots of companies turn off admin access to its employees.Anonymous
December 05, 2007
No me cansaré de repetirlo, esta gente de Microsoft no para. Ahora le llega el turno a Microsoft ParallelAnonymous
December 06, 2007
Just on a whim, I tried downloading it again this morning, and all the content is coming through fine now!Anonymous
December 08, 2007
Z chwilą kiedy zostałem zaproszony na konferencję Intela na temat procesorów wielordzeniowych, śledzęAnonymous
December 08, 2007
Z chwilą kiedy zostałem zaproszony na konferencję Intela na temat procesorów wielordzeniowych, śledzęAnonymous
December 09, 2007
For those of you having problems reading the help file - try clicking 'Unblock' on the general tab on the file's property pages. This worked for me.Anonymous
December 18, 2007
Nedávno se objevilo CTP paralelních extenzí pro .NET Framework 3.5 ("oficiální" oznámení např. zde ),Anonymous
December 18, 2007
A couple of weeks ago saw the release of the CTP of the Parallel Extensions to the .NET Framework ( downloadAnonymous
December 18, 2007
A couple of weeks ago saw the release of the CTP of the Parallel Extensions to the .NET Framework ( downloadAnonymous
December 19, 2007
I’d prefer reading in my native language, because my knowledge of your languange is no so well. But it was interesting! Look for some my links:Anonymous
December 20, 2007
Don Syme's WebLog on F# and Other Research Projects has this post: A couple of weeks ago saw the releaseAnonymous
December 20, 2007
Don Syme's WebLog on F# and Other Research Projects has this post: A couple of weeks ago saw theAnonymous
December 20, 2007
Using Parallel Extensions from F# A couple of weeks ago saw the release of the CTP of the Parallel Extensions...Anonymous
December 20, 2007
I’d prefer reading in my native language, because my knowledge of your languange is no so well. But it was interesting! Look for some my links:Anonymous
December 27, 2007
Multi-threading just got a little bit easierAnonymous
December 30, 2007
2007 was another great year for software. Here are a few software releases that caught my eye and imaginationAnonymous
December 30, 2007
2007 was another great year for software. Here are a few software releases that caught my eye and imaginationAnonymous
January 29, 2008
I am not sure if this is a good place to ask this question (where is the good place?), but here it is. I am trying to translate some of the procedures I wrote to parallel. Let's assume I have following procedure to implement. I have a list of strings which need to be searched using regular expressions. The procedure returns after finding first matching string. If I use Parallel.For method to implement the procedure, it seems there can be some problems. List<string> SList = new List<string>(); Slist.add("aaa bbb ccc"); //many times Parallel.For(0, SList.Count, i => { bool found=SearchStringUsingRegularExpsessions(SList[i]); if (found) break; //obviously, it will not work }); If this Parallel.For does not preserve order of i parameter (it does not, right? And I mean the order of calling the delegate with i parameter, not the order in which the delegate finishes calculating), then it looks like all the strings may be searched before the match is found (worst case). Also I don't know (an elegant way) how to mimic "break" instruction, when there is a match and the procedure should break (and return if no matches were found previously in other threads - this also needs some kind of synchronisation). There is also this method (from help file) public static void ForEach<TSource, TLocal>( IEnumerable<TSource> source, Func<TLocal> threadLocalSelector, Action<TSource, int, ParallelState<TLocal>> body ) ... The body delegate is provided with the item from source being enumerated as well as with the index of the item as it was taken from the enumerable and a ParallelState<(Of <(TLocal>)>) instance which may be used to stop the loop before all iterations have completed. It may also be used to store per-thread data to avoid synchronization overhead in the loop body. It seems that this method adresses these problems (marked with **) and they can be solved without resorting to complicated synchronisation methods. So, does anybody have an idea how to deal elegantly with this all, or better yet, could anybody provide an example of using ForEach? (yes, I googled, to no effect, and examples do not help too).Anonymous
January 29, 2008
The comment has been removedAnonymous
January 31, 2008
The comment has been removedAnonymous
April 23, 2009
This is the first in a series of posts about the improvements we are making to the CLR thread pool forAnonymous
January 26, 2010
Hi Somasegar, The download link is being removed, can you help me with new link i will be great full. ThanksAnonymous
January 27, 2010
Hunain, Parallel Extensions are now part of the .NET Framework in .NET 4. You can download Beta 2 of .NET 4 from http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx. Polita Paulus Developer Division