| |
März 2003 OMG-Vereinheitlicht, Sprache, v1.5 Modellierend B-31 B-Tätigkeits-SprachcBeispiele Die Hauptarbeit des Algorithmus wird durch ein LoopAction durchgeführt. Zwei der Eingänge zu diese Tätigkeit sind der ursprüngliche Argumentvektor und der Vektor der Wurzeln der Einheit. Innerhalb schlingen Sie sich, diese Vektoren sind Schleifenvariablen, die recomputed jede Wiederholung sind. Die anderen zwei Eingänge sind die Ganzzahlen 0 und 1. Diese Werte initialisieren die Schleifenvariablen m und 2 m . Schleifenvariablen werden durch die Eingänge initialisiert, aber die Schleifenvariablen sind von eindeutig Stifte, die sie initialisieren. Die Werte der Schleifenvariablen sind recomputed jedes Wiederholung. Wenn ein Wert außerhalb von der Schleife direkt innerhalb einer Schleife verwendet wird, dann sein Wert ist über allen Wiederholungen der Schleife örtlich festgelegt. Z.B. die Testtätigkeit innerhalb der Schleife Klausel hat Maschinenbordbuch n und m als Eingänge. Der ehemalige Wert ist während der Schleife örtlich festgelegt. Das letzte Wert ist eine variable Schleife und er ändert während jeder Wiederholung. Offensichtlich ein mindestens Eingang zu einem Schleifentest muß eine variable Schleife sein, oder die Schleife beendet nie! Die Test- und Körpertätigkeiten einer Schleife sind aufeinanderfolgend. Der Test muß vor folgen Körper kann durchgeführt werden und der Körper muß durchführen, bevor der Test durchgeführt werden kann wieder auf den aktualisierten Schleifenvariablen. Innerhalb des Schleifenkörpers jedoch gibt es Menge von Parallelität. Die Tätigkeiten +1, dünn, * 2, und schneiden-Diagramm-cut-map-shuffle Reihenfolge kann alle werden gleichzeitig durchgeführt. Solche Parallelität auszudrücken ist eins der Hauptleitung Zwecke der Tätigkeitssemantik. Dieses bedeutet nicht, daß eine Implementierung muß führen Sie die Parallelität mit Parallelität ein. Es bedeutet bloß daß die Implementierung enthält nicht willkürliche Begrenzungen. Die ursprünglichen Tätigkeiten +1 und * 2 führen Sie einfache arithmetische einheitlichbetriebe durch. Diese konnte als ursprüngliche Funktionen definiert werden. Die ursprüngliche Tätigkeit verdünnen ist ein ursprünglicher Vektor Funktion. Sie nimmt einen Vektor und eine Ganzzahl t und Kopien jedes t ' Thwert vom Eingang Reihe in einen Durchlauf von Länge t damit der Ausgangsvektor die gleiche Größe wie der Eingangsvektor ist aber hat wenige einzigartige Werte in ihm. Diese Tätigkeit konnte als a offensichtlich definiert werden Verfahren, aber jede bestimmte Implementierung ist willkürlich. Schnitt und Shuffle sind auch Betriebe auf Vektoren. Schnitt nimmt einen Vektor als Eingang und produziert zwei Vektoren als Ausgang, einer von ihnen die erste Hälfte und der andere die Rekordhälfte vom Eingangsvektor. Shuffle Nehmen zwei Vektoren als Eingang und Überlappen ihre Werte zu produzieren Sie einen einzelnen Vektor, der alle Werte enthält. Diese Betriebe konnten wie definiert werden Schleifen, aber, indem wir diese Betriebe als ursprüngliche Funktionen definieren, konservieren wir Möglichkeit einer in hohem Grade parallelen Implementierung (die schwer vom genauen abhängt Implementierung). Die Diagrammtätigkeit ist vermutlich die kompliziertste Tätigkeit in der Tätigkeitssemantik. Diesbezüglich Beispiel, nimmt sie 3 eingegebene Vektoren, jeden der Größe n/2 Elemente. Alle Vektoren müssen sein die gleiche Größe, aber sie konnten Werte der unterschiedlichen Arten enthalten (in diesem Fall jedoch sie alle enthalten komplizierte Vektoren). Ein Tuple, der innen einen Wert von der gleichen Position enthält jeder Vektor wird eine Scheibe genannt . Die Eingangsvektoren enthalten n/2 Scheiben (erinnern Sie sich, sie muß alle sind die gleiche Größe). Jede Scheibe ist der Eingang zu einer unterschiedlichen Durchführung des subaction GroupAction. Die Durchführungen des subaction sind alle gleichzeitig. Merken Sie die ausgegebenen 3 Stifte an der Oberseite des subaction. Auf jeder Durchführung erhält jeder Stift einen Wert von entsprechender Eingangsvektor. Z.B. S m,i ist ein Wert vom Vektor S m, 0..n/2-1 . Es gibt keine ausdrücklichen Datenfluß von den Eingängen zu den Diagrammvariablen. Der Anschluß ist implizit, Teil der Definition der Diagrammtätigkeit und die Stifte seien Sie vom unterschiedlichen Rank innen irgendein Fall (man ist eine Ansammlung, die andere ein Scalar). In irgendeinem Fall stellt er nicht a dar |  |
|
| |
|
|