8

我正在寻找一个用于 C++ 分布式数字运算应用程序的框架。

设置如下所示:

有一个主节点将问题域划分为小的独立任务。任务被分配给不同能力的工作节点(例如 CPU 类型/启用 GPU)。当工作节点可用时,它们会动态添加到计算网格中。也可能发生工作节点死亡而没有说再见的情况。

我正在寻找一个快速的 C/C++ 框架来完成这个设置。

总而言之,我的主要要求是:

  • 工人/任务调度范式
  • 动态添加/删除节点
  • 目标网络:1G - 10G 以太网(企业网络,不需要通过 Internet 的良好性能)
  • 可选:加密和经过身份验证的通信
4

1 回答 1

5

你当然可以用MPI做你想做的事。MPI-2 添加了动态进程管理功能,我认为目前广泛使用的大多数实现都提供了这些功能。

使用 C++ + MPI 的优点之一是这种组合在科学和技术计算中的应用相当广泛,尽管我的印象是,在这个细分市场中,动态进程管理的使用并不多。由于 MPI 用于解决计算科学前沿问题的最大型超级计算机,人们可能会猜测它的速度足以满足您的目的。

使用 C++ + MPI 的缺点之一是 MPI 并非旨在容忍执行期间进程的失败。关于动态流程管理功能是否允许您对自己的容错进行编程存在争议。但没有争论说这可能很困难。

您将获得“开箱即用”的前 3 个要求。至于加密和经过身份验证的通信,您必须自己完成大部分工作,MPI 只是传递消息。我猜对于大多数 MPI 用户来说,在集群或具有私有互连的超级计算机上运行并行应用程序(通常它们本身与公司或企业网络隔离),加密和身份验证是无关紧要的问题。

于 2012-07-12T09:09:33.873 回答