gpt4 book ai didi

.net - 超越单台计算机的 .NET 并行模式

转载 作者:行者123 更新时间:2023-12-04 13:35:12 25 4
gpt4 key购买 nike

我怀疑我很快就会用尽单台计算机中多核线程的速度提高可能性。

这个 .NET 桌面程序员需要学习什么才能将并行可行的问题转移到多台计算机上?我的偏好是尽量减少整个生命周期编程工作,因此如果本地部署和非本地部署之间的变化很小,那将是首选。

关于程序员的工时,对于这样的应用程序,Linux、LAMP 或其他一些堆栈方式是否比 Windows 上的 C#.NET 更好?

Edit: Some additional information from my own comments below. The compute-intensive part of the problem can be made arbitrarily large so overheads to distribute/recombine are not a worry because overhead will be only a small percentage of the time you have to wait for a result. This is a one man development team. Just a suggestion and I don't know if it is any good or not: how about WCF and XML as means to distribute the problem in a completely on-premises Azure-ignorant way and trust that it will (someday) work on Azure without changes and without the benefits of being Azure aware. This is just an unresearched idea and I'm hoping somebody has a better one even if it is not a Windows solution.

Another edit: Digipede has an offering for performance improvements and a paper on the distinction between a cluster and a grid.

http://www.digipede.net/downloads/Digipede_CCS_Whitepaper.pdf

Since my problem is more grid-like than cluster and I want to do it cheaply, I'll just try the WCF approach.

最佳答案

从多线程迁移到分布式计算时要注意的主要事项是,与在当前机器上运行另一个线程相比,在远程机器上运行作业会增加开销。工作项的粒度需要足够大,以证明节点之间的通信速度明显变慢——同一台计算机上的线程之间的消息传递比网络上不同计算机之间的消息传递快很多数量级。

跨机器共享资源更加困难。在同一进程中的多个线程中共享内存中的对象很简单,但需要一些工程才能在机器之间实现相似。机器之间基本上不存在锁。考虑使用消息队列服务/服务器来协调多台机器之间的工作,将结果返回给聚合器等。

您提到“内部与外部”。如果您正在考虑外部计算资源,请务必四处寻找云计算或弹性计算服务提供商。奇怪的是,这些并不像您想象的那样经常与并行编程同时使用。云计算为您提供了将并行性扩展到数百或数千个计算节点的选项,您只需在实际使用它们时付费。当您的计算完成,或者您的数据分析的实时源在一天结束时回家时,您可以“关闭”您的云节点并停止计费时钟,直到您再次启动它们。

亚马逊、谷歌和微软是三大云服务提供商(以及其他),每个都有非常不同的特点、优势和劣势。我在微软从事 Azure 的工作。 Azure 的内置消息队列非常适合大规模运行生产者/消费者工作流。

无论您使用 LAMP 还是 .NET 作为您的平台,实际上与性能问题无关,更多的是关于您在开发团队中拥有的工具和技能集。故意选择与您的开发团队的技能不匹配的目标平台是为您的项目时间表增加大量时间和再培训成本的好方法。

与 C++ 或其他环境中的脚本相比,C#/.NET 非常适合编写并行系统。在评估哪个平台最适合您的技能组合和所需的系统设计时,请考虑可用的语言功能、调试工具以及预构建的库和服务。

关于.net - 超越单台计算机的 .NET 并行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com