C / C ++ Framework für verteiltes Computing in einem dynamischen Cluster

8

Ich bin auf der Suche nach einem Framework, das in einer verteilten C ++ - Anwendung für verteilte Zahlen verwendet werden kann.

Das Setup sieht folgendermaßen aus:

Es gibt einen Master-Knoten, der die Problemdomäne in kleine unabhängige Aufgaben unterteilt. Die Aufgaben werden an Arbeiterknoten mit unterschiedlicher Fähigkeit verteilt (z. B. CPU-Typ / GPU-fähig). Arbeiterknoten werden dem Rechenraster dynamisch hinzugefügt, sobald sie verfügbar sind. Es kann auch passieren, dass ein Arbeiterknoten stirbt, ohne sich zu verabschieden.

Ich suche nach einem schnellen C / C ++ Framework, um dieses Setup zu erreichen.

Zusammenfassend sind meine wichtigsten Anforderungen:

  • Worker / Task-Scheduling-Paradigma
  • Knoten dynamisch hinzufügen / entfernen
  • Zielnetzwerk: 1G - 10G Ethernet (Firmennetzwerk, gute Leistung über Internet nicht erforderlich)
  • Optional: Verschlüsselte und authentifizierte Kommunikation
Erik 12.07.2012, 08:04
quelle

1 Antwort

4

Sie können sicherlich mit MPI machen, was Sie wollen. MPI-2 hat dynamische Prozessmanagement-Funktionen hinzugefügt, und ich denke, dass die meisten der derzeit weit verbreiteten Implementierungen diese bieten.

Einer der Vorteile der Verwendung von C ++ + MPI ist, dass die Kombination im wissenschaftlichen und technischen Computing recht weit verbreitet ist, obwohl mein Eindruck ist, dass in dieser Nische dynamisches Prozessmanagement nicht sehr häufig verwendet wird. Da MPI auf den sehr großen Supercomputern verwendet wird, die die neuesten Probleme der Computerwissenschaften angehen, könnte man vermuten, dass es für Ihre Zwecke schnell genug wäre.

Einer der Nachteile der Verwendung von C ++ + MPI besteht darin, dass MPI nicht dazu ausgelegt war, den Ausfall von Prozessen während der Ausführung zu tolerieren. Es gibt eine Debatte über SO darüber, ob die dynamischen Prozessmanagementfunktionen Ihnen erlauben, Ihre eigene Fehlertoleranz zu programmieren. Aber keine Debatte, dass es schwierig sein könnte.

Sie würden die ersten drei Ihrer Anforderungen "out-of-the-box" erhalten. Was die verschlüsselte und authentifizierte Kommunikation betrifft, müssten Sie das meiste selbst tun, MPI übergibt einfach Nachrichten. Ich vermute, dass für die meisten MPI-Benutzer, die parallele Anwendungen auf Clustern oder Supercomputern mit privaten Interconnects betreiben (oft selbst isoliert von Unternehmens- oder Unternehmensnetzwerken), Verschlüsselung und Authentifizierung von geringer Bedeutung sind.

    
High Performance Mark 12.07.2012 09:09
quelle