<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Parallel Programming with .NET : Talks</title><link>http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx</link><description>Tags: Talks</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>PDC09 Parallelism Session Videos Now Available</title><link>http://blogs.msdn.com/pfxteam/archive/2009/11/21/9926691.aspx</link><pubDate>Sat, 21 Nov 2009 09:05:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9926691</guid><dc:creator>toub</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9926691.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9926691</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9926691</wfw:comment><description>&lt;p&gt;Attendees at PDC09 this past week were privy to quite a few sessions on parallel computing.&amp;#160; Now that the videos of these sessions are online, you can view them as well from the comfort of your own home.&amp;#160; Here are some of the key parallelism-related sessions from this past week:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT07.wmv"&gt;The State of Parallel Programming&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;Managed code in Visual Studio 2010&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT03.wmv"&gt;Manycore and .NET 4: A Match Made in Visual Studio 2010&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT21.wmv"&gt;PLINQ: LINQ, but Faster!&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT20.wmv"&gt;F# for Parallel and Asynchronous Programming&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Native code in Visual Studio 2010&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT19.wmv"&gt;C++ Forever: Interactive Applications in the Age of Manycore&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/SVR10.wmv"&gt;Lighting up Windows Server 2008 R2 Using the ConcRT on UMS&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/SVR18.wmv"&gt;Developing Applications for Scale-Up Servers Running Windows Server 2008 R2&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;HPC Server&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/SVR01.wmv"&gt;Accelerating Applications Using Windows HPC Server 2008&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Research and Incubation&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/VTL02.wmv"&gt;Axum: A .NET Language for Safe and Scalable Concurrency&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/VTL32.wmv"&gt;Concurrency Fuzzing &amp;amp; Data Races&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/SVR17.wmv"&gt;Data-Intensive Computing on Windows HPC Server with DryadLINQ&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/VTL04.wmv"&gt;Rx: Reactive Extensions for .NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT36.wmv"&gt;Future of Garbage Collection&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/wmvhigh/FT11.wmv"&gt;Future Directions for C# and Visual Basic&lt;/a&gt;&amp;#160;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9926691" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/ThreadPool/default.aspx">ThreadPool</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/HPC+Server/default.aspx">HPC Server</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Agents/default.aspx">Agents</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/.NET+4/default.aspx">.NET 4</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Dryad/default.aspx">Dryad</category></item><item><title>Scaling out PLINQ: DryadLINQ at PDC09 and Supercomputing09</title><link>http://blogs.msdn.com/pfxteam/archive/2009/11/11/9921066.aspx</link><pubDate>Wed, 11 Nov 2009 21:11:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9921066</guid><dc:creator>toub</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9921066.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9921066</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9921066</wfw:comment><description>&lt;p&gt;PLINQ enables developers to scale up computations in order to leverage the multiple cores available in modern hardware. For many problem domains, this is quite useful and sufficient. What happens, however, when a workload being processed is so big that even a manycore machine is insufficient to adequately handle the load? This can be the case with massively complex calculations. Moreover, in the age of “big data,” more and more we as an industry are encountering problems as we attempt to analyze and churn through data sets measured in terabytes and even petabytes.&lt;/p&gt;  &lt;p&gt;In such situations, one solution is to scale out, distributing the computation amongst multiple computers aggregated into a computing cluster. That’s the domain of HPC, High Performance Computing, for which Microsoft provides valuable support through Windows &lt;a href="http://www.microsoft.com/hpc/en/us/default.aspx"&gt;HPC Server&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For those of you attending &lt;a href="http://microsoftpdc.com/"&gt;PDC09&lt;/a&gt; or &lt;a href="http://sc09.supercomputing.org/"&gt;SC09&lt;/a&gt; next week, we’re excited that we’ll be showcasing &lt;a href="http://research.microsoft.com/en-us/projects/DryadLINQ/"&gt;DryadLINQ&lt;/a&gt;, a project from Microsoft Research that runs LINQ queries on an HPC Server cluster. Instead of just using an IEnumerable, DryadLINQ provides a PartitionedTable entity that represents data partitioned across the nodes of the cluster. You can create a PartitionedTable from any IEnumerable, or you can preload the data onto the cluster manually. When you write a LINQ expression on a PartitionedTable, that expression is parsed and shipped to the cluster, which executes the expression in a distributed fashion. The Dryad execution infrastructure running on HPC Server and targeted by DryadLINQ handles the communication amongst the cluster nodes, deals with data partitioning, ensures proper aggregation, and so forth. The cluster nodes themselves run PLINQ in order to fully utilize as many cores as are available in the machine in order to achieve maximum speedup locally. Results can be streamed back into your program, or you can have them saved back into another partitioned table on the cluster to be reused by a subsequent query or manually at a later time.&lt;/p&gt;  &lt;p&gt;Here’s an example of using DryadLINQ to implement the core of the PageRank algorithm:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public static IQueryable&amp;lt;Rank&amp;gt; Step(     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IQueryable&amp;lt;Page&amp;gt; pages, IQueryable&amp;lt;Rank&amp;gt; ranks)       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Join pages with ranks, and disperse updates.      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var updates = from page in pages       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; join rank in ranks on page.name equals rank.name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select page.Disperse(rank);       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Re-accumulate.      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return from list in updates       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; from rank in list       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group rank.rank by rank.name into g       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select new Rank(g.Key, g.Sum());       &lt;br /&gt;}      &lt;br /&gt;…      &lt;br /&gt;var pages = PartitionedTable.Get&amp;lt;Page&amp;gt;(“pages.pt”);      &lt;br /&gt;var ranks = pages.Select(page =&amp;gt; new Rank(page.name, 1.0));      &lt;br /&gt;ranks = Step(pages, ranks);      &lt;br /&gt;ranks.ToPartitionedTable&amp;lt;Rank&amp;gt;(“ranks.pt”);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As you can see, the actual algorithm is just a standard LINQ query and could run as well on a single machine (also in parallel if you used PLINQ’s AsParallel operator). However, as the data source is a PartitionedTable loaded from the cluster, this query will run now in a distributed fashion utilizing the remote environment, and all with very little additional effort.&lt;/p&gt;  &lt;p&gt;If you’ll be at PDC09, we encourage you to go to John Vert’s &lt;a href="http://microsoftpdc.com/Sessions/SVR17"&gt;presentation on DryadLINQ&lt;/a&gt; (currently scheduled in room 515A on Tuesday at 3:00 PM). If you’ll be attending SC09, come visit us at the Microsoft Exhibitor Booth for live demos, more details, and conversations about scenarios.&amp;#160; Dryad and DryadLINQ are currently research projects, and we’d love any feedback you may have.&lt;/p&gt;  &lt;p&gt;See you all soon!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9921066" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Dryad/default.aspx">Dryad</category></item><item><title>Attending PDC09? Meet with the Parallel Computing Platform team.</title><link>http://blogs.msdn.com/pfxteam/archive/2009/11/02/9916537.aspx</link><pubDate>Tue, 03 Nov 2009 02:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9916537</guid><dc:creator>toub</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9916537.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9916537</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9916537</wfw:comment><description>Are you attending PDC09?&amp;nbsp; Want to meet with members of the Parallel Computing Platform team?&amp;nbsp; See&amp;nbsp;&lt;A href="http://blogs.msdn.com/visualizeparallel/archive/2009/11/02/the-parallel-computing-platform-team-pcd-09.aspx"&gt;http://blogs.msdn.com/visualizeparallel/archive/2009/11/02/the-parallel-computing-platform-team-pcd-09.aspx&lt;/A&gt; for more details.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9916537" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category></item><item><title>Slides from Parallelism Tour</title><link>http://blogs.msdn.com/pfxteam/archive/2009/11/01/9916008.aspx</link><pubDate>Mon, 02 Nov 2009 02:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9916008</guid><dc:creator>toub</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9916008.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9916008</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9916008</wfw:comment><description>&lt;P&gt;Last week, I had the privilege of touring around Tennessee, Kentucky, Ohio, and Michigan, speaking about the new parallel computing support in Visual Studio 2010 and the .NET Framework 4.&amp;nbsp; Many folks I spoke with were interested in getting a copy of the slide deck I used, so I’ve attached it to this blog post.&amp;nbsp; Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9916008" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pfxteam/attachment/9916008.ashx" length="2231000" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/pfxteam/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Task+Parallel+Library/default.aspx">Task Parallel Library</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/ThreadPool/default.aspx">ThreadPool</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Coordination+Data+Structures/default.aspx">Coordination Data Structures</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/.NET+4/default.aspx">.NET 4</category></item><item><title>Parallel Computing at PDC09 and TechEd Europe 2009</title><link>http://blogs.msdn.com/pfxteam/archive/2009/10/16/9908290.aspx</link><pubDate>Fri, 16 Oct 2009 17:28:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9908290</guid><dc:creator>toub</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9908290.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9908290</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9908290</wfw:comment><description>&lt;p&gt;It’s fall, and that means conference season!&amp;#160; In November, members of the Parallel Computing Platform team will be descending upon both &lt;a href="http://microsoftpdc.com/"&gt;PDC09&lt;/a&gt; in Los Angeles and &lt;a href="http://www.microsoft.com/europe/teched/"&gt;TechEd Europe 2009&lt;/a&gt; in Berlin.&amp;#160; We’re extremely excited to see all of you there and to discuss the new support for parallel computing that’s coming in Visual Studio 2010, Visual C++ 10, and the .NET Framework 4.&amp;#160; Please find us and introduce yourselves… we’re looking forward to speaking with you.&lt;/p&gt;  &lt;p&gt;There are a bunch of cool sessions at both conferences having to do with parallel computing. Here’s a rundown of relevant announced sessions at the PDC:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="523"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/SVR30"&gt;A Computing Platform That Scales&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;See how Windows Server 2008 R2 represents the latest evolution of the Windows Server operating system and supports high-end hardware systems with large numbers of microprocessors.&amp;#160; Learn how new Non-Uniform Memory Access (NUMA) and User-Mode Scheduling (UMS) API's effectively enable application developers to &amp;quot;minimize contention and maximize locality&amp;quot; of system resources relative to thread execution contexts. See how these new platform capabilities are extended via libraries such as the C++ Concurrency Runtime and the .NET Parallel Extensions along with complementary tools support within Visual Studio 2010.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/VTL02"&gt;Axum: A .NET Language for Safe and Scalable Concurrency&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;Axum is an incubation project from Microsoft's Parallel Computing Platform that aims to validate a safe and productive parallel programming model for the .NET framework. It's a language that builds on the principles of isolation, agents, and message-passing to increase application safety, responsiveness, scalability and developer productivity. Come learn about Axum and other advanced concepts we are exploring including data flow networks, asynchronous methods, and protocol-based component interactions.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/SVR17"&gt;Data-Intensive Computing on Windows HPC Server with the DryadLINQ Framework&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;Come get an overview of the DryadLINQ features and runtime environment, and walk through some real-world examples of DryadLINQ programs based on the familiar declarative syntax of LINQ combined with the fault-tolerant distributed graph scheduling of the Dryad runtime. Hear how DryadLINQ provides a programming model and runtime for data-parallel programs running across large clusters and partitioned data sets.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/SVR10"&gt;Lighting up Windows Server 2008 R2 Using the ConcRT on UMS&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;See examples of how to use C++ and the new Concurrency Runtime (ConcRT) to take advantage of new technologies on Windows Server 2008 R2, such as the ability to scale beyond 64 cores and User-Mode Scheduling (UMS) of threads. Learn to write code that scales even in the face of complicated processor architectures, Non-Uniform Memory Access (NUMA), and many-cores. Hear how ConcRT provides mechanisms that allow you to naturally express affinity requirements and schedule work on appropriate nodes without thrashing the system.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/FT21"&gt;PLINQ: LINQ, but Faster!&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;Multi-core processors are everywhere! Parallel Language Integrated Query (PLINQ) in the Microsoft .NET Framework 4 offers a minimal-code solution to take advantage of this parallel hardware, providing an implementation of the .NET Standard Query Operators that uses parallel execution techniques underneath the simple LINQ programming to make applications run faster! Come for a deep dive into PLINQ via Microsoft Visual Studio 2010. See what it looks like from the perspective of LINQ developers, the debugging and profiling support, how it's implemented under the covers, and how to best incorporate it into your applications in order to reap the performance benefits of the manycore era.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/FT20"&gt;F# for Parallel and Asynchronous Programming&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;Concurrency is increasingly important for many applications. The shift to manycore brings abundant parallelism to the desktop. The Web, Microsoft Silverlight, and distributed systems increase the demand for asynchronous solutions. F#, a functional and object-oriented language for Microsoft .NET, adds many tools to make parallel and asynchronous programming both fun and easy. Come hear the core concepts of the F# language, and see how ideas like immutability, functional design, async workflows, agents, and more can be used to meet the challenges of today’s real-world applications.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/FT19"&gt;C++ Forever: Interactive Applications in the Age of Manycore&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;Developing concurrent applications is hard. Making them robust and responsive is even more challenging. The new asynchronous agents library and parallel debugging and profiling support in Microsoft Visual Studio 2010 simplify the situation, enabling you to develop I/O- and computationally-intensive applications that offload work from the UI and that make good use of available resources. Come for a deep dive into the power of actor-based and dataflow programming in Microsoft Visual C++ 2010. Learn how it can help you to write correct, efficient, and scalable applications.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/P09-17"&gt;The State of Parallel Programming&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;Parallel programming has been more difficult than it needs to be, perhaps because its tools have been treated as an “add-on” to serial programming. The objectives of composability and productivity demand something better. Come hear a relatively recent consensus view about what is needed for productive parallel programming, and why.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/P09-09"&gt;Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;The Microsoft .NET Framework 4 and Visual Studio 2010 include new technologies for expressing, debugging, and tuning parallelism in managed applications. Dive into key areas of support, including the new System.Threading.Tasks and System.Collections.Concurrent namespaces, cutting-edge concurrency views in the Visual Studio profiler, and debugger tool windows for analyzing the state of concurrent code.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="171"&gt;&lt;a href="http://microsoftpdc.com/Sessions/Patterns-of-Parallel-Programming"&gt;Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="350"&gt;The transition from single-core to multi-core technology is altering computing as we know it, enabling increased productivity, powerful energy-efficient performance, and leading-edge advanced computing experiences. Multi-core and HPC technologies are rapidly moving into the computing mainstream, allowing us to develop applications with improved performance, increased responsiveness, and reduced latency. This workshop is aimed at experienced software developers who are relatively new to the parallel computing space but expect it to become more important to their work. The workshop helps software developers understand the fundamental challenges of parallel computing, that span from the client to the cluster, such as synchronization, shared state, and moving from multi-core to multi-server. Learn how established software patterns can help developers building on both Microsoft’s Parallel Computing Platform—consisting of Task Parallel Library, PLINQ and Coordination Data Structures for .NET development, and Parallel Patterns Library and Concurrency Runtime for C++—and the HPC platform. The presenters describe the patterns in a bigger context, share their experience, and demonstrate implementations of these patterns in examples and demos. Learn how to add these patterns and new technologies to your toolbox.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;There are also several good and related sessions at TechEd Europe:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="522"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="172"&gt;F# for Parallel and Asynchronous Programming&lt;/td&gt;        &lt;td valign="top" width="348"&gt;Concurrency is increasingly important for many applications. The shift to manycore brings abundant parallelism to the desktop. The Web, Microsoft Silverlight, and distributed systems increase the demand for asynchronous solutions. F#, a functional and object-oriented language for Microsoft .NET, adds many tools to make parallel and asynchronous programming both fun and easy. This talk quickly reviews the core concepts of the F# language, and shows how ideas like immutability, functional design, async workflows, agents and more can be used to meet the challenges of today's real-world applications.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="172"&gt;Parallel Computing for Managed Developers&lt;/td&gt;        &lt;td valign="top" width="348"&gt;The microprocessor industry has undergone a major paradigm shift from increasing clock speed with each successive hardware revision to increasing core count and potential for parallelism. This change requires software developers to think parallel in order to extract performance and provide a competitive user experience. This session discusses the new programming model and tools technologies in Visual Studio 2010 and .NET 4.0, including the Task Parallel Library (TPL), Parallel Language Integrated Query (PLINQ), and Concurrent Data Structures (CDS). Developers will also gain a deeper understanding of the advantages of building applications using these task-centric parallel technologies and will see demonstrations of several important patterns for parallelization.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="172"&gt;Microsoft Visual C++ 2010: The &amp;quot;Fast&amp;quot; Way towards Modern Windows Applications&lt;/td&gt;        &lt;td valign="top" width="348"&gt;Do you love it when your application is the fastest on the block? Do you want to get the most of the Windows platform without re-writing your application and make it even faster in the process? Come and watch an action-packed demo and see how Visual Studio 2010 is a huge release for C++ developers! It's huge because it's focused on making it easier for ISVs who have many million lines of code. We have dramatically improved the scalability and productivity of the IDE and enabled MFC applications to seamlessly light up on Windows Vista and Windows 7. With the advent of highly parallel hardware, our adoption of the new C++ standard ushers in new ways to program scalable native applications.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="172"&gt;Building High Performance Parallel Software&lt;/td&gt;        &lt;td valign="top" width="348"&gt;In this session, attendees will learn how to parallelize their software to take advantage of the industry shift to multicore hardware architectures. Several key aspects of achieving performance through parallelization will be covered, including identifying opportunities for parallelism, high performance patterns and best practices for parallel coding, effectively employing the new Visual Studio 2010 programming models, and the use of the Visual Studio 2010 Profiler to identify bottlenecks and optimize applications. Examples will be shown in both managed and native code.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Both events should prove to be very exciting.&amp;#160; See you there.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908290" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Parallel Computing Presentations in Michigan, Ohio, Kentucky, and Tennessee</title><link>http://blogs.msdn.com/pfxteam/archive/2009/10/16/9908240.aspx</link><pubDate>Fri, 16 Oct 2009 15:49:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9908240</guid><dc:creator>toub</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9908240.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9908240</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9908240</wfw:comment><description>&lt;p&gt;In a week, I’m going to be traveling through Michigan, Ohio, Kentucky, and Tennessee, speaking about parallel computing, Visual Studio 2010, and .NET 4, primarily at corporations during the day and at user groups in the evenings.&lt;/p&gt;  &lt;p&gt;If you’re in the area and interested, please do attend, and I look forward to meeting you!&amp;#160; A list of events is available at &lt;a title="http://blogs.msdn.com/jennifer/archive/2009/10/14/stephen-toub-parallel-computing-tour.aspx" href="http://blogs.msdn.com/jennifer/archive/2009/10/14/stephen-toub-parallel-computing-tour.aspx"&gt;http://blogs.msdn.com/jennifer/archive/2009/10/14/stephen-toub-parallel-computing-tour.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;See you in a week!&lt;/p&gt;  &lt;p&gt;Stephen&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908240" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category></item><item><title>“Session-in-a-box” on Parallel Programming with .NET 4.0</title><link>http://blogs.msdn.com/pfxteam/archive/2009/02/11/9414137.aspx</link><pubDate>Thu, 12 Feb 2009 08:56:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9414137</guid><dc:creator>toub</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9414137.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9414137</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9414137</wfw:comment><description>&lt;p&gt;At PDC 2008 and TechEd EMEA 2008, Daniel Moth delivered several hit talks on parallel programming with the .NET Framework 4.0.&amp;#160; The videos of both of those talks are available online, and he’s since created a series of blog posts capturing the content from those sessions in a way that should make it easy for others to re-present the content.&amp;#160; Definitely worth a look: &lt;a title="http://www.danielmoth.com/Blog/2009/02/give-session-on-parallel-programming-or.html" href="http://www.danielmoth.com/Blog/2009/02/give-session-on-parallel-programming-or.html"&gt;http://www.danielmoth.com/Blog/2009/02/give-session-on-parallel-programming-or.html&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thanks, Daniel!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9414137" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category></item><item><title>Parallelism Videos Galore</title><link>http://blogs.msdn.com/pfxteam/archive/2008/11/18/9117413.aspx</link><pubDate>Tue, 18 Nov 2008 11:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9117413</guid><dc:creator>toub</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9117413.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9117413</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9117413</wfw:comment><description>&lt;P&gt;It's been a hectic and exciting few weeks, and we on the &lt;A href="http://msdn.com/concurrency" mce_href="http://msdn.com/concurrency"&gt;Parallel Computing Platform&lt;/A&gt; team have been having a great time talking with customers all over the world, at the PDC, at TechEd EMEA, at DevConnections, through Channel 9, and more.&amp;nbsp; A lot of the resulting material is now available online for viewing, so do check it out if you're interested.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PDC 2008 videos&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Parallel Programming for Managed Developers with the Next Version of Microsoft Visual Studio" href="http://channel9.msdn.com/pdc2008/TL26/" mce_href="http://channel9.msdn.com/pdc2008/TL26/"&gt;Parallel Programming for Managed Developers with the Next Version of Microsoft Visual Studio&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Parallel Programming for C++ Developers in the Next Version of Microsoft Visual Studio" href="http://channel9.msdn.com/pdc2008/TL25/" mce_href="http://channel9.msdn.com/pdc2008/TL25/"&gt;Parallel Programming for C++ Developers in the Next Version of Microsoft Visual Studio&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Microsoft Visual Studio- Bringing out the Best in Multicore Systems" href="http://channel9.msdn.com/pdc2008/TL19/" mce_href="http://channel9.msdn.com/pdc2008/TL19/"&gt;Microsoft Visual Studio: Bringing out the Best in Multicore Systems&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Concurrency Runtime Deep Dive- How to Harvest Multicore Computing Resources" href="http://channel9.msdn.com/pdc2008/TL22/" mce_href="http://channel9.msdn.com/pdc2008/TL22/"&gt;Concurrency Runtime Deep Dive: How to Harvest Multicore Computing Resources&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Parallel Symposium- Addressing the Hard Problems with Concurrency" href="http://channel9.msdn.com/pdc2008/SYMP01/" mce_href="http://channel9.msdn.com/pdc2008/SYMP01/"&gt;Parallel Symposium: Addressing the Hard Problems with Concurrency&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Parallel Symposium- Application Opportunities and Architectures" href="http://channel9.msdn.com/pdc2008/SYMP02/" mce_href="http://channel9.msdn.com/pdc2008/SYMP02/"&gt;Parallel Symposium: Application Opportunities and Architectures&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Parallel Symposium- Future of Parallel Computing" href="http://channel9.msdn.com/pdc2008/SYMP03/" mce_href="http://channel9.msdn.com/pdc2008/SYMP03/"&gt;Parallel Symposium: Future of Parallel Computing&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Research- Concurrency Analysis Platform and Tools for Finding Concurrency Bugs" href="http://channel9.msdn.com/pdc2008/TL58/" mce_href="http://channel9.msdn.com/pdc2008/TL58/"&gt;Research: Concurrency Analysis Platform and Tools for Finding Concurrency Bugs&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="The Concurrency and Coordination Runtime and Decentralized Software Services Toolkit" href="http://channel9.msdn.com/pdc2008/TL55/" mce_href="http://channel9.msdn.com/pdc2008/TL55/"&gt;The Concurrency and Coordination Runtime and Decentralized Software Services Toolkit&lt;/A&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Channel 9: Visual Studio 2010 and .NET Framework 4.0 Week&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Using the Parallel Extensions to the .NET Framework" href="http://channel9.msdn.com/posts/VisualStudio/Using-the-Parallel-Extensions-to-the-NET-Framework/" mce_href="http://channel9.msdn.com/posts/VisualStudio/Using-the-Parallel-Extensions-to-the-NET-Framework/"&gt;Using the Parallel Extensions to the .NET Framework&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Native Parallelism with the Parallel Patterns Library" href="http://channel9.msdn.com/posts/VisualStudio/Native-Parallelism-with-the-Parallel-Patterns-Library/" mce_href="http://channel9.msdn.com/posts/VisualStudio/Native-Parallelism-with-the-Parallel-Patterns-Library/"&gt;Native Parallelism with the Parallel Patterns Library&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Debugging Parallel Applications with Visual Studio 2010" href="http://channel9.msdn.com/posts/VisualStudio/Debugging-Parallel-Applications-with-Visual-Studio-2010/" mce_href="http://channel9.msdn.com/posts/VisualStudio/Debugging-Parallel-Applications-with-Visual-Studio-2010/"&gt;Debugging Parallel Applications with Visual Studio 2010&lt;/A&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;TechEd EMEA 2008&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/emea/teched2008/developer/default.aspx" mce_href="http://www.microsoft.com/emea/teched2008/developer/default.aspx"&gt;Parallel Programming for Managed developers with Visual Studio 2010 and .NET Framework 4.0&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.youtube.com/watch?v=LCO9m8eAv6A" mce_href="http://www.youtube.com/watch?v=LCO9m8eAv6A"&gt;Tech chat with Microsoft's parallel guru Steve Teixeira&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Why we Need the Task-Based Programming Model Introduced in .NET 4" href="http://mfile.akamai.com/14853/wmv/microsofttec.download.akamai.com/14853/TechEdOnline/Videos/443_low.asx" mce_href="http://mfile.akamai.com/14853/wmv/microsofttec.download.akamai.com/14853/TechEdOnline/Videos/443_low.asx"&gt;Why we Need the Task-Based Programming Model Introduced in .NET 4&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="The Inexorable Drive to Many-Core Processors" href="http://mfile.akamai.com/14853/wmv/microsofttec.download.akamai.com/14853/TechEdOnline/Videos/08_NA_Dev_techtalk_39_low.asx" mce_href="http://mfile.akamai.com/14853/wmv/microsofttec.download.akamai.com/14853/TechEdOnline/Videos/08_NA_Dev_techtalk_39_low.asx"&gt;The Inexorable Drive to Many-Core Processors&lt;/A&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Other (OnMicrosoft, University of Washington Colloquium, ...)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Concurrent Programming on Windows" href="http://podcastmastery.podango.com/podcast_episode/2415/97060/OnMicrosoft_video/Concurrent_Programming_on_Windows" mce_href="http://podcastmastery.podango.com/podcast_episode/2415/97060/OnMicrosoft_video/Concurrent_Programming_on_Windows"&gt;Concurrent Programming on Windows&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Visual Studio 2010 Part 1 of 2- Support for Parallelism" href="http://podcastmastery.podango.com/podcast_episode/2415/97058/OnMicrosoft_video/Visual_Studio_2010_Part_1_of_2_Support_for_Parallelism#97058" mce_href="http://podcastmastery.podango.com/podcast_episode/2415/97058/OnMicrosoft_video/Visual_Studio_2010_Part_1_of_2_Support_for_Parallelism#97058"&gt;Visual Studio 2010 Part 1 of 2- Support for Parallelism&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Visual Studio 2010 Part 1 of 2- Support for Parallelism" href="http://podcastmastery.podango.com/podcast_episode/2415/97058/OnMicrosoft_video/Visual_Studio_2010_Part_1_of_2_Support_for_Parallelism#97058" mce_href="http://podcastmastery.podango.com/podcast_episode/2415/97058/OnMicrosoft_video/Visual_Studio_2010_Part_1_of_2_Support_for_Parallelism#97058"&gt;Visual Studio 2010 Part 1 of 2- Support for Parallelism&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://norfolk.cs.washington.edu/htbin-post/unrestricted/colloq/details.cgi?id=768" mce_href="http://norfolk.cs.washington.edu/htbin-post/unrestricted/colloq/details.cgi?id=768"&gt;Microsoft's Parallel Computing Platform: Applied Research in a Product Setting&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And if you're more interested in the written word, check out this recent tech brief in Redmond Developer News:&lt;/P&gt;
&lt;P&gt;&lt;A title="Parallel Extensions" href="http://reddevnews.com/techbriefs/article.aspx?editorialsid=1187" mce_href="http://reddevnews.com/techbriefs/article.aspx?editorialsid=1187"&gt;Tech Brief: Parallel Extensions&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;All of this is, of course, in addition to all of the previous material that's been posted online, such as was mentioned at &lt;A title="The Channel 9 videos are rolling in" href="http://blogs.msdn.com/pfxteam/archive/2008/10/16/9002166.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/10/16/9002166.aspx"&gt;The Channel 9 videos are rolling in&lt;/A&gt;, &lt;A title="Webcasts on Parallelism from France" href="http://blogs.msdn.com/pfxteam/archive/2008/09/02/8919966.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/09/02/8919966.aspx"&gt;Webcasts on Parallelism from France&lt;/A&gt;, &lt;A title="Parallel Extensions Demo Fun on Channel 9" href="http://blogs.msdn.com/pfxteam/archive/2008/06/10/8590898.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/06/10/8590898.aspx"&gt;Parallel Extensions Demo Fun on Channel 9&lt;/A&gt;, &lt;A title="More Channel 9 Parallel Extensions Goodness" href="http://blogs.msdn.com/pfxteam/archive/2008/06/06/8579465.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/06/06/8579465.aspx"&gt;More Channel 9 Parallel Extensions Goodness&lt;/A&gt;, &lt;A title="New PLINQ video on Channel 9" href="http://blogs.msdn.com/pfxteam/archive/2008/03/18/8318651.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/03/18/8318651.aspx"&gt;New PLINQ video on Channel 9&lt;/A&gt;, &lt;A title="Task Parallel Library on Channel 9" href="http://blogs.msdn.com/pfxteam/archive/2008/02/19/7804314.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/02/19/7804314.aspx"&gt;Task Parallel Library on Channel 9&lt;/A&gt;, &lt;A title="Burton Smith on Channel 9" href="http://blogs.msdn.com/pfxteam/archive/2008/02/13/7677562.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/02/13/7677562.aspx"&gt;Burton Smith on Channel 9&lt;/A&gt;, &lt;A title="Parallel Extensions on .NET Rocks" href="http://blogs.msdn.com/pfxteam/archive/2007/12/31/6922952.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2007/12/31/6922952.aspx"&gt;Parallel Extensions on .NET Rocks&lt;/A&gt;, &lt;A title="Parallelism in October 2008 MSDN Magazine" href="http://blogs.msdn.com/pfxteam/archive/2008/10/02/8974038.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2008/10/02/8974038.aspx"&gt;Parallelism in October 2008 MSDN Magazine&lt;/A&gt;, and &lt;A title="Another Parallel Extensions screencast" href="http://blogs.msdn.com/pfxteam/archive/2007/12/12/6752602.aspx" mce_href="http://blogs.msdn.com/pfxteam/archive/2007/12/12/6752602.aspx"&gt;Another Parallel Extensions screencast&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9117413" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Media/default.aspx">Media</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category></item><item><title>Concurrent, Multi-core Programming on Windows and .NET</title><link>http://blogs.msdn.com/pfxteam/archive/2008/10/27/9019731.aspx</link><pubDate>Tue, 28 Oct 2008 08:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9019731</guid><dc:creator>toub</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/9019731.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=9019731</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=9019731</wfw:comment><description>&lt;P&gt;Thanks to everyone who attended our PDC pre-conference session yesterday on parallelism and concurrency!&amp;nbsp; We had a wonderful turnout at the event, and David, Joe, and I all had a terrific time. &lt;A class="" href="http://blogs.msdn.com/pfxteam/attachment/9019731.ashx" mce_href="http://blogs.msdn.com/pfxteam/attachment/9019731.ashx"&gt;Attached&lt;/A&gt; to this post are the slides we presented.&lt;/P&gt;
&lt;P&gt;(It turns out that the PDC site does allow you to &lt;A href="https://sessions.microsoftpdc.com/public/evals.aspx" mce_href="https://sessions.microsoftpdc.com/public/evals.aspx"&gt;submit an evaluation&lt;/A&gt; for a precon.&amp;nbsp; If you attended, we'd love your &lt;A href="https://sessions.microsoftpdc.com/public/evals.aspx" mce_href="https://sessions.microsoftpdc.com/public/evals.aspx"&gt;feedback&lt;/A&gt;.)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9019731" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pfxteam/attachment/9019731.ashx" length="1451170" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/pfxteam/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Task+Parallel+Library/default.aspx">Task Parallel Library</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/ThreadPool/default.aspx">ThreadPool</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallelism+Blockers/default.aspx">Parallelism Blockers</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Code+Samples/default.aspx">Code Samples</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Coordination+Data+Structures/default.aspx">Coordination Data Structures</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Release/default.aspx">Release</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/CTP/default.aspx">CTP</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/CDS/default.aspx">CDS</category></item><item><title>Concurrency Pre-Conference Session at the PDC</title><link>http://blogs.msdn.com/pfxteam/archive/2008/05/29/8559506.aspx</link><pubDate>Thu, 29 May 2008 20:47:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8559506</guid><dc:creator>toub</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/8559506.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=8559506</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=8559506</wfw:comment><description>&lt;p&gt;Interested in parallel programming with .NET and on Windows?&amp;#160; Thinking of attending the Microsoft PDC this year?&amp;#160; Well, if you do, make sure to come a day early.&amp;#160; The Parallel Computing Platform team will be presenting a day-long pre-conference session on October 26th from 10:00am-5:45pm:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;a href="http://microsoftpdc.com/Agenda/Preconference.aspx#concurrent-multi-core-programming-on-windows-and-net"&gt;Concurrent, Multi-core Programming on Windows and .NET&lt;/a&gt;        &lt;br /&gt;Presenter(s): David Callahan, Joe Duffy, Stephen Toub&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It should be an awesome time.&amp;#160; &lt;a href="http://microsoftpdc.com/Registration/"&gt;Register now&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8559506" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category></item><item><title>Parallel Computing Platform at TechEd 2008</title><link>http://blogs.msdn.com/pfxteam/archive/2008/05/28/8557291.aspx</link><pubDate>Thu, 29 May 2008 08:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8557291</guid><dc:creator>toub</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/8557291.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=8557291</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=8557291</wfw:comment><description>&lt;P&gt;&lt;B&gt;&lt;A class="" href="http://www.microsoft.com/events/teched2008/default.mspx" mce_href="http://www.microsoft.com/events/teched2008/default.mspx"&gt;&lt;IMG height=137 alt=website_banner_main src="http://blogs.msdn.com/blogfiles/joestagner/WindowsLiveWriter/TechEd2008Mypresentationscomesayhello_9453/website_banner_main_thumb.jpg" width=436 border=0 mce_src="http://blogs.msdn.com/blogfiles/joestagner/WindowsLiveWriter/TechEd2008Mypresentationscomesayhello_9453/website_banner_main_thumb.jpg"&gt;&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Heading to TechEd 2008? Come discover some of the exciting technologies the Parallel Computing Platform team is working on.&lt;/P&gt;
&lt;P&gt;We're presenting four sessions on parallelism at the &lt;A class="" href="http://msdn.microsoft.com/en-us/events/teched/default.aspx" mce_href="http://msdn.microsoft.com/en-us/events/teched/default.aspx"&gt;Developer conference&lt;/A&gt;:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;DVP205 &lt;/EM&gt;&lt;BR&gt;&lt;STRONG&gt;The Microsoft Parallel Computing Initiative: Bringing Concurrency to the Masses&lt;/STRONG&gt; &lt;BR&gt;Tuesday, June 3 10:30 AM - 11:45 AM, S210 B&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Software is headed for a fundamental change. Over the last 30 years, developers have relied on exponential growth in computing power in order to write applications that run fast. However, whereas the average PC clock speed increased more than ten-fold between 1993 and 1999, the average processor speed in the last four years hasn’t even doubled. Instead, the hardware industry is shifting to multi-core and manycore processors. The average PC on the market today is a dual-core. Next year, expect the average to be quad-core. Two years after that, eight-core. Unfortunately, most software today is single-threaded in nature and will not take advantage of multiple processors. The key to high-performance applications in the future is parallelism. In this session, we explore the need for concurrency, as well as what Microsoft is doing through its programming languages, libraries, runtimes, and tools to help developers leverage parallelism in their code.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;DVP304 &lt;BR&gt;&lt;/EM&gt;&lt;STRONG&gt;Parallelize Your Microsoft .NET Framework-Based Applications with Parallel Extensions &lt;BR&gt;&lt;/STRONG&gt;Wednesday, June 4 10:15 AM - 11:30 AM, S220 A &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;With the Microsoft .NET Framework today, correctly introducing concurrency into libraries and applications is difficult, time consuming, and error-prone. However, as the hardware industry shifts towards multi-core and manycore processors, the key to high-performance applications is parallelism. Parallel Extensions to the .NET Framework offers solutions to help make writing concurrent applications significantly easier. In this session, we dive into Parallel Extensions, exploring Parallel LINQ-to-Objects (PLINQ), the Task Parallel Library (TPL), the underlying concurrency runtime, and more, in order to provide an in-depth look at the next generation of parallel programming with .NET.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;DVP316 &lt;BR&gt;&lt;/EM&gt;&lt;STRONG&gt;Simplify Parallel Application Debugging and Profiling with Concurrency Tools in Microsoft Visual Studio &lt;BR&gt;&lt;/STRONG&gt;Thursday, June 5 8:30 AM - 9:45 AM, S330 C &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Developing software doesn’t begin and end with writing code. Tools are incredibly important in the life cycle of applications, especially when it comes to debugging and improving performance. This is never more true than when writing parallel applications, as concurrency introduces a whole host of issues that can be very difficult to find and fix. In this talk, we explore difficulties with debugging and profiling concurrent applications, and we dive into powerful new tools being introduced in Visual Studio to improve their development.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;TLA327&lt;/EM&gt; &lt;BR&gt;&lt;STRONG&gt;Parallelize Your Microsoft Visual C++ Applications with the Concurrency Runtime &lt;BR&gt;&lt;/STRONG&gt;Friday, June 6 8:30 AM - 9:45 AM, S310 A &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Introducing concurrency into native Visual C++ applications has long been the domain of true experts and gurus. Yet, as the hardware industry shifts toward multi-core and manycore processors, all developers will need to be able to write robust and scalable parallel applications. As part of its work on Visual C++ and Visual Studio, the Parallel Computing Platform team is building a key set of technologies that will enable the development of such applications. In this talk, we explore libraries for expressing concurrency, a set of messaging APIs that allow developers to consistently build parallel applications that are robust and resilient, and a shared user-mode runtime for scheduling and for coordinating system resources. Come learn about these exciting new technologies that will help bring concurrency to the masses.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Heading to the &lt;A class="" href="http://technet.microsoft.com/en-us/events/teched/default.aspx" mce_href="http://technet.microsoft.com/en-us/events/teched/default.aspx"&gt;IT Professional conference&lt;/A&gt;?&amp;nbsp; No problem: we're presenting there, too!&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;APP253&lt;/EM&gt; &lt;BR&gt;&lt;STRONG&gt;The Manycore Shift: Bringing Concurrency to the Masses&lt;/STRONG&gt; &lt;BR&gt;Tuesday, June 10 3:00 PM - 4:15 PM, N220 A &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Recent advances in microelectronic technology and the advent of multi-core and manycore processors are a signal that a large industry change is on the horizon. The computational power of manycore processors, new programming models and platforms, and advanced research in usability promises to change the way people interact with computers. As a result, software is headed for a fundamental change. Over the last 30 years, developers have relied on exponential growth in computing power in order to write applications that run fast. However, whereas the average PC clock speed increased more than 10x between 1993 and 1999, the average processor speed in the last four years hasn’t even doubled. Instead, the hardware industry is shifting to multi-core and manycore processors. The average PC on the market today is a dual-core. Next year, expect the average to be quad-core. Two years after that, eight-core. Unfortunately, most software today will not take advantage of multiple processors. The key to high-performance applications in the future is parallelism, and IT professionals need to be intimately aware of this coming shift so that the applications and scripts they develop can fully utilize all available processing power. In this session, we explore the need for concurrency as well as what Microsoft is doing through its programming languages, libraries, runtimes, and tools to help developers and IT professionals leverage parallelism in their code. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We're looking forward to seeing you there!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8557291" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Q&amp;As from the 2008 Financial Services Developer Conference</title><link>http://blogs.msdn.com/pfxteam/archive/2008/04/03/8354128.aspx</link><pubDate>Thu, 03 Apr 2008 18:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8354128</guid><dc:creator>toub</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/8354128.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=8354128</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=8354128</wfw:comment><description>&lt;P&gt;A few weeks ago, I presented on &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;displaylang=en"&gt;Parallel Extensions to the .NET Framework&lt;/A&gt; at the 6th annual Microsoft &lt;A href="http://www.financialdevelopers.com/" mce_href="http://www.financialdevelopers.com/"&gt;Financial Services&lt;/A&gt; Developer Conference (the decks from the conference are &lt;A href="http://www.financialdevelopers.com/conferencedecks.aspx" mce_href="http://www.financialdevelopers.com/conferencedecks.aspx"&gt;now available online&lt;/A&gt;).&amp;nbsp; I had a great time and a great audience, and during the presentation on Thursday I received some good questions.&amp;nbsp; Here are some of them along with answers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Question:&lt;/STRONG&gt; This stuff looks really cool, but why do we need to modify our code to use Parallel Extensions; why can't you just automatically parallelize it for me?&lt;/P&gt;
&lt;P&gt;Igor Ostrovsky, a developer on our team, has a nice set of explanations in his responses to some questions on the &lt;A href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1986&amp;amp;SiteID=1" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1986&amp;amp;SiteID=1"&gt;Parallel Extensions MSDN Forums&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;"The way we traditionally express programs makes it very difficult for the compiler to understand the code at a high level, and parallelize the work. (A part of the problem is that understanding code at a high level is in some sense impossible - see the &lt;A href="http://en.wikipedia.org/wiki/Halting_problem" mce_href="http://en.wikipedia.org/wiki/Halting_problem"&gt;halting problem&lt;/A&gt;.) However, the user can help the parallel engine in various ways: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The user expresses the goal of the computation instead of the explicit steps to perform it (e.g. Parallel LINQ). &lt;/LI&gt;
&lt;LI&gt;The user tells the parallel engine how to parallelize the computation (e.g. Task Parallel Library) &lt;/LI&gt;
&lt;LI&gt;The user specifies certain invariants of the code (e.g. which parts are atomic - transactional memory)" &lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Question:&lt;/STRONG&gt; Parallel Extensions looks like a great way to express concurrency in my applications, but how will I then debug my apps?&amp;nbsp; Debugging parallel applications today is really hard... what are you doing about that?&lt;/P&gt;
&lt;P&gt;It most certainly is hard, and we fully realize that developing software doesn’t begin and end with writing code.&amp;nbsp; Tools are incredibly important in the life cycle of applications, especially when it comes to debugging and improving performance.&amp;nbsp; This is never more true than when writing parallel applications, as concurrency introduces a whole host of issues that can be very difficult to find and fix.&amp;nbsp; Alongside Parallel Extensions, the Parallel Computing Platform team is investing in the development of debugging and profiling tools that will increase developer productivity and improve the correctness and maintainability of parallel code.&amp;nbsp; We haven't released previews of these tools yet, but you can expect to see them in the future.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Question:&lt;/STRONG&gt; Do you need multiple cores or multiple processors to do multithreading? Is it possible to use Parallel Extensions on a single CPU machine, and if so, is there overhead in doing so?&lt;/P&gt;
&lt;P&gt;Even with a single CPU, there are many places where multithreading can provide significant value.&amp;nbsp; For example, in GUI programming on Windows, doing any significant work on the main GUI thread will cause user interaction with the application to suffer.&amp;nbsp; Instead, it's better to offload work to a background thread, which can do processing while allowing the application to stay responsive.&amp;nbsp; But when it comes to computationally-intensive tasks, multithreading on a single CPU can lead to decreased performance.&amp;nbsp; Parallel Extensions seeks to minimize that decrease in performance.&amp;nbsp; It can be used on a machine with a single CPU; the idea is that you write your code using Parallel Extensions correctly, and it will then help your application to scale from one to many cores.&amp;nbsp; There is overhead to using Parallel Extensions (as there will be for pretty much any parallel framework), but we're working hard to minimize that overhead, and for many problems on multi-core machines, the overhead introduced will be greatly dwarfed by the parallel benefits received.&amp;nbsp; On a single CPU, we can typically reduce the overhead to the point where for any problem that would have benefited from parallelism on a multi-core machine, the overhead will be negligible on a single core.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Question:&lt;/STRONG&gt; Can one mix and match Parallel Extensions with existing concurrency mechanisms?&amp;nbsp; For example, can I use the .NET ThreadPool in the same application as Parallel Extensions?&amp;nbsp; Can I use monitors and mutexes and sempahores and reader-writer locks with Parallel Extensions just as I do with threads today?&lt;/P&gt;
&lt;P&gt;Yes, to all of your questions.&amp;nbsp; Parallel Extensions relies on threads, so you can continue to use existing synchronization primitives with Parallel Extensions just as you would with threads you spin up manually or with threads from the ThreadPool; we're also introducing some new synchronization and coordination primitives in upcoming releases of Parallel Extensions, so stay tuned for those.&amp;nbsp; (Note, however, that there are some corner-case rules to be aware of. As an example, don’t evaluate futures or wait on tasks while holding a reentrant lock. Doing so isn't implicitly a problem, but it could lead to some issues that you'll need to be aware of; I'll dive into this further in a future blog post.)&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt; What is the relationship between HPC Server and Parallel Extensions?&amp;nbsp; Does one replace the other?&lt;/P&gt;
&lt;P&gt;Neither replaces the other, and in fact they're useful in combination.&amp;nbsp; &lt;A href="http://www.microsoft.com/hpc" mce_href="http://www.microsoft.com/hpc"&gt;HPC Server&lt;/A&gt; is all about scaling out to nodes in a cluster of machines, and Parallel Extensions is all about scaling up on an individual machine.&amp;nbsp; Just as you can use Parallel Extensions to parallelize your desktop applications, you can use Parallel Extensions to parallelize the .NET applications running on nodes in your cluster.&amp;nbsp; This can be quite powerful when used in conjunction with HPC Server functionality like the new WCF-based &lt;A href="http://blogs.msdn.com/philpenn/archive/2007/11/21/new-hpc-wcf-feature-use-compute-cluster-as-scalable-soa-platform.aspx" mce_href="http://blogs.msdn.com/philpenn/archive/2007/11/21/new-hpc-wcf-feature-use-compute-cluster-as-scalable-soa-platform.aspx"&gt;SOA Service Broker&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt; Is there any way to hook into the scheduler used by Parallel Extensions to automatically fan out the work to a cluster?&lt;/P&gt;
&lt;P&gt;The scheduler in Parallel Extensions is not currently extensible in this way.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt; Will the thread pool used by Parallel Extensions allow additional threads to be introduced when the number of cores increases?&lt;/P&gt;
&lt;P&gt;Absolutely.&amp;nbsp; When the threads in the pool are all being used to do useful work, the scheduler tries to maintain a ratio of one thread per core, so more cores typically translates to more threads.&amp;nbsp; But in a variety of situations that ratio will not always be 1:1.&amp;nbsp; In some cases, more threads may be used, such as if threads block (e.g. synchronization, I/O, etc.) or the user explicitly requests more threads through a TaskManagerPolicy.&amp;nbsp; Similarly, a TaskManagerPolicy can be used to dial down the amount of available concurrency.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question: Could you run out of memory if you have a large number of tasks?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Tasks are objects just like any other in .NET, and are subject to the same memory constraints as any other managed code.&amp;nbsp; In the same vein, they're also managed by the CLR's garbage collector, such that completed tasks with no references left to them may be collected. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question: Why will this be faster than using the ThreadPool?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There are a variety of reasons a work-stealing scheduler can perform better than a typical thread pool.&amp;nbsp; For one, the scheduler in Parallel Extensions enables more scalable queue management in that it's not bottlenecked on a single queue storing all work items.&amp;nbsp; Work items are distributed amongst multiple queues, ideally limiting contention on a single queue for all work; this becomes more and more important as the size of the work items decreases, as the number of threads contending for work increases, and as the number of cores running that work increases.&amp;nbsp; These processor-local queues also enable lock-freedom, which contributes to the efficiency of retrieving work items and executing them.&amp;nbsp; There are other significant benefits related to work-stealing for many types of problems, such as very efficient queueing mechanisms when creating tasks recursively.&amp;nbsp; Moreover, the design can provide significant improvements to things like memory locality, which can greatly improve an algorithm's performance.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question: If I'm testing my code on a single-core machine, can I simulate more cores?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To some extent.&amp;nbsp; With the PLINQ programming model exposed in the CTP, you can provide a degree of parallelism value to the AsParallel extension method, which controls the number of threads that can be used to execute the query; by default on a single-core machine, this value will be 1, but you can explicitly make it larger.&amp;nbsp; And for the Task Parallel Library, you can create new TaskManagers with specific TaskManagerPolicy instances that increase the number of threads that can be used beyond the number of cores on the machine. However, while it is possible to simulate it this way, your application won't be subject to some of the complexities of having multiple cores, and as a result some bugs in the parallel implementation may remain hidden or get hit with much less frequently.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question: Does Parallel Extensions use threads or fibers?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Threads.&amp;nbsp; Avoid using fibers in managed code: see &lt;A title=http://www.bluebytesoftware.com/blog/PermaLink,guid,2d0038b5-7ba5-421f-860b-d9282a1211d3.aspx href="http://www.bluebytesoftware.com/blog/PermaLink,guid,2d0038b5-7ba5-421f-860b-d9282a1211d3.aspx" mce_href="http://www.bluebytesoftware.com/blog/PermaLink,guid,2d0038b5-7ba5-421f-860b-d9282a1211d3.aspx"&gt;http://www.bluebytesoftware.com/blog/PermaLink,guid,2d0038b5-7ba5-421f-860b-d9282a1211d3.aspx&lt;/A&gt; for more details.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question: If I spin up a task, and it throws an exception, where will that exception bubble up?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Just as with the Asynchronous Programming Model pattern, where exceptions thrown during asynchronous execution are reraised when the EndXx method is called, exceptions thrown during the execution of a task will be reraised when the Task is waited on (e.g. task.Wait()).&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8354128" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Task+Parallel+Library/default.aspx">Task Parallel Library</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/ThreadPool/default.aspx">ThreadPool</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/HPC+Server/default.aspx">HPC Server</category></item><item><title>6th Annual Microsoft Financial Services Developer Conference</title><link>http://blogs.msdn.com/pfxteam/archive/2008/03/08/8116445.aspx</link><pubDate>Sun, 09 Mar 2008 09:41:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8116445</guid><dc:creator>toub</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/8116445.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=8116445</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=8116445</wfw:comment><description>&lt;p&gt;We'll be speaking this week in NYC about &lt;a href="http://msdn.microsoft.com/concurrency"&gt;Parallel Extensions to the .NET Framework&lt;/a&gt; at the &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032361591&amp;amp;Culture=en-US"&gt;Microsoft Financial Services Developer Conference&lt;/a&gt;.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"The 2008 Microsoft Financial Services Developer Conference will focus on providing developers and architects in Financial Services a clear roadmap of the Microsoft development platform with a focus on High Performance Computing (HPC)."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;We hope to see you there!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8116445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category></item><item><title>PLINQ at Seattle Code Camp</title><link>http://blogs.msdn.com/pfxteam/archive/2008/01/27/7268725.aspx</link><pubDate>Sun, 27 Jan 2008 20:29:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7268725</guid><dc:creator>toub</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pfxteam/comments/7268725.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pfxteam/commentrss.aspx?PostID=7268725</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pfxteam/rsscomments.aspx?PostID=7268725</wfw:comment><description>&lt;p&gt;In the Seattle area and want to hear more about PLINQ?&amp;nbsp; Igor Ostrovsky, a developer on the Parallel Extensions team, will be speaking today at the &lt;a href="https://seattle.codecamp.us/default.aspx"&gt;Seattle Code Camp&lt;/a&gt; from &lt;a href="https://seattle.codecamp.us/sessions.aspx#Parallel+LINQ%3A+Simple+Parallel+Programming+for+.NET"&gt;3:00-4:15pm&lt;/a&gt;.&amp;nbsp; Check it out!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7268725" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pfxteam/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category><category domain="http://blogs.msdn.com/pfxteam/archive/tags/Talks/default.aspx">Talks</category></item></channel></rss>