代码之家  ›  专栏  ›  技术社区  ›  JDonner

MPI中任务分发的库(或其他库)?

  •  2
  • JDonner  · 技术社区  · 14 年前

    我希望在集群上实现“分支和绑定”(如Amazon所说),因为我希望它能够水平扩展,而不局限于单个CPU。JudithHippold和GudulaRunger写了一篇论文“任务池团队:SMP集群上不规则算法的混合编程环境”。它基本上是一个自下而上的任务窃取框架,就像英特尔的tbb一样,除了临时网络而不是共享内存。如果这个库是可用的,我会使用它(用tbb替换本地的螺纹部件)。不幸的是,它们似乎没有使它可以在我能找到的任何地方下载,所以我想知道是否有其他的实现,或者类似的库?

    看起来微软的任务并行库也不具备可窃取的功能。

    (我试图在最常用的变量“thread pool”之后(在“thread pool”之前)创建一个标记“taskpool”,但没有足够的点数。是否有人认为它值得添加?)

    编辑:

    我还没有尝试过,但是它pebbl(在这里:software.sandia.gov/trac/acro/wiki/packages)声称它的规模非常大。回答者在威利书《并行分支与绑定算法》中提到的论文,Crainic、Le Cun和Roucairol,2006年,El Ghazali Talbi编辑的《并行组合优化》,是我找到它的地方,并且列出了其他的库;有些可能更好,我保留更新的权利:)。有趣的是,谷歌没有找到这些libs,要么我的google很弱,要么谷歌本身有时也不具有魔力。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Rob Neely    14 年前

    当您说“通过集群”时,听起来好像是指分布式内存,而并行分支和绑定对于分布式内存来说是一个众所周知的难题——至少在某种程度上可以保证可伸缩性。关于这个话题的开创性论文已经发表了。 here 还有一本关于这个话题的威利书的摘录 here .

    共享内存分支绑定是一个更简单的问题,因为您可以实现全局任务队列。关于如何同时执行共享内存和消息传递实现的高级描述是可用的。 here . 如果没有其他内容,那么参考部分对于思想和现有的实现是值得购买的。

        2
  •  2
  •   Andrew    14 年前

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

        3
  •  1
  •   Anycorn    14 年前

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

    我建议将armci视为一个低级别的分布式内存接口,并在此基础上进行同步和构建。

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

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