Going Deep

Inside Parallel Extensions for .NET 2008 CTP Part 1

Download this episode

Download Video

Description

Parallel Extensions simplifies development by providing library-based support for introducing concurrency into applications written with any .NET language, including C# and Visual Basic. It includes the Task Parallel Library (TPL), which provides imperative data and task parallelism; Parallel LINQ (PLINQ), which provides declarative data parallelism; and all new Coordination Data Structures (CDS), which provide support for work coordination and managing shared state.

In addition to CDS, this upgrade provides several improvements, including a new scheduler that is more robust, efficient, and scalable. TPL also exposes new functionality, including methods for continuations. PLINQ now runs on top of TPL, clarifies order-preservation, and provides several new operators.

The June CTP works with the .NET Framework 3.5 as a simple, small-footprint installation that drops a single DLL, documentation, samples, and registers the DLL with Visual Studio 2008.

Here, we meet some of the key engineers of the Microsoft Parallel Computing Platform (which includes the Parallel Extensions for .NET...): Lead Developer Joe Duffy, Developer Huseyin Yildiz, Developer Igor Ostrovsky, Program Manager Stephen Toub and Program Manager Ed Essey.

We dig deeply into a lot of topics related to parallelism and conconcurency and how the new additions to the platform enable developers to exploit multi/many core processors in an elegant way.

Enjoy part 1. Part 2 is here.

Embed

Format

Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • Sureshs

       

    • Ben Hayat
      Where is Anders Hejlsberg?
    • Charles
      Anders does not work on this, specifically (besides some form of architectural and other high level guidance)......
      C
    • Charles
      We probably should not allow blank comments.....
      C
    • Johannes
      Was blank the first time I saw the comment too, but now it shows up fine... An Edit perhaps?

      Edit: Nope he didn't edit it... Now it's blank again?
    • joedu
      Anders was very instrumental in getting Parallel Extensions off the ground and designed right.  He's still involved regularly on hard design problems, but is a busy guy and works on a lot of things across the company.

      ---joe
    • Ben Hayat
      To Charles and Joe;

      Thanks for the reply. I'm sure Andres has left the Parallel Ext in good hands!

      ..Ben
    • aL_
      cool cool Smiley i like the lazyinit Alot Smiley no more

      public TheThing{
      get{
      if(thing_ == null)
       thing_ = new Thing();

      return thing_;
      }
      }

      for me Big Smile

      got  a question though, how does the tpl relate to the ccr? was the ccr more of a incubation project? or does tpl replace ccr?

      and another thing (nagging a bit here Smiley ) what happend to the accelerator project? Smiley (the gpu accelerated library) it seems it whould fit in very well in tpl Smiley and it was soo cool Big Smile love to hear more about that project and whats happening there Smiley

      ---edit---

      sort of got my question awsered at 45:xx but if more details could be had i'd be very very happy Smiley especially around the talk with the accelerator guys Smiley
    • Ed Essey
      Regarding the CCR, someone asked a question related to this on Soma's blog: http://blogs.msdn.com/somasegar/archive/2008/06/02/june-2008-ctp-parallel-extensions-to-the-net-fx.aspx

      ...and Alpa Agarwal, a colleague of mine answered:
      The Concurrency and Coordination Runtime (CCR) and the Task Parallel Library (TPL) are complementary technologies. TPL, which provides support for imperative data and task parallelism, is well suited for synchronous parallelism and patterns such as parallel loops. The Concurrency and Coordination Runtime is well suited for orchestrating many asynchronous components and handling asynchronous I/O in a clever manner. Though TPL and CCR may seem slightly redundant on the surface, we encourage you to try our CTP of Parallel Extensions to the .NET Framework and to provide us with feedback.
    • aL_
      oh, alright, thanks for the reply Smiley i will definitly try out this tpl ctp:)
      for me personally, it seemed that the ccr was cool, but still a bit cumbersome to use. it felt like i had to adjust most of my code to the ccr, not like the ccr was fitting in to my code.. if that makes sense Tongue Out

      anyhow, i dont feel that way about the tpl. the tpl feems more natural somehow Smiley so my question was more, "is the ccr really needed now that we (almost) have the tpl?"

      but i havent really delved that deep in either of the libraries so im sure there a are stories optimal for each library Smiley

      as a industrial developer though, i really like unification of these kinds of things and given the choise between the ccr and the tpl id go for the tpl  Smiley (although, beeing a nosy little bugger i'd probobly learn both) but if the goodness from ccr could be integraten into the tpl, that whould be even better Smiley but i guess thats waht you're working on now Smiley
    • aL_
      got another question.. might be a bit noobish but i can live with that Smiley
      how the heck do you control sync without locks? (the statement or mutexes)  that just seems impossible to me Smiley (its obviously not, but i just cant see it) how do you do that in straight up managed code? i'd love to see a deep dive into that.. Smiley
    • hillr
      Did you guys enable DRM on the high def WMV?  While I was viewing the HD WMV on Vista x86 SP1, mfpmp.exe (Media Foundation Protected Pipeline exe) consistently sucked down about 15% of my (single-core) CPU cycles.  Sad
    • littleguru
      Awesome interview. Thanks for sharing!
    • littleguru
      One question: Isn't calling the Task.Create method to create the task and then calling .ContinueWith on the task (to specify a delegate that is called when having finished the work) creating a racing condition? Or is it just that the delegate in continue with is just invoked when the task is finished. Means if the task is finished and another continue with is registered it is immediately invoked?
    • staceyw
      I agree the ccr is a bit different.  However, it is the pattern that is important and what makes that model powerful.
      However, reducing apis is also good when possible.  In that vain, I am thinking you could add a Port class in the TPL and use Linq to query the Port(s) and the linq query will replace current Selector model.  Then (I think) we could get best of both worlds and maintain similar programming model.  Wonder what Joe thinks on this idea.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.