gpt4 book ai didi

c# - 如何跨多台机器(如渲染农场)运行 C# Task Parallel Library?

转载 作者:太空狗 更新时间:2023-10-29 23:07:36 25 4
gpt4 key购买 nike

我正在使用 TPL 在 C# 中编写一个计算密集型程序。一些初步的基准测试表明,通过使用具有更多内核/线程的处理器可以显着减少计算时间。

但是,单个 CPU 上可用的线程数是有限制的(我认为即使是最好的 Xeons 目前也只有 16 个左右)。

我一直在阅读有关在其自己的机器中具有多个廉价 CPU 的“网格”的渲染农场如何是增加总体核心数量的好方法,但我不知道我如何着手实现其中之一。它是在操作系统级别使用 Microsoft 服务器技术实现的(如果是,如何实现?),还是我还需要修改 C# 代码本身?

任何帮助或现有信息的链接都将不胜感激。

最佳答案

如果您想大规模(数百个节点)执行此操作,那么开发您自己的系统就很困难。你必须处理;节点变得不可用,数据复制到每个节点,跟踪作业进度……这是一个很长的列表。您还需要考虑节点之间所需的通信类型。请记住,与通过网络将消息(数据)发送到另一台机器(即使是快速机器)的成本相比,从一个线程向另一个线程发送消息(数据)的成本很小。您可能必须完全重写您的多线程应用程序才能在分布式系统上良好运行,甚至使用完全不同的算法。

Hadoop

Microsoft 计划将 Dryad 商业化为 LINQ to HPC但是这个项目有一段时间被搁置了(我在离开微软之前就参与过这个项目)。我相信你仍然可以获得最终的“公共(public)预览”,但它不受支持。 SQL 团队选择与 Hadoop/Hortonworks 人员合作,共同开发对 Windows/Azure/.NET 友好的 Hadoop 发行版。据我所知,他们唯一交付的是HDInsight。 .在 Azure 中运行的 Hadoop 服务。

现在有一个 Microsoft .NET SDK For Hadoop这将允许您管理集群和提交作业等。它似乎不允许您编写在 Hadoop 节点上执行的代码。但是,您可以使用 Hadoop 流式 API。这是相当低的级别,但与语言无关,因此您几乎可以使用它来将以任何语言编写的 map reduce 代码与 Hadoop 集成。有关这方面的更多详细信息,请参阅这篇博文。

Hadoop for .NET Developers

如果您想以较小的规模(10 个节点)执行此操作,那么我会寻找类似 MPI .NET 的内容.看起来这个项目已被放弃,但类似的东西可能是你想要的。

关于c# - 如何跨多台机器(如渲染农场)运行 C# Task Parallel Library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726836/

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