2

我希望在集群上实现“分支和绑定”(就像亚马逊所说的那样),因为我希望它能够水平扩展,而不仅限于单个 CPU。Judith Hippold 和 Gudula Runger 有一篇论文“Task Pool Teams: A Hybrid Programming Environment for Irregular Algorithms on SMP Clusters”。它基本上是一个自下而上的任务窃取框架,类似于英特尔的 TBB,除了 ad-hoc 网络而不是共享内存。如果这个库可用,我会使用它(用 TBB 替换本地的螺纹部分)。不幸的是,他们似乎没有在我能找到的任何地方下载它,所以我想知道那里有其他实现或类似的库吗?

看起来微软的任务并行库也没有类似的东西可以窃取。

(我试图在'threadpool'之后制作一个标签'taskpool',这是最常用的变体(在'thread-pool'之前)但是没有足够的分数。任何足够重的人认为值得添加?)

编辑:

我还没有尝试过,但它 PEBBL(在这里:software.sandia.gov/trac/acro/wiki/Packages)声称可以扩展非常高。回答者从 El-Ghazali Talbi 编辑的 2006 年“Parallel Combinatorial Optimization”中的 Wiley 书籍“Parallel Branch-and-Bound Algorithms”,Crainic,Le Cun 和 Roucairol,2006 年提到的论文是我找到它的地方,并且列出了其他库;有些可能会更好,我保留更新此内容的权利:)。有趣的是谷歌没有找到这些库,要么我的谷歌搜索很弱,要么谷歌本身有时并不神奇。

4

3 回答 3

2

您可能会考虑的一件事是调查像 RabbitMQ 这样的共享消息队列。它是一个 AMQP 服务器(一种为分布式应用程序可以相互发送消息而开发的消息传递协议)。

于 2010-06-30T15:54:57.160 回答
2

当您说“在集群上”时,听起来您的意思是分布式内存,并且并行化分支和绑定对于分布式内存来说是一个众所周知的难题 - 至少在保证可伸缩性的方式上。有关此主题的开创性论文可在此处获得,这里还有 Wiley 关于该主题的书籍的摘录。

共享内存分支绑定是一个更容易的问题,因为您可以实现全局任务队列。此处提供了有关如何执行共享内存和消息传递实现的良好高级描述。如果不出意外,参考部分对于想法和现有实现来说是值得追求的。

于 2010-07-09T19:07:30.507 回答
1

你基本上需要某种分布式同步/队列

我建议将 armci 视为具有同步功能的低级分布式内存接口,并在此基础上构建。

另一种方法是将 mpi 进程分配为 Master 以分配工作分配。

http://www.cs.utk.edu/~dongarra/ccgsc2008/talks/Talk10-Lusk.pdf

于 2010-06-29T19:01:09.523 回答