用于并行化CPU密集型.NET应用程序的当前最佳选择是什么?
时间:2020-03-05 18:37:34 来源:igfitidea点击:
这是一个开放式的问题。我应该考虑什么方法?
解决方案
回答
.NET有一些并行扩展,目前正在测试中,并且可以在Microsoft的Parallel Computing开发人员中心获得。他们有一些有趣的项目,例如Parallel foreach和称为PLINQ的LINQ并行版本。有关扩展的一些最佳信息是在Channel 9上。
回答
我认为,如果考虑到最佳选择,我们还可以包括非.NET专用的并行处理方法。
回答
@拉森纳
如果我们想分支到.NET之外,则有很多关于Intel的线程构建模块的讨论,它是C ++的并行库。
回答
第一步是找到并了解问题中的并行性。编写性能好于其替换的单线程代码确实很容易。 "并行编程模式"(Amazon)对关键概念进行了很好的介绍。
一旦有了可行的设计,就开始阅读《 MSDN杂志》档案(链接)中"并发"主题中的文章,尤其是Jeff Richter撰写的任何文章。这些将为我们提供Windows和.NET特有的线程结构的基本知识。 (Richter的"通过C(Amazon)进行CLR"中的多线程部分虽然简短,但强烈建议我们进行深入分析。)
回答
有很多选择,最好的解决方案将取决于我们要解决的问题的性质。如果我们要解决一个令人尴尬的并行问题,那么划分和并行化这些任务将是微不足道的。在那种情况下,挑战将在于分发和管理所使用的数据。
一些建议是:
- ICE Grid具有对.Net和其他常见语言的绑定
- Velocity是Microsoft的Oracle(Tangersol)Coherence版本
- Microsoft Compute Cluster Server即将推出的HPC产品
- 数据Synapse网格服务器