<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7744200</id><updated>2010-03-10T19:12:02.740Z</updated><title type='text'>The Moth</title><subtitle type='html'>Developer, &lt;a href="http://www.danielmoth.com/cvMVP.htm" title="joining Microsoft means losing the MVP award"&gt;Former MVP&lt;/a&gt;, now at Microsoft</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/index.htm'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.danielmoth.com/Blog/atom.xml'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>857</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7744200.post-8248002380624455682</id><published>2010-03-02T15:01:00.000Z</published><updated>2010-03-06T07:07:10.477Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='HPC'/><title type='text'>Slides and code for MPI Cluster Debugger</title><content type='html'>I've blogged before about the &lt;a href="http://www.danielmoth.com/Blog/2009/11/mpi-cluster-debugger-launch-integration.html"&gt;MPI Cluster Debugger in VS2010&lt;/a&gt; that facilitates launching the application on the cluster and attaching the debugger (btw, a shorter version of the screencast I link to there, is &lt;a href="http://channel9.msdn.com/shows/The+HPC+Show/MPI-Cluster-Debugger-Visual-Studio-2010-Launch-Integration/"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;There have been requests for the code I use in the screencast, so please find a &lt;a href="http://www.danielmoth.com/Blog/ParallelPi.zip"&gt;ZIP with that code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There have also been requests for a PowerPoint deck to use when showing this feature to others. Feel free to download some &lt;a href="http://www.danielmoth.com/Blog/DanielMoth_MPI_Cluster_Debugging_VS2010.pptx"&gt;slides I threw together the other day&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-8248002380624455682?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/8248002380624455682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/03/slides-and-code-for-mpi-cluster.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/8248002380624455682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/8248002380624455682'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/03/slides-and-code-for-mpi-cluster.html' title='Slides and code for MPI Cluster Debugger'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-2410310110339016043</id><published>2010-02-20T00:00:00.000Z</published><updated>2010-03-06T07:06:59.630Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>DirectCompute</title><content type='html'>In my previous blog post I introduced the concept of &lt;a href="http://www.danielmoth.com/Blog/2010/02/gpgpu.html"&gt;GPGPU&lt;/a&gt; ending with:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;On Windows, there is already a cross-GPU-vendor way of programming GPUs and that is the Direct X API. Specifically, on Windows Vista and Windows 7, the DirectX 11 API offers a dedicated subset of the API for GPGPU programming: DirectCompute. You use this API on the CPU side, to set up and execute the kernels on the GPU. The kernels are written in a language called HLSL (High Level Shader Language). You can use DirectCompute with HLSL to write a "compute shader", which is the term DirectX uses for what I've been referring to in this post as "kernel".&lt;/em&gt;&lt;/blockquote&gt;In this post I want to share some links to get you started with DirectCompute and HLSL.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Watch the recording of the PDC 09 session: &lt;a href="http://microsoftpdc.com/Sessions/P09-16"&gt;DirectX11 DirectCompute&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; If session recordings is your thing there are two more on DirectCompute from nvidia's GTC09 conference &lt;a href="http://nvidia.fullviewmedia.com/GPU2009/1001-crystal-1015.html"&gt;1015&lt;/a&gt; (&lt;a href="http://www.nvidia.com/content/GTC/documents/1015_GTC09.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="http://www.nvidia.com/content/GTC/videos/GTC09-1015.mp4"&gt;mp4&lt;/a&gt;) and &lt;a href="http://nvidia.fullviewmedia.com/GPU2009/0930-california-1411.html"&gt;1411&lt;/a&gt; (&lt;a href="http://www.nvidia.com/content/GTC/videos/GTC09-1411.mp4"&gt;mp4&lt;/a&gt; plus the presenter's &lt;a href="http://openvidia.sourceforge.net/index.php/DirectCompute"&gt;written version of the session&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; Over at gamedev there is an old &lt;a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=516043"&gt;Compute Shader tutorial&lt;/a&gt;. At the same site, there is a 3-part blog post on Compute Shader: &lt;a href="http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=363003&amp;amp;reply_id=3508695"&gt;Introduction&lt;/a&gt;, &lt;a href="http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=363003&amp;amp;reply_id=3513466"&gt;Resources&lt;/a&gt; and &lt;a href="http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=363003&amp;amp;reply_id=3517087"&gt;Addressing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; From PDC, you can also download the &lt;a href="http://code.msdn.microsoft.com/directcomputehol/Release/ProjectReleases.aspx?ReleaseId=3662"&gt;DirectCompute Hands On Lab&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.&lt;/strong&gt; When you are ready to get your hands even dirtier, download the latest &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2c7da5fb-ffbb-4af6-8c66-651cbd28ca15"&gt;Windows DirectX SDK&lt;/a&gt; (at the time of writing the latest is dated Feb 2010).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6.&lt;/strong&gt; Within the SDK you'll find a &lt;a href="http://msdn.microsoft.com/en-us/library/ee417833(VS.85).aspx"&gt;Compute Shader Overview&lt;/a&gt; and samples such as: &lt;a href="http://msdn.microsoft.com/en-us/library/ee416557(VS.85).aspx"&gt;Basic&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416561(VS.85).aspx"&gt;Sort&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416572(VS.85).aspx"&gt;OIT&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416571(VS.85).aspx"&gt;NBodyGravity&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416569(VS.85).aspx"&gt;HDR Tone Mapping&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7.&lt;/strong&gt; Talking of DX11/DirectCompute samples, there are also a &lt;a href="http://users.skynet.be/fquake/"&gt;couple of good ones on this URL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8.&lt;/strong&gt; The documentation of the various APIs is available online. Here are just some good (but far from complete) taster entry points into that: &lt;a href="http://msdn.microsoft.com/en-us/library/ee422317(VS.85).aspx"&gt;numthreads&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee422447(VS.85).aspx"&gt;SV_DispatchThreadID&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee422451(VS.85).aspx"&gt;SV_GroupThreadID&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee422449(VS.85).aspx"&gt;SV_GroupID&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee422450(VS.85).aspx"&gt;SV_GroupIndex&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416031(VS.85).aspx"&gt;D3D11CreateDevice&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416856(VS.85).aspx"&gt;D3DX11CompileFromFile&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee419785(VS.85).aspx"&gt;CreateComputeShader&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee419587(VS.85).aspx"&gt;Dispatch&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee416041(VS.85).aspx"&gt;D3D11_BIND_FLAG&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ee419655(VS.85).aspx"&gt;GSSetShader&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-2410310110339016043?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/2410310110339016043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/02/directcompute.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/2410310110339016043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/2410310110339016043'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/02/directcompute.html' title='DirectCompute'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-7595936871766439697</id><published>2010-02-19T23:58:00.000Z</published><updated>2010-03-06T07:06:59.630Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>GPGPU</title><content type='html'>&lt;em&gt;&lt;strong&gt;What&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;GPU obviously stands for Graphics Processing Unit (the silicon powering the display you are using to read this blog post). The extra GP in front of that stands for General Purpose computing.&lt;br /&gt;&lt;br /&gt;So, altogether &lt;a href="http://en.wikipedia.org/wiki/GPGPU"&gt;GPGPU&lt;/a&gt; refers to computing we can perform on GPU for purposes beyond just drawing on the screen. In effect, we can use a GPGPU a bit like we already use a CPU: to perform some calculation (that doesn’t have to have any visual element to it). The attraction is that a GPGPU can be orders of magnitude faster than a CPU.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Why&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;When &lt;a href="http://www.danielmoth.com/Blog/2009/10/pdc09-or-sc09.html"&gt;I was at the SuperComputing&lt;/a&gt; conference in Portland last November, GPGPUs were all the rage. A quick online search reveals many articles introducing the GPGPU topic.  I'll just share 3 here: &lt;a href="http://www.pcper.com/article.php?aid=745"&gt;pcper&lt;/a&gt; (ignoring all pages except the first, it is a good consumer perspective), &lt;a href="http://gizmodo.com/5252545/giz-explains-gpgpu-computing-and-why-itll-melt-your-face-off"&gt;gizmodo&lt;/a&gt; (nice take using mostly layman terms) and &lt;a href="http://www.vizworld.com/2009/05/whats-the-big-deal-with-cuda-and-gpgpu-anyway/"&gt;vizworld&lt;/a&gt; (answering the question on "what's the big deal").&lt;br /&gt;&lt;br /&gt;The GPGPU programming paradigm (from a high level) is simple: in your CPU program you define functions (aka kernels) that take some input, can perform the costly operation and return the output. The kernels are the things that execute on the GPGPU leveraging its power (and hence execute faster than what they could on the CPU) while the host CPU program waits for the results or asynchronously performs other tasks.&lt;br /&gt;&lt;br /&gt;However, GPGPUs have different characteristics to CPUs which means they are suitable only for certain classes of problem (i.e. data parallel algorithms) and not for others (e.g. algorithms with branching or recursion or other complex flow control). You also pay a high cost for transferring the input data from the CPU to the GPU (and vice versa the results back to the CPU), so the computation itself has to be long enough to justify the overhead transfer costs. If your problem space fits the criteria then you probably want to check out this technology.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;How&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;So where can you get a graphics card to start playing with all this? At the time of writing, the two main vendors ATI (owned by AMD) and NVIDIA are the obvious players in this industry. You can read about GPGPU on &lt;a href="http://ati.amd.com/technology/streamcomputing/gpgpu_history.html"&gt;this AMD page&lt;/a&gt; and also on &lt;a href="http://www.nvidia.com/object/GPU_Computing.html"&gt;this NVIDIA page&lt;/a&gt;. NVIDIA's website also has a free chapter on the topic from the "GPU Gems" book: &lt;a href="http://http.developer.nvidia.com/GPUGems/gpugems_ch37.html"&gt;A Toolkit for Computation on GPUs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you followed the links above, then you've already come across some of the choices of programming models that are available today. Essentially, AMD is offering their ATI Stream technology accessible via a language they call Brook+; NVIDIA offers their CUDA platform which is accessible from CUDA C. Choosing either of those locks you into the GPU vendor and hence your code cannot run on systems with cards from the other vendor (e.g. imagine if your CPU code would run on Intel chips but not AMD chips). Having said that, both vendors plan to support a new emerging standard called OpenCL, which theoretically means your kernels can execute on any GPU that supports it. To learn more about all of these there is a website: &lt;a href="http://gpgpu.org/"&gt;gpgpu.org&lt;/a&gt;. The caveat about that site is that (currently) it completely ignores the Microsoft approach, which I touch on next.&lt;br /&gt;&lt;br /&gt;On Windows, there is already a cross-GPU-vendor way of programming GPUs and that is the &lt;a href="http://msdn.microsoft.com/directx/"&gt;DirectX&lt;/a&gt; API. Specifically, on Windows Vista and Windows 7, the DirectX 11 API offers a dedicated subset of the API for GPGPU programming: &lt;strong&gt;DirectCompute&lt;/strong&gt;. You use this API on the CPU side, to set up and execute the kernels that run on the GPU. The kernels are written in a language called HLSL (High Level Shader Language). You can use DirectCompute with HLSL to write a "compute shader", which is the term DirectX uses for what I've been referring to in this post as a "kernel". For a comprehensive collection of links about this (including tutorials, videos and samples) please see my blog post: &lt;a href="http://www.danielmoth.com/Blog/2010/02/directcompute.html"&gt;DirectCompute&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note that there are many efforts to build even higher level languages on top of DirectX that aim to expose GPGPU programming to a wider audience by making it as easy as today's mainstream programming models. I'll mention here just two of those efforts: &lt;a href="http://research.microsoft.com/en-us/projects/Accelerator/"&gt;Accelerator&lt;/a&gt; from MSR and &lt;a href="http://brahma.ananthonline.net/"&gt;Brahma&lt;/a&gt; by Ananth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-7595936871766439697?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/7595936871766439697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/02/gpgpu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/7595936871766439697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/7595936871766439697'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/02/gpgpu.html' title='GPGPU'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-4432154648520600479</id><published>2010-02-06T06:54:00.000Z</published><updated>2010-02-06T06:55:15.762Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Code for Parallelism Features Tour</title><content type='html'>Last year I &lt;a href="http://www.danielmoth.com/Blog/2009/11/parallel-computing-features-tour-in.html"&gt;linked to a screencast&lt;/a&gt; that shows off many VS2010 features delivered by the Parallel Computing team.&lt;br /&gt;&lt;br /&gt;There have been requests for the code used to demonstrate the features. Like with all my screencasts, you can see all the code in action, so you could simply type it in. To save you doing that though, you may download the two files with the demo code here: &lt;a href="http://www.danielmoth.com/Blog/MM.cs"&gt;MM.cs&lt;/a&gt; and &lt;a href="http://www.danielmoth.com/Blog/ProgramPCP.cs"&gt;Program.cs&lt;/a&gt;. HTH.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-4432154648520600479?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/4432154648520600479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/02/code-for-parallelism-features-tour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/4432154648520600479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/4432154648520600479'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/02/code-for-parallelism-features-tour.html' title='Code for Parallelism Features Tour'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-7950428725576644224</id><published>2010-02-01T02:24:00.000Z</published><updated>2010-02-01T02:25:14.727Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dot NET general'/><title type='text'>Managed code and the Shell – Do?</title><content type='html'>Back in 2006 I wrote a blog post titled: &lt;a href="http://www.danielmoth.com/Blog/2006/12/managed-code-and-shell-dont.html"&gt;Managed code and the Shell – Don't!&lt;/a&gt;. Please visit &lt;a href="http://www.danielmoth.com/Blog/2006/12/managed-code-and-shell-dont.html"&gt;that post&lt;/a&gt; to see why that advice was given.&lt;br /&gt;&lt;br /&gt;The crux of the issue has been addressed in the latest CLR via &lt;a href="http://msdn.microsoft.com/en-us/library/ee518876(VS.100).aspx"&gt;In-Process Side-by-Side Execution&lt;/a&gt;. In addition to the MSDN documentation I just linked, there is also an MSDN article on the topic: &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee819091.aspx"&gt;In-Process Side-by-Side&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, even though the major technical impediment seems to be removed, I don’t know if Microsoft is now officially supporting managed extensions to the shell. Either way, I noticed a CodePlex project that is marching ahead to enable exactly that: &lt;a href="http://mmsf.codeplex.com/"&gt;Managed Mini Shell Extension Framework&lt;/a&gt;. Not much activity there, but maybe it will grow once .NET 4 is released...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-7950428725576644224?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/7950428725576644224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/01/managed-code-and-shell-do.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/7950428725576644224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/7950428725576644224'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/01/managed-code-and-shell-do.html' title='Managed code and the Shell – Do?'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-3131572115931904306</id><published>2010-01-04T07:00:00.000Z</published><updated>2010-01-04T07:00:02.150Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Dev Lead Job opening on my team</title><content type='html'>My product unit (Parallel Developer Tools) is hiring a developer lead here in Redmond. This position is specifically on the debugger feature team that I "Program Manage".&lt;br /&gt;&lt;br /&gt;So, if you have what it takes and don't mind working with me every single day, click on the link below to read more and apply. You can also send me your resume and I'll make sure it gets to the right place and that you get a prompt response.&lt;br /&gt;&lt;br /&gt;There is a very long &lt;a href="https://careers.microsoft.com/JobDetails.aspx?jid=9974"&gt;job description on the Microsoft careers site under job id 707388&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is an excerpt from the middle (&lt;strong&gt;emphasis&lt;/strong&gt; mine):&lt;blockquote&gt;"...&lt;br /&gt;We are in search of a talented and innovative senior &lt;strong&gt;lead&lt;/strong&gt; software design engineer to own development of the &lt;strong&gt;debugging&lt;/strong&gt; tools for &lt;strong&gt;data parallelism&lt;/strong&gt; (including &lt;strong&gt;GP-GPU&lt;/strong&gt;) and &lt;strong&gt;HPC&lt;/strong&gt; Clusters being built by our team.&lt;br /&gt;&lt;br /&gt;To be successful, you need to be able to guide careers, design and architect well, &lt;strong&gt;communicate&lt;/strong&gt; and share the &lt;strong&gt;best development practices&lt;/strong&gt;, collaborate with your peers, contribute to the vision, and &lt;strong&gt;code&lt;/strong&gt; significant portions of the solution. We want to hear from you if you're passionate about making your mark in the parallel development space, improving people, and building world-class tools."&lt;br /&gt;&lt;br /&gt;Responsibilities include:&lt;br /&gt;Managing a team of senior and junior developers&lt;br /&gt;&lt;strong&gt;Design&lt;/strong&gt; and coding &lt;strong&gt;high-quality&lt;/strong&gt; software&lt;br /&gt;..."&lt;/blockquote&gt;&lt;br /&gt;For the full background story, requirements, qualifications and responsibilities please visit the &lt;a href="https://careers.microsoft.com/JobDetails.aspx?jid=9974"&gt;official page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-3131572115931904306?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/3131572115931904306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/01/dev-lead-job-opening-on-my-team.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3131572115931904306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3131572115931904306'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/01/dev-lead-job-opening-on-my-team.html' title='Dev Lead Job opening on my team'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-5285633801016423286</id><published>2010-01-01T09:01:00.000Z</published><updated>2010-01-01T09:01:00.298Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Best of "The Moth" 2009</title><content type='html'>Not wanting to break the tradition (&lt;a href="http://www.danielmoth.com/Blog/2005/01/best-of-moth-2004.html"&gt;2004&lt;/a&gt;, &lt;a href="http://www.danielmoth.com/Blog/2006/01/best-of-moth-2005.html"&gt;2005&lt;/a&gt;, &lt;a href="http://www.danielmoth.com/Blog/2007/01/best-of-moth-2006.html"&gt;2006&lt;/a&gt;, &lt;a href="http://www.danielmoth.com/Blog/2008/01/best-of-moth-2007.html"&gt;2007&lt;/a&gt;, &lt;a href="http://www.danielmoth.com/Blog/2009/01/best-of-moth-2008.html"&gt;2008&lt;/a&gt;) below are some blog posts I picked from my blogging last year. As you can see by comparing with the links above, 2009 marks my lowest output yet with only 64 posts, but hopefully the quality has not been lowered ;-) &lt;blockquote&gt;&lt;strong&gt;1.&lt;/strong&gt; Parallel Computing was a strong focus of course. You can find links to most of that content aggregated in the post where I shared my entire &lt;a href="http://www.danielmoth.com/Blog/2009/02/give-session-on-parallel-programming-or.html"&gt;parallelism session&lt;/a&gt;. Related to that was the link to the screencast I shared of the &lt;a href="http://www.danielmoth.com/Blog/2009/11/parallel-computing-features-tour-in.html"&gt;Parallel Computing Features Tour&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href="http://www.danielmoth.com/Blog/2009/11/parallel-debugging.html"&gt;Parallel Debugging&lt;/a&gt; is obviously part of the parallel computing links above, but I created more in depth content around that area of Visual Studio 2010 since it is the one I directly own. I aggregated all the links to that content in my post: &lt;a href="http://www.danielmoth.com/Blog/2009/11/parallel-debugging.html"&gt;Parallel Debugging&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; &lt;a href="http://www.danielmoth.com/Blog/labels/HPC.html"&gt;High Performance Computing&lt;/a&gt; through clusters is an area I'll be focusing more next year (besides parallelism on a single node on the client captured above) and I started introducing the topic on my blog this year. Read the (currently) 6 posts bottom up from my category on &lt;a href="http://www.danielmoth.com/Blog/labels/HPC.html"&gt;HPC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; &lt;a href="http://www.danielmoth.com/Blog/2009/04/windows-7-task-manager-screenshot.html"&gt;Windows 7 Task Manager&lt;/a&gt;. In April I shared a screenshot which was the most "borrowed" item from my blog (I should have watermarked it ;-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.&lt;/strong&gt; &lt;a href="http://www.danielmoth.com/Blog/2009/10/windows-mobile-development-in-vs2010.html"&gt;Windows Phone non-support in VS2010&lt;/a&gt;. Did my bit to spread clarification of the story.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6.&lt;/strong&gt; &lt;a href="http://www.danielmoth.com/Blog/2009/10/window-positions-in-visual-studio.html"&gt;Window positions in Visual Studio&lt;/a&gt; is a long post, but one that I strongly advise all VS users to read and benefit from.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7.&lt;/strong&gt; &lt;a href="http://www.danielmoth.com/Blog/2009/12/bug-triage.html"&gt;Bug Triage&lt;/a&gt; gives you a glimpse into one thing all (Microsoft) product teams do.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you haven't yet, you can subscribe via one of the options on the left. Either way, thank you for staying tuned… Happy New Year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-5285633801016423286?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/5285633801016423286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2010/01/best-of-moth-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5285633801016423286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5285633801016423286'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2010/01/best-of-moth-2009.html' title='Best of &quot;The Moth&quot; 2009'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-633800654290487424</id><published>2009-12-07T03:56:00.000Z</published><updated>2010-03-09T07:18:11.180Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareProcess'/><title type='text'>Bug Triage</title><content type='html'>In this &lt;strike&gt;blog post&lt;/strike&gt; &lt;em&gt;brain dump&lt;/em&gt;, I'll attempt to describe the process my team tries to follow when dealing with new bug reports (specifically, code defect reports). This is not official Microsoft policy, just the way we do things… if you do things differently and want to share, you can do so at the bottom in the comments (or on your blog).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Feature Triage Team&lt;/strong&gt;&lt;br /&gt;A subset of the &lt;a href="http://leansoftwareengineering.com/2009/04/07/feature-crews/"&gt;feature crew&lt;/a&gt;, the triage team (which has representations from the PM, Dev and QA disciplines), looks at all unassigned bugs at regular intervals. This can be weekly or daily (or other frequency) dependent on which part of the product cycle we are in and what the untriaged bug load looks like. They discuss each bug considering the evidence and make a decision of whether the bug goes from Not Yet Assigned to Assigned (plus the name of the DEV to fix this) or whether it goes from Active to Resolved (which means it gets assigned back to the requestor for closure or further debate if they were not present at the triage meeting). Close to critical milestones, the feature triage team needs to further justify bugs they take to additional higher-level triage teams.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bug Opened = Not Yet Assigned&lt;/strong&gt;&lt;br /&gt;Someone (typically an &lt;a href="http://microsoftjobsblog.com/test/"&gt;SDET&lt;/a&gt; from the QA team) creates the bug item (e.g. in &lt;a href="http://msdn.microsoft.com/en-us/teamsystem/dd408382.aspx"&gt;TFS&lt;/a&gt;), ensuring they populate all the relevant fields including: Title, Description, Repro Steps (including the Actual Result at the end of the steps), attachments of code and/or screenshots, Build number that they observed the issue in, regression details if applicable, how it was found, if a test case exists or needs to be created etc. They also indicate their opinion on the Priority and Severity. The bug status is left as Not Yet Assigned.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Issue" versus "Fix for issue"&lt;/strong&gt;&lt;br /&gt;The solution to some bugs is easy to determine, e.g. "bug: the column name is misspelled". Obviously the fix is to correct the spelling – still, the triage team should be explicit and enter the correct spelling in the bug's Description. Note that a bad bug name here would be "bug: fix the spelling of the column" (it describes the solution, rather than the problem).&lt;br /&gt;&lt;br /&gt;Other solutions are trickier to establish, e.g. "bug: the column header is not accessible (can only be clicked on with the mouse, not reached via keyboard)". What is the correct solution here? The last thing to do is leave this undetermined and just assign it to a developer. The solution has to be entered in the description. Behind this type of a bug usually hides a spec defect or a new feature request.&lt;br /&gt;&lt;br /&gt;The person opening the bug should focus on describing the &lt;em&gt;issue&lt;/em&gt;, rather than the &lt;em&gt;solution&lt;/em&gt;. The person indicates what the fix is in their opinion by stating the Expected Result (immediately after stating the Actual Result). If they have a complex suggested solution, that should be split out in a separate part, but the triage team has the final say before assigning it. If the solution is lengthy/complicated to describe, the bug can be assigned to the PM. Note: the strict interpretation suggests that any bug with no clear, obvious solution is always a hole in the spec and should always go to the PM. This also ensures the spec gets updated.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Not Yet Assigned -&gt; Not Yet Assigned (on someone else's plate)&lt;/strong&gt;&lt;br /&gt;If the bug is observed in our feature, but the cause is actually another team, we change the Area Path (which is the way we identify teams in TFS) and leave it as Not Yet Assigned. The triage team may add more comments as appropriate including potentially changing the repro steps. In some cases, we may even resolve the bug in our area path and open a new bug in the area path of the other team.&lt;br /&gt;&lt;br /&gt;Even though there is no action on a dev on the team, the bug still needs to be tracked. One way of doing this is to implement some notification system that informs the team when the tracked bug changed status; another way is to occasionally run a global query (against all area paths) for bugs that have been opened by a member of the team and follow up with the current owners for stale bugs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Not Yet Assigned -&gt; Resolved&lt;/strong&gt;&lt;br /&gt;This state transition can only be made by the Feature Triage Team.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;0.&lt;/strong&gt; Sometimes the bug description is not clear and in that case it gets Resolved as More Information Needed, so the original requestor can provide it.&lt;br /&gt;After understanding what the bug item is about, the first decision is to determine whether it needs to go to a dev.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; If it is a known bug, it gets resolved as "Duplicate" and linked to the existing bug.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; If it is "By Design" it gets resolved as such, indicating that the triage team does not think this is a bug.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; If the bug does not repro on latest bits, it is resolved as "No Repro"&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; The most painful: If it is decided that we cannot fix it for this release it gets resolved as "Postponed" or "Won't Fix". The former is typically due to resources and time constraints, while the latter is due to deciding that it is not important enough to consume our resources in any release (yes, not all bugs must be fixed!). For both cases, there are other factors that contribute to the decision such as: existence of a reasonable workaround, frequency we expect users to encounter the issue, dependencies on other team to offer a solution, whether it breaks a core scenario, whether it prohibits customer feedback on a major feature, is it a regression from a previous release, impact of the fix on other partner teams (e.g. User Education, User Experience, Localization/Globalization), whether this is the right fix, does the fix impact performance goals, and last but not least, severity of bug (e.g. loss of customer data, security threat, crash, hang). The bar for fixing a bug goes up as the release date approaches. The triage team becomes hardnosed about which bugs to take, while the developers are busy resolving assigned bugs thus everyone drives for Zero Bug Bounce (ZBB). ZBB is when you have 0 active bugs older than 48 hours.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Not Yet Assigned -&gt; Assigned&lt;/strong&gt;&lt;br /&gt;If the bug is something we decide to fix in this release and the solution is known, then it is assigned to a DEV. This is either the developer that will do the work, or a Lead that can further assign it to one of his developer team based on a load balancing algorithm of their choosing.&lt;br /&gt;&lt;br /&gt;Sometimes, the triage team needs the dev to do some investigation work before deciding whether to take the fix; similarly, the checkin for the fix may be gated on code review by the triage team. In these cases, these instructions are provided in the comments section of the bug and when the developer is done they notify the triage team for final decision.&lt;br /&gt;&lt;br /&gt;Additionally, a Priority and Severity (from 0 to 4) has to be entered, e.g. a P0 means "drop anything you are doing and fix this now" whereas a P4 is something you get to after all P0,1,2,3 bugs are fixed.&lt;br /&gt;&lt;br /&gt;From a testing perspective, if the bug was found through ad-hoc testing or an external team, the decision is made whether test cases should be added to avoid future regressions. This is communicated to the QA team.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Assigned -&gt; Resolved&lt;/strong&gt;&lt;br /&gt;When the developer receives the bug (they should be checking daily for new bugs on their plate looking at bugs in order of priority and from older to newer) they can send it back to triage if the information is not clear. Otherwise, they investigate the bug, setting the Sub Status to "Investigating"; if they cannot make progress, they set the Sub Status to "Blocked" and discuss this with triage or whoever else can help them get unblocked. Once they are unblocked, they set the Sub Status to "Working on Solution"; once they are code complete they send a code review request, setting the Sub Status to "Fix Available". After the iterative code review process is over and everyone is happy with the fix, the developer checks it in and changes the state of the bug from Active (and Assigned to them) to Resolved (and Assigned to someone else).&lt;br /&gt;&lt;br /&gt;The developer needs to ensure that when the status is changed to Resolved that it is assigned to a QA person. For example, maybe the PM opened the bug, but it should be a QA person that will verify the fix - the developer needs to manually change the assignee in that case. Typically the QA person will send an email to the original requestor notifying them that the fix is verified.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolved -&gt; ??&lt;/strong&gt;&lt;br /&gt;In all cases above, note that the final state was Resolved. What happens after that? The final step should be Closed. The bug is closed once the QA person verifying the fix is happy with it. If the person is not happy, then they change the state from Resolved to Active, thus sending it back to the developer. If the developer and QA person cannot reach agreement, then triage can be brought into it. An easy way to do that is change the status back to Not Yet Assigned with appropriate comments so the triage team can re-review.&lt;br /&gt;&lt;br /&gt;It is important to note that only QA can close a bug. That means that if the opener of the bug was a PM, when the bug gets resolved by the dev it may land on the PM's plate and after a quick review, the PM would re-assign to an SDET, which is the only role that can close bugs. One exception to this is if the person that filed the bug is external: in that case, we leave it Resolved and assigned to them and also send them a notification that they need to verify the fix. Another exception is if specialized developer knowledge is needed for verifying the bug fix (e.g. it was a refactoring suggestion bug typically not observable by the user) in which case it is fine to have a developer verify the fix, and ideally a different developer to the one that opened the bug.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Other links on bug triage&lt;/strong&gt;&lt;br /&gt;A quick search reveals that others have talked about this subject, e.g. &lt;a href="http://blogs.technet.com/office_sustained_engineering/archive/2009/02/12/triaging-bugs-what-s-that-all-about.aspx"&gt;here&lt;/a&gt;, &lt;a href="http://blogs.technet.com/office_sustained_engineering/archive/2008/12/12/why-doesn-t-office-just-fix-all-of-the-bugs-before-they-ship-it"&gt;here&lt;/a&gt;, &lt;a href="http://channel9.msdn.com/posts/TheChannel9Team/Alex-Kipman-Inside-a-MS-Build-Bug-Triage-meeting/"&gt;here&lt;/a&gt;, &lt;a href="http://www.bobcongdon.net/blog/2005/11/triage.html"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/tonyschr/archive/2006/01/12/512164.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Your take?&lt;/strong&gt;&lt;br /&gt;If you have other best practices your team uses to deal with incoming bug reports, feel free to share in the comments below or on your blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-633800654290487424?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/633800654290487424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/12/bug-triage.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/633800654290487424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/633800654290487424'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/12/bug-triage.html' title='Bug Triage'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-754425658093651664</id><published>2009-11-17T23:26:00.001Z</published><updated>2009-11-17T23:26:57.341Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Parallel Computing Features Tour in VS2010</title><content type='html'>Just realized that I have not linked from here to a screencast I recorded a couple weeks ago that shows the API, parallel debugger and concurrency visualizer in VS2010. Take a few minutes to watch the &lt;a href="http://channel9.msdn.com/posts/DanielMoth/VS2010-Parallel-Computing-Features-Tour/Default.aspx"&gt;VS2010 Parallel Computing Features Tour&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-754425658093651664?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/754425658093651664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/parallel-computing-features-tour-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/754425658093651664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/754425658093651664'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/parallel-computing-features-tour-in.html' title='Parallel Computing Features Tour in VS2010'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-3643844160930233273</id><published>2009-11-15T07:55:00.000Z</published><updated>2010-03-06T07:07:10.478Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='HPC'/><title type='text'>MPI Cluster Debugger launch integration in VS2010</title><content type='html'>Let's assume that you have all the &lt;a href="http://www.danielmoth.com/Blog/2009/10/installing-hpc-server-2008.html"&gt;HPC bits installed&lt;/a&gt; and that you have existing &lt;a href="http://www.danielmoth.com/Blog/2009/11/message-passing-interface-mpi.html"&gt;MPI&lt;/a&gt; code (or you created a "Hello World" project using the &lt;a href="http://www.danielmoth.com/Blog/2009/11/mpi-project-template-for-vs2010.html"&gt;MPI project template&lt;/a&gt;). Of course, you create a single MPI application and at runtime it will correspond to multiple processes (of the same app) launched on multiple nodes (i.e. machines) on the cluster. So how do you debug such a situation by simply hitting the familiar "F5" keystroke (i.e. Debug -&gt; Start Debugging)?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WATCH IT INSTEAD OF READING ABOUT IT&lt;/strong&gt;&lt;br /&gt;If you can't bear to read through all the details below, just watch this &lt;a href="http://channel9.msdn.com/posts/DanielMoth/VS2010-MPI-Cluster-Debugger-launch-integration/"&gt;19-minute screencast explaining this VS2010 feature&lt;/a&gt;. Alternatively, or even additionally, keep on reading.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;REQUIREMENT&lt;/strong&gt;&lt;br /&gt;When you debug an MPI application, you would want the copying of resources from your client machine (where Visual Studio is installed) to each compute node (where Windows HPC Server is installed) to take place automatically for you. 'Resources' in the previous sentence includes your application binary, plus any binary or data dependencies it may have, plus &lt;a href="http://msdn.microsoft.com/en-us/library/yd4f8bd1(VS.100).aspx"&gt;PDB&lt;/a&gt;s if needed, plus the debug &lt;a href="http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.100).aspx"&gt;CRT&lt;/a&gt; of the correct bitness, plus msvsmon for remote debugging to work. You would also want, after copying is complete, to have your app and msvsmon launched and attached so that you can hit breakpoints back in Visual Studio on your client machine. All these thing that you would want are delivered in VS2010.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;STEPS TO F5&lt;/strong&gt;&lt;br /&gt;1. In your MPI project where you have placed a breakpoint go to Project Properties -&gt; Configuration Properties -&gt; Debugging. Ensure the "Debugger to launch" combo box value is set to &lt;strong&gt;MPI Cluster Debugger&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;2. There are a whole bunch of properties here and typically you can ignore all of them except one: &lt;strong&gt;Run Environment&lt;/strong&gt;.  By default it is set to run 1 process on your local machine and if you change the number after that to, for example, 4 it will launch 4 processes of your app on your local machine.&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/MPIClusterDebuggerPages.png"/&gt;&lt;br /&gt;You want this to run on your cluster though, so go to the dropdown arrow at the end of the Run Environment cell and open it to expose the "Edit Hpc node" menu which opens the &lt;strong&gt;Node Selector&lt;/strong&gt; dialog:&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/NodeSelector.png"/&gt;&lt;br /&gt;In this dialog you can enter (or pick from a list) the cluster head node name and then the number of processes you want to execute on the cluster and then hit OK and… you are done.&lt;br /&gt;&lt;br /&gt;3. Press F5 and watch your breakpoint get hit (after giving it some time for copying, remote execution, attachment and symbol resolution to take place).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GOING DEEPER&lt;/strong&gt;&lt;br /&gt;In the MPI Cluster Debugger project properties above, you can see many additional properties to the Run Environment. They are all optional, but you may want to understand them in order to fine tune your cluster debugging. Read all about each one of these on the MSDN page &lt;a href="http://msdn.microsoft.com/en-us/library/dd560807(VS.100).aspx"&gt;Configuration Properties for the MPI Cluster Debugger&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the Node Selector dialog above you can see more options than just the Head Node name and Number of Process to run. They should be self-explanatory but I also cover them in depth in &lt;a href="http://channel9.msdn.com/posts/DanielMoth/VS2010-MPI-Cluster-Debugger-launch-integration/"&gt;my screencast&lt;/a&gt; showing you an example of why you would choose to schedule processes per core versus per node. You can also read about these options on MSDN as part of the page &lt;a href="http://msdn.microsoft.com/en-us/library/dd560809(VS.100).aspx"&gt;How to: Configure and Launch the MPI Cluster Debugger&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To read through an example that touches on MPI project creation, project properties, node selector, and also usage of MPI with OpenMP plus MPI with PPL, read the MSDN page &lt;a href="http://msdn.microsoft.com/en-us/library/ee441265(VS.100).aspx"&gt;Walkthrough: Launching the MPI Cluster Debugger in Visual Studio 2010&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy MPI debugging!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-3643844160930233273?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/3643844160930233273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/mpi-cluster-debugger-launch-integration.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3643844160930233273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3643844160930233273'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/mpi-cluster-debugger-launch-integration.html' title='MPI Cluster Debugger launch integration in VS2010'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-3424167366551055277</id><published>2009-11-13T05:06:00.000Z</published><updated>2009-11-15T03:28:21.502Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Parallel Debugging</title><content type='html'>Using Visual Studio 2010 &lt;strong&gt;parallel debugging &lt;/strong&gt;is easy. Two new debugging windows provide a total view of the internals of your PPL and TPL applications with hints on where to start investigations. These are not mere extensions to VS, but tightly integrated with the rest of the debugger experience, so you don't need to learn many new techniques. Use them in  your program to eclipse bugs from existence!&lt;br /&gt;&lt;br /&gt;One of the most FAQ I receive is links to VS2010 parallel debugging content and rather than keep sending many, I decided to gather them all under one permalink, hence this multi link blog post.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee410778.aspx"&gt;MSDN Magazine article on Parallel Debugging&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://channel9.msdn.com/posts/DanielMoth/Parallel-Debugging-in-Visual-Studio-2010-MSDN-mag-companion/"&gt;Screencast of sample code from the article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd554943(VS.100).aspx"&gt;MSDN Walkthrough: Debugging a Parallel Application (VB, C++, C#)&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://channel9.msdn.com/posts/DanielMoth/Parallel-Stacks--new-Visual-Studio-2010-debugger-window/"&gt;Screencast of walkthrough for Parallel Stacks&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://channel9.msdn.com/posts/DanielMoth/Parallel-Tasks--new-Visual-Studio-2010-debugger-window/"&gt;Screencast of walkthrough for Parallel Tasks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd998369(VS.100).aspx"&gt;MSDN "How To" on Parallel Tasks&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd998398(VS.100).aspx"&gt;MSDN "How To" on Parallel Stacks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-tasks-new-visual-studio-2010.html"&gt;Detailed blog post on Parallel Tasks&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-stacks-another-new-vs2010.html"&gt;Detailed blog post on Parallel Stacks&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-stacks-tasks-view.html"&gt;Detailed blog post on Parallel Stacks - Tasks View&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://www.danielmoth.com/Blog/2009/06/parallel-stacks-method-view.html"&gt;Detailed blog post on Parallel Stacks - Method View&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.danielmoth.com/Blog/DanielMoth_ParallelDebuggingVS2010_Beta2.pptx"&gt;Download slides on Parallel Tasks and Parallel Stacks (pptx)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have questions on these, please post to any of the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/parallelcomputing"&gt;parallel computing forums&lt;/a&gt; or the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/vsdebug"&gt;debugging forum&lt;/a&gt; (your question will be routed to me if nobody else can answer it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-3424167366551055277?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/3424167366551055277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/parallel-debugging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3424167366551055277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3424167366551055277'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/parallel-debugging.html' title='Parallel Debugging'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-5881683492041464796</id><published>2009-11-12T04:09:00.000Z</published><updated>2009-11-12T04:09:17.524Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>"Parallel Programming Talk" show</title><content type='html'>Over at the Intel Software Network Aaron Tersteeg runs a "Parallel Programming Talk" audio show on which I was invited as a guest (for the 55th episode) to talk about Microsoft's parallelism offerings in Visual Studio 2010. The call started at 7:45AM, so if my voice sounds croaky to you, now you know why ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://software.intel.com/en-us/blogs/2009/11/11/parallel-programming-talk-55-daniel-moth-on-microsoft-visual-studio-2010/"&gt;Check out the 20-minute chat (and related hyperlinks) on Aaron's blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-5881683492041464796?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/5881683492041464796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/parallel-programming-talk-show.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5881683492041464796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5881683492041464796'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/parallel-programming-talk-show.html' title='&quot;Parallel Programming Talk&quot; show'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-233401544154736655</id><published>2009-11-12T00:01:00.000Z</published><updated>2010-03-06T07:07:10.479Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='HPC'/><title type='text'>Message Passing Interface (MPI)</title><content type='html'>So you have &lt;a href="http://www.danielmoth.com/Blog/2009/10/installing-hpc-server-2008.html"&gt;installed your cluster&lt;/a&gt; and you are done with &lt;a href="http://www.danielmoth.com/Blog/2009/11/windows-hpc-server-links.html"&gt;introductory material on Windows HPC&lt;/a&gt;. Now you want to develop an application with the most common programming model: Message Passing Interface.&lt;br /&gt;&lt;br /&gt;The MPI programming model is a standard with implementations from many vendors. For newbies (like myself!), I have aggregated below links for getting started.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Non-Microsoft MPI resources (useful even if you are not on the Windows platform)&lt;/strong&gt;&lt;br /&gt;1. &lt;a href="http://en.wikipedia.org/wiki/Message_Passing_Interface"&gt;Message Passing Interface on wikipedia&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;2. &lt;a href="http://www.mcs.anl.gov/mpi/"&gt;The MPI standard&lt;/a&gt;.&lt;br /&gt;3. &lt;a href="http://www.mcs.anl.gov/research/projects/mpich2/"&gt;MPICH2 - an MPI implementation&lt;/a&gt;.&lt;br /&gt;4. &lt;a href="http://www.mcs.anl.gov/research/projects/mpi/tutorial/gropp/talk.html"&gt;Tutorial on MPI by William Gropp&lt;/a&gt;.&lt;br /&gt;5. &lt;a href="http://www.mcs.anl.gov/research/projects/mpi/tutorial/mpiexmpl/contents.html"&gt;MPI patterns presented as a tutorial with sample code&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;6. &lt;a href="http://www.mpi-forum.org/"&gt;THE official MPI Forum (maintains the standard)&lt;/a&gt; including the &lt;a href="https://svn.mpi-forum.org/trac/mpi-forum-web"&gt;wiki discussing the MPI future&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;7. &lt;a href="https://computing.llnl.gov/tutorials/mpi/"&gt;Great MPI tutorial&lt;/a&gt; including at the end the &lt;a href="https://computing.llnl.gov/tutorials/mpi/exercise.html"&gt;MPI Exercise&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;8. &lt;a href="http://people.sc.fsu.edu/~burkardt/cpp_src/mpi/mpi.html"&gt;C++ MPI Exercises&lt;/a&gt; by John Burkardt.&lt;br /&gt;&lt;br /&gt;9. &lt;a href="http://www.netlib.org/utk/papers/mpi-book/mpi-book.html"&gt;Book online: MPI The Complete Reference&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MS-MPI&lt;/strong&gt;&lt;br /&gt;10. &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=D5838485-507C-45CD-8AA6-6D6B383D1071"&gt;Windows HPC Server 2008 - Using MS-MPI whitepaper&lt;/a&gt; (15 page doc).&lt;br /&gt;&lt;br /&gt;11. &lt;a href="http://download.microsoft.com/download/4/c/f/4cfd0f76-8811-42c0-8ee1-d7d469a8abe7/TracingMPIApplications_final.doc"&gt;Tracing MPI applications&lt;/a&gt; (27 page doc).&lt;br /&gt;&lt;br /&gt;12. &lt;a href="http://technet.microsoft.com/en-us/library/cc720120(WS.10).aspx"&gt;Using Microsoft MPI&lt;/a&gt; (TechNet section).&lt;br /&gt;&lt;br /&gt;13. &lt;a href="http://social.microsoft.com/forums/en-US/windowshpcmpi/threads/"&gt;Windows HPC Server MPI forum&lt;/a&gt; (for posting questions). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MPI.NET&lt;/strong&gt;&lt;br /&gt;14. &lt;a href="http://osl.iu.edu/research/mpi.net/"&gt;MPI.NET Home Page&lt;/a&gt; (not owned by Microsoft).&lt;br /&gt;15. MPI.NET &lt;a href="http://www.osl.iu.edu/research/mpi.net/documentation/tutorial/"&gt;Tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;16. &lt;a href="http://download.microsoft.com/download/4/c/f/4cfd0f76-8811-42c0-8ee1-d7d469a8abe7/FSharpHPC_final.doc"&gt;HPC Development using F#&lt;/a&gt; using MPI.NET (38 page doc).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next time I'll post resources for the Microsoft Cluster SOA programming model - happy coding...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-233401544154736655?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/233401544154736655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/message-passing-interface-mpi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/233401544154736655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/233401544154736655'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/message-passing-interface-mpi.html' title='Message Passing Interface (MPI)'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-7681189868796072617</id><published>2009-11-11T03:27:00.000Z</published><updated>2010-03-06T07:07:10.479Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='HPC'/><title type='text'>Windows HPC Server links</title><content type='html'>I've already described how to &lt;a href="http://www.danielmoth.com/Blog/2009/10/installing-hpc-server-2008.html"&gt;setup a Windows HPC Server&lt;/a&gt; for development. Before you dive into developing for the cluster, if you are new to this it is probably a good idea to learn the basics by reading some overview material. Below is a list of links.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Direct Links to Windows HPC content&lt;br /&gt;&lt;/strong&gt;1. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=360B83FB-4000-43E2-B6E8-BE4373AD9C94"&gt;Windows HPC Server 2008 Overview Datasheet&lt;/a&gt;  (4 page pdf).&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7A4544F0-81F2-4778-8A59-35C43BA49875"&gt;Windows HPC Server 2008 Technical Overview&lt;/a&gt; (32 page doc).&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=036AC24C-3128-4722-8751-C15BFD9246E2"&gt;Windows HPC Server 2008 Getting Started Guide&lt;/a&gt; (26 page doc) which actually is available online as part of the &lt;a href="http://technet.microsoft.com/en-us/library/cc510343(WS.10).aspx"&gt;TechNet technical library section on Windows HPC Server 2008&lt;/a&gt;, which includes much more useful data.&lt;br /&gt;&lt;br /&gt;4. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DAB977D5-2311-4B80-9257-477838C0EB6F"&gt;Windows HPC Server 2008 Job Scheduler&lt;/a&gt; (38 page doc).&lt;br /&gt;5. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=D4DA1DA8-DF9C-47F2-BB69-38D687C77EDF"&gt;Windows HPC Server 2008 Job Templates&lt;/a&gt; (56 page doc).&lt;br /&gt;&lt;br /&gt;6. &lt;a href="http://go.microsoft.com/fwlink/?LinkId=132740"&gt;Developing for the Windows HPC Server 2008 Platform&lt;/a&gt; (16 page doc or &lt;a href="http://resourcekit.windowshpc.net/DEVELOPER/Papers2/Developing%20for%20the%20Windows%20HPC%20Server%202008%20Platform%20final.pdf"&gt;pdf version&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows HPC sites&lt;br /&gt;&lt;/strong&gt;7. &lt;a href="http://social.microsoft.com/Forums/en-US/category/windowshpc"&gt;Windows HPC Forums&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;8. &lt;a href="http://www.microsoft.com/hpc/dev"&gt;HPC Developer Resources&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;9. &lt;a href="http://resourcekit.windowshpc.net/developer.html"&gt;Windows HPC Server 2008 Resource Kit - Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;10. &lt;a href="http://technet.microsoft.com/en-us/hpc/default.aspx"&gt;Windows HPC Server 2008 - TechNet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;11. &lt;a href="http://blogs.technet.com/WindowsHPC/"&gt;The Windows HPC Team Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HPC Course&lt;br /&gt;&lt;/strong&gt;12. &lt;a href="http://www.pluralsight.com/main/ilt/course.aspx?id=AP21"&gt;High-Performance Computing Fundamentals Course&lt;/a&gt; (pluralisight)&lt;br /&gt;13. &lt;a href="http://download.microsoft.com/download/2/7/B/27B7E38D-FD1F-482A-993D-FA731A662D79/ClassicHPCDevC++.zip"&gt;Classic HPC Development using Visual C++&lt;/a&gt; (course slides and materials in a ZIP). Author's &lt;a href="http://www.pluralsight.com/community/blogs/drjoe/archive/2008/06/19/51178.aspx"&gt;blog post&lt;/a&gt;.&lt;br /&gt;14. &lt;a href="http://download.microsoft.com/download/2/7/B/27B7E38D-FD1F-482A-993D-FA731A662D79/SeqToParallelHPC.zip"&gt;From sequential to parallel code&lt;/a&gt; (course slides and materials in a ZIP). Author's &lt;a href="http://www.pluralsight.com/community/blogs/drjoe/archive/2008/08/18/learning-parallel-programming-from-shared-memory-multi-threading-to-distributed-memory-multi-processing.aspx"&gt;blog post&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next time I will post resources specific to the most popular programming models for the cluster today: &lt;em&gt;MPI&lt;/em&gt; and &lt;em&gt;Cluster SOA&lt;/em&gt; - until then, happy reading!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-7681189868796072617?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/7681189868796072617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/windows-hpc-server-links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/7681189868796072617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/7681189868796072617'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/windows-hpc-server-links.html' title='Windows HPC Server links'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-1779478297241410635</id><published>2009-11-10T18:36:00.000Z</published><updated>2009-11-10T18:37:42.125Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>Extension Manager in Visual Studio 2010</title><content type='html'>One of the powerful aspect of Visual Studio is its ability to be extended and many people do that. You can find numerous extensions at the &lt;a href="http://www.visualstudiogallery.com/"&gt;Visual Studio Gallery&lt;/a&gt;. The VSX team links to a 4-part blog series on &lt;a href="http://blogs.msdn.com/vsxteam/archive/2009/06/08/how-do-i-create-and-share-a-template-on-the-visual-studio-gallery.aspx"&gt;how to create and share templates&lt;/a&gt;. You can also look find extension examples on the &lt;a href="http://code.msdn.microsoft.com/vsx"&gt;vsx code gallery&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With Visual Studio 2010, you can search for items and install them directly from within Visual Studio's new &lt;a href="http://msdn.microsoft.com/en-us/library/dd293638(VS.100).aspx"&gt;Extension Manager&lt;/a&gt;. You launch it from the Tools menu:&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/ExtensionManagerMenu.png"/&gt;&lt;br /&gt;&lt;br /&gt;When the dialog  comes up, be sure to explore the various actionable areas on the left and also note the search on the right. For example, I typed "MP" and it quickly filtered the list to show me the &lt;a href="http://www.danielmoth.com/Blog/2009/11/mpi-project-template-for-vs2010.html"&gt;MPI Project Template&lt;/a&gt;:&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/ExtensionManagerDialog.png"/&gt;&lt;br /&gt;&lt;br /&gt;Others have written about this before me, just &lt;a href="http://www.bing.com/search?q=Extension+Manager+in+%22visual+studio+2010%22"&gt;bing Extension Manager&lt;/a&gt; (and note that Beta2 introduced changes, some of which you can witness in the screenshot above).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-1779478297241410635?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/1779478297241410635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/extension-manager-in-visual-studio-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/1779478297241410635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/1779478297241410635'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/extension-manager-in-visual-studio-2010.html' title='Extension Manager in Visual Studio 2010'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-3469163138786836128</id><published>2009-11-10T03:15:00.001Z</published><updated>2009-11-10T03:15:18.753Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>Core debugger enhancements in VS2010</title><content type='html'>Since my team offers "parallel debugging", we refer to the team delivering all the other debugging features as the "core debugger" team. They have published a &lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-34-Debugger-Enhancements-and-Improvements/"&gt;video of new VS2010 debugger features&lt;/a&gt; that I encourage you to watch to find out about enhancements with DataTips, breakpoints, dump debugging (inc. IL interpreter) and Threads window.&lt;br /&gt;&lt;br /&gt;The raw list of features with short description is also &lt;a href="http://blogs.msdn.com/brads/archive/2009/05/28/debugger-changes-in-visual-studio-2010-beta-1.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-3469163138786836128?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/3469163138786836128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/core-debugger-enhancements-in-vs2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3469163138786836128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3469163138786836128'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/core-debugger-enhancements-in-vs2010.html' title='Core debugger enhancements in VS2010'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-3164926637706579865</id><published>2009-11-08T21:57:00.000Z</published><updated>2009-11-08T22:09:55.092Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Dump debugging with Parallel Stacks</title><content type='html'>One of the areas where we fixed many bugs for Beta2 in our parallel debugging windows is with regards to &lt;a href="http://blogs.msdn.com/rmbyers/archive/2008/10/30/clr-4-0-advancements-in-diagnostics.aspx"&gt;managed dump debugging&lt;/a&gt;. So it was really cool to see &lt;a href="http://blogs.msdn.com/tess/archive/2009/11/06/recap-of-oredev-and-some-net-debugging-videos.aspx"&gt;Tess&lt;/a&gt; use the &lt;a href="http://channel9.msdn.com/posts/DanielMoth/Parallel-Stacks--new-Visual-Studio-2010-debugger-window/"&gt;Parallel Stacks&lt;/a&gt; window in that scenario in &lt;a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Debugging-Crash-Dumps-with-Tess-Ferrandez-and-VS2010/Default.aspx"&gt;her video demo&lt;/a&gt; with &lt;a href="http://www.hanselman.com/blog/HanselminutesOn9DebuggingCrashDumpsWithTessFerrandezAndVS2010.aspx"&gt;Scott&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Other than the neat ability to open managed dumps in VS2010, Parallel Stacks was the only debugging feature she needed for diagnosing the issue! &lt;a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Debugging-Crash-Dumps-with-Tess-Ferrandez-and-VS2010/Default.aspx"&gt;Check out the video, definitely worth 10 minutes of your time&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-3164926637706579865?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/3164926637706579865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/dump-debugging-with-parallel-stacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3164926637706579865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3164926637706579865'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/dump-debugging-with-parallel-stacks.html' title='Dump debugging with Parallel Stacks'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-6784475764869674222</id><published>2009-11-08T03:50:00.000Z</published><updated>2009-11-08T03:50:35.715Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Slides for Parallel Debugging windows</title><content type='html'>Recently I gave a talk at our Microsoft Shanghai offices on Parallel Programming so I had to update my existing &lt;a href="http://www.danielmoth.com/Blog/2009/07/updated-beta1-slides-for-parallelism.html"&gt;Beta1 deck&lt;/a&gt; to Beta2 content. Specifically for Parallel Tasks and Parallel Stacks, I used 5 slides to accompany the demo.&lt;br /&gt;&lt;br /&gt;In case you are giving talks on parallelism within Visual Studio 2010, please feel free to &lt;a href="http://www.danielmoth.com/Blog/DanielMoth_ParallelDebuggingVS2010_Beta2.pptx"&gt;download and use the updated parallel debugger slides (pptx)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;TIP: The slides have animations so be sure to F5 the deck for the full benefit and they also have text in the Comments section so be sure to see them at design time too.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-6784475764869674222?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/6784475764869674222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/slides-for-parallel-debugging-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/6784475764869674222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/6784475764869674222'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/slides-for-parallel-debugging-windows.html' title='Slides for Parallel Debugging windows'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-6701763445884658334</id><published>2009-11-07T04:54:00.000Z</published><updated>2010-03-06T07:07:10.480Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='HPC'/><title type='text'>MPI Project Template for VS2010</title><content type='html'>If you are developing MS MPI applications with Visual Studio 2010, you are probably tired of following some tedious steps for every new C++ project that you create, similar to the following:&lt;blockquote&gt;&lt;strong&gt;1.&lt;/strong&gt; In Solution Explorer, right-click &lt;strong&gt;YourProjectName&lt;/strong&gt;, then click &lt;strong&gt;Properties &lt;/strong&gt;to open the &lt;strong&gt;Property Pages &lt;/strong&gt;dialog box.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Expand &lt;strong&gt;Configuration Properties &lt;/strong&gt;and then under &lt;strong&gt;VC++ Directories &lt;/strong&gt;place the cursor at the beginning of the list that appears in the &lt;strong&gt;Include Directories &lt;/strong&gt;text box and then specify the location of the MS MPI C header files, followed by a semicolon, e.g.&lt;br /&gt;&lt;code&gt;C:\Program Files\Microsoft HPC Pack 2008 SDK\Include;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; Still under &lt;strong&gt;Configuration Properties &lt;/strong&gt;and under &lt;strong&gt;VC++ Directories &lt;/strong&gt;place the cursor at the beginning of the list that appears in the&lt;strong&gt; Library Directories &lt;/strong&gt;text box and then specify the location of the Microsoft HPC Pack 2008 SDK library file, followed by a semicolon, e.g.&lt;br /&gt;if you want to build/debug 32bit application:&lt;br /&gt;&lt;code&gt;C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\i386;&lt;/code&gt;&lt;br /&gt;if you want to build/debug 64bit application:&lt;br /&gt;&lt;code&gt;C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\amd64;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; Under &lt;strong&gt;Configuration Properties &lt;/strong&gt;and then under &lt;strong&gt;Linker&lt;/strong&gt;, select &lt;strong&gt;Input &lt;/strong&gt;and place the cursor at the beginning of the list that appears in the &lt;strong&gt;Additional Dependencies &lt;/strong&gt;text box and then type the name of the MS MPI library, i.e.&lt;br /&gt;&lt;code&gt;msmpi.lib;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.&lt;/strong&gt; In the code file&lt;br /&gt;&lt;code&gt;#include "mpi.h"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6.&lt;/strong&gt; To debug the MPI project you have just setup, under &lt;strong&gt;Configuration Properties &lt;/strong&gt;select &lt;strong&gt;Debugging &lt;/strong&gt;and then switch the &lt;strong&gt;Debugger to launch &lt;/strong&gt;combo value from &lt;code&gt;Local Windows Debugger&lt;/code&gt; to &lt;code&gt;MPI Cluster Debugger&lt;/code&gt;.&lt;/blockquote&gt;Wouldn't it be great if at C++ project creation time you could choose an &lt;strong&gt;MPI Project Template&lt;/strong&gt; that included the steps/configurations above? If you answered "yes", I have good news for you courtesy of a developer on our team (Qing). &lt;br /&gt;&lt;br /&gt;Feel free to download from Visual Studio gallery the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/90fb60d4-0b8c-472f-8135-683d3c45f45a"&gt;MPI Project Template&lt;/a&gt;.&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/MPIProjectTemplate.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-6701763445884658334?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/6701763445884658334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/mpi-project-template-for-vs2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/6701763445884658334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/6701763445884658334'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/11/mpi-project-template-for-vs2010.html' title='MPI Project Template for VS2010'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-2723203874933244033</id><published>2009-10-30T03:11:00.000Z</published><updated>2009-10-30T03:11:35.157Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>Instructions for collecting dumps in VS2010</title><content type='html'>Came across this on an internal email thread and thought it would be useful to share, in case you run into a VS crash and wish to collect the information needed by Microsoft support.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Start 2 instances of Visual Studio 2010  (devenv.exe).&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; In the first one select Tools -&gt; Attach to Process.&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; Click the Select button for “Attach to:” and select Managed and Native.&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; Select the other devenv from the list and click Attach.&lt;br /&gt;&lt;strong&gt;5.&lt;/strong&gt; Switch to the other devenv.&lt;br /&gt;&lt;strong&gt;6.&lt;/strong&gt; Load your solution and try to reproduce the crash.&lt;br /&gt;&lt;strong&gt;7.&lt;/strong&gt; When you hit the crash the debugger should automatically break.&lt;br /&gt;&lt;strong&gt;8.&lt;/strong&gt; Select Debug -&gt; Save Dump As, then set the type to minidump with heap  and save the file to a location with lot’s of space.&lt;br /&gt;&lt;br /&gt;Note: If you are running the VB &lt;a href="http://www.danielmoth.com/Blog/2009/10/visual-studio-profile.html"&gt;profile&lt;/a&gt; you will not see the Save Dump As menu item. To add this menu item:&lt;br /&gt;&lt;strong&gt;a.&lt;/strong&gt; Select Tools -&gt; Customize&lt;br /&gt;&lt;strong&gt;b.&lt;/strong&gt; Select the Commands tab&lt;br /&gt;&lt;strong&gt;c.&lt;/strong&gt; Select Debug from the “Menu bar” dropdown&lt;br /&gt;&lt;strong&gt;d.&lt;/strong&gt; Click “Add Command…”&lt;br /&gt;&lt;strong&gt;e.&lt;/strong&gt; Select Debug from the Categories list.&lt;br /&gt;&lt;strong&gt;f.&lt;/strong&gt; Find the “Save Dump As” entry in the Commands window.&lt;br /&gt;&lt;strong&gt;g.&lt;/strong&gt; Click OK (the “Save Dump As…” command is added to the top of the Debug menu).&lt;br /&gt;&lt;strong&gt;h.&lt;/strong&gt; Click “Close”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-2723203874933244033?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/2723203874933244033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/instructions-for-collecting-dumps-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/2723203874933244033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/2723203874933244033'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/instructions-for-collecting-dumps-in.html' title='Instructions for collecting dumps in VS2010'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-3222084881935602383</id><published>2009-10-23T04:22:00.000+01:00</published><updated>2009-10-23T04:22:17.815+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Positioning the Parallel Stacks window</title><content type='html'>When we developed the &lt;a href="http://www.danielmoth.com/Blog/2009/10/parallel-tasks-and-parallel-stacks.html"&gt;Parallel Debugging windows&lt;/a&gt;, we had to choose their default &lt;a href="http://www.danielmoth.com/Blog/2009/10/window-positions-in-visual-studio.html"&gt;position in Visual Studio&lt;/a&gt;. For Parallel Tasks it was easy: we chose wherever the Threads window appears by default, since the two windows share characteristics in usage and appearance. Parallel Stacks may be similar to the basic concept of the Call Stack window, but it has slightly different usage patterns and very different UI. Here I'll describe our rational for the current choice for the Parallel Stacks window, offering tips and request feedback.&lt;br /&gt;&lt;br /&gt;It was more challenging that just picking a position at random, especially due to the window having high screen real estate demands for typical applications – after all, it is a graphical view of all the call stacks of all the threads/tasks in your application. So, we quickly dismissed having it docked at the bottom or top since those are typically narrow in height windows. Some of us believed that the document editor area would be a good place for it since it has more screen real estate to offer. That approach breaks down when you realize that the Parallel Stacks window is not just presenting data, but it also allows you to quickly switch to any stack frame of any thread (with a double click). When that user action takes place, the code editor navigates to the method context and thus steals the focus from the Parallel Stacks window which gets pushed to the back (this also happens when you simply toggle the "Show External Code" option). So if you want to navigate to various places in the code via a series of examinations, that position quickly becomes irritating (just like if you docked Solution Explorer in the code editor area).&lt;br /&gt;&lt;br /&gt;So we decided the default position to be floating! The idea is that you can resize it based on your preferences and move it in and out of the way if necessary: you get to see as much of it as you want and you keep it on top of other windows (typically to the right side). The real expectation is that you will &lt;strong&gt;drag the floating window to your second monitor and &lt;a href="http://www.danielmoth.com/Blog/2009/10/visual-studio-2010-floating-windows-can.html"&gt;maximize it&lt;/a&gt; there&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Two other options came close to be chosen and I'll offer them here as tips in case they suit you better (in particular if you don't have a second monitor or when debugging on the go on your laptop). One is to dock it within the document editor, but in a New Vertical Tab Group. This way it takes up the space it typically needs, while keeping your code editor in view when you switch stack frames.&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/NewVerticalTabGroup.png" /&gt;&lt;br /&gt;&lt;br /&gt;The other option is to dock the Parallel Stacks window where the Solution Explorer window lives. That way you can resize that group of windows horizontally to see more content (and use for navigation) without taking too much away from your code view (assuming your lines of code are not extremely long). When you are done using it, you can quickly resize it back to normal.&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/DockedWithSolutionExplorer.png" /&gt;&lt;br /&gt;&lt;br /&gt;It is amazing how much thought/discussion goes into, what many people would consider, an insignificant detail, but that is the kind of thing I enjoy, which I guess is why I do what I do. In any case, I am eager to hear how we got this decision wrong, so please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-3222084881935602383?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/3222084881935602383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/positioning-parallel-stacks-window.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3222084881935602383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/3222084881935602383'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/positioning-parallel-stacks-window.html' title='Positioning the Parallel Stacks window'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-5610674765583152889</id><published>2009-10-21T01:04:00.000+01:00</published><updated>2009-10-21T01:04:23.993+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>Window Positions in Visual Studio</title><content type='html'>There are many toolwindows in Visual Studio and each release keeps adding new ones. This is great for offering more features and increasing productivity, but it also adds to the number of windows we need to manage and it makes it even more important to understand how the positioning works in VS (and most of this applies to toolbars as well).&lt;br /&gt;&lt;br /&gt;The first important thing to understand is that there are 3 different window configurations persisted per user on the machine.&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; The &lt;strong&gt;standard&lt;/strong&gt; configuration: the default when you open a solution in Visual Studio.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; The &lt;strong&gt;debugging&lt;/strong&gt; configuration: the one when you hit F5 (and a little window earthquake takes place while everything readjusts).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; The often forgotten, &lt;strong&gt;full screen&lt;/strong&gt; configuration when you hit Shift+Alt+Enter, in any of the previous configurations&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once you understand the above, you should never utter the words: "didn't I just close that window, why did it come back", which we typically hear from presenters on stage after hiding, for example, Solution Explorer and then when they hit F5 it comes back. You need to hide (or otherwise position) each window for every one of the 3 configurations if you really want it to be like that all the time. Another example is if you decide to move the Breakpoints window in standard configuration, don't be surprised if it pops up somewhere else when you debug: to make sure it appears at the same place always, you need to move it to where you want in all configurations. Understanding the above also means that you won’t be looking for the Parallel Tasks window when in standard configuration since it is a debugging window and hence applicable only when in debugging mode. I hope the point is made.&lt;br /&gt;&lt;br /&gt;The second most important thing to understand is that each window has a default position for each one of the configurations. Those default positions are different per &lt;a href="http://www.danielmoth.com/Blog/2009/10/visual-studio-profile.html"&gt;profile that you chose the first time you run Visual Studio&lt;/a&gt;. Just because you have some defaults, it doesn't mean you need to stick with them, so choose what is best for you.&lt;br /&gt;&lt;br /&gt;So what are the two basic choices we make per window?&lt;br /&gt;&lt;strong&gt;A.&lt;/strong&gt; Is it hidden or visible. If it is hidden, we should at least know where it lives on the menus so we can bring it up when we need it (and thus avoid the "out of sight, out of mind" pitfall). So go ahead and explore all the menus under the View menu and don't forget the ones under Architecture, Test and Analyze:&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/ViewArchTestAnalMenus.png"/&gt;&lt;br /&gt;Don't forget that menu options change when you are in debugging mode, so explore the Debug menu once you've hit a breakpoint:&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/DebugMenuB2.png"/&gt;&lt;br /&gt;&lt;em&gt;TIP&lt;/em&gt;: If you are not familiar with all of these windows above, maybe you are not the VS power user you thought you were ;-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;B.&lt;/strong&gt; If you've opened a window, it has a default position that each profile team chose. You need to decide where it lives: floating (this is usually a temporary state or &lt;a href="http://www.danielmoth.com/Blog/2009/10/visual-studio-2010-floating-windows-can.html"&gt;used on the secondary monitor, combined with MAX options&lt;/a&gt;), docked to the left/right/top/bottom (further decision if it is pinned or autohides controlled via the pushpin) or even docked to the center as a tabbed document (see the drop down options in the &lt;a href="http://www.danielmoth.com/Blog/2009/10/visual-studio-2010-floating-windows-can.html"&gt;screenshot of the link&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;With regards to moving a window around for docking I often observe people fighting the IDE, especially since each docking target can have multiple side-by-side groups. It is quite simple. Drag the window towards your desired area and look out for blue shaded region to appear, it represents where your window will go: if you like that position then you can release the mouse button; if you don't, keep moving the window. Along with the blue shadowed region, you also get some arrow targets appearing that you can drag the mouse pointer over (while still keeping the mouse button down so as not to release the window). Here is a screenshot of dragging the Parallel Stacks window towards the top and moving the mouse over the left arrow box that appeared.&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/BlueHighlightDocking.png"/&gt;&lt;br /&gt;After this screenshot was taken I released the mouse button and a new window group was created next to the Parallel Tasks window that was occupied by the Parallel Stacks window. If I wanted it to join the same group as the Parallel Tasks window, I would have dragged towards the middle box and released then.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TIP&lt;/strong&gt;: if you want to drag a window out of its group to floating, don't drag it by the title bar, but instead drag it from its tab. I.e. in the following screenshot, dragging from the title bar (red circle) will float the entire window group whereas dragging from the tab (blue circle) will float just the Parallel Tasks window.&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/ToolwindowTabTitlebar.png"/&gt;&lt;br /&gt;&lt;br /&gt;Finally, you can backup and restore the window layouts via the Tools-&gt; Import and Export Settings menu. FYI, they are stored on your machine in this folder: "%userprofile%\AppData\Roaming\Microsoft\VisualStudio\9.0". Look for the windows.prf and windowsidx.prf files. I found that via this &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.providetoolwindowvisibilityattribute(VS.100).aspx"&gt;msdn link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-5610674765583152889?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/5610674765583152889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/window-positions-in-visual-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5610674765583152889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5610674765583152889'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/window-positions-in-visual-studio.html' title='Window Positions in Visual Studio'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-2508559922450665638</id><published>2009-10-19T17:11:00.000+01:00</published><updated>2009-10-19T18:29:31.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>Visual Studio 2010 Beta2 (build 21006)</title><content type='html'>MSDN Subscribers can download &lt;a href="http://msdn.microsoft.com/vstudio/"&gt;Visual Studio&lt;/a&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=151797"&gt;2010 Beta2&lt;/a&gt; today with general public availability to follow in a couple of days. Official blog posts by &lt;a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx"&gt;Soma&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have been using this since October 8th (2 days after it was built as you can tell from the build number) and it is amazingly better than the Beta1 in terms of performance, stability and new features too. It is worthy of its "go-live" license.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/VS2010SplashWin7.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;More posts to follow from me on VS2010; for now, I just updated the VS &lt;a href="http://www.danielmoth.com/Blog/2009/10/visual-studio-profile.html"&gt;Profile screenshot&lt;/a&gt; and the &lt;a href="http://www.danielmoth.com/Blog/2009/10/parallel-tasks-and-parallel-stacks.html"&gt;Parallel Debugging content&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-2508559922450665638?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/2508559922450665638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/visual-studio-2010-beta2-build-21006.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/2508559922450665638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/2508559922450665638'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/visual-studio-2010-beta2-build-21006.html' title='Visual Studio 2010 Beta2 (build 21006)'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-5687617201343812403</id><published>2009-10-19T16:59:00.000+01:00</published><updated>2009-10-19T16:59:00.376+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><title type='text'>Parallel Tasks and Parallel Stacks content updated for VS2010 Beta2</title><content type='html'>For VS2010 Beta2, rather than write new introductory and overview posts on my two favorite debugger windows (Parallel Tasks and Parallel Stacks), I thought I’d update 4 of the existing blog posts on those topics.&lt;br /&gt;&lt;br /&gt;Please read the updated text and enjoy the updated screenshots&lt;br /&gt;-        &lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-tasks-new-visual-studio-2010.html"&gt;Parallel Tasks&lt;/a&gt;&lt;br /&gt;-        &lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-stacks-another-new-vs2010.html"&gt;Parallel Stacks&lt;/a&gt;&lt;br /&gt;-        &lt;a href="http://www.danielmoth.com/Blog/2009/05/parallel-stacks-tasks-view.html"&gt;Parallel Stacks – Tasks View&lt;/a&gt;&lt;br /&gt;-        &lt;a href="http://www.danielmoth.com/Blog/2009/06/parallel-stacks-method-view.html"&gt;Parallel Stacks – Method View&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, I have updated the recordings behind the screencast URLs on channel9:&lt;br /&gt;-        &lt;a href="http://channel9.msdn.com/posts/DanielMoth/Parallel-Stacks--new-Visual-Studio-2010-debugger-window/"&gt;Parallel Stacks&lt;/a&gt;&lt;br /&gt;-        &lt;a href="http://channel9.msdn.com/posts/DanielMoth/Parallel-Tasks--new-Visual-Studio-2010-debugger-window/"&gt;Parallel Tasks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Each one of the links above has a comment section, feel free to use it for feedback and questions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-5687617201343812403?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/5687617201343812403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/parallel-tasks-and-parallel-stacks.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5687617201343812403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/5687617201343812403'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/parallel-tasks-and-parallel-stacks.html' title='Parallel Tasks and Parallel Stacks content updated for VS2010 Beta2'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7744200.post-8269553742481441665</id><published>2009-10-19T04:47:00.000+01:00</published><updated>2010-03-06T07:07:10.480Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ParallelComputing'/><category scheme='http://www.blogger.com/atom/ns#' term='HPC'/><title type='text'>Installing HPC Server 2008</title><content type='html'>Recently I decided to play around with developing for a cluster on the Microsoft platform and below are the steps I had to take with regards to installation.&lt;br /&gt;&lt;br /&gt;First I gathered a number of old machines at the office, in my case that is 3 dual-core boxes, but you could have done it with just 2 PCs (or many more of course). &lt;strong&gt;On each one&lt;/strong&gt; of those you must install: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=2C6DB4F3-B604-461F-9170-43E9CEE062C5"&gt;Windows HPC Server 2008&lt;/a&gt; (link to trial)&lt;blockquote&gt;a. This includes a trial of the &lt;strong&gt;Windows Server 2008 RTM 64-bit&lt;/strong&gt; operating system (SRVHPC_EN.iso). I already had Windows Server on a separate disc, so I installed what I had. I did not try R2, which is the same code base as Win7, but that should work too. Note that this is just the vanilla operating system (even Standard Edition is good enough) and the important part is the 64-bit. I will assume that you are all capable of installing an OS, so no more instruction or special consideration needed here (window update, join domain, add users etc).&lt;br /&gt;&lt;br /&gt;b. The second part of the link above is an add-on to the operating system, namely the &lt;strong&gt;HPC Pack 2008&lt;/strong&gt; (HPCEval.iso). It is a wizard with a set of steps to complete which are all fairly explanatory of the "click Next" flavor. After installation of the HPC Pack, the &lt;strong&gt;HPC Cluster Manager&lt;/strong&gt; application runs up automatically (or else you can run it through the Start menu) for further step-by-step configuration in an easy to follow outofthebox To-do List.&lt;/blockquote&gt;&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/HPCPack2008.png"/&gt;&lt;br /&gt;&lt;br /&gt;Here are some tips for step b from above, for your developer cluster setup:&lt;br /&gt;&lt;blockquote&gt;i) In the HPC Pack wizard, you will create one of the machines as the Head Node.&lt;br /&gt;&lt;br /&gt;ii) In the HPC Pack wizard, the remainder machines will be created as the Compute Nodes.&lt;br /&gt;&lt;br /&gt;iii) In Cluster Manager, click on "Configure your network" and choose topology 5 "All Nodes only on an Enterprise Network".&lt;br /&gt;&lt;br /&gt;iv) In Cluster Manager, click on "Add compute nodes" and then select "Add compute nodes that have already been configured".&lt;br /&gt;&lt;br /&gt;v) In Cluster Manager, click "Change the role of the head node" and also make it a WCF Broker Node.&lt;br /&gt;&lt;br /&gt;vi) In Cluster Manager, "Validate your cluster" under Diagnostics.&lt;/blockquote&gt;&lt;br /&gt;It may be useful to cross-reference the text above with the following screenshot of HPC Cluster Manager&lt;br /&gt;&lt;img src="http://www.danielmoth.com/Blog/HPCClusterManager.png"/&gt;&lt;br /&gt;&lt;br /&gt;Now that your cluster is installed, you need to set up your development machine (x86 or x64) for developing on this cluster. Here are the things you need to install:&lt;br /&gt;&lt;blockquote&gt;1. &lt;a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx"&gt;Visual Studio 2010&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. HPC Pack 2008. This is essentially the same msi you installed on the server (step b above), but here you will choose the 3rd option Client Utilities (which will probably be your only enabled option as per my screenshot further above).&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=12887da1-9410-4a59-b903-693116bfd30e"&gt;HPC Pack 2008 SDK&lt;/a&gt;. This allows writing client applications that interact with the Job Scheduler running on the Head Node. MSDN has a dedicated page to the &lt;a href="http://msdn.microsoft.com/en-us/library/cc853440(VS.85).aspx"&gt;HPC SDK&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. (optional) Install the separate &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/90fb60d4-0b8c-472f-8135-683d3c45f45a"&gt;MPI Project Template&lt;/a&gt;, for VS2010.&lt;/blockquote&gt;&lt;br /&gt;You are now ready to develop your cluster applications on your development machine and to debug/deploy them on your cluster. More on that in future blog posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7744200-8269553742481441665?l=www.danielmoth.com%2FBlog%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/8269553742481441665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/installing-hpc-server-2008.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/8269553742481441665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7744200/posts/default/8269553742481441665'/><link rel='alternate' type='text/html' href='http://www.danielmoth.com/Blog/2009/10/installing-hpc-server-2008.html' title='Installing HPC Server 2008'/><author><name>The Moth</name><uri>http://www.blogger.com/profile/00641557782956333634</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13038393925214773423'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry></feed>