Implizite Parallelität

Im Informatik, implizite Parallelität ist ein Merkmal einer Programmiersprache, die a erlaubt Compiler oder Dolmetscher automatisch ausnutzen Parallelität inhärent den Berechnungen, die durch einige Konstrukte der Sprache ausgedrückt werden. Eine reine parallele Sprache benötigt keine speziellen Richtlinien, Betreiber oder Funktionen, um eine parallele Ausführung zu ermöglichen, im Gegensatz zu explizite Parallelität.

Programmiersprachen mit implizite Parallelität umfassen Axum, BMDFM, HPF, Ausweis, Labor, MATLAB M-Code, Nesl, Sack, Sisal, Zplund ph.[1]

Beispiel

Wenn ein bestimmtes Problem darin besteht Sinus oder Logarithmus von jedem Jahrgang kann eine Sprache, die eine implizite Parallelität liefert, dem Programmierer ermöglicht, die Anweisung so zu schreiben:

Zahlen = [0 1 2 3 4 5 6 7]; Ergebnis = Sünde(Zahlen); 

Der Compiler oder Dolmetscher kann den Sinus jedes Elements unabhängig berechnen und den Aufwand auf mehrere Prozessoren verteilen, falls verfügbar.

Vorteile

Ein Programmierer, der implizit parallele Code schreibt, muss sich keine Sorgen über die Aufgabenabteilung oder die Prozesskommunikation machen und sich stattdessen auf das Problem konzentrieren, das sein Programm lösen soll. Die implizite Parallelität erleichtert im Allgemeinen die Gestaltung paralleler Programme und führt daher zu einer erheblichen Verbesserung der Programmiererproduktivität.

Viele der Konstrukte, die erforderlich sind, um dies zu unterstützen, bilden auch ohne die tatsächliche Parallelität Einfachheit oder Klarheit. Das obige Beispiel des Listenverständnisses in der Funktion sin () ist ein nützliches Merkmal für sich. Durch die Verwendung der implizite Parallelität müssen Sprachen den Benutzern effektiv so nützliche Konstrukte bereitstellen, um die erforderliche Funktionalität zu unterstützen (eine Sprache ohne angemessene () Schleife beispielsweise ist ein paar Programmierer).

Nachteile

Sprachen mit impliziter Parallelität verringern die Kontrolle, die der Programmierer über die parallele Ausführung des Programms hat, was manchmal in weniger als optimaler Folge resultiert parallele Effizienz. Die Macher der OZ Programmiersprache Beachten Sie auch, dass ihre frühen Experimente mit implizite Parallelität zeigten, dass implizite Parallelität das Debuggen und Objektmodelle unnötig unangenehm erschwerte.[2]

Ein größeres Problem ist, dass jedes Programm eine parallele und serielle Logik hat. Binärer E/O erfordert beispielsweise Unterstützung für serielle Operationen wie write () und such (). Wenn implizite Parallelität gewünscht wird, wird eine neue Anforderung an Konstrukte und Schlüsselwörter erzeugt, um Code zu unterstützen, der nicht getroffen oder verteilt werden kann.

Anmerkungen

  1. ^ Nikhil, Rishiyur; Arvind. Implizite parallele Programmierung in pH. ISBN 1-55860-644-0.
  2. ^ Seif Haridi (2006-06-14). "Einführung". Tutorial von Oz. Abgerufen 2007-09-20.