Frage

Ich suche nach einer verteilten Computerplattform, die einfach in eine Anwendung eingebettet werden kann.

Ich habe MPI (und einige seiner Implementierungen) untersucht, aber soweit ich gesehen habe, geht es darum, für jede Aufgabe eine ausführbare Datei zu erstellen, die mit gestartet wird mpirun.Ich schließe es nicht aus, ich möchte nur, dass es in eine Anwendung eingebettet wird und nicht als externe ausführbare Datei (wenn möglich).

Kennen Sie, SO-Benutzer, ein solches Framework (vorzugsweise Open Source)?Außerdem wären ein paar Anwendungsbeispiele nett, um mir eine Entscheidung zu erleichtern.

Ich bin nach Möglichkeit an einer plattformübergreifenden Lösung interessiert, da die Stationen im LAN, an denen die Lösung bereitgestellt werden soll, heterogen sind.

Alle Vorschläge und insbesondere Codebeispiele sind sehr willkommen.

War es hilfreich?

Lösung

Neben MPI fallen mir vier Systeme ein:AMQP, ZeroMQ, Cilk, und Schauspieler.

AMQP nutzt die Nachrichtenübermittlung zur Kommunikation zwischen Systemen und verwendet einen zentralen Nachrichtenbroker zur Verarbeitung/Verteilung der Nachrichten.Einige Implementierungen garantieren eine ordnungsgemäße Übermittlung an den Empfänger, sind jedoch langsamer (ähnlich wie TCP).Bei einigen Implementierungen handelt es sich um Fire-and-Forget-Implementierungen, die eine garantierte Zustellung nicht zulassen, aber schneller sind (ähnlich wie UDP).Hinweis AMQP ist ein Protokoll, keine Implementierung – beliebte Implementierungen umfassen ActiveMQ Und RabbitMQ.

ZeroMQ ähnelt ein wenig AMQP, abgesehen vom zentralen Nachrichtenbroker.Ich glaube, es handelt sich im Wesentlichen um den Actors-Stil, der eher programmatisch ist und es Ihnen ermöglicht, Ihr System durchgängig zu gestalten.Es ist dezentralisiert (kein zentraler Nachrichtenbroker) und Benchmarks scheinen zu zeigen, dass es viel schneller ist als AMQP-Implementierungen.

Ich habe nicht viel Erfahrung damit Cilk abgesehen von der Tatsache, dass es sich um ein gut unterstütztes Projekt des MIT handelt, das für die Zusammenarbeit mit C/C++ konzipiert ist.

Akteure sind eine Abstraktion, die sowohl bei lokaler als auch bei verteilter Parallelität hilft und von Erlang und zuletzt dem populär gemacht wurde Akka Projekt (Scala, Java).Die mir bekannten C++-kompatiblen Versionen sind Theron, Actor-CPP und libcppa, obwohl ich nicht sicher bin, welche davon Remote-Akteure unterstützen.

Andere Tipps

Ich finde Hazelcast ist genau so etwas;Einbettbares verteiltes Rechnen.Aber es ist in Java, nicht in C.Aber Sie können C von Java aus aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top