Aufgabenstellung: 
- Routinen für nicht-blockierenden Broadcast, analog zu Isend/Irecv
 
- Benutzung der Routinen:
       #include "ibcast.h"
     Ibcast_handle *  request;
        ...
     Ibcast(buf, count, datatype, root, comm, &request);
        ...
     Ibcast_wait(&request);
     
 
- Vorhandensein von Threads nicht vorausgesetzt
  
 
Grund-Algorithmus, einfache Version: 
- Prinzip:
     
- Ibcast: 
Root schickt an alle anderen 
diese starten Receive
 
- Ibcast_wait: 
Receives werden beendet
     
 
 
- Nachteil: viel Kommunikation (
)
 
 
- Vorteil:  Ibcast_wait evtl. sofort fertig, guter Überlapp
  
 
Grund-Algorithmus, binärer Baum: 
- Prinzip:
     
- Ibcast: 
root schickt, 
Zwischen- und Endknoten starten Empfang
 
- Ibcast_wait: 
Zwischenknoten beenden Empfang und schicken weiter 
Endknoten empfangen
     
 
 
- Vorteil: wenig Kommunikation (
)
 
 
- Nachteil: es bleibt viel Wartezeit beim Ibcast_wait
  
 
Hauptproblem: 
- Kommunikation  kann nur während Ibcast und Ibcast_wait
    gestartet werden.
 
- mögliche Verbesserung: ``Hälfte'' der Sends im Ibcast, andere im 
    Ibcast_wait
 
- grundsätzliche Lösung: mit Threads
  
 
    
     

Peter Junglas 11.5.2000