DE19510879C2 - Brechnungsverfahren für simultane, lineare Gleichungen und speicherverteilter Parallelprozessor zur Durchführung des Verfahrens - Google Patents
Brechnungsverfahren für simultane, lineare Gleichungen und speicherverteilter Parallelprozessor zur Durchführung des VerfahrensInfo
- Publication number
- DE19510879C2 DE19510879C2 DE19510879A DE19510879A DE19510879C2 DE 19510879 C2 DE19510879 C2 DE 19510879C2 DE 19510879 A DE19510879 A DE 19510879A DE 19510879 A DE19510879 A DE 19510879A DE 19510879 C2 DE19510879 C2 DE 19510879C2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- matrix
- data
- parallel
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Description
Die vorliegende Erfindung betrifft ein
Berechnungsverfahren für simultane, lineare Gleichungen und
einen speicherverteilten Parallelprozessor zur Durchführung
des Verfahrens, das bzw. der dazu in der Lage ist,
simultane, lineare Gleichungen in einem
Multiprozessorsystem schnell zu lösen, das seine Prozesse
durch Kommunikationen unter einer Vielzahl von Prozessoren
durchführt.
Ein blockweises LU-Zerlegungsverfahren wird betrach
tet, daß äußere Produkte als einen Algorithmus zum Auflösen
simultaner, linearer Gleichungen für einen parallelen Pro
zeß verwendet. Fig. 1 zeigt eine Übersicht des blockweisen
LU-Zerlegungsverfahrens, das die äußeren Produkte
verwendet.
Die Gaußsche Elimination, die in Blockeinheiten unter
Verwendung von äußeren Produkten durchgeführt wird, LU-zer
legt das Feld A, das in der Fig. 1 gezeigt ist. Das Gauß
sche d gibt die Länge bzw. Breite eines Blocks an. Die
nachfolgenden Prozesse oder Verarbeitungsschritte werden in
diesem Verfahren durchgeführt.
Der k-te Prozeß aktualisiert den Aktualisierungsab
schnitt A(k) durch die nachfolgende Gleichung.
A(k) = A(k) - L2(k) . U2(k) (1)
Bei dem (k + 1)-ten Prozeß wird A(k) durch die Block
länge d unterteilt und eine Matrix, die um d kleiner ist,
wird durch die gleiche Gleichung aktualisiert.
L2(k) und U2(k) sollte durch die nachfolgende Glei
chung berechnet werden.
Wenn die Gleichung (1) für die Aktualisierung verwen
det wird, werden die Daten wie folgt zerlegt.
B(k) = ((L1(k))T, (L2(k))T)TU1(k)
Dann werden die Daten wie folgt aktualisiert.
U2(k) = (L1(k))-1U2(k)
U2(k) = (L1(k))-1U2(k)
Wobei L1(k) eine untere Dreiecksmatrix nach der LU-
Zerlegung angibt, während U1(k) eine obere Dreiecksmatrix
angibt.
Wenn das blockweise LU-Zerlegungsverfahren in einem
speicherverteilten Parallelprozessor abgearbeitet wird,
indem äußere Produkte verwendet werden, sollten Daten wirk
sam an den Speicher jedes Prozessors verteilt werden und
sollten Objektdaten wirksam unter den Prozessoren geschal
tet werden. Herkömmlicherweise werden blockweise Daten se
quentiell in jedem Prozessor angeordnet, um die Benutzer
schnittstelle zu vereinfachen. Deshalb ist die LU-Zerle
gungs-Belastung jedes Prozessors notwendigerweise gleich
zugeordnet. Des weiteren ist die Parallelität der Datenkom
munikationen unter den Prozessoren nicht ausreichend, wo
durch unerwünschterweise die Kommunikationskosten erhöht
werden.
Das schnelle Auflösen simultaner, linearer Gleichungen
ist eine wesentliche Anwendung von Computern. Zur wirksame
ren Auflösung der Gleichungen durch einen massiv parallelen
Prozessor ist nicht nur ein mathematisches Verfahren son
dern auch eine wirksame Parallelität erforderlich, die in
den Eigenschaften des massiv parallelen Prozessors enthal
ten ist.
Eine Hochgeschwindigkeits-CPU und ein Speichersystem
großen Ausmaßes sind erforderlich, um eine große Anzahl von
simultanen, linearen Gleichungen auflösen zu können. Um die
simultanen, linearen Gleichungen schnell unter Verwendung
des speicherverteilten Multiprozessors auflösen zu können,
sollten die Daten wirksam zugeordnet und zu dem Speicher
jedes Prozessors übertragen werden.
Zudem sollte die Benutzerschnittstelle
(Anwendungsschnittstelle des Host-Computers) ohne einen
komplizierten Aufbau realisiert werden, um verschiedene
Probleme zu lösen.
Aus der DE 41 40 800 A1 ist ein Verfahren zur Lösung eines linearen
Gleichungssystems auf einem Parallelcomputer bekannt, bei welchem ein Gauss-Jordan-
Inversionsverfahren verwendet wird; das LU-Verfahren wird nach dieser Druckschrift
nicht benutzt.
Aus Patent Abstracts of Japan, P-1470, Jan 18, 1993, Vol. 17/No. 23 ist eine weitere
Vorrichtung zur simultanen Verarbeitung linearer Gleichungen bekannt.
Aufgabe der vorliegenden Erfindung ist es, ein Berechnungsverfahren für simultane,
lineare Gleichungen zu schaffen, bei dem die Zeit, die dafür erforderlich ist, simultane, lineare
Gleichungen aufzulösen, verkürzt ist.
Ferner ist es Aufgabe der Erfindung, einen speicherverteilten Parallelprozessor
zur Durchführung eines solchen Verfahrens zu schaffen.
Diese Aufgaben werden durch die Merkmale der Ansprüche 1 bzw. 11 gelöst.
Bei dem Auflösungsverfahren simultaner, linearer Gleichungen unter Verwendung des
speicherverteilten Parallelprozessors gemäß der vorliegenden Erfindung, der eine Vielzahl von
Prozessoren aufweist, die dazu in der Lage sind, gegenseitig Daten zu übertragen, um
simultane, lineare Gleichungen durch das LU-Zerlegungsverfahren aufzulösen, indem eine
Koeffizientenmatrix auf eine Vielzahl von Prozessoren verteilt wird, wird die Koeffizientenmatrix
an jeden Prozessor verteilt, in LU zerlegt und dynamisch parallel zu jedem Prozessor derart
übertragen, daß die Matrix zyklisch in Reihenvektor-Blockeinheiten umgeordnet werden kann.
Jeder Block, der zu einem entsprechenden Prozessor verteilt wird, wird LU-zerlegt und
in einem Vorwärts/Rückwärts-Zuordnungsprozeß bezüglich jedem der LU-Zerlegungs-
Ergebnisse verarbeitet.
Da die LU-Zerlegung einer Koeffizientenmatrix in jedem Prozessor parallel durchgeführt
werden kann, kann die LU-Zerlegung schnell abgeschlossen werden und die Daten können in
Blockeinheiten parallel in einer verkürzten Datenübertragungszeit übertragen werden.
Vorteilhafte Weiterbildungen der Erfindung sind den Unteransprüchen 2 bis 10 und 12 bis
14 zu entnehmen.
Fig. 1 zeigt das LU-Zerlegungsverfahren;
Fig. 2 zeigt das Prinzip der vorliegenden Erfindung;
Fig. 3 zeigt die Konfiguration des speicherverteilten
Parallelprozessors gemäß einer Ausführungsform der vorlie
genden Erfindung;
Fig. 4 zeigt den Aufbau des Prozessors;
Fig. 5 ist ein Flußdiagramm des Umordnungsprozesses
gemäß einer Ausführungsform der vorliegenden Erfindung;
Fig. 6 zeigt ein Beispiel für die Übertragung von
Blöcken;
Fig. 7 zeigt ein Beispiel der Matrix, die LU-analy
siert werden soll;
Fig. 8 zeigt die Berechnung eines Matrixprodukts;
Fig. 9 zeigt ein Beispiel für die Übertragung, bei
dem die Matrix C in einem Prozessor PE existiert;
Fig. 10 ist ein Flußdiagramm (1), das die Übertragung
von Daten und die Berechnung eines Matrixprodukts zeigt;
Fig. 11 ist ein Flußdiagramm (2), das die Übertragung
von Daten und die Berechnung eines Matrixprodukts zeigt;
Fig. 12 zeigt ein Beispiel für die Umordnung in dem
Vorwärts/Rückwärts-Zuordnungsprozeß;
Fig. 13 ist eine erläuternde Ansicht der Umordnung in
dem Vorwärts/Rückwärts-Zuordnungsprozeß;
Fig. 14 ist ein Flußdiagramm der Umordnung in dem
Vorwärts/Rückwärts-Zuordnungsprozeß;
Fig. 15 zeigt den Vorwärts/Rückwärts-Zuordnungspro
zeß;
Fig. 16 zeigt die Umordnung von Daten;
Fig. 17 zeigt die Übertragung des Blocks b1;
Fig. 18 zeigt die Berechnung eines Matrixprodukts und
die Übertragung von Daten in jedem Prozessor;
Fig. 19 zeigt die Berechnung eines Matrixprodukts und
die Übertragung von Daten in jedem Prozessor;
Fig. 20 zeigt die Berechnung eines Matrixprodukts und
die Übertragung von Daten in jedem Prozessor;
Fig. 21 zeigt die Umordnung von Daten;
Fig. 22 zeigt die Berechnung eines Matrixprodukts und
die Übertragung von Daten in jedem Prozessor;
Fig. 23 zeigt die Umordnung von Daten;
Fig. 24 zeigt die Umordnung von Blöcken;
Fig. 25 zeigt die Umordnung von Blöcken; und
Fig. 26 zeigt die Beziehung zwischen der Matrix, die
in die Reihenrichtung unterteilt ist, und jedem Prozessor.
Die Ausführungsform der vorliegenden Erfindung wird
nachfolgend durch Bezug auf die beiliegenden Zeichnungen
beschrieben.
Fig. 2 zeigt das Prinzip der vorliegenden Erfindung.
Das Gaußsche Eliminationsverfahren, das in Blockeinheiten
unter Verwendung der äußeren Produkte durchgeführt wird,
wird, wie unten beschrieben wird, als eine der Lösungen der
simultanen, linearen Gleichungen realisiert.
Ein speicherverteilter Parallelprozessor 1 umfaßt eine
Vielzahl von Prozessoren und jeweils zwei Prozessoren kön
nen direkt miteinander kommunizieren. Eine Datenumordnungs
einheit 2 in dem speicherverteilten Parallelprozessor 1
ordnet Blöcke von Spaltenvektoren um, indem sie zu jedem
Prozessor PE verteilt werden. Gleichzeitiges Übertragen von
Daten, die für die Umordnung erforderlich sind, ermöglicht
eine schnelle Datenübertragung. Die Datenumordnungseinheit
2 ordnet Blöcke um, indem der k-te Block k in einer
Vielzahl von Spaltenvektorblöcken in einer Matrix in jedem
Prozessor zu dem (mod(k - 1, pe) + 1)-ten Prozessor übertragen
wird. Des weiteren werden Blöcke zu jedem Prozessor paral
lel übertragen.
Eine LU-Zerlegungseinheit 3 unterteilt Daten, die in
einer Matrixproduktberechnung verarbeitet werden sollen,
während der LU-Zerlegung der Blöcke und dann überträgt sie
das Ergebnis zu jedem Prozessor. Die unterteilten Daten
werden in jedem Prozessor berechnet. Die Daten, die in dem
nächsten Matrixprodukt verarbeitet werden sollen, werden
parallel zu jedem Prozessor übertragen. Wiederholen dieser
Prozesse vervollständigt die Gesamtberechnung. In diesem
Fall kann die Zeit, die tatsächlich für die Übertragung von
Daten erforderlich ist, reduziert werden, indem die An
fangsübertragungszeit gekürzt wird und gleichzeitig eine
nachfolgende Übertragung und Berechnung mit überlappender
tatsächlicher Übertragungs- und Berechnungszeit durchge
führt wird.
Eine Vorwärts/Rückwärts-Substitutionseinheit 4 stellt
die Daten, die in Blockeinheiten umgeordnet wurden, in der
Ursprungsanordnung wieder her, ordnet die Daten, die in
jedem Prozessor als in der Spaltenvektorrichtung unterteilt
gespeichert sind, in die Daten um, die als in die Reihen
vektorrichtung unterteilt gespeichert sind, um LU-zerlegte
Daten vorwärts und rückwärts zu substituieren und um wirk
sam eine gegebene Gleichung aufzulösen.
Das Umordnen der Daten durch die parallele Übertra
gung, wie oben beschrieben wurde, erlaubt, daß eine bei ei
ner LU-Zerlegung auftretende Last gleichmäßig auf jeden
Prozessor verteilt werden kann, und erlaubt auch, daß die
Datenübertragungszeit während der Datenumordnung offen
sichtlich bzw. scheinbar gleich der Kommunikationszeit un
ter den Prozessoren ist.
Die Ausführungsform der vorliegenden Erfindung wird
nachfolgend unter Bezug auf die beiliegenden Zeichnungen
beschrieben.
Fig. 3 zeigt den Aufbau des speicherverteilten Paral
lelprozessors gemäß einer Ausführungsform der vorliegenden
Erfindung. Fig. 4 zeigt den Aufbau des Prozessors (PE),
der in der Fig. 3 gezeigt wird.
Die vorliegende Erfindung kann durch einen speicher
verteilten Parallelprozessor realisiert werden, der die
Hardware hat, die z. B. in Fig. 3 gezeigt ist. Jeder Pro
zessor (PE) 10 ist mit einem Koordinatennetzwerk 15 verbun
den und umfaßt eine Skalareinheit 11 zum Durchführen einer
Skalaroperation, eine Vektoreinheit 12 zum Durchführen ei
ner Vektoroperation, eine Hauptspeichervorrichtung 13 zum
Speichern von Befehlsketten eines Programms und von Daten,
die in den Operationen verarbeitet werden sollen, und eine
Zwischenprozessor-Kommunikationseinheit 14 zum Kommunizie
ren von Daten durch das Koordinatennetzwerk 15 zu und von
anderen Prozessoren.
Jeder Prozessor 10 ist ausgelegt, wie es in der Fig.
4 gezeigt ist. Die Skalareinheit 11 umfaßt einen Cache-
Speicher 21 zum zeitweiligen Halten der Daten in der Haupt
speichervorrichtung 13, ein Allgemeinzweck-Regi
ster/Fließkommaregister 22 für Operationen und eine
Skalaroperationseinheit 23 zum Ausführen eines Skalarbe
fehls. Wenn ein Befehl, der von der Hauptspeichervorrich
tung 13 geholt wurde, ein Vektorbefehl ist, dann wird die
Vektoreinheit 12 aktiviert. Die Vektoreinheit 12 umfaßt ei
ne Ladepipeline 24 zum Laden von Daten von der Hauptspei
chervorrichtung 13, eine Speicherpipeline 25 zum Speichern
von Daten in der Hauptspeichervorrichtung 13, ein Vektorre
gister 26 zum Halten einer Serie von Daten, die in einer
Vektoroperation verarbeitet werden sollen, ein Maskenregi
ster 27 zum Maskieren spezifischer zu verarbeitender Daten,
eine Maskenpipeline 28 zum Spezifizieren von Daten, die in
den Operationen verarbeitet werden sollen, eine
Multiplikationspipeline 29 zum Multiplizieren von Vektor
daten, eine Additions/Logik-Operations-Pipeline 30 zum
Durchführen einer Addition/Subtraktion oder einer logischen
Operation und eine Divisionspipeline 31 zum Dividieren von
Vektordaten.
Untenstehend ist im Detail das Verfahren zum Auflösen
simultaner, linearer Gleichungen gemäß der vorliegenden Er
findung beschrieben.
Zuerst wird das Verfahren zum dynamischen Umordnen von
Daten erläutert.
In dem speicherverteilten Parallelprozessor, der in
Fig. 3 gezeigt ist, werden die Daten gespeichert, nachdem
sie verteilt worden sind. In einem zweidimensionalen Feld
werden die Daten in Abschnitte in der Spaltenrichtung unterteilt
und jedem Prozessor (PE) 10 zugeordnet. Die Matrix
des zweidimensionalen Feldes wird als eine Sammlung von
Blöcken betrachtet, die eine gegebene Länge haben, und die
Blöcke werden umgeordnet.
A(n, m) = A(n, 1 : d) + A(n, d + 1 : 2d)
+ A(n, 2d + 1 : 3d) + . . .
= A1 + A2 + A3 + . . . + Ak
wobei Aj = A (n, (j - 1) * d + 1 : j * d)
Die Daten werden derart umgeordnet, daß der Block Aj
einem Prozessor zugeordnet wird, der mod(j - 1, #pe) + 1 an
gibt, wobei #pe die Anzahl von Prozessoren (Prozessor i
(i = 1, . . ., #pe)) angibt.
Der Block Aj wird einem Prozessor zugeordnet, der
mod(j - 1, #pe) + 1 angibt, wobei mod(a, b) einen Rest aus der
ganzen Zahl a geteilt durch die ganze Zahl b angibt.
Das Feld B, das so groß wie das Feld A ist, wird ver
teilt und jedem Prozessor zugeordnet. In dem speicherver
teilten Parallelprozessor, der in der Fig. 3 gezeigt ist,
ist jeder Prozessor mit dem Koordinatennetzwerk 15 für eine
gleichzeitige Übertragung verbunden. Daten können simultan
von dem gleichen Prozessor aus gelesen oder in diesen ein
geschrieben werden, wodurch es den Blöcken ermöglicht wird,
daß sie in der Sequenz umgeordnet werden, die in der Fig.
4 gezeigt ist.
Fig. 5 ist ein Flußdiagramm, das den Prozeß der
Umordnung von Blöcken gemäß der Ausführungsform der vor
liegenden Erfindung zeigt.
Die gleiche Anzahl von Blöcken Aj wird sequentiell in
jedem Prozessor (PE) angeordnet. Die Blöcke werden derart
angeordnet, daß die Gesamtanzahl jt der Blöcke teilbar
durch die Anzahl der Prozessoren #pe ist. Die Anzahl #b der
Blöcke in einem Prozessor ist gleich jt/#pe.
Im Schritt S1, der in der Fig. 5 in dem Umordnungs
prozeß gezeigt ist, wird zuerst die minimale, positive
Ganze Zahl n1, die count = 0 und mod(n1 * #b, #pe) = 0 er
füllt, erhalten.
Wenn die PE-Nummer jedes Prozessors gleich pno(pno =
1, . . ., #pe) im Schritt S2 ist, dann ist k = 1 + L(pno - 1)/
n1 in jedem PE. L(pno - 1)/n1 gibt einen ganzzahligen Ab
schnitt eines Operationsergebnisses von (pno - 1)/n1 an.
Im Schritt S3 werden die nachfolgenden Berechnungen in
jedem Prozessor durchgeführt.
p = (pno - 1) * #b + k
p1 = L(P - 1)/#pe
p2 = mod(p - 1, #pe)
q = p2 * #b + p1 + 1
wobei p eine Blocknummer im Feld A in einem Übertra
gen-Von-Prozessor angibt, wenn Blöcke im Feld A, die einen
oder mehrere Spaltenvektoren umfassen, seriell von dem er
sten Prozessor PE1 an numeriert werden, und q gibt eine
Blocknummer im Feld B in einem Übertragen-Zu-Prozessor an.
Bei dem Prozeß im Schritt S3 werden die Blocknummer p im
Feld A in dem Übertragen-Von-Prozessor, wenn Daten in
Blockeinheiten umgeordnet werden, und die Blocknummer q im
Feld B in dem Übertragen-Zu-Prozessor erhalten.
Im Schritt S4 wird die Übertragung Bq = Ap in jedem
Prozessor durchgeführt, wobei Ap den Block p in der Über
tragen-Von-Matrix A angibt und in jedem Prozessor gespei
chert wird; und wobei Bq einen Block q in der Übertragen-
Zu-Matrix B angibt und in einem dazu unterschiedlichen Pro
zessor ist, wodurch Daten vollständig parallel übertragen
werden.
Das heißt, da eine Vielzahl von Leseoperationen oder
eine Vielzahl von Schreiboperationen nicht in einem einzel
nen Prozessor durchgeführt werden, also eine einzelne Lese
operation und eine einzelne Schreiboperation in einem ein
zelnen Prozessor durchgeführt werden, daß Daten vollständig
parallel unter den Prozessoren in umgeordneten Blöcken
übertragen werden können.
Im Schritt S5 wird count = count + 1.
Im Schritt S6 wird bestimmt, ob count < #b ist oder
nicht.
Wenn count < #b ist, dann ist der Prozeß beendet. So
lange nicht count < #b ist, wird die Steuerung zum Schritt
S7 übergeben.
Im Schritt S7 wird die nachfolgende Berechnung in je
dem PE gemacht.
k = k + 1
k = mod(k - 1, #b) + 1
Dann kehrt die Steuerung zum Schritt S3 zurück und die
Prozesse werden wiederholt.
Ein Beispiel des oben beschriebenen Umordnungspro
zesses wird unter Bezug auf die Fig. 6 beschrieben. Die
Fig. 6 zeigt den Fall, wenn die Anzahl der Prozessoren pe
gleich 4 ist und wenn die Anzahl der Blöcke b in einem Pro
zessor gleich 4 ist. Ein Rechteck in den Feldern A und B in
Fig. 6 bezieht sich auf einen Block und eine Nummer in je
dem Block bezieht sich auf eine Blocknummer zum Zwecke der
Erläuterung.
In diesem Fall, da die Anzahl der Prozessoren gleich
PE = 4 ist, die Anzahl der Blöcke b = 4 ist, ist die minimale,
positive ganze Zahl n1, die mod(n1 * b, pe) = 0 erfüllt,
gleich 1.
Im Anfangszustand wird der Wert k des Prozessors PE1
in der Berechnung im Schritt S2 durch k = 1 + (1 - 1)/1 = 1
wiedergegeben. Der Wert k des Prozessors PE2 wird durch k
1 + (2 - 1)/1 = 2 wiedergegeben. Der Wert k des Prozessors
PE3 wird durch k = 1 + (3 - 1)/1 = 3 wiedergegeben. Der Wert
k des Prozessors PE4 wird durch k = 1 + (4 - 1)/1 = 4 wie
dergegeben.
Im nächsten Schritt S3 wird die Blocknummer p im Feld
A jedes Übertragen-Von-Prozessors und die Blocknummer q im
Feld B eines Übertragen-Zu-Prozessors berechnet. Im Ergeb
nis sind die Übertragen-Von-Block-Nummer p und die Übertra
gen-Zu-Block-Nummer q gleich p = 1 und q = 1 im Prozessor PE1,
p = 6 und q = 6 im Prozessor PE2, p = 11 und q = 11 im Prozessor
PE3 und p = 16 und q = 16 im Prozessor PE4.
Deshalb wird im ersten Übertragungsweg der erste Block
1 im Feld A des Prozessors PE1 zur ersten Blockposition im.
Feld B des Prozessors PE1 übertragen. Der zweite Block 6 im
Feld A des Prozessors PE2 wird zum sechsten, d. h. in die
zweiten Blockposition im Feld B des Prozessors PE2 übertra
gen. Der dritte Block 11 im Feld A des Prozessors PE3 wird
zu dem elften, d. h. der dritten Blockposition im Feld B des
Prozessors PE3 übertragen. Der vierte Block 16 im Feld A
des Prozessors PE3 wird zum sechzehnten, d. h. der vierten
Blockposition im Feld B des Prozessors PE4 übertragen.
Dann wird im zweiten Übertragungsweg k = 2 (PE1), k = 3
(PE2), k = 4 (PE3), und k = 1 (PE4). Im nächsten Schritt S3
wird die Blocknummer p im Feld A jedes Übertragen-Von-Pro
zessors und die Blocknummer q im Feld B eines Übertragen-
Zu-Prozessors berechnet. Im Ergebnis sind die Übertragen-
Von-Blocknummer p und die Übertragen-Zu-Blocknummer q
gleich p = 2 und q = 5 im Prozessor PE1, p = 7 und q = 10 im Pro
zessor PE2, p = 12 und q = 15 im Prozessor PE3 und p = 13 und q = 4
im Prozessor PE4.
Deshalb wird im zweiten Übertragungsweg der zweite
Block 2 im Feld A des Prozessors PE1 zu dem fünften, d. h.
der ersten Blockposition im Feld B des Prozessors PE2 über
tragen. Der dritte Block 7 (siebter) im Feld A des Prozes
sors PE2 wird zum zehnten, d. h. der zweiten Blockposition
im Feld B des Prozessors PE3 übertragen. Der vierte Block
12 (zwölfter Block) im Feld A des Prozessors PE3 wird zu
dem fünfzehnten, d. h. der dritten Blockposition im Feld B
des Prozessors PE4 übertragen. Der erste Block 13
(dreizehnter Block) im Feld A des Prozessors PE4 wird zum
vierten, d. h. der vierten Blockposition im Feld B des Pro
zessors PE1 übertragen.
Ähnlich wird im dritten Übertragungsweg mit k = 3 (PE1)
k = 4 (PE2), k = 1 (PE3) und k = 2 (PE4),
der dritte Block 3 im Feld A des PE1 zu der ersten Po sition des Feldes B des PE3 übertragen,
der vierte Block 8 im Feld A des PE2 zur zweiten Posi tion des Feldes B des PE4 übertragen,
der erste Block 9 im Feld A des PE3 zur dritten Posi tion von Feld B im PE1 übertragen und
der zweite Block 14 im Feld A des PE4 zu der vierten Position des Feldes B im PE2 übertragen.
der dritte Block 3 im Feld A des PE1 zu der ersten Po sition des Feldes B des PE3 übertragen,
der vierte Block 8 im Feld A des PE2 zur zweiten Posi tion des Feldes B des PE4 übertragen,
der erste Block 9 im Feld A des PE3 zur dritten Posi tion von Feld B im PE1 übertragen und
der zweite Block 14 im Feld A des PE4 zu der vierten Position des Feldes B im PE2 übertragen.
Ähnlich wird im dritten Übertragungsweg mit k = 3 (PE1)
k = 4 (PE2), k = 1 (PE3) und k = 2 (PE4),
der vierte Block 4 im Feld A des PE1 zu der ersten Po sition des Feldes B des PE4 übertragen,
der erste Block 5 im Feld A des PE2 zu der zweiten Po sition des Feldes B des PE1 übertragen,
der zweite Block 10 im Feld A des PE3 zu der dritten Position von Feld B im PE2 übertragen, und
der dritte Block 15 im Feld A des PE4 zu der vierten Position des Feldes B im PE3 übertragen.
der vierte Block 4 im Feld A des PE1 zu der ersten Po sition des Feldes B des PE4 übertragen,
der erste Block 5 im Feld A des PE2 zu der zweiten Po sition des Feldes B des PE1 übertragen,
der zweite Block 10 im Feld A des PE3 zu der dritten Position von Feld B im PE2 übertragen, und
der dritte Block 15 im Feld A des PE4 zu der vierten Position des Feldes B im PE3 übertragen.
Die Daten werden übertragen und umgeordnet, wie es
obenstehend aufgelistet ist. Im Ergebnis kann vermieden
werden, daß eine Vielzahl von Datenleseoperationen oder ei
ne Vielzahl von Datenschreiboperationen, simultan in einem
PE durchgeführt werden. Des weiteren, da eine Leseoperation
und eine Schreiboperation gleichzeitig in dem gleichen PE
durchgeführt werden kann, werden die Daten gleichzeitig oh
ne einen Konflikt oder ohne ein Warten in einer Schlange
übertragen.
Die oben aufgelisteten, umgeordneten Daten werden in
Blockeinheiten LU-zerlegt. Fig. 7 zeigt ein Beispiel einer
Matrix, die gemäß der Ausführungsform der vorliegenden
Erfindung LU-zerlegt wird. Wie in der Fig. 1 gezeigt wird,
wird die LU-Zerlegung durch ein Gaußsches Eliminationsver
fahren durchgeführt, das in Blockeinheiten unter Verwendung
der äußeren Produkte durchgeführt wird. Der Aktualisie
rungsabschnitt U, der in Fig. 7 gezeigt ist, wird durch U
= U - C × R berechnet, um U zu aktualisieren.
Die Berechnung erfordert es, daß die Matrix C zu jedem
PE übertragen wird. Ein einfacheres Verfahren besteht
darin, die gesamte Matrix C zu jedem PE zu übertragen. Wenn
ein Matrixprodukt berechnet wird, nachdem die Matrix C zu
jedem PE übertragen wurde, kann die gesamte Matrix C zu je
dem PE durch ein binäres Baumverfahren in der Form eines
Exponenten von 2 übertragen werden. D. h., die Daten werden
wie folgt übertragen, wenn sie vom PE1 zu anderen #pe - 1 PE5
übertragen werden.
- 1. Matrix C wird vom PE1 zum PE2 übertragen.
- 2. Dann wird die Übertragung vom PE1 zum PE3 gleich zeitig mit der Übertragung vom PE2 zum PE4 durchgeführt.
- 3. Als nächstes wird die Übertragung gleichzeitig vom PE1 zum PE5, vom PE2 zum PE6, vom PE3 zum PE7 und vom PE4 zum PE8 durchgeführt. Nach der Übertragung werden die ge samten Übertragungskosten (Zeit) in der Ordnung von LOG2 (#pe) berechnet.
Um die gesamten Übertragungskosten zu reduzieren, wird
die Matrix C in der Reihenrichtung unterteilt, wie unten
stehend beschrieben wird.
In der k-ten Stufe bei der LU-Zerlegung in Blockein
heiten wird das obenstehende Matrixprodukt nach der ZU-Zer
legung bezüglich Ak berechnet. Zu dieser Zeit wird die Ma
trix C in n-Abschnitte unterteilt und diese werden sequen
tiell mit C1, C2, C3, . . ., bis Cn numeriert. n wird derart
bestimmt, daß es #pe/n < 1 und LOG2 (#pe/n) < n erfüllt.
Untenstehend beschrieben ist ein Beispiel, in dem die
Matrizen C1 bis C4, die gleichmäßig in vier Abschnitte un
terteilt sind, in acht Prozessoren PE1 bis PE8, wie in
Fig. 8 gezeigt wird, berechnet werden. Es wird angenommen,
daß PE1 die Daten des Blocks R1 hält, daß PE2 die Daten des
Blocks R2 hält, . . ., und daß PE8 die Daten des Blocks R8
hält. Eine teilweise Aktualisierung wird durchgeführt, in
dem das Matrixprodukt der Matrix R8 mal Cj in jedem PE ver
wendet wird. Die schraffierten Abschnitte in Fig. 8 geben
die Abschnitte an, die in der ersten Aktualisierung verar
beitet werden.
Beim Berechnen eines Matrixprodukts aus der Matrix R1
mit der Matrix Cj in jedem PE wird die Matrix Cj sequenti
ell vom PE2 zum PE8 wie folgt verwendet.
Erste Berechnung: C1, C2, C3, C4, C1, C2, C3, C4
zweite Berechnung: C4, C1, C2, C3, C4, C1, C2, C3
dritte Berechnung: C3, C4, C1, C2, C3, C4, C1, C2
vierte Berechnung: C2, C3, C4, C1, C2, C3, C4, C1,
zweite Berechnung: C4, C1, C2, C3, C4, C1, C2, C3
dritte Berechnung: C3, C4, C1, C2, C3, C4, C1, C2
vierte Berechnung: C2, C3, C4, C1, C2, C3, C4, C1,
Um die Berechnungen durchzuführen, sollte Ck wie folgt
übertragen werden.
Ein Prozessor, der den Block k in der ersten Übertra
gung speichert, ist der Prozessor p = mod(k - 1, #pe) + 1. Die
Matrix C ist gleichmäßig in n Abschnitte C1 unterteilt, und
C1 wird zum mod (p - 2 + i, #pe) + 1 von dem Prozessor p aus
übertragen. Bei der zweiten Übertragung werden die Daten
von n Prozessoren, die bei der ersten Übertragung übertra
gen worden sind, parallel zu weiteren Prozessoren übertra
gen. Bei der t-ten Übertragung 2 ** (t - 1) * n (** gibt einen
Exponenten an) wird parallel übertragen. C1 wird somit zu
jedem Prozessor übertragen.
Fig. 9 zeigt ein Beispiel der Übertragung, bei der
die Matrix C im PE1 verarbeitet wird. Wie in der Fig. 9
gezeigt wird, wird C1 zum PE1 und C2 zum PE2 bei der ersten
Übertragung übertragen. Bei der zweiten Übertragung wird C2
vom PE1 zum PE3 übertragen und C2 vom PE2 zum PE4 parallel
übertragen. Bei der nächsten Übertragung wird C1 vom PE1
zum PE5 und vom PE3 zum PE7 übertragen und C2 wird vom PE2
zum PE6 und vom PE4 zum PE8 parallel übertragen.
Die Übertragung und Berechnung können simultan durch
geführt werden, indem die Daten, die bei der zweiten Be
rechnung notwendig sind, in ein anderes Gebiet übertragen
werden, während die erste Berechnung durchgeführt wird.
Die Fig. 10 und 11 sind Flußdiagramme, die den Fall
zeigen, bei dem die Matrix C in dem k-ten Block ist, d. h.
sich im Prozessor p = mod(k - 1, #pe) + 1 befindet und der Divisor
n der Matrix C eine gerade Zahl ist. In den Flußdia
grammen, die in den Fig. 10 und 11 gezeigt sind, wird
die erste Berechnung, d. h. die Berechnung für die Zeit ei
ner ungeraden Zahl, durchgeführt, indem das erste Arbeits
gebiet (W1) verwendet wird, während die Berechnung für die
Zeit einer geraden Zahl durchgeführt wird, indem das zweite
Arbeitsgebiet (W2) verwendet wird.
Zuerst wird im Schritt S21 C1 (i = 1, . . ., n) zum Ar
beitsgebiet W1 des Prozessors mod(p + i - 2, #pe) + 1 mit $e
auf Null gesetzt übertragen.
Im Schritt S22 geben $n = n * 2 ** $e und $t = min ($n, #pe -
$n) an. min gibt eine Funktion für einen minimalen Wert an.
Im Schritt S23 wird C1 von $t Prozessoren aus zum Ar
beitsgebiet W1 übertragen. Dann werden unter der Bedingung,
daß s = mod(p + j - 2, #pe) + 1 ist, $t Stücke von Daten j = 1,
. . ., $t parallel vom Prozessor s aus zum Prozessor d über
tragen.
Im Schritt S24 werden Daten auf der Basis der Glei
chung $e = $e + 1 verarbeitet.
Im Schritt S25 wird bestimmt, ob $n < $t ist oder
nicht. Wenn ja, kehrt die Steuerung zum Schritt S22 zurück.
Wenn nein, geht die Steuerung zum Prozeß im Schritt S26
(Fig. 11) über.
Im Schritt S26 wird 1 ct zugeordnet.
Im Schritt S27 wird bestimmt, ob ct == 1 ist oder
nicht, d. h. ct gibt 1 an. Wenn ja, geht die Steuerung zum
Schritt S29 über. Wenn nein, wird der Prozeß im Schritt 28
durchgeführt.
Im Schritt S28 wird C1 (i = ct) als Daten zum Arbeitsge
biet W1 zum Prozessor p übertragen, und zwar nur nach Been
digung des Prozesses im Schritt S33.
Im Schritt S29 werden Daten vom Prozessor i zum Pro
zessor mod(i, #pe) + 1 (von W1 zu W2) übertragen.
Im Schritt S30 wird die Matrix für die Abschnitte par
allel entsprechend den Daten von C1 in jedem Prozessor
(unter Verwendung von W1) aktualisiert. Die Inhalte der
Prozesse in den Schritten S29 und S30 werden untenstehend
genau erläutert. Z. B. wird das Beispiel, das in der Fig.
18 gezeigt ist, wie folgt mit dem Divisor n der Matrix C
auf 3 gesetzt und die Anzahl der Prozessoren pe auf 5 ge
setzt verarbeitet.
In dem Prozeß des Schrittes S29 wird dem Prozessor PE1
der mod(1, 5) + 1 = 2 zugeordnet und die Daten in dem Arbeits
gebiet W11 im Prozessor PE1 werden zum Arbeitsgebiet W2 im
Prozessor PE2 übertragen. Dem Prozessor PE2 wird mod(2, 5)
+ 1 = 3 zugeordnet, und die Daten in dem Arbeitsgebiet W21
im Prozessor PE2 werden zum Arbeitsgebiet W32 im Prozessor
PE3 übertragen.
Ähnlich wird im Prozeß des Schrittes S30 ein Matrix
produkt aus C1 × R1 berechnet, indem C1 verwendet wird, die
im Arbeitsgebiet W11 im Prozessor PE1 gespeichert ist, und
ein Matrixprodukt aus C2 × R2 wird berechnet, indem C2 ver
wendet wird, die im Arbeitsgebiet W21 im Prozessor PE2 ge
speichert ist. Somit wird ein Matrixprodukt aus C3 × R3 im
PE3, ein Matrixprodukt aus C1 × R4 im PE4 und ein Matrix
produkt aus C2 × R5 im Prozessor PE5 berechnet.
Da Daten übertragen werden und ein Matrixprodukt in
der Matrix C simultan in jedem Prozessor parallel berechnet
wird, kann die Berechnungszeit und die Datenübertragungs
zeit erheblich verkürzt werden.
Im Schritt S31 wird bestimmt, ob ct < 1 ist oder nicht.
Wenn ja, geht die Steuerung zum Prozeß im Schritt S33 über.
Wenn nein, wird der Prozeß im Schritt S32 durchgeführt.
Im Schritt S32 wird auf die Beendigung der Verarbei
tung im Schritt S29 (Übertragung von W1 zu W2) gewartet.
Im Schritt S33 werden Daten auf der Basis der Glei
chung ct = ct + 1 verarbeitet, und C1 (i = ct) wird als Daten zum
Arbeitsgebiet W2 für nur den Prozessor p übertragen. In dem
Prozeß im Schritt S33 wird das nächste Element C1 (i = ct + 1)
der Matrix C als Daten zur Verwendung in einer nachfolgen
den Operation zum Arbeitsgebiet W2 des Prozessors p über
tragen.
Im Schritt S34 wird bestimmt, ob der Wert von ct
gleich dem Divisor n der Matrix C geworden ist oder nicht.
Wenn ja, geht die Steuerung zum Prozeß im Schritt S36 über.
Wenn nein, wird der Prozeß im Schritt 35 durchgeführt.
Im Schritt S35 werden Daten vom Prozessor i zum Pro
zessor mod(i, #pe) + 1 (vom W2 zum W1) übertragen.
Im Schritt S36 wird die Matrix entsprechend den Daten
im Arbeitsgebiet W2 in jedem Prozessor parallel aktuali
siert.
Im Schritt S37 werden die Daten auf der Basis von ct =
ct + 1 verarbeitet.
Im Schritt S38 wird bestimmt, ob ct < n ist oder
nicht. Wenn ja, ist der Prozeß beendet. Wenn nein, kehrt
die Steuerung zum Prozeß im Schritt S27 zurück.
Oben ist die Unterteilung bzw. die Teilung der Matrix
C in der Reihenrichtung beschrieben. Ähnlich kann die Ma
trix C in der Spaltenrichtung unterteilt werden. In Anbe
tracht eines Gleichgewichts zwischen Parallelität und Vek
torisierung ist die Unterteilung in der Reihenrichtung auf
grund der Blocklänge mit einer geeigneten Vektorlänge wün
schenswerter.
Verglichen mit der Übertragung, bei der die gesamte
Matrix zu jedem PE durch das binäre Baumverfahren übertra
gen wird, das die Übertragungszeit von ~LOG2 (#pe) benö
tigt, benötigt das oben beschriebene Verfahren ~1 - (LOG2
(#pe/n))/n. Es betrifft einen Prozeß mit sehr hoher Ge
schwindigkeit, wenn der Wert von #pe groß ist.
Die Vorwärts/Rückwärts-Zuordnung, die nach der LU-Zer
legung durchgeführt wird, erfordert auch eine Parallelität
für einen Hochgeschwindigkeitsprozeß. Die Parallelität kann
wie folgt realisiert werden.
Da die Blöcke zyklisch jedem PE bei der LU-Zerlegung,
wie in Fig. 6 gezeigt wird, zugeordnet werden, wird das
originale Zuordnungsverfahren wiederhergestellt. Dann wird
die Unterteilung in der Spaltenrichtung in eine Anordnung
von Daten, die in der Reihenrichtung unterteilt sind, geän
dert und die Vorwärts/Rückwärtszuordnung wird parallel auf
der Basis der Anordnung durchgeführt.
D. h., wenn die LU-Zerlegung durchgeführt wird, daß der
Spaltenvektor zu jedem PE, wie in der Matrix A in der Fig.
12 gezeigt ist, verteilt wird. Die Anordnung wird in eine
Matrix B, die in Fig. 12B gezeigt ist, derart geändert,
daß die Vorwärts/Rückwärts-Zuordnung parallel durchgeführt
werden kann, um einen Reihenvektor in jedem PE anzuordnen.
Dieser Prozeß wird parallel durchgeführt und die Daten wer
den in ihrer Gesamtheit umgeordnet.
Um die Daten parallel umzuordnen, wird die Matrix
entlang der Grenze der Verteilung zu jedem PE, wie in der
Fig. 13 gezeigt ist, unterteilt, um die nachfolgende Glei
chung zu erfüllen.
A = (aij) [i = 1, . . ., #pe, j = 1, . . ., #pe]
wobei #pe die Anzahl der Prozessoren angibt. Fig. 13
zeigt den Fall, wo die Anzahl der Prozessoren #pe gleich 5
ist.
Daten werden für die Umordnung zwischen der Matrix A,
in der der Spaltenvektor jedem PE zugeordnet wird, und der
Matrix B übertragen, die die gleiche Größe hat und in der
der Reihenvektor jedem PE zugeordnet wird. Die Daten werden
für die Blockelemente übertragen, die in der Diagonalrich
tung, wie als schraffierte Abschnitte in Fig. 13 gezeigt
wird, angeordnet sind.
Wie oben beschrieben wurde, ermöglicht der speicher
verteilte Parallelprozessor gemäß der vorliegenden Ausfüh
rungsform, die in Fig. 3 gezeigt ist, daß eine Leseopera
tion und eine Schreiboperation gleichzeitig für jeden Pro
zessor durchgeführt werden kann.
Fig. 14 ist ein Flußdiagramm, daß die Umwandlung von
der Matrix A zur Matrix B, wie in Fig. 12 gezeigt ist,
zeigt.
Im Schritt S41, der in Fig. 14 gezeigt ist, ist jeder
Prozessor (1~#pe) durch k = Prozessornummer, j = k und #ct
= 1 wiedergegeben.
Im Schritt S42 werden die Daten von Bjk = Ajk parallel
in jedem Prozessor umgeordnet.
Im Schritt S43 ist k = mod(k, #pe) + 1, #ct = #ct + 1.
Im Schritt S44 wird bestimmt, ob #ct < #pe ist oder
nicht. Wenn ja, ist der Prozeß beendet. Wenn nein, kehrt
die Steuerung zum Prozeß im Schritt S42 zurück.
Die Matrix B ist in der Reihenrichtung, wie in Fig.
15 gezeigt ist, unterteilt. Unter der Annahme, daß die Ma
trix B LU-zerlegt wird, wird LUx = d aufgelöst und dann wer
den Ly = d und Ux = y sequentiell aufgelöst. Um die Prozesse
parallel durchführen zu können, enthält jeder PE d, x und
y. Ux = y kann auch ähnlich aufgelöst werden. Deshalb wird.
Ly = d untenstehend erläutert.
Zuerst wird die Gleichung L11 × y1 = d1 im PE1 aufge
löst.
Y1 im PE1 wird zu y2 in der Variablen y in jedem Pro
zessor in der Form eines Exponenten zu 2 übertragen. In
(#pe - 1) PE5 werden Operationen auf der Basis von di = di -
Li1 × y1 (wobei i = 2, . . ., #PE) verarbeitet.
Ähnlich wird die Gleichung L22 × y1 = d1 im PE2 aufge
löst.
y2 im PE2 wird zu y2 in der Variablen y in jedem Pro
zessor in Form eines Exponenten zu 2 übertragen. In (#pe - 2)
PE5 werden Operationen auf der Basis von di = di - Li2 × y2
(wobei i = 3, . . ., #PE) verarbeitet.
Ähnlich werden Gleichungen Lkk × yk = d1 im PEk aufge
löst.
yk im PEk wird zu yk in der Variablen y in jedem Pro
zessor in der Form eines Exponenten zu 2 übertragen. In den
(#pe - k)PE5 werden Operationen auf der Basis von di = di -
Lk2 × yk (wobei i = k, . . ., #PE) verarbeitet.
Schließlich wird, nachdem L55 × y5 = d5 aufgelöst
wurde, y5 zu y5 in der Variablen y in jedem Prozessor in
der Form eines Exponenten zu 2 übertragen.
Im Ergebnis wird die Lösung y für jeden Prozessor er
halten.
Nachfolgend wird ein Anwendungsbeispiel der vorliegen
den Erfindung im Detail erläutert, indem auf ein Beispiel
zum Auflösen der Matrix von 200 × 200 durch 5 Prozessoren
Bezug genommen wird. Die Blocklänge von 10 wird angenommen.
D. h., daß insgesamt 20 Blöcke eine Matrix bilden.
Wenn die Matrix jedem der 5 PE5 zugeordnet wird, ist
die Anzahl der Blöcke, die jedem PE zugeordnet werden,
gleich 4 (20 Blöcke : 5). Diesen Prozessoren PE1 bis PE5
werden sequentiell der Block 1, der Block 2, der Block 3,
. . ., der Block 20 in vier Block-Einheiten zugeordnet.
Die Daten, die wie in der Fig. 16A angeordnet sind,
werden, wie in der Fig. 16B gezeigt ist, umgeordnet, um
gleichmäßig die Abschnitte, die parallel zu verarbeiten
sind, zuzuweisen. In der Fig. 16B werden die Blöcke zy
klisch umgeordnet. Bei dieser Umordnung werden z. B. die
Blöcke 2, 6, 10, 14 und 18 simultan übertragen, um eine pa
rallele Übertragung derart zu realisieren, daß eine Lese
operation und eine Schreiboperation in jedem PE simultan
durchgeführt werden.
Im Ergebnis der Umordnung ist die Matrix im PE1 die
Sequenz aus den Blöcken 1, 6, 11 und 16, wie in der Fig.
16 gezeigt ist. Ähnlich ist die Matrix im PE2 die Sequenz
aus den Blöcken 2, 7, 12 und 17. Die Matrix im PE3 ist die
Sequenz aus den Blöcken 3, 8, 13 und 18. Die Matrix im PE4
ist die Sequenz aus den Blöcken 4, 9, 14 und 19. Die Matrix
im PE5 ist die Sequenz aus den Blöcken 5, 10, 15 und 20.
Zuerst wird der Block 1 LU-zerlegt. Der Block 1 (b1 in
Fig. 17) wird nur im PE1 berechnet. Der schraffierte Ab
schnitt, der in Fig. 17 gezeigt ist, zeigt die vollstän
dige Berechnung.
Fig. 17 zeigt die Beziehung zwischen den Blöcken b1
und einem Arbeitsgebiet in jedem PE, zu dem jeder Block
übertragen wird. Jeder PE hat erste und zweite Arbeitsge
biete. Die ersten und zweiten Arbeitsgebiete des PE1 sind
W11 bzw. W12. Diejenigen des PE2 sind W21 bzw. W22. Dieje
nigen des PE3 sind W31 bzw. W32. Diejenigen des PE4 sind
W41 bzw. W42. Diejenigen des PE5 sind W51 bzw. W52.
Fig. 17 zeigt den schraffierten Block b1, der gleich
mäßig in C1 bis C3 unterteilt ist. Wenn die Berechnung be
züglich dieser Abschnitte vervollständigt ist, wird C1 zum
W11 im PE1 übertragen, wird C2 zum W21 im PE2 und wird C3
zum W31 im PE3 übertragen. Auf der Basis der Übertragung
werden die Daten im W12 (C2) zu W41 im PE4 übertragen und
die Daten W21 (C2) werden zum W51 im PE5 parallel übertra
gen.
Zuerst wird die Berechnung eines Matrixprodukts ausge
führt, indem C1, die im ersten Arbeitsgebiet (W11, W21,
W31, W41 und W51) in jedem PE gespeichert ist, verwendet
wird. Die Berechnungen werden zuerst bezüglich der schraf
fierten Abschnitte (die in der Fig. 18 gezeigt sind) aus
geführt. Das Matrixprodukt aus C1 × R1 wird im PE1 berech
net. Das Matrixprodukt aus C2 × R2 wird im PE2 berechnet.
Das Matrixprodukt aus C3 × R3 wird im PE3 berechnet. Das
Matrixprodukt aus C1 × R4 wird im PE4 berechnet. Das Ma
trixprodukt aus C2 × R5 wird im PE5 berechnet.
Gleichzeitig werden Daten parallel vom W11 zum W22,
vom W21 zum W32, vom W31 zum W42 und vom W41 zum W52 über
tragen. Gleichzeitig wird C3 des Blocks b1, der im PE2 ge
halten ist, zum W12 übertragen.
Als nächstes wird die Berechnung des Matrixprodukts
ausgeführt, indem C1, die in dem zweiten Arbeitsgebiet
(W12, W22, W32, W42 und W52) in jedem PE gespeichert ist,
verwendet wird. Die Berechnungen werden zuerst bezüglich
der schraffierten Abschnitte, die in Fig. 19 gezeigt sind,
durchgeführt. Das Matrixprodukt aus C3 × R1 wird im PE1 be
rechnet. Das Matrixprodukt aus C1 × R2 wird im PE2 berechnet.
Das Matrixprodukt aus C2 × R3 wird im PE3 berechnet.
Das Matrixprodukt aus C3 × R4 wird im PE4 berechnet. Das
Matrixprodukt aus C1 × R5 wird im PE5 berechnet.
Gleichzeitig werden Daten parallel vom W12 aus zum
W21, vom W22 aus zum W31, vom W32 aus zum W41 und vom W42
aus zum W51 übertragen. Gleichzeitig wird C2 vom Block b1,
der im PE1 gehalten ist, zum W11 übertragen.
Bei der dritten Berechnung wird die Berechnung eines
Matrixprodukts ausgeführt, indem C1, das in dem ersten Ar
beitsgebiet (W11, W21, W31, W41 und W51) in jedem PE ge
speichert ist, verwendet wird. Berechnungen werden zuerst
bezüglich der schraffierten Abschnitte, die in Fig. 20 ge
zeigt sind, ausgeführt. Das Matrixprodukt aus C2 × R1 wird
im PE1 berechnet. Das Matrixprodukt aus C3 × R2 wird im PE2
berechnet. Das Matrixprodukt aus C1 × R3 wird im PE3
berechnet. Das Matrixprodukt aus C2 × R4 wird im PE4 be
rechnet. Das Matrixprodukt aus C3 × R5 wird im PE5 berech
net.
Die Berechnung des Matrixprodukts entsprechend der LU-
Zerlegung von Block 2 (b2, gezeigt in Fig. 21), wie in der
Fig. 16B gezeigt ist, kann ausgeführt werden, indem der
schraffierte Abschnitt des PE2, der in der Fig. 21A ge
zeigt wird, LU-zerlegt wird und indem der Abschnitt, der
bei der Berechnung erforderlich ist, nach gleichmäßigem Un
terteilen von Block b2 in drei Abschnitte C1 bis C3, wie
beim Block b1, übertragen wird.
Fig. 21B zeigt die Beziehung zwischen Block b2 und
einem Arbeitsgebiet in jedem PE, zu dem jeder Block über
tragen wird. C1 wird zum W21 im PE2 übertragen. C2 wird zum
W31 im PE3 übertragen. C3 wird zum W41 im PE4 übertragen.
Auf der Basis der Übertragung werden die Daten im W21 (C1)
zum W51 im PE5 übertragen und die Daten im W31 (C2) werden
zum W11 im PE1 parallel übertragen.
Dann wird die Berechnung des Matrixprodukts ausge
führt, indem C1, die in dem ersten Arbeitsgebiet (W11, W21,
W31, W41 und W51) in jedem PE gespeichert ist, verwendet
wird. Die Berechnungen werden bezüglich der schraffierten
Abschnitte, die in Fig. 22 gezeigt sind, ausgeführt. Das
Matrixprodukt aus C2 × R1 wird im PE1 berechnet. Das Ma
trixprodukt aus C1 × R2 wird im PE2 berechnet. Das Matrix
produkt aus C2 × R3 wird im PE3 berechnet. Das Matrixpro
dukt aus C3 × R4 wird im PE4 berechnet. Das Matrixprodukt
aus C1 × R5 wird im PE5 berechnet.
Gleichzeitig werden Daten parallel vom W21 aus zum W32
übertragen, vom W31 zum W42, vom W41 aus zum W52 und vom
W51 zum W12. Simultan wird C3 des Blocks b2, der im PE2 ge
halten ist, zum W22 übertragen.
Die Daten werden berechnet und übertragen wie in dem
Fall des Blocks b1, wie oben beschrieben wurde, indem auf
die Fig. 19 und 20 Bezug genommen wird. Wenn die Berech
nung bezüglich des Blocks b2 abgeschlossen ist, wird ein
Matrixprodukt entsprechend der LU-Zerlegung von Block 3 (b3
in Fig. 23) berechnet, wie in der Fig. 16B gezeigt ist.
Nach der LU-Zerlegung des Blocks b3, wie in der Fig. 23A
gezeigt ist, wird der Block b3 gleichmäßig in drei Ab
schnitte C1 bis C3, wie in Fig. 23B gezeigt ist, unter
teilt und zu dem Arbeitsgebiet in jedem PE übertragen. Ähn
lich wird der Block b3 berechnet und in der gleichen Art
und Weise, wie mit Bezug auf die Fig. 18, 20 beschrieben
wurde, berechnet und übertragen. Somit werden die hinter
einanderfolgenden Blöcke 4, 5, . . ., 20 verarbeitet und die
LU-Zerlegung wird abgeschlossen.
Nachdem die LU-Zerlegung bezüglich aller Blöcke abge
schlossen worden ist, werden die zyklisch umgeordneten
Blöcke in ihrer ursprünglichen Anordnung wiederhergestellt.
Fig. 24 zeigt ein Beispiel des Wiederherstellens der
zyklisch umgeordneten Matrix, wie in der Fig. 16 gezeigt
ist, in ihre ursprüngliche Anordnung. Z. B. können die
Blöcke 2, 6, 10, 14 und 18 simultan, wie durch die Bei
spiele aus den Fig. 24A bis 24B gezeigt wird, übertragen
werden.
Dann werden die Daten, die in der Spaltenrichtung an
geordnet sind, in der Reihenrichtung umgeordnet und paral
lel in einer Vorwärts/Rückwärts-Substitution verarbeitet.
Fig. 25 zeigt ein Beispiel der Umordnung durch paral
lele Übertragung auf der Basis von Elementblöcken, die dia
gonal in einer Matrix angeordnet sind. Die Blöcke werden
durch parallele Übertragung umgeordnet, die derart durchge
führt wird, daß A51 im PE1 zu dem ersten Gebiet im PE5
übertragen wird, daß A12 im PE2 zu dem zweiten Gebiet im
PE1 übertragen wird, usw.. Wenn die Umordnung abgeschlossen
ist, nachdem die Blöcke umgeordnet worden sind, wird die
Vorwärts/Rückwärts-Substitution durchgeführt.
Fig. 26 zeigt die Beziehung zwischen der Matrix, die
in Reihenrichtung unterteilt ist, und jedem PE.
b1, b2, b3, b4 und b5 werden dazu verwendet, einen
Auflösungsvektor zu erhalten, und werden in jedem PE ein
zelnen abgespeichert. Die Berechnungsprozedur stellt sich
wie folgt dar.
- 1. Auflösen von L11x1 = b1 im PE1.
- 2. x1 ist in dem Gebiet von b1 enthalten und wird zu jedem PE übertragen. b1 = x1
- 3. Berechnen von bi = bi - Li1 × x1 im PEi, wobei i < 1 ist.
- 4. Dann Auflösen von L22x2 = b2 im PE2, um x2 zu er halten.
- 5. Übertragen von x2 zu jedem PE. b2 = x2
- 6. Berechnen von bi = bi - Li2 × x2 im PEi, wobei i < 2 ist.
Das Wiederholen der gleichen Prozesse, vervollständigt
die Vorwärts-Substitution. Eine Rückwärts-Substitution wird
nach der Vorwärts-Zuordnung durchgeführt.
Wie oben beschrieben wurde, kann der nachfolgende Ef
fekt durch die vorliegende Erfindung erhalten werden.
- 1. Die dynamische Umordnung von Daten erlaubt, daß Ab
schnitte, die parallel verarbeitet werden, gleichmäßig je
dem der Prozessoren zugeordnet werden, wodurch die Effektivität
in einer Parallelverarbeitung verbessert wird. Die
tatsächliche Leistungsfähigkeit bzw. Geschwindigkeit für
die Berechnung einer Matrix, die gleichmäßig in der Spal
tenrichtung unterteilt ist, für den Abschnitt eines LU-zer
legten Matrixprodukts, das auf der Basis des Gaußschen Eli
minationsverfahrens erhalten wird, das in Blockeinheiten
unter Verwendung äußerer Produkte durchgeführt wird, be
trägt ungefähr 65% der Hardware-Geschwindigkeit. Die Ge
schwindigkeit wird aufgrund einer niedrigen Parallelität
wegen der reduzierten Anzahl von zugeordneten Prozessoren
abgesenkt, wenn der Berechnungsprozeß mit einem reduzierten
Aktualisierungsabschnitt für das Matrixprodukt voran
schreitet.
Andererseits erreicht das zyklische Unterteilen von Daten, d. h. das Zuordnen einer Nummer i zu jedem der Blöcke von Spaltenvektoren und das Zuordnen des i-ten Blocks zu dem (mod(i - 1, #pe) + 1)-ten Prozessor (wobei #pe die Anzahl der Prozessoren wiedergibt) die tatsächliche Geschwindig keit von 90 bis 95% der Hardware-Geschwindigkeit. - 2. Beim Berechnen eines Matrixprodukts werden Daten,
die zum Berechnen des Matrixprodukts erforderlich sind, un
terteilt, übertragen und berechnet. Gemäß der vorliegenden
Erfindung können die meisten Übertragungsprozesse gleich
zeitig mit den Berechnungsprozessen durchgeführt werden,
und die anfängliche Übertragungsdauer, während der Übertra
gungsprozesse nicht gleichzeitig mit Berechnungsprozessen
durchgeführt werden können, bezieht sich auf die scheinbare
bzw. offenbare Übertragungszeit. Die Zeit, die für die
Übertragungsvorgänge erforderlich ist, kann erheblich durch
einen parallelen Prozeß verkürzt werden, wenn mit derjeni
gen verglichen wird, die bei dem binären Baumübertragungs
verfahren erforderlich ist.
Im Ergebnis ist die Zeit, die für die Übertragung von Daten, die beim Berechnen eines einfachen Matrixprodukts notwendig sind, zu jedem Prozessor in einem binären Baummu ster erforderlich ist, proportional zu LOG2(#pe). Gemäß der vorliegenden Erfindung ist die Übertragungszeit gleich 1 + (LOG2(#pe/#div)/#div), wobei der Divisor der übertragenen Daten gleich #div ist. Der zweite Ausdruck kann gleich oder kleiner als 0,5 sein. Demzufolge gibt die größere Anzahl von zumindest zwei Prozessoren die höhere Effektivität an. - 3. Das Auflösen der Vorwärts/Rückwärts-Zuordnung, wie sie ist, kann die Parallelität der Vorwärts/Rückwärts- Substitution nicht verwenden, da die Spaltenvektoren in einem einzigen Prozessor sind. Deshalb werden die zyklisch angeordneten Daten zuerst in ihre ursprüngliche Anordnung in gleichmäßigen Unterteilungen in der Spaltenvektorrich tung wiederhergestellt und dann in die Anordnung in gleichmäßigen Unterteilungen in der Reihenvektorrichtung geändert. Somit werden die vorwärts/rückwärts-substituier ten Daten parallel verarbeitet, wodurch die Verarbeitungs zeit erheblich gekürzt wird.
Claims (14)
1. Berechnungsverfahren für simultane, lineare Glei
chungen, das einen speicherverteilten Parallelprozessor
verwendet, der eine Vielzahl von Prozessoren enthält, die
dazu in der Lage sind, Daten gegenseitig zu übertragen, und
der simultane, lineare Gleichungen in einem LU-Zerlegungs
verfahren durch Verteilen einer Koeffizientenmatrix zu je
dem der Prozessoren auflöst, das aufweist:
einen Schritt a1 für ein dynamisches Umordnen der zu jedem der Prozessoren verteilten und LU-zerlegten Koeffi zientenmatrix, durch parallele Übertragung derart, daß die Spaltenvektorblöcke zyklisch zu jedem der Prozessoren umgeordnet werden;
einen Schritt a2 für die LU-Zerlegung der Blöcke, die in jedem der Prozessoren angeordnet sind; und
einen Schritt a3 für die Durchführung eines Vor wärts/Rückwärts-Zuordnungsprozesses bezüglich jedes Ergeb nisses der LU-Zerlegung.
einen Schritt a1 für ein dynamisches Umordnen der zu jedem der Prozessoren verteilten und LU-zerlegten Koeffi zientenmatrix, durch parallele Übertragung derart, daß die Spaltenvektorblöcke zyklisch zu jedem der Prozessoren umgeordnet werden;
einen Schritt a2 für die LU-Zerlegung der Blöcke, die in jedem der Prozessoren angeordnet sind; und
einen Schritt a3 für die Durchführung eines Vor wärts/Rückwärts-Zuordnungsprozesses bezüglich jedes Ergeb nisses der LU-Zerlegung.
2. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 1, worin
der Schritt a1 die Blöcke parallel derart überträgt, daß
ein Matrixprodukt parallel in jedem der Prozessoren berech
net werden kann, wenn die Koeffizientenmatrix LU-zerlegt
wird.
3. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 2, worin
der Schritt a1 die Blöcke umordnet, indem ein k-ter Block k
in den Blöcken zu einem [mod(k - 1, pe) + 1]-ten Prozessor
übertragen wird, wobei pe die Anzahl der Prozessoren an
gibt.
4. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 1, worin
der Schritt a1 einen einzelnen Block einer Vielzahl von
Spaltenvektoren in der Koeffizientenmatrix bestimmt, die in
einer Spaltenrichtung unterteilt wird und zu jedem der Pro
zessoren verteilt wird, und der dynamisch die Blöcke paral
lel zu jedem der Prozessoren überträgt.
5. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 1, worin
der Schritt a2 die Daten, die in einer Matrixproduktberech
nung verarbeitet werden sollen, unterteilt und die Daten zu
jedem der Prozessoren überträgt und eine LU-Zerlegung durch
Wiederholen einer Matrixproduktberechung in jedem Prozessor
und eine parallele Übertragung der unterteilten Daten zur
Verwendung in einer nachfolgenden Matrixproduktberechnung
zu jedem Prozessor durchführt.
6. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 5, das weiterhin aufweist:
einen Schritt b1 zum Wiederherstellen einer Matrix, die als ein Ergebnis der LU-Zerlegung erhalten wurde, in einen Zustand vor einer Umordnung in Blockeinheiten; und
einen Schritt b2 zum Umordnen der Daten derart, daß die Daten der Matrix, die in der Spaltenrichtung unterteilt wurden und zu jedem Prozessor verteilt wurden, in einer Reihenrichtung unterteilt und verteilt werden, worin
der Schritt a3 den Vorwärts/Rückwärts-Zuordnungsprozeß durchführt, indem die Matrix verwendet wird, die in den Schritten b1 und b2 LU-zerlegt, in der Reihenrichtung un terteilt und zu jedem Prozessor verteilt wurde.
einen Schritt b1 zum Wiederherstellen einer Matrix, die als ein Ergebnis der LU-Zerlegung erhalten wurde, in einen Zustand vor einer Umordnung in Blockeinheiten; und
einen Schritt b2 zum Umordnen der Daten derart, daß die Daten der Matrix, die in der Spaltenrichtung unterteilt wurden und zu jedem Prozessor verteilt wurden, in einer Reihenrichtung unterteilt und verteilt werden, worin
der Schritt a3 den Vorwärts/Rückwärts-Zuordnungsprozeß durchführt, indem die Matrix verwendet wird, die in den Schritten b1 und b2 LU-zerlegt, in der Reihenrichtung un terteilt und zu jedem Prozessor verteilt wurde.
7. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 1, worin
der Schritt a2 zu jedem der Prozessoren jedes Element in einer Matrix Ci parallel überträgt, die in einer LU-Zer legungsoperation verwendet wird, wenn eine Matrixproduktbe rechnung in einer LU-Zerlegung durchgeführt wird, und die LU-Zerlegung durchführt, indem ein Prozeß der simultanen Durchführung der Matrixproduktberechnung in jedem Prozessor wiederholt wird und indem die Matrix Ci parallel übertragen wird, die in einer nachfolgenden Matrixproduktberechnung verwendet werden soll.
der Schritt a2 zu jedem der Prozessoren jedes Element in einer Matrix Ci parallel überträgt, die in einer LU-Zer legungsoperation verwendet wird, wenn eine Matrixproduktbe rechnung in einer LU-Zerlegung durchgeführt wird, und die LU-Zerlegung durchführt, indem ein Prozeß der simultanen Durchführung der Matrixproduktberechnung in jedem Prozessor wiederholt wird und indem die Matrix Ci parallel übertragen wird, die in einer nachfolgenden Matrixproduktberechnung verwendet werden soll.
8. Berechnungsverfahren für simultane, lineare Glei
chungen gemäß Anspruch 7, worin
der Schritt a2 die Daten, die in der Matrixproduktbe
rechnung verarbeitet werden sollen, in der Reihenrichtung
unterteilt, eine unterteilte Matrix Ci zu einem von einem
ersten Speichergebiet und einem zweiten Speichergebiet
jedes Prozessors überträgt und die LU-Analyse durch
wiederholen der Matrixproduktberechnung in jedem Prozessor
bezüglich einer übertragenen Matrix Ci und eine parallele
Übertragung der Matrix Ci, die in einer nachfolgenden
Matrixproduktberechnung verwendet wird, zu dem anderen
Gebiet von dem ersten und dem zweiten Speichergebiet jedes
der Prozessoren durchführt.
9. Berechnungsverfahren für simultane, lineare Glei
chungen nach Anspruch 1, bei dem die Koeffizientenmatrix
zu jedem der Prozessoren übertragen wird und das aufweist:
einen Schritt a4 zum Unterteilen und Übertragen von Daten, die in einer Matrixproduktberechnung verarbeitet werden sollen, zu jedem Prozessor, wenn die Koeffizienten matrix, die zu jedem Prozessor verteilt wurde, in LU-Block einheiten zerlegt wird, und zum simultanen Durchführen der Matrixproduktberechnung in jedem der Prozessoren bezüglich der übertragenen Daten und zum parallelen Übertragen der unterteilten Daten, die in einer nachfolgenden Matrix produktberechnung verwendet werden sollen; und
einen Schritt a5 zum Durchführen eines Vor wärts/Rückwärts-Zuordnungsprozesses bezüglich jedes Ergeb nisses der LU-Zerlegung.
einen Schritt a4 zum Unterteilen und Übertragen von Daten, die in einer Matrixproduktberechnung verarbeitet werden sollen, zu jedem Prozessor, wenn die Koeffizienten matrix, die zu jedem Prozessor verteilt wurde, in LU-Block einheiten zerlegt wird, und zum simultanen Durchführen der Matrixproduktberechnung in jedem der Prozessoren bezüglich der übertragenen Daten und zum parallelen Übertragen der unterteilten Daten, die in einer nachfolgenden Matrix produktberechnung verwendet werden sollen; und
einen Schritt a5 zum Durchführen eines Vor wärts/Rückwärts-Zuordnungsprozesses bezüglich jedes Ergeb nisses der LU-Zerlegung.
10. Berechnungsverfahren für simultane, lineare Glei
chungen nach Anspruch 1, welches ferner aufweist:
einen Schritt A1 für dynamisches Umordnen von Daten durch paralleles Übertragen zu jedem Prozessor derart, daß die Daten zyklisch in einer Vielzahl von Spaltenvektor blöcken in der Koeffizientenmatrix angeordnet werden, so daß eine Matrixproduktberechnung in jedem Prozessor während einer LU-Zerlegung parallel durchgeführt werden kann; und
einen Schritt A2 zum Unterteilen und Übertragen der Daten zu jedem Prozessor, die in der Matrixproduktberechnung verarbeitet werden sollen, wenn die Koeffizientenmatrix, die in Blockeinheiten umgeordnet wurde, in LU zerlegt wird, und zum simultanen Durchführen der Matrixproduktberechnung in jedem Prozessor bezüglich übertragener Daten und zum parallelen übertragen der un terteilten Daten zu jedem Prozessor, die in einer nachfolgenden Matrixproduktberechnung verarbeitet werden sollen.
einen Schritt A1 für dynamisches Umordnen von Daten durch paralleles Übertragen zu jedem Prozessor derart, daß die Daten zyklisch in einer Vielzahl von Spaltenvektor blöcken in der Koeffizientenmatrix angeordnet werden, so daß eine Matrixproduktberechnung in jedem Prozessor während einer LU-Zerlegung parallel durchgeführt werden kann; und
einen Schritt A2 zum Unterteilen und Übertragen der Daten zu jedem Prozessor, die in der Matrixproduktberechnung verarbeitet werden sollen, wenn die Koeffizientenmatrix, die in Blockeinheiten umgeordnet wurde, in LU zerlegt wird, und zum simultanen Durchführen der Matrixproduktberechnung in jedem Prozessor bezüglich übertragener Daten und zum parallelen übertragen der un terteilten Daten zu jedem Prozessor, die in einer nachfolgenden Matrixproduktberechnung verarbeitet werden sollen.
11. Speicherverteilter Parallelprozessor zur
Durchführung des Verfahrens nach Anspruch 1, der eine
Vielzahl von Prozessoren enthält, die dazu in der Lage
sind, gegenseitig Daten zu übertragen, und der simultane,
lineare Gleichungen in einem LU-Zerlegungsverfahren durch
Verteilen einer Koeffizientenmatrix zu jedem der Prozesso
ren auflöst, der aufweist:
eine Datenumordnungseinrichtung zum dynamischen Umord nen der Koeffizientenmatrix, die LU-zerlegt werden soll, in einer parallelen Übertragung derart, daß die Matrix zy klisch in Spaltenvektorblöcken angeordnet werden kann; und
eine LU-Zerlegungseinrichtung zum Unterteilen und Übertra gen von Daten, die in einem Matrixproduktberechnungsprozeß verarbeitet werden sollen, zu jedem der Prozessoren, wenn eine Matrixproduktberechnung in einer LU-Zerlegung durchge führt werden soll, und zum Durchführen der LU-Zerlegung durch Wiederholen eines Prozesses der simultanen Berechnung eines Matrixprodukts in jedem Prozessor bezüglich übertra gener Daten und zum parallelen Übertragen von unterteilten Daten zu jedem Prozeß, die in einer nachfolgenden Matrix produktberechnung verwendet werden sollen.
eine Datenumordnungseinrichtung zum dynamischen Umord nen der Koeffizientenmatrix, die LU-zerlegt werden soll, in einer parallelen Übertragung derart, daß die Matrix zy klisch in Spaltenvektorblöcken angeordnet werden kann; und
eine LU-Zerlegungseinrichtung zum Unterteilen und Übertra gen von Daten, die in einem Matrixproduktberechnungsprozeß verarbeitet werden sollen, zu jedem der Prozessoren, wenn eine Matrixproduktberechnung in einer LU-Zerlegung durchge führt werden soll, und zum Durchführen der LU-Zerlegung durch Wiederholen eines Prozesses der simultanen Berechnung eines Matrixprodukts in jedem Prozessor bezüglich übertra gener Daten und zum parallelen Übertragen von unterteilten Daten zu jedem Prozeß, die in einer nachfolgenden Matrix produktberechnung verwendet werden sollen.
12. Speicherverteilter Parallelprozessor gemäß An
spruch 11, worin
die Datenumordnungseinrichtung die Blöcke umordnet, indem
der k-te Block k in einer Matrix, die zu jedem Prozessor
verteilt worden ist, zu einem [mod(k - 1, pe) + 1]-ten Pro
zessor übertragen wird, wobei pe die Anzahl von Prozessoren
angibt.
13. Speicherverteilter Parallelprozessor gemäß An
spruch 12, worin
die LU-Zerlegungseinrichtung die Daten, die in dem Matrix
produktberechnungsprozeß verarbeitet werden sollen, zer
legt, eine unterteilte Matrix Ci zu jedem Prozessor über
trägt, den LU-Zerlegungsprozeß durchführt, indem ein Prozeß
der simultanen Berechnung des Matrixprodukts in jedem Pro
zessor bezüglich der übertragenen Matrix Ci durchgeführt
wird und indem die Matrix Ci, die in der nachfolgenden Ma
trixproduktberechnung verarbeitet werden soll, parallel zu
jedem Prozessor übertragen wird.
14. Speicherverteilter Parallelprozessor gemäß An
spruch 11, der weiterhin aufweist:
eine Vorwärts/Rückwärts-Zuordnungseinrichtung zum Wie
derherstellen einer LU-zerlegten Matrix in eine ursprüng
liche Blockanordnung, zum Umordnen von Daten parallel in
jedem Prozessor aus einer Matrix, in der die Blöcke gleich
mäßig in der Spaltenrichtung unterteilt sind und zu jedem
Prozessor verteilt sind, in eine weitere Matrix, in der die
Blöcke in einer Reihenvektorrichtung unterteilt sind und zu
jedem Prozessor verteilt sind, und zum Durchführen eines
Vorwärts/Rückwärts-Substitutionsprozesses parallel in jedem
Prozessor auf der Basis der Matrix, die in der Reihen
vektorrichtung umgeordnet wurde.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06224194A JP3639323B2 (ja) | 1994-03-31 | 1994-03-31 | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19510879A1 DE19510879A1 (de) | 1995-10-05 |
DE19510879C2 true DE19510879C2 (de) | 2001-09-13 |
Family
ID=13194458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19510879A Expired - Fee Related DE19510879C2 (de) | 1994-03-31 | 1995-03-24 | Brechnungsverfahren für simultane, lineare Gleichungen und speicherverteilter Parallelprozessor zur Durchführung des Verfahrens |
Country Status (3)
Country | Link |
---|---|
US (1) | US5887186A (de) |
JP (1) | JP3639323B2 (de) |
DE (1) | DE19510879C2 (de) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395302B2 (en) | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6212618B1 (en) | 1998-03-31 | 2001-04-03 | Intel Corporation | Apparatus and method for performing multi-dimensional computations based on intra-add operation |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
JP3488629B2 (ja) * | 1998-04-07 | 2004-01-19 | 富士通株式会社 | 放射電磁界耐性算出装置及び方法並びにプログラム記録媒体 |
JP3827941B2 (ja) * | 2000-11-16 | 2006-09-27 | 株式会社日立製作所 | 連立一次方程式求解方法及びその実施装置並びにその処理プログラムを記録した記録媒体 |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
GB0208329D0 (en) * | 2002-04-11 | 2002-05-22 | Univ York | Data processing particularly in communication systems |
JP3983193B2 (ja) * | 2003-03-31 | 2007-09-26 | 富士通株式会社 | 行列処理方法及び装置 |
JP4052181B2 (ja) | 2003-05-23 | 2008-02-27 | 株式会社日立製作所 | 通信隠蔽型の並列高速フーリエ変換方法 |
US7415703B2 (en) * | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
US7318218B2 (en) * | 2003-09-25 | 2008-01-08 | International Business Machines Corporation | System and method for processor thread for software debugging |
US7146529B2 (en) | 2003-09-25 | 2006-12-05 | International Business Machines Corporation | System and method for processor thread acting as a system service processor |
US7475257B2 (en) * | 2003-09-25 | 2009-01-06 | International Business Machines Corporation | System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data |
US20050071828A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for compiling source code for multi-processor environments |
US7523157B2 (en) * | 2003-09-25 | 2009-04-21 | International Business Machines Corporation | Managing a plurality of processors as devices |
US7549145B2 (en) * | 2003-09-25 | 2009-06-16 | International Business Machines Corporation | Processor dedicated code handling in a multi-processor environment |
US20050071578A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for manipulating data with a plurality of processors |
US7478390B2 (en) * | 2003-09-25 | 2009-01-13 | International Business Machines Corporation | Task queue management of virtual devices using a plurality of processors |
US7496917B2 (en) * | 2003-09-25 | 2009-02-24 | International Business Machines Corporation | Virtual devices using a pluarlity of processors |
US7444632B2 (en) * | 2003-09-25 | 2008-10-28 | International Business Machines Corporation | Balancing computational load across a plurality of processors |
US7389508B2 (en) * | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US7236998B2 (en) * | 2003-09-25 | 2007-06-26 | International Business Machines Corporation | System and method for solving a large system of dense linear equations |
US8065503B2 (en) | 2006-12-15 | 2011-11-22 | International Business Machines Corporation | Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process |
JP4823928B2 (ja) * | 2007-01-22 | 2011-11-24 | 三菱電機株式会社 | 連立一次方程式の並列求解装置 |
JP5240196B2 (ja) * | 2007-07-12 | 2013-07-17 | 富士通株式会社 | 計算装置、計算方法および計算プログラム |
JP5388323B2 (ja) * | 2007-11-09 | 2014-01-15 | 独立行政法人 宇宙航空研究開発機構 | 計算機 |
US8204925B2 (en) * | 2008-05-22 | 2012-06-19 | National Instruments Corporation | Controlling or analyzing a process by solving a system of linear equations in real-time |
US8417755B1 (en) | 2008-05-28 | 2013-04-09 | Michael F. Zimmer | Systems and methods for reducing memory traffic and power consumption in a processing environment by solving a system of linear equations |
WO2012100316A1 (en) * | 2011-01-25 | 2012-08-02 | Cognivue Corporation | Apparatus and method of vector unit sharing |
JP6607078B2 (ja) * | 2016-02-23 | 2019-11-20 | 富士通株式会社 | 並列計算機、並列lu分解方法及び並列lu分解プログラム |
CN105808309B (zh) * | 2016-03-08 | 2019-04-05 | 中国科学院软件研究所 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
US11100426B1 (en) * | 2017-11-07 | 2021-08-24 | Amazon Technologies, Inc. | Distributed matrix decomposition using gossip |
JPWO2021009901A1 (ja) * | 2019-07-18 | 2021-09-13 | 技術研究組合光電子融合基盤技術研究所 | 並列計算方法およびシステム |
CN110457648B (zh) * | 2019-07-30 | 2023-02-03 | 暨南大学 | 一种用于lu分解的脉动阵列结构的实现方法 |
CN112486638A (zh) | 2019-09-11 | 2021-03-12 | 百度时代网络技术(北京)有限公司 | 用于执行处理任务的方法、装置、设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4140800A1 (de) * | 1990-12-20 | 1992-06-25 | Intel Corp | Verfahren zur loesung eines linearen gleichungssystems auf einem parallelcomputer |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157778A (en) * | 1986-08-20 | 1992-10-20 | Digital Equipment Corporation | Method and apparatus for circuit simulation using parallel processors including memory arrangements and matrix decomposition synchronization |
JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
DE69232431T2 (de) * | 1991-07-12 | 2002-09-19 | Matsushita Electric Industrial Co., Ltd. | Vorrichtung zur Lösung von linearen Gleichungssystem |
JP2956800B2 (ja) * | 1991-09-19 | 1999-10-04 | 株式会社日立製作所 | 連立一次方程式に関する計算装置 |
JP2667946B2 (ja) * | 1992-09-21 | 1997-10-27 | 三菱電機株式会社 | 半導体記憶装置 |
US5442569A (en) * | 1993-06-23 | 1995-08-15 | Oceanautes Inc. | Method and apparatus for system characterization and analysis using finite element methods |
-
1994
- 1994-03-31 JP JP06224194A patent/JP3639323B2/ja not_active Expired - Fee Related
-
1995
- 1995-03-24 DE DE19510879A patent/DE19510879C2/de not_active Expired - Fee Related
- 1995-03-29 US US08/412,308 patent/US5887186A/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4140800A1 (de) * | 1990-12-20 | 1992-06-25 | Intel Corp | Verfahren zur loesung eines linearen gleichungssystems auf einem parallelcomputer |
Non-Patent Citations (1)
Title |
---|
Patents Abstracts of Japan, P-1470, January 18, 1993, Vol. 17/No. 23 * |
Also Published As
Publication number | Publication date |
---|---|
US5887186A (en) | 1999-03-23 |
JP3639323B2 (ja) | 2005-04-20 |
DE19510879A1 (de) | 1995-10-05 |
JPH07271760A (ja) | 1995-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19510879C2 (de) | Brechnungsverfahren für simultane, lineare Gleichungen und speicherverteilter Parallelprozessor zur Durchführung des Verfahrens | |
DE102018119513A1 (de) | Neuronalnetzbeschleuniger mit Parametern, die sich auf einem Chip befinden | |
DE102017121825A1 (de) | Rechenkachel für neuronale Netze | |
DE102017120588A1 (de) | Befehlssatzarchitektur für neuronale Netze | |
DE3781694T2 (de) | Virtuelle prozessortechniken in einem feldmultiprozessor. | |
DE3856015T2 (de) | Berechnungseinrichtung für Parallelprozessoren | |
DE68925646T2 (de) | Pipeline-multiprozessorsystem | |
DE102018126001A1 (de) | Synchronisation in einem Multi-Kachel-Verarbeitungsarray | |
DE102017113733A1 (de) | Faltendes neuronales Netzwerk auf programmierbarem zweidimensionalem Bildprozessor | |
DE69122161T2 (de) | Massiv paralleler Rechner mit einer Kommunikationsanordnung in Scheiben | |
DE69225839T2 (de) | Filtersystem und Verfahren zur Bildverarbeitung mit sehr hoher Geschwindigkeit | |
DE102018126003A1 (de) | Kombinieren von Zuständen mehrerer Threads in einem Multithread-Prozessor | |
DE3407983A1 (de) | Mehrprozessorrechnersystem zum verarbeiten in einer hierarchischen datenstruktur definierter objektelemente zu einer farbigen abbildung | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE102013020968A1 (de) | Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher | |
DE102009038454A1 (de) | System und Verfahren zum Reduzieren einer Ausführungsdivergenz in Parallelverarbeitungsarchitekturen | |
DE112019005288T5 (de) | EFFEKTIVES UND SKALIERBARES AUFBAUEN UND SONDIEREN VON HASHTABELLEN UNTER VERWENDUNG MEHRERER GPUs | |
Dang et al. | A parallel implementation on GPUs of ADI finite difference methods for parabolic PDEs with applications in finance | |
DE102017120965A1 (de) | Prozessor in nichtflüchtigem Ablagespeicher | |
DE102013020608A1 (de) | System und verfahren zur Re-Faktorisierung einer quadratischen Matrix in untere und obere Dreiecksmatrizen in einem parallelen Prozessor | |
DE112019000676T5 (de) | Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor | |
DE102010028364A9 (de) | System, Verfahren und Computerprogrammprodukt zum Zerlegen einer Stichprobenentnahme-Aufgabe in eine Mehrzahl von Aufträgen | |
DE69826126T2 (de) | Verfahren und vorrichtung zur berechnung einer erforderlichen werkstoffmenge | |
DE102019112301A1 (de) | Befehls-Cache in einem Multithread-Prozessor | |
DE19504089A1 (de) | Pipelined SIMD-Systolic Array Prozessor und dessen Arbeitsverfahren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |