Frage

In einem Vortrag zur HPC-Parallelprogrammierung (für CPUs) haben wir verschiedene Modelle diskutiert, die von Pthreads bis OpenMP bis MPI und anderen verfügbar sind, wie Charm ++, X10, UPC, Kapelle ....Der Schwerpunkt war auf den ersten drei deutlich.Fasziniert von dem Thema, das ich selbst erforschte, konnte einige Quellen, Beispiele und Diskussionen hauptsächlich für die ersten drei finden.Später entdeckte ich "Ampi", der sogar ältere MPI-Anwendungen mit vielen der Vorteile Charm ++ ausführen kann, aber niemand scheint es zu verwenden.

Warum sind die anderen Modelle so vernachlässigt?Im Vergleich zu den eher groben MPI-Alternativen wie Charm ++ und UPC erscheint es bequemer, da sie mit vieler "schmutziger Arbeit" ordentlich im Hintergrund umgehen.

War es hilfreich?

Lösung

Ich werde Ihnen zwei Hauptgründe geben, warum MPI und OpenMP dominieren.

Der erste ist, dass sie standards sind. Es gibt mehrere verfügbare Implementierungen, und Sie können sicher sein, dass sie auf jeder möglichen Supercomputer-Maschine verfügbar sind. Dies ist streng mit dem Konzept der -Pordabilität zusammenhängt : Sie schreiben Ihren Parallelcode, und wenn Sie nichts anderes mit einem bestimmten Computer verwenden, können Sie denselben Code auf allen parallelen Maschinen ausführen haben Sie verfügbar.

Der zweite Grund ist der Widerstand des -Programmierers . Mit MPI- und OpenMP-Abdeckung der parallelen Nachrichten- und Hilfsspeicher-Parallelprogrammierung (und Sie können sie sogar gleichzeitig nützlich und / oder erforderlich verwenden), warum ein Programmierer, insbesondere ein Anfänger auf dem Feld, seine / ihre Zeit damit verbringen, neues Parallel zu lernen Programmiersprachen, die nicht erteilt werden, um Normen zu werden? Sicher, wie Sie darauf hingewiesen haben, gibt andere Sprachen einige Vorteile, aber die Frage ist, würden Sie Ihre Zeit investieren, wenn Sie auf etwas wetten, das in der Zukunft sogar völlig verschwinden kann? Standards sind hier, um zu bleiben. Jedenfalls bezüglich dieses spezifischen Punktes ist meine bescheidene Meinung, dass man, wenn möglich, stattdessen einige Zeit in verschiedenen Sprachen (nicht nur solche für die parallele Programmierung) verbringen sollte, da dies eine nützliche Disziplin ist, und das Lernen verschiedener Paradigmen ist immer von Vorteil. Beim Lesen Ihres Lehrplans-Vitae für mögliche Einstellungen, die Sie für eine Position einstellen können, ist jedoch im Allgemeinen allgemein an Ihrem Wissen über die Standards, nicht an Ihr Wissen über Nischensprachen (im Allgemeinen, auch nicht, obwohl es Ausnahmen gibt natürlich).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top