2016-07-10 16 views
0

Diese Information von simgrid documentation wie parallele Aufgaben erstellen:Parallel Aufgabe in SimGrid

msg_task_t MSG_parallel_task_create (const char * name, 
    int  host_nb, 
    const msg_host_t * host_list, 
    double * flops_amount, 
    double * bytes_amount, 
    void * data 
) 

Welche MSG_task_send Funktion sollte nach der Erstellung dieses parallele Aufgabe für das Senden an mehrere Mailboxen verwendet werden?

Auf dem Host für die Ausführung sollte ich msg_error_t MSG_parallel_task_execute (msg_task_t task) verwenden. Der Host teilt uns mit, wenn die Ausführung seines Teils der parallelen Aufgabe erledigt ist.

Ist es möglich, die Ausführung der ganze parallele Aufgabe zu verfolgen?

Antwort

2

Kurze Antwort: Ich bin mir nicht sicher, dass parallele Aufgaben die Abstraktion sind, nach der Sie suchen. Vielleicht möchten Sie Ihre eigene Abstraktion mit Mailboxen und regulären Aufgaben erstellen. Die lange Antwort folgt.

Mit diesen parallelen Aufgaben ist kein Postfach verbunden: Sie ermöglichen es einem Prozess, die all-to-all-Kommunikation zwischen einer Gruppe von Hosts und eine Ausführung auf derselben Gruppe von Hosts zu starten.

Die Prozesse, die auf den ausgewählten Hosts ausgeführt werden, sind nicht involviert: nur ihre Hosts. Es gibt keine bereits existierende Möglichkeit zum Synchronisieren zwischen Prozessen in einer Mehrfachaufgabe.

Eine Lösung könnte sein, den Prozess zu fragen, der die parallele Aufgabe ausführt, um Nachrichten an die richtigen Postfächer zu senden, sobald die parallele Aufgabe erledigt ist. Das klingt schwerfällig, aber nur Sie wissen, was Sie bauen wollen und können sich die richtige Abstraktion für Ihr Modell vorstellen.

+0

Wenn Prozess auf dem ausgewählten Host ausgeführt wird nicht beteiligt sein, wie dieser Prozess eine Nachricht nach der Ausführung einer Aufgabe senden kann? –