Ich implementiere derzeit eine Message-Assing-basierte Implementierung, um rechenintensive Arbeit an einen anderen Knoten mit einer GPU auszulagern. So bekam ich ein Master/Slave-Modell, bei dem der Host Daten generiert und möchte, dass er mit dem Slave (+ angeschlossene GPU) berechnet wird. Ich habe dies bisher mit OpenMPI implementiert, wo ich mein Programm auf diesen 2 Knoten starte und die Daten per Message Passing sende. Was ich jetzt tun möchte, ist die Implementierung des Slaves zu ändern, so dass es dauerhaft läuft und auf Daten wartet, bis ein Host sich mit ihm verbindet. Und dieser Host könnte ein Windows- oder Linux-Host sein. Also ich möchte Master & Slave mit mpirun nicht starten, sondern nur den Host normal und will es zur Laufzeit an meinen Slave anschließen. Eine weitere Voraussetzung ist, dass ich Template-Klassen verwende, deren Größe ich zur Kompilierzeit nicht kenne. Ich fing an, ein einfaches TCP-Protokoll zu erstellen, das nur eine Struktur mit einem Nachrichten-Tag (unsigned short) und den Payload/Daten (als eine Union) darin war. Hier war das Problem, dass ich die Templates in der Union nicht verwenden konnte (was sinnvoll ist).C++ Message Passing Library wie MPI
Also, um mein Problem zu lösen, suche ich nach einer Message-passing High-Level-Bibliothek mit MPI-wie Syntax optimal. Gibt es eine Möglichkeit, dies zu tun? Verwenden Sie MPI, aber nicht mpirun und verbinden Sie sich stattdessen zur Laufzeit mit anderen Prozessen.
zeromq kommt in den Sinn –
0mq vielleicht? https://en.wikipedia.org/wiki/ZeroMQ –
@David, Severin: zeromqs Schöpfer hat seinen Ersatz freigegeben, nanomsg –