2016-04-10 3 views
1

Welche Methode oder Idee sollte ich für die Simulation der folgenden Situation verwenden.SimGrid. Wie empfange und sende ich Daten während der Ausführung der Aufgabe?

Es gibt Master, Worker1 (Host1) und Worker2 (Host2). Momentan führt workers1 einige Daten aus, aber worker2 ist frei. Master muss instruction an worker2 senden, um Daten von worker1 herunterzuladen und mit der Ausführung zu beginnen.

Die Idee war messageTask vom Master zum worker2 senden -> worker2 messageTask zu worker1 sendet -> worker1 sendet task(name, flopsamount, byteSize) zu worker2 -> worker2 und führt sie empfängt.

Aber wie kann worker1 messageTask von worker2 erhalten, wenn worker1 beschäftigt ist, indem er seine task ausführt? Wie kann worker1 Daten senden, während er eine Aufgabe ausführt? Oder gibt es vielleicht eine andere Methode für worker2, Daten von beschäftigtem worker1 herunterzuladen?

AKTUALISIERT Dies ist ein Stück Code für worker2.

MessageTask messageTask = new MessageTask(); 
messageTask.dsend(mailbox_worker1) 

Für worker1

try { 
    task.execute(); // Currently worker1 is here, in other words, worker1 is exectuing some another task 
} catch (TaskCancelledException e) { 
} 

Wie worker1 wird receive messageTask und send zurück realen Daten worker2 (ohne Unterbrechung seiner aktuellen Aufgabe ausgeführt wird)?

AKTUALISIERT

Ist es richtig deployment.xml?

<process host="Tier1_1" function="LHCb.Process1"> 
    <argument value="1"/> <!-- Input mailbox --> 
    </process> 

    <process host="Tier1_1" function="LHCb.Process2"> 
    <argument value="1"/> <!-- Input mailbox --> 
    </process> 

Antwort

1

Es gibt mindestens zwei Möglichkeiten, während der Kommunikation etwas zu tun. Sie können entweder getrennte Sends verwenden, was bedeutet, dass es Ihnen egal ist, ob die Kommunikation funktioniert oder nicht, oder asynchrone Kommunikation.

Es gibt ein Beispiel für den ersten Mechanismus in diesem Verzeichnis: examples/java/async/dsend, während der andere Mechanismus in Java noch nicht exemplifiziert ist. Sie müssen das C-Beispiel jetzt prüfen.

Jetzt, in dem aktualisierten Teil, wollen Sie etwas während der Ausführung von etwas tun. Da es (noch) keine asynchrone Ausführung gibt, müssen Sie einen anderen Prozess auf demselben Host starten, um die Kommunikation zu übernehmen, während der erste Host das Zeug berechnet.

+0

Ich aktualisierte Frage. –

+0

ist es korrekt. XML-Deklaration im aktualisierten Teil? –

+0

Das ist nicht die gleiche Frage. Bitte schreibe eine Frage pro Idee, oder die Antworten werden für den nächsten kommenden Typen schwer zu verstehen sein. (aber ja, die Bereitstellung scheint in Ordnung). –

Verwandte Themen