我正在寻找一个可以轻松嵌入到应用程序中的分布式计算平台。
我调查了 MPI(以及它的一些实现),但据我所见,它涉及为每个任务创建一个可执行文件,并使用mpirun
. 我不排除它,我只是希望它嵌入到应用程序中,而不是作为外部可执行文件(如果可能的话)。
SO用户,您知道这样的框架(最好是开源的)吗?另外,为了让我下定决心,一些使用示例会很好。
如果可能的话,我对跨平台解决方案感兴趣,因为 LAN 中要部署解决方案的站点是异构的。
任何建议,尤其是代码示例都非常感谢。
我正在寻找一个可以轻松嵌入到应用程序中的分布式计算平台。
我调查了 MPI(以及它的一些实现),但据我所见,它涉及为每个任务创建一个可执行文件,并使用mpirun
. 我不排除它,我只是希望它嵌入到应用程序中,而不是作为外部可执行文件(如果可能的话)。
SO用户,您知道这样的框架(最好是开源的)吗?另外,为了让我下定决心,一些使用示例会很好。
如果可能的话,我对跨平台解决方案感兴趣,因为 LAN 中要部署解决方案的站点是异构的。
任何建议,尤其是代码示例都非常感谢。
除了 MPI,我还想到了四个系统:AMQP、ZeroMQ、Cilk和 Actors。
AMQP 使用消息传递在系统之间进行通信,使用中央消息代理来处理/分发消息。一些实现保证正确地传递给接收者,但速度较慢(类似于 TCP)。一些实现是一劳永逸,不允许有保证的交付,但速度更快(类似于 UDP)。注意 AMQP 是一种协议,而不是一种实现——流行的实现包括ActiveMQ和RabbitMQ。
ZeroMQ有点类似于 AMQP 减去中央消息代理。我相信它基本上是 Actors 风格,它更加程序化,允许您以端到端的方式设计您的系统。它是分散的(没有中央消息代理),基准测试似乎表明它比 AMQP 实现快得多。
我对Cilk没有太多经验,除了它是 MIT 的一个很好支持的项目,旨在与 C/C++ 一起工作。
Actor 是一种抽象,可以帮助本地/分布式并发,由 Erlang 和最近的Akka项目(Scala、Java)推广。我知道的 C++ 兼容版本是 Theron、Actor-CPP 和 libcppa,但我不确定其中哪些支持远程 Actor。
我认为Hazelcast就是那种东西。嵌入式分布式计算。但它是在 java 中,而不是在 C 中。但是你可以从 Java 中调用 C。