<p>This is an open-ended question.  What approaches should I consider?</p>

[{'answer_id': 1399, 'author': 'John Downey', 'author_id': 200, 'author_profile': 'https://Stackoverflow.com/users/200', 'pm_score': 3, 'selected': False, 'text': '<p>There are some parallel extensions to .NET that are currently in testing and available at Microsoft\'s <a href="http://msdn.microsoft.com/en-us/concurrency/default.aspx" rel="noreferrer">Parallel Computing Developer Center</a>. They have a few interesting items that you would expect like Parallel foreach and a parallel version of LINQ called PLINQ. Some of the best information about the extensions is on <a href="http://channel9.msdn.com/tags/Parallel+Extensions/" rel="noreferrer">Channel 9</a>.</p>\n'}, {'answer_id': 1436, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 2, 'selected': False, 'text': '<p>I think we could also include non-.NET-specific approaches to parallel processing if those are among the best options to consider.</p>\n'}, {'answer_id': 1447, 'author': 'John Downey', 'author_id': 200, 'author_profile': 'https://Stackoverflow.com/users/200', 'pm_score': 2, 'selected': False, 'text': '<p>@Larsenal</p>\n\n<p>If you want to branch outside of .NET there has been a lot of discussion about Intel\'s <a href="http://www.threadingbuildingblocks.org/" rel="nofollow noreferrer">Threading Building Blocks</a> which is a parallel library for C++.</p>\n'}, {'answer_id': 36424, 'author': 'McKenzieG1', 'author_id': 3776, 'author_profile': 'https://Stackoverflow.com/users/3776', 'pm_score': 3, 'selected': False, 'text': '<p>Your first step is to find and understand the parallelism in your problem. It is really easy to write multi-threaded code that performs no better than the single-threaded code it replaces. "Patterns for Parallel Programming" <a href="https://rads.stackoverflow.com/amzn/click/com/0321228111" rel="noreferrer" rel="nofollow noreferrer" title="Amazon">(Amazon)</a> is a great introduction to the key concepts.</p>\n\n<p>Once you have a workable design, start reading the articles in the "Concurrency" topic in the MSDN Magazine archives <a href="http://msdn.microsoft.com/en-us/magazine/cc159269.aspx" rel="noreferrer">(link)</a>, particularly anything written by Jeff Richter. Those will give you the nuts and bolts stuff on the threading constructs specific to Windows and .NET. (The multi-threading section in Richter\'s "CLR via C# <a href="https://rads.stackoverflow.com/amzn/click/com/0735621632" rel="noreferrer" rel="nofollow noreferrer">(Amazon)</a>is short, but very insightful - highly recommended.)</p>\n'}, {'answer_id': 36439, 'author': 'John Channing', 'author_id': 3305, 'author_profile': 'https://Stackoverflow.com/users/3305', 'pm_score': 0, 'selected': False, 'text': '<p>There are many options and the best solution will depend on the nature of the problem you are trying to solve.  If you are trying to solve an <a href="http://en.wikipedia.org/wiki/Embarrassingly_parallel" rel="nofollow noreferrer">embarassingly parallel</a> problem then dividing and parallelising the tasks will be trivial.  In that case the challenge will come in distributing and managing the data used.  </p>\n\n<p>Some suggestions would be:</p>\n\n<ul>\n<li><a href="http://www.zeroc.com/icegrid/index.html" rel="nofollow noreferrer">ICE Grid</a> which has bindings for .Net and other common languages</li>\n<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;displaylang=en" rel="nofollow noreferrer">Velocity</a> which is Microsoft\'s version of Oracle (Tangersol) Coherence</li>\n<li>The forthcoming HPC offering from Microsoft <a href="http://www.microsoft.com/HPC/" rel="nofollow noreferrer">Compute Cluster Server</a></li>\n<li><a href="http://www.datasynapse.com/" rel="nofollow noreferrer">Data Synapse Grid Server</a></li>\n</ul>\n'}]
['https://Stackoverflow.com/questions/1387', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/-1/']