0

我有一个 for 循环,我想与 PLINQ 的 Parallel.ForEach() 之类的东西并行化。

这里的关键是我调用来进行计算的 C++ 库显然不是线程安全的,因此,任何并行化的计划都需要跨多个进程这样做。

我正在考虑使用 WCF 创建一个“分发器”进程,“客户端”和多个“计算器”都可以连接到该进程并在队列中添加/删除项目,然后“计算器”将结果直接发送回客户端可以在收到它们时更新 gui。这种架构将允许我将尽可能多的“计算器”在线上,就像我拥有的​​处理器一样,我认为它甚至可以将它们带到多台计算机上,从而创建一个所有客户端都可以共享的潜在处理能力场。

我只是想知道是否有人有这样做的经验,以及是否有现有的应用程序块或框架可以用来为我构建它。PLINQ 在这个过程中完成它。有没有像 DPLINQ(分布式)之类的东西?

另外,如果那不存在,有人想对我提出的架构发表意见吗?有什么明显的陷阱吗?有没有人认为它会工作!?!?!?

4

2 回答 2

3

听起来你可能正在寻找Dryad。它现在是微软的一个研究项目,但他们确实有一个“学术版本”可用。我的理解是,在 2011 年底的某个时候,他们还在为 RTM 更好地产品化它(可能是与 Azure 的某种集成)。 Mary Jo Foley在这里详细介绍了这一点。

于 2011-02-25T02:20:08.650 回答
2

控制/调度分布式工作的长期标准是MPI。我只在 C++ 中使用过它,但存在多种语言的实现。一个快速的谷歌建议MPI.Net可能是 .Net 的一个很好的实现!

于 2011-02-25T02:29:34.657 回答