Welcome to MSDN Blogs Sign in | Join | Help

News

  • These postings are provided "AS IS" with no warranties and confer no rights. All code and tools presented are done so under the Microsoft Public License.
Released! Parallel Extensions to the .NET Framework June 2008 CTP

We’re very excited to announce our 2nd Community Technology Preview (CTP) for Parallel Extensions to the .NET Framework 3.5.  We released the Dec07 CTP on 11/29/2007, and from that we have received a lot of feedback from the community and customers.  While you have been using our bits, participating in our forums, sharing your insights and experiences, and following along on our blog, we have been hard at work preparing this CTP, incorporating your feedback into it.

 

Download the Parallel Extensions June 08 CTP (UPDATE 11/30/09: The June 2008 CTP is no longer available.  For an unsupported release of Parallel Extensions compatible with the .NET Framework 3.5 SP1, please see the Reactive Extensions release on DevLabs at http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx.)

 

There are some large changes in there that should provide a lot of benefits.  First off, we have begun to add the third major API component, the Coordination Data Structures, to the technology package.  As we build PLINQ and the Task Parallel Library, we use a lot of components under the covers to handle synchronization, coordination, and scale to contain data reads and writes from multiple procs.  We see these as widely useful, so we’re sharing them here with you.

 

We incorporated a brand-new user-mode, work-stealing, run-time scheduler (those modifiers essentially mean that it’s light, fast, and flexible) to the system, completely over-hauling the infrastructure.  This is a very important piece of technology for making the most of the resources available on your machines.  This has been in research and incubation for a long time, and it will allow for improved performance and future-proof scalability (e.g. cache consciousness) as we stabilize and improve it.  Expect to hear us talk a lot more about this in the future.  There are still likely to be some growing pains in this release, so please pass along that feedback and expect this to improve.  Additionally, The Task Parallel Library is now built directly on top of this scheduler.  And to add to the excitement, PLINQ is in the first stages of building on top of the Task Parallel Library. 

 

There are a number of other changes that we have made, some notables include: new ordering implementation for PLINQ, change of Parallel.Do to Parallel.Invoke, continuations in Tasks.  A much more detailed list of updates is coming soon. 

 

Subscribe to the feed or come back to this blog often as we release a flurry of posts regarding the new and exciting work surrounding this CTP.

Posted: Monday, June 02, 2008 10:00 AM by essey

Comments

Brian Strelioff said:

Download link does not work -- "We’re sorry, but we were unable to service your request. You may wish to choose from the links below for information about Microsoft products and services."

# June 2, 2008 6:40 AM

Daniel Moth said:

Parallel Extensions June CTP is out

# June 2, 2008 7:15 AM

toub said:

Thanks for the interest!  We're very excited about this CTP... apparently a little too excited ;) This post was supposed to go live today at 10am PST, rather than 2am PST.  The bits should be available for download in a few hours; please come back then, and let us know what you think.

# June 2, 2008 9:30 AM

Mike Strobel said:

This is great news--I've been using the Parallel Extensions to parallelize a game engine, and I'm eager to try out the new release!

# June 2, 2008 9:34 AM

Matt Valerio said:

Nice! I'm also interested in trying this out, but the download link doesn't work (same as what BKStrelioff said above).

# June 2, 2008 10:05 AM

Rafael said:

4:07pm, here in Scotland and the link does not work!!, at least not yet...

# June 2, 2008 11:08 AM

Rafael said:

Now, the link is working!! Great job!

Begining to test...

Regards

# June 2, 2008 11:33 AM

Just code - Tamir Khason said:

Today, Parallel Programming team released 2nd CTP for Parallel Extensions to .NET Framework 3.5. Major

# June 2, 2008 1:32 PM

Just Code - Tamir Khason said:

Today, Parallel Programming team released 2nd CTP for Parallel Extensions to .NET Framework 3.5. Major

# June 2, 2008 1:32 PM

It's Spann, not spam said:

Download the Parallel Extensions June 2008 CTP Parallel Extensions simplifies development by providing

# June 2, 2008 2:32 PM

DotNetKicks.com said:

You've been kicked (a good thing) - Trackback from DotNetKicks.com

# June 2, 2008 3:59 PM

aL said:

nifty :)

btw do you know what happend to the accelerator team? they guys that used the gpu to do general purpose computing?

it would be awsome to see someting like that in plinq :)

# June 2, 2008 7:24 PM

Community and Influencers Blog said:

At Microsoft we are always looking to get feedback about our products and technologies from communities

# June 2, 2008 7:45 PM

Nick MacKechnie said:

Hi All, Parallel Extensions simplifies development by providing library-based support for introducing

# June 2, 2008 9:01 PM

bkchung's WebLog said:

Parallel Programming with .NET : Released! Parallel Extensions to the .NET Framework June 2008 CTP .NET

# June 3, 2008 2:01 AM

Марат Бакиров [MS] said:

Вышел второй CTP для Parallel Extensions - библиотеки позволяющей облегчить напи

# June 3, 2008 7:27 AM

Public Sector Developer Weblog said:

Free performance lunch is over. During the past few decades we witnessed continuous growth of single

# June 3, 2008 12:17 PM

Me about things... said:

On top of Bill Gates announcements at the Microsoft Tech·Ed North America 2008 Developers conference,

# June 3, 2008 1:34 PM

Visual Studio Hacks said:

My latest in a series of the weekly, or more often, summary of interesting links I come across related to Visual Studio. The June 2008 CTP of the Parallel Extensions to the .NET Framework has been released. VSX Team announced the VSX Developer Conference

# June 4, 2008 11:16 AM

Paolo Pialorsi said:

Le Parallel Extensions per .NET sono sicuramente uno degli argomenti più caldi del periodo. Se ne

# June 4, 2008 3:50 PM

Johan Lindfors said:

Under hela vårens lanseringsroadshow så har jag och Robert visat hur Parallel Extensions som

# June 4, 2008 4:27 PM

Parallel Programming with .NET said:

The June 2008 Community Technology Preview (CTP) of Parallel Extensions to the .NET Framework was released

# June 5, 2008 1:50 AM

Mike Taulty's Blog said:

I watched the TechEd (US Developers) Keynote just yesterday. Tech·Ed NA Developers Keynote delivered...

# June 5, 2008 11:05 AM

Pierrick's Blog said:

l'equipe PFX, vient d'annoncer la disponibilité de la deuxième CTP du framework parallèle pour .NET blogs

# June 10, 2008 4:21 AM

Rexiology@MSDN said:

at 06/02, Microsoft just released the latest CTP of Parallel Extension to .NET 3.5 (as PFX later), available

# June 19, 2008 8:59 AM

Rexiology::Work said:

crosspost from http://blogs.msdn.com/rextang at 06/02, Microsoft just released the latest CTP of Parallel

# June 19, 2008 9:00 AM

Casper Hornstrup said:

When I run the following test in NUnit, I get this exception when NUnit has finished running all tests:

Unhandled Exception:Unhandled Exception:  System.AppDomainUnloadedException: The

application domain in which the thread was running has been unloaded.System.App

DomainUnloadedException: The application domain in which the thread was running

has been unloaded.

The program works as expected when run as a console application. Is there a workaround?

using System;

using System.Threading;

using NUnit.Framework;

namespace Tests

{

   [TestFixture]

   public class ParallelExtensionsTest

   {

       [Test]

       public void FirstTest()

       {

           Parallel.Invoke(

               () => A(),

               () => B());

       }

       private static void A()

       {

           Console.WriteLine("A");

       }

       private static void B()

       {

           Console.WriteLine("B");

       }

   }

}

# June 25, 2008 7:58 AM

Alex Martsynkevich said:

It looks like the exception Casper indicated above happens whenever parallel extensions were used from app domain which later got unloaded. Here's a simple example to replicate this:

using System;

using System.Reflection;

using System.Threading;

public class Program : MarshalByRefObject

{

   private static void Main()

   {

       AppDomain appDomain = AppDomain.CreateDomain("Moo");

       var p = (Program) appDomain.CreateInstanceAndUnwrap(

                             Assembly.GetExecutingAssembly().FullName,

                             "Program");

       p.ParallelTest();

       AppDomain.Unload(appDomain);

   }

   public void ParallelTest()

   {

       Parallel.Invoke(() => Console.WriteLine("Leet!"));

   }

}

Any ideas how to avoid this?

# July 3, 2008 1:44 PM

Casper Hornstrup said:

I found another problem. After the parallel operations are performed, the Parallel Extensions library does hog the CPUs. Even for my simple test program below, it uses up to about 1/3 of my 4 Xeon cores long after the operations are performed. It doesn't seem to ever stop. The CPU load is about evenly distributed accross all cores. Both Parallel.For and Parallel.ForEach has this problem. My OS is Windows Server 2003. Is there a fix or workaround available?

using System;

using System.Threading;

namespace ParallelExtensionsConsole

{

   public class Program

   {

       static void Main(string[] args)

       {

           Console.WriteLine("Call Parallel.For (y/n)?");

           var key = Console.ReadKey();

           Console.WriteLine();

           if (key.KeyChar == 'y')

           {

               Parallel.For(0, 10, i =>

                                       {

                                           Console.WriteLine(i);

                                       });

           }

           Console.WriteLine("Press any key to continue...");

           Console.ReadLine();

       }

   }

}

# July 18, 2008 4:02 PM

toub said:

re: AppDomain

Yes, the scheduler in the CTP doesn't handle thread aborts very well, which frequently causes the process to crash when a live scheduler exists in a domain being shutdown (since AppDomain shut down causes thread aborts on all threads with stack frames in that domain).  We're working to harden this for a future release.  The work around is to ensure that any schedulers in the domain are disposed of and shutdown before the domain is shut down; unfortunately, since by design the default TaskManager, the workaround requires always explicitly using a new TaskManager instance, so as to avoid lazily-initializing the default TaskManager instance.

re: Another problem

Yes, thanks for reporting it.  This is a known issue with how the scheduler searches for work; there's a bug that causes it to sometimes get stuck in a polling loop, which manifests as the CPU usage you're observing... definitely being addressed for a future release.

# July 19, 2008 7:36 PM

ltakolhgoi said:

# August 13, 2008 10:01 PM

Bill Hally said:

Re: The app domain "workaround" - this doesn't work. I used Reflector to take a look at the assembly, and the default TaskManager is not lazily initialized, so you can't create a TaskManager instance without also creating the default one.

However, for NUnit you can work around this by copying the NUnit console exe and the various assemblies it needs into the same directory as the assembly containing the tests you wish to run, then specify  /domain:None when you run it.

# February 12, 2009 4:39 PM

Garth Roxburgh-Kidd said:

I'm having trouble testing PLINQ code or using PLINQ to make parametric tests run faster. NUnit consistently throws AppDomainUnloadedException after the tests. I've tried many workarounds suggested in this thread and elsewhere, to no avail.

What's happened in the last 14 months to make AppDomainUnloadedException easier to avoid, diagnose, and — ideally — prevent?

Yours,

Garth.

# August 27, 2009 6:18 AM

essey said:

@Garth - Thanks for the comments.  We have spent nearly a whole cycle of development since this CTP.  We have done a lot of work around the reliability of parallel extensions including exception handling in AppDomain unload cases.  Please try this out on Beta 1 of the .NET Framework 4 to see if this issue persists.  Additionally, we have taken a few more fixes in AppDomain unload since Beta 1, and they should be available in an upcoming release of the Framework.  

You can download Beta 1 here:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ee2118cc-51cd-46ad-ab17-af6fff7538c9

# August 27, 2009 6:03 PM

Jason said:

"Download the Parallel Extensions June 08 CTP" link is broken.

# November 26, 2009 8:52 AM

toub said:

The June 2008 CTP is no longer available.  Parallel Extensions is now part of the .NET Framework 4.  If you do want an experimental release that works with .NET 3.5, you can use the bits that are part of the Reactive Extensions to .NET release on DevLabs at http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx.

# November 30, 2009 9:01 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker