2009-07-03 8 views
3

langatmig HintergrundWie wird MPI I/O implementiert?

ich auf Parallelisierung einen Code für Herz-Elektrophysiologie-Simulationen arbeite. Da Benutzer ihre eigenen Simulationen unter Verwendung einer eingebauten Skriptsprache spezifizieren können, habe ich keine Möglichkeit zu wissen, wie der Kompromiss zwischen Kommunikation und Berechnung gehandhabt werden kann. Um dies zu bekämpfen, mache ich einen Art Laufzeit-Profiler, der entscheiden wird, wie die Domain-Dekomposition gehandhabt wird, sobald die Simulation ausgeführt wurde und die Hardware-Umgebung, mit der sie arbeiten soll.

Meine Frage lautet:

Wie wird MPI-E/A hinter den Kulissen umgesetzt? Sendet jeder Prozess tatsächlich in eine einzelne Datei auf einem anderen Knoten oder schreibt jeder Prozess in eine Datei mit geringer Dichte, die beim Schließen der Datei wieder zusammengespleißt wird?

Mit diesem Wissen wird mir helfen, zu entscheiden, ob I/O-Operationen wie Kommunikation oder Berechnung zu berücksichtigen, und stellen Sie die Balance entsprechend ...

Vielen Dank im Voraus für jede Einsicht Sie anbieten können.

Ross

+0

Bitte klarstellen: Sprechen Sie über MPI IO oder sprechen Sie über IO in MPI-Anwendungen? – powerrox

Antwort

3

Der Mechanismus für die I/O ist die Umsetzung abhängig. Darüber hinaus gibt es keinen einzigen E/A-Stil. Einige E/A werden von den Remote-Rängen zwischengespeichert und am Ende des Laufs durch den mpirun-Prozess gesammelt. Einige E/A werden nach Bedarf in den lokalen Arbeitsspeicherbereich geschrieben. Einige E/A werden in ein freigegebenes NAS/SAN-Dateisystem mit hoher Leistung geschrieben.

Einige MPI verwenden Bibliotheken von Drittanbietern, um I/O zu parallelen Dateisystemen zu unterstützen, und diese Details können proprietär sein. Einige Dateisysteme sind lokale Datenträger, andere sind SAN über Glasfaser oder InfinBand.

Wie planen Sie die tatsächliche Zeit in I/O zu messen? Planen Sie, die pMPI-Schnittstelle zu verwenden, um alle Anrufe in die Bibliothek abzufangen?

+0

Ich plante eine Art langwierigen Funktions-Pointer-Austausch, aber diese pMPI-Schnittstelle klingt sehr interessant. Ich werde nachforschen. Danke! –

+0

Das Buch "Parallele Programmierung mit MPI" enthält ein Beispiel für die Verwendung der pMPI Profiling-Schnittstelle, um Zeitinformationen für einen MPI_Send zu sammeln. Sie können dieses Beispiel hier sehen: http://books.google.com/books?id=tCVkM1z2aOoC&pg=PA271&lpg=PA271&dq=mpi+standard+profiling+interface&source=bl&ots=yawtCPR8D9&sig=Rhe_iPI5eMR5PrZkVOzpfuxSlkc&hl=en&ei=ar9QSsj3EsuYtgfD66WkBA&sa=X&oi=book_result&ct=result&resnum = 10 –

+0

Schuweeeeeet. Es ist eine schöne Sache. Vielen Dank. –