Jaa


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 woelfer

  • Anonymous
    November 28, 2007
    the download link also.

  • Anonymous
    November 28, 2007
    links do not work

  • Anonymous
    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.com

  • Anonymous
    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 our

  • Anonymous
    November 29, 2007
    The Parallel Computing Platform team has launched a new Parallel Computing Dev Center along with our

  • Anonymous
    November 29, 2007
    The comment has been removed

  • Anonymous
    November 29, 2007
    The comment has been removed

  • Anonymous
    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 removed

  • Anonymous
    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 Extensions

  • Anonymous
    November 29, 2007
    Somasegar's WebLog : Parallel Extensions to the .NET FX CTP Joe Duffy's Weblog - Parallel Extensions

  • Anonymous
    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 development

  • Anonymous
    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. -Ananth

  • Anonymous
    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 removed

  • Anonymous
    November 30, 2007
    Nice.. one of the features that i can't wait to use.. Regards

  • Anonymous
    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 innovative

  • Anonymous
    November 30, 2007
    The CLR Team has been working with the Parallel Computing Platform Team for the past year on some innovative

  • Anonymous
    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 framework

  • Anonymous
    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] (emphasis

  • Anonymous
    December 01, 2007
    MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasis

  • Anonymous
    December 01, 2007
    MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasis

  • Anonymous
    December 01, 2007
    MSDN magazine October 2007 had a nice little gem tucked away in an article about Parallel LINQ [1] (emphasis

  • Anonymous
    December 01, 2007
    Collected from Mahesh Kumar http://cyberiafreak.spaces.live.com/ I. 20 Ways to Come Up With Amazing Ideas

  • Anonymous
    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" errors

  • Anonymous
    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 duffy

  • Anonymous
    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 duffy

  • Anonymous
    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 viewer

  • Anonymous
    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 - MSFT

  • Anonymous
    December 04, 2007
    Microsoft has released an early preview of ParallelFX (Parallel Extensions to the .Net Framework) , a

  • Anonymous
    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 Parallel

  • Anonymous
    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 ( download

  • Anonymous
    December 18, 2007
    A couple of weeks ago saw the release of the CTP of the Parallel Extensions to the .NET Framework ( download

  • Anonymous
    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 release

  • Anonymous
    December 20, 2007
    Don Syme's WebLog on F# and Other Research Projects has this post: A couple of weeks ago saw the

  • Anonymous
    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 easier

  • Anonymous
    December 30, 2007
    2007 was another great year for software. Here are a few software releases that caught my eye and imagination

  • Anonymous
    December 30, 2007
    2007 was another great year for software. Here are a few software releases that caught my eye and imagination

  • Anonymous
    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 removed

  • Anonymous
    January 31, 2008
    The comment has been removed

  • Anonymous
    April 23, 2009
    This is the first in a series of posts about the improvements we are making to the CLR thread pool for

  • Anonymous
    January 26, 2010
    Hi Somasegar, The download link is being removed, can you help me with new link i will be great full. Thanks

  • Anonymous
    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