Reducing Memory Usage to Increase Concurrency

There are multiple ways for a computer to solve permutation problems. In an exercise to show the performance of different solutions, I created a couple of different ways to solve the problem of knowing if a certain sequence could be transformed to another sequence given a set of legal permutations. All of my little puzzle…


Are you attending SC10 in New Orleans? We’d love to chat.

  Are you attending the Supercomputing 2010 conference in New Orleans? Do you write or tune multi-threaded code? Do you write or tune MPI applications? Do you write or tune GPU applications? If so, we’d love to meet in person and chat!  This is an opportunity for you to engage  face-to-face with members of the…


Concurrency Visualizer as a Microscope for Execution Dynamics

This is the picture that Concurrency Visualizer team used on the title page of internal specs. It actually reveals how most of us think about our product: not as a profiler (though you can get decent sample profile from it by clicking the green “Execution” category in the legend), and not even as a performance…


Diagnosing Lock Contention with the Concurrency Visualizer

This entry will demonstrate the use of Concurrency Visualizer profile reports to locate the source of lock contention in a parallel matrix multiplication app. The Problem In this hypothetical example, suppose that my coworker, a more junior developer, was asked to parallelize a matrix multiplication algorithm.  He parallelized the algorithm using the .NET Thread Pool. …


Where is my stack?

In an earlier post I explained why you may get stacks that do not look like what you were expecting when you have FPO optimizations, but even without FPO enabled there are some other scenarios that can cause your application stacks to look somehow “unexpected” in the Concurrency Visualizer. Here are some interesting cases: Managed…


Parallel Loops and PLINQ Queries in the Concurrency Visualizer

There are two types of Scenario Marker in the Concurrency Visualizer: those which you instrument yourself to demarcate user-defined application phases and those which appear automatically and demarcate particular runtime constructs.  While Hazim Shafi has previously written a blog entry describing the first type, we have yet to discuss the second type, which is the…


Case Study: Parallelism and Memory Usage, VS2010 Tools to the Rescue!

Hazim Shafi has written a very relevant case study illustrating how significantly memory usage patterns can affect speedups of parallel applications.  Have you ever parallelized an application only to find marginal (or no) speedup?  Perhaps this entry will explain why. 


Becoming a Performance Explorer

In previous blog entries, we illustrated how to use the Performance Wizard to quickly start a performance session to profile runs of your application. In this post we will illustrate how to use the Performance Explorer to accomplish the same task. Using the Performance Explorer to configure collection enables more profiling scenarios than the wizard,…


Where is the Concurrency Visualizer?

I noticed several instances of folks struggling to find the Concurrency Visualizer in Visual Studio 2010, only to find that the problem was system requirements.  I’ll shed some light on this here: The Concurrency Visualizer is only available in Visual Studio 2010 Premium and Ultimate The Concurrency Visualizer runs on the following operating systems: Windows…


Concurrency Visualizer Feature Grab Bag

In this entry, I’ll dive deep into the following features of the Threads View in the Concurrency Visualizer: Thread Sorting Thread Hiding Visible Timeline Profile Interactivity Jumping to Code Thread Ready Connector Thread Sorting By default, threads are sorted by start time.  However, you can sort by any of the thread activity categories shown in…