Browse by Tags
All Tags »
ParallelFX (
RSS)
Thanks for attending my DevReach session on task and data parallelism ! We discussed the APIs available to you in the Task Parallel Library and how to avoid common pitfalls and squeeze performance from seemingly difficult to parallelize algorithms. Among the topics we covered: Measuring concurrency using the Visual Studio Concurrency Visualizer Extracting parallelism from recursive algorithms Symmetric data processing and uneven work distribution Dependency management with continuations Synchronization...
Most concurrency frameworks I write about on this blog consist of numerous layers of abstraction. Consider the Task Parallel Library, for instance: it’s a wrapper on top of the .NET Thread Pool, which is a wrapper on top of Windows threads. This cruft of low-level abstraction layers forces certain expectations from the newer libraries – namely, they must allow direct access to shared state, provide synchronization mechanisms, volatile variables, atomic synchronization primitives, … It seems that...
Long-time readers of this blog know that I really don’t like rehashing someone else’s thoughts and linking to material that isn’t my own. However, the ACM article The Future of Microprocessors (S. Borkar, A. Chien) warrants an exception to this rule. If you can afford the time (approx. 2 hours), I strongly recommend that you read the article instead of my somewhat incoherent ramblings below. If you’re looking for an executive summary highlighting some of the biggest challenges and likely solutions...
I alluded to the existence of a parallel programming course in my previous post about the SDP . This three-day course, Parallel Programming in .NET 4.0 [ DNParallel ], was born a few weeks ago following intense work by Bnaya Eshet and yours truly. The syllabus can be broken roughly into the following: Introduction to processes, threads, and the thread pool Explicit (task) parallelism—creating and managing tasks and continuations Implicit (data) parallelism—parallelizing loops and LINQ queries Synchronization...
It’s been a busy couple of months! The SELA Developer Practice, SELA’s annual conference for .NET developers, has taken place on March 13-16 in SELA’s offices and the Crowne Plaza hotel in Tel-Aviv. Dear conference attendees: thanks for being there! I personally appreciate your coming to the sessions, mingling with the speakers, telling us your pain points and participating in active discussions. I hope to see you again next year, and if there’s any feedback you have or tips for us to improve the...
Yesterday I delivered another Sela Open House in Haifa (kudos to Philips MS for hosting this session). The subject was “Design and Architecture of Concurrent Applications”, and indeed much to my surprise I managed to avoid firing up WinDbg or writing lots of code, and instead talk about high-level principles. Some of the things we covered: Hardware trends —the increasing number of processors means new challenges such as eliminating false sharing, reducing synchronization to a minimum, coping with...
I gave a couple of examples in my previous post which demonstrate, IMHO, how async methods can simplify existing approaches to asynchrony in C# programs. Both examples were fairly simple in that they didn’t involve cancellation, progress reporting, UI thread dispatching, or exception handling. I’m happy to report that accomplishing these objectives is as easy as doing nothing else than what we’ve already seen. This is a result of a fairly sophisticated C# rewriting process that the compiler applies...
During today’s PDC session on the future of C# and VB, Anders Hejlsberg announced the availability of the Visual Studio Async CTP , implementing a set of changes to the C# language that support a new pattern for asynchronous programming. There’s lots to be said about the language support and the framework implementation that enables it, and the CTP is not the final words that will be said. There’s a comprehensive set of samples you can find at the MSDN Code Gallery, and I strongly suggest that you...
Almost a year ago, I delivered an MSDN Event on Parallel Programming in Visual Studio 2010. At the time , I used the Visual Studio 2010 Beta 1 but the demos worked fairly well. Today, I delivered another version of the same talk, with only minor modifications. The difference is just that Visual Studio 2010 is out, and we’re talking about a mature framework which you should be using in your concurrent applications today. You can download the demos (which haven’t changed :-)) and slides from here ...
I promised you that my DevAcademy4 session will be recorded and available online shortly after the conference. Well, the conference was a blast, and the video recording, slides, and demos are all available online. Everyone who had to stand me for over 60 minutes in the packed session hall—thanks a lot for coming, and I hope you had fun! If there’s anything at all that you would like to follow up on, feel free to use the contact form . It might take a while before the materials are available at the...
Sorry for the late announcement, but on Monday I’m going to present a session called Parallel Programming in .NET 4 and Visual Studio 2010 at the Microsoft Developer Academy 4 (Avenue, Airport City). There are six (!) Sela speakers at the conference: Gil Fink, Alex Golesh, Shai Raiten, Alon Fliess, Noam King, and yours truly—and I’m sure they are going to rock, so take a look at the conference schedule to see which sessions you want to attend. I wouldn’t want to ruin the fun for the ones who are...
A few days ago, at the Sela Developer Practice , Eran and I delivered a session titled “Parallel Programming with .NET 4.0 and Visual Studio 2010”. In this session we wanted to highlight the new features for parallel programming in .NET 4.0 – the Task Parallel Library and PLINQ – as well as the new Visual Studio 2010 features in the debugging and profiling areas. We started with what we call explicit parallelism – manually creating tasks and specifying what to do when they execute and when they complete...
Fairness with respect to synchronization mechanisms is a highly overrated property. When I talk about concurrency, parallelism, Windows synchronization and similar subjects, I’m often asked whether the specific algorithm, mechanism or feature is fair in some respect. First, let’s define fairness. I’ll use a simplistic yet rigorous definition to define a fair lock . (Other synchronization mechanisms may have fairness defined in a similar fashion.) To begin with, a lock is exactly what you think it...
Chas Boyd’s session on DirectX11 DirectCompute is going to focus on bringing the power of the GPU for general-purpose computing (and not necessarily graphics applications). A modern CPU would have 4 cores, run at 3GHz, 4 float-wide SIMDs, peak theoretical performance of 48-96GFlops, 2x hyperthreaded capability, 64KB L1 cache, a memory interface of about 20GB/s, and take about 200W out of the wall at a cost of about $200. A GPU is usually constructed from 32 cores, each 32-float wide, at 1GHz, giving...
Pedro Teixeira is going to talk about processes and threads in systems with more than 64 logical processors as well as user-mode scheduling. Surprisingly for some people, NUMA is not an esoteric hardware architecture. Even high-end gaming rigs today are NUMA; Pedro is going to use a loaned machine by HP that has 256 processors with 1TB of physical memory. Processor Groups Adding support for more than 64 logical processors required a breaking app compat change, because CPU masks were represented in...
More Posts
Next page »