2012-09-29 108 views
2

我正在寻找一个可以轻松嵌入到应用程序中的分布式计算平台。便携式电网引擎平台

我调查了MPI(和它的一些实现的),但是从我看到它涉及到创建每个任务的可执行文件和正在使用mpirun启动。我不排除它,我只是希望它被嵌入到应用程序中,而不是作为外部可执行文件(如果可能的话)。

你,所以用户,知道这样的框架(最好是开放源代码)?另外,为了让我想起一些使用示例会很好。

我很感兴趣,如果可能的跨平台解决方案,如在局域网站,其中解决方案是部署是异类。

任何建议,尤其是代码示例非常感谢。

+1

您是否检出了ZeroMQ,AMQP或Cilk? – adelbertc

+0

@adelbertc你应该发布一个答案。你肯定会得到奖励。请! :) – INS

+1

分布式应用程序的不同组件有多紧密耦合(例如节点之间需要交换多少数据)?您可能会研究BOINC和/或GRID实现,但它们需要相当多的支持基础设施(身份服务,调度程序,代理,数据库等),并且仅适用于并发问题。 –

回答

3

除了MPI之外,还有四个系统浮现在脑海中:AMQP,ZeroMQCilk和Actor。

AMQP使用消息传递,使用中央消息代理来处理/分发消息系统之间进行通信。一些实现保证向接收器正确传递,但速度较慢(类似于TCP)。一些实现是火灾和遗忘,不允许保证交付,但速度更快(类似于UDP)。注意AMQP是一个协议,而不是实现 - 流行的实现包括ActiveMQRabbitMQ

ZeroMQ是有点类似于AMQP减去中央消息代理。我相信它基本上是Actors风格,它更加程序化,允许您以端到端的方式设计您的系统。它是分散的(没有中央消息代理),基准似乎表明它比AMQP实现要快得多。

除了它是受MIT支持的旨在与C/C++一起使用的项目之外,我对Cilk没有太多的经验。

参与者是一个抽象,以帮助本地/分布式并发,由Erlang和最近的项目(Java的Scala)推广。我知道的C++兼容版本是Theron,Actor-CPP和libcppa,但我不确定哪些支持远程参与者。

+0

选择此项作为最佳答案,因为它提供了一个非常好的起点 – INS

+1

Clik是一种用于线程编程和可执行文件的语言,只能在共享内存机器(SMP和NUMA)上运行。它不适合OP所需要的分布式计算。 –

0

我觉得Hazelcast是ecatly之类的话;可嵌入式分布式计算。但是它在java中,而不是在C中,但是你可以从Java调用C语言。