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 Verfahrens

Info

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
Application number
DE19510879A
Other languages
English (en)
Other versions
DE19510879A1 (de
Inventor
Makoto Nakanishi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE19510879A1 publication Critical patent/DE19510879A1/de
Application granted granted Critical
Publication of DE19510879C2 publication Critical patent/DE19510879C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous 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)
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.
Kurzbeschreibung der Zeichnungen
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.
Beschreibung der bevorzugten Ausführungsform
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.
[1] Dynamische Datenumordnung
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.
Ä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.
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.
[2] Wirksames Verfahren zum Erhalten des Matrixpro­ dukts
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,
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.
[3] Verfahren der parallelen Vorwärts/Rückwärts-Zuord­ nung
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.
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.
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.
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.
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.
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.
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.
DE19510879A 1994-03-31 1995-03-24 Brechnungsverfahren für simultane, lineare Gleichungen und speicherverteilter Parallelprozessor zur Durchführung des Verfahrens Expired - Fee Related DE19510879C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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