DE102017207876A1 - Parallelisierte Verarbeitung - Google Patents

Parallelisierte Verarbeitung Download PDF

Info

Publication number
DE102017207876A1
DE102017207876A1 DE102017207876.6A DE102017207876A DE102017207876A1 DE 102017207876 A1 DE102017207876 A1 DE 102017207876A1 DE 102017207876 A DE102017207876 A DE 102017207876A DE 102017207876 A1 DE102017207876 A1 DE 102017207876A1
Authority
DE
Germany
Prior art keywords
vector
elements
processor
processors
index
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.)
Pending
Application number
DE102017207876.6A
Other languages
English (en)
Inventor
Frank Meinl
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102017207876.6A priority Critical patent/DE102017207876A1/de
Priority to US15/975,406 priority patent/US11422806B2/en
Priority to CN201810441489.4A priority patent/CN108874463B/zh
Publication of DE102017207876A1 publication Critical patent/DE102017207876A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/02Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S13/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Abstract

Ein Verfahren zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R mittels Prozessoren 1 bis k umfasst Schritte des (b) Ladens des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; (c) des parallelen Verarbeitens geladener Elemente durch die Prozessoren; (d) des Weitergebens der geladenen Elemente des ersten Vektors R von den Prozessoren 1 bis k-1 an den jeweils nächsten Prozessor 2 bis k; (e) des Ladens des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; und (f) des Rückspringens zu Schritt c, falls nicht alle Elemente des ersten Vektors R geladen und verarbeitet wurden.

Description

  • Die Erfindung betrifft eine parallelisierte Verarbeitung. Insbesondere betrifft die Erfindung die Verarbeitung von Vektorelementen mittels mehrerer Prozessoren.
  • Stand der Technik
  • Bestimmte Probleme der physikalischen Mess- und Verarbeitungstechnik lassen sich gut parallelisieren, wobei mehrere Prozessoren nebenläufig an der Lösung eines gemeinsamen Problems arbeiten. In einer Ausführungsform werden alle Prozessoren mit den gleichen Instruktionen, aber auf unterschiedlichen Daten betrieben (SIMD: Single Instruction Multiple Data).
  • Beispielsweise kann eine parallelisierte Verarbeitung im Rahmen der Auswertung von Radarsignalen, die an einem Objekt reflektiert wurden, durchgeführt werden. Ein besonders relevantes Beispiel ist in DE 199 37 723 C2 gezeigt. Dort soll ein Höhenwinkelfehler eines mehrstrahligen Radarsensors bestimmt werden.
  • Ein bekanntes Problem in der Verarbeitung von Radarsignalen ist die Schätzung eines Richtungswinkels eines Objekts. Ein Radarsignal wird ausgesandt, durch das Objekt reflektiert und wieder empfangen. Überlagern sich zwei Objekte, so kann eine zweidimensionale Suche über eine Reihe empfangener Messdaten durchgeführt werden. Die Messdaten liegen in Form eines Vektors vor, wobei verschiedene Elemente des Vektors mit unterschiedlichen Indizes miteinander verarbeitet werden sollen.
  • Dieses und andere technische Probleme, insbesondere im Bereich der digitalen Signalverarbeitung, können parallelisiert werden, indem mehrere Prozessoren jeweils mit unterschiedlichen Elementen eines oder mehrerer Vektoren geladen werden und daraus einen Kombinationswert bestimmen.
  • Eine der vorliegenden Erfindung zugrunde liegende Aufgabe besteht darin, eine verbesserte Technik zur parallelisierten Verarbeitung von Elementen eines Vektors anzugeben. Die vorliegende Erfindung löst diese Aufgabe mittels der Gegenstände der unabhängigen Ansprüche. Unteransprüche geben bevorzugte Ausführungsformen wieder.
  • Offenbarung der Erfindung
  • Ein Verfahren zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R mittels Prozessoren 1 bis k umfasst Schritte des (b) Ladens des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; (c) des parallelen Verarbeitens geladener Elemente durch die Prozessoren; (d) des Weitergebens der geladenen Elemente des ersten Vektors R von den Prozessoren 1 bis k-1 an den jeweils nächsten Prozessor 2 bis k; (e) des Ladens des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; und (f) des Rückspringens zu Schritt c, falls nicht alle Elemente des ersten Vektors R geladen und verarbeitet wurden.
  • Durch das zyklische Weiterleiten eines einmal geladenen Elements des ersten Vektors R kann vermieden werden, dass derselbe Wert häufig aus einem Speicher in einen der Prozessoren verbracht werden muss. Insbesondere wenn der erste Vektor R groß ist, können nur wenige Speicherzugriffe erforderlich sein, um alle Elemente des Vektors parallelisiert mittels mehrerer Prozessoren zu verarbeiten.
  • Es ist besonders bevorzugt, dass das Verfahren zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R und eines zweiten Vektors L mittels der Prozessoren 1 bis k eingerichtet ist. Vor den oben genannten Schritten b bis f kann ein Schritt a durchgeführt werden, in welchem k Elemente des zweiten Vektors L in die Prozessoren 1 bis k geladen werden. In Anschluss an den oben genannten Schritt f werden dann in einem Schritt g die nächsten k Elemente des zweiten Vektors L in die Prozessoren 1 bis k geladen und in einem Schritt h wird zu Schritt c zurückgekehrt, falls nicht alle Elemente des zweiten Vektors L geladen und verarbeitet wurden.
  • Dadurch können insbesondere Kombinationen zwischen Elementen zweier Vektoren R und L gebildet und parallelisiert mittels der Prozessoren verarbeitet werden. Das beschriebene Verfahren bietet sich insbesondere an, wenn beide Vektoren die gleiche Länge besitzen. Weiter bevorzugt kann das Verfahren angewendet werden, wenn die Verarbeitung auf Elemente beschränkt ist, deren Indizes in den Vektoren R und L voneinander verschieden sind. Werden Kombinationen der Elemente der Vektoren R und L in eine Matrix eingetragen, so bilden die interessierenden Kombinationen der Elemente eine obere oder untere Dreiecksmatrix. Ist die resultierende Matrix symmetrisch bzw. hermitesch, so genügt es nur eine der beiden Dreiecksmatrizen auszuwerten.
  • Es ist weiter bevorzugt, dass die oben genannten Schritte a bis h abwechselnd aufsteigend und absteigend durchgeführt werden. Beim aufsteigenden Durchlauf sind Indizes von Elementen des ersten Vektors R aufsteigend, wobei einem Prozessor mit niedrigem Index ein Element des zweiten Vektors L mit hohem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit niedrigem Index zugeordnet ist. Beim absteigenden Durchlauf sind Indizes von Elementen des ersten Vektors R absteigend, wobei einem Prozessor mit niedrigem Index ein Element des zweiten Vektors L mit niedrigem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit hohem Index zugeordnet ist.
  • In der aufsteigenden Variante werden Indizes der Elemente des ersten Vektors R inkrementiert und die geladenen Elemente des ersten Vektors R werden in Richtung aufsteigender Indizes der Prozessoren weitergegeben. Einem Prozessor mit niedrigem Index ist ein Element des zweiten Vektors L mit hohem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit niedrigem Index zugeordnet.
  • In der absteigenden Variante werden die Indizes der Elemente des ersten Vektors R dekrementiert und die Elemente des ersten Vektors R werden wie in der ersten Variante in Richtung aufsteigender Indizes der Prozessoren weitergegeben. Einem Prozessor mit niedrigem Index ist ein Element des zweiten Vektors L mit niedrigem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit hohem Index zugeordnet.
  • Die Prozessoren können nacheinander von der ersten in die zweite Variante oder umgekehrt übergeleitet werden. Anders ausgedrückt kann ein Prozessor, der gegen Ende eines Durchlaufs der Schritte c bis f nicht mehr beschäftigt werden kann, weil in der Durchlaufrichtung des ersten Vektors R alle Elemente bereits geladen und verarbeitet wurden, zum Laden und/oder Verarbeiten von Werten bezüglich eines anderen Elements des zweiten Vektors verwendet werden. Für einen vollständigen Durchlauf des Verfahrens, bei dem alle Kombinationen zwischen Elementen der Vektoren R und L gebildet werden, bei denen sich die Indizes der Elemente der Vektoren R und L voneinander unterscheiden, kann eine vollständige Auslastung aller Prozessoren während der gesamten Laufzeit des Verfahrens erzielt werden. Die Effizienz eines entsprechenden Auswertungssystems kann dadurch maximiert sein. Das Verfahren kann beispielsweise zur Verarbeitung von Radarsignalen verwendet werden, wie oben bereits erwähnt wurde. Die Auswertung kann beschleunigt werden, wodurch eine erhöhte Auswertegeschwindigkeit oder Auswertefrequenz erzielt werden kann.
  • In einer Ausführungsform sind die beiden Vektoren R und L identisch, sodass die Elemente des Vektors L bereits durch das Laden des Vektors R im Prozessor vorliegen. Diese können zum richtigen Zeitpunkt in einem Register oder einem dedizierten Zwischenspeicher (z. B. Register, Cache, etc) im Prozessor vorgehalten werden. Dadurch ist es nicht nötig die nächsten k Elemente des Vektors L neu zu laden und die Schritte a bzw. g können übersprungen werden.
  • In einer Ausführungsform spannen die Vektoren eine Matrix auf, deren Elemente mit Ergebnissen der Verarbeitungen im Schritt c gefüllt werden. Auch ein schreibender Zugriff auf einen Speicher, in dem die Matrix abgelegt ist, kann durch die beschriebene Vorgehensweise optimiert sein.
  • Es ist weiterhin bevorzugt, dass die Verarbeitung eine Maximum-Likelihood-Analyse von Elementen der Vektoren umfasst. Ferner ist bevorzugt, dass Elemente der Vektoren jeweils einen Richtungswinkel eines abgetasteten Radarsignals betreffen. Mittels der Maximum-Likelihood-Analyse können beispielsweise Richtungswinkel zweier sich gegenseitig überlagernder Objekte in einem durch den Vektor R zweidimensional aufgespannten Suchraum verbessert gefunden werden. Die resultierende Matrix kann symmetrisch sein, d.h. es kann vorzugsweise nur die untere bzw. obere Dreiecksmatrix ausgewertet werden.
  • Ein Computerprogrammprodukt umfasst Programmcodemittel zur Durchführung des oben beschriebenen Verfahrens, wenn das Computerprogrammprodukt auf einer Verarbeitungseinrichtung abläuft oder auf einem computerlesbaren Datenträger gespeichert ist. Die Verarbeitungseinrichtung kann insbesondere einen oder mehrere der oben erwähnten Prozessoren umfassen. Ein Prozessor kann beispielsweise als programmierbarer Mikrocomputer oder Mikrocontroller, als anwenderspezifischer integrierter Schaltkreis (Application Specific Integrated Circuit, ASIC) oder als feldprogrammierbare Logik (Field Programmable Gate Array, FPGA) ausgebildet sein.
  • Ein Prozessor zur Durchführung des oben beschriebenen Verfahrens umfasst eine Verarbeitungseinrichtung zur Verarbeitung eines oder mehrerer Elemente eines Vektors; ein erstes Speicherelement, das dazu eingerichtet ist, mit einem Element des Vektors geladen zu werden; ein zweites Speicherelement zur Aufnahme des Elements des ersten Speicherelements, während das erste Speicherelement neu geladen wird; ein drittes Speicherelement zur Bereitstellung eines Elements eines Vektors einer weiteren Verarbeitungseinrichtung; eine erste Schnittstelle zum Aufnehmen eines Elements; eine zweite Schnittstelle zum Bereitstellen eines Elements; und eine dritte Schnittstelle zum Bereitstellen eines Ergebnisses.
  • Der Prozessor kann besonders dazu eingerichtet sein, mit einem weiteren Prozessor verkettet zu werden, um das Weitergeben einer Variablen oder eines Elements eines Vektors verbessert zu implementieren. Der Prozessor ist nicht notwendig, um das oben beschriebene Verfahren zu realisieren, kann dieses aber effizient unterstützen. Merkmale oder Vorteile des Prozessors können auf das Verfahren bezogen werden und umgekehrt.
  • Ein Prozessorsystem umfasst mehrere der beschriebenen Prozessoren, wobei die Prozessoren in einer Reihe miteinander verkettet sind. Die Prozessoren können insbesondere nach dem SIMD-Prinzip unterschiedliche Daten auf die gleiche Weise mit gleichen Instruktionen verarbeiten. Die Verkettung kann mittels geeigneter Schnittstellen erfolgen. Bevorzugt besteht eine Verkettungsverbindung nur zwischen den Schnittstellen miteinander verketteter Prozessoren, sodass nur wenig physischer Aufwand erforderlich ist. Da die Verkettungen keine anderen Signale übermitteln müssen, können eine Übertragungsgeschwindigkeit und -sicherheit hoch sein.
  • Figurenliste
  • Die Erfindung wird nun mit Bezug auf die beigefügten Figuren genauer beschrieben, in denen:
    • 1 eine Veranschaulichung eines Verfahrens; und
    • 2 ein Prozessorsystem zur Durchführung des Verfahrens von 1
    darstellt.
  • 1 zeigt eine Veranschaulichung eines Verfahrens 100. Gegeben sind ein erster Vektor R mit Elementen r1 bis rn , sowie ein zweiter Vektor L mit Elementen I1 bis In . Zwischen Elementen der Vektoren L und R sollen Kombinationen gebildet werden, wobei nur solche Kombinationen von Interesse sind, bei denen die Indizes der Elemente in ihren jeweiligen Vektoren R und L unterschiedlich sind.
  • In einem illustrativen Beispiel kann eine Schätzung von Ankunftswinkeln θ zweier, sich aus Sicht eines messenden Radarsystems teilweise überlagernder Objekte mittels eines deterministischen Maximum-Likelihood-Verfahrens (DML) durchgeführt werden. Dabei muss eine zweidimensionale Suche über den Ankunftswinkel des ersten Objekts und den Ankunftswinkel des zweiten Objekts durchgeführt werden. Die folgende Gleichung muss für jede mögliche Kombination von i und j ausgewertet werden, um das Maximum und damit die beiden höchst-wahrscheinlichen Ankunftswinkel zu finden: a r g m a x θ i , θ j | r i | 2 + | r j | 2 2 R e [ r i r j * β i j ] 1 | β i j | 2
    Figure DE102017207876A1_0001
  • Eine wichtige Optimierung bei dieser Berechnung nutzt die Symmetrie der 2-dimensionalen Datenstruktur, sodass nur eine obere bzw. untere Dreiecksmatrix ausgewertet werden muss. Bei genauerer Betrachtung erkennt man, dass die 2-dimensionale Berechnung unter anderem auf den Werten ri und rj eines Vektors R basiert, welche dazu in den Prozessor geladen werden müssen. Hierbei kann sich zu Nutze gemacht werden, dass der einmal geladene Wert ri zur Berechnung mehrerer Zellen der Matrix benutzt werden kann.
  • In 1 ist eine Matrix 105 dargestellt, in der alle möglichen Kombinationen von Elementen zweier Vektoren R und L als jeweils ein Matrixelement gebildet sind. Im Falle des DML Verfahrens für 2 Objekte wären die Vektoren R und L identisch, jedoch ist das beschriebene Verfahren im Folgenden exemplarisch für zwei verschiedene Vektoren dargestellt.
  • Der erste Vektor R ist in horizontaler Richtung angetragen, sein Laufindex ist j; der zweite Vektor L ist in vertikaler Richtung angetragen, sein Laufindex ist i. Ein beliebiges Element der Matrix 105 weist in der gewählten Darstellung einen Rechtswert von j und einen Hochwert von i auf. Matrixelemente, die gleiche Indizes für das Element des ersten Vektors R und des zweiten Vektors L haben, sind schwarz eingefärbt. Die Reihe der schwarz eingefärbten Matrixelemente unterteilt die Matrix 105 in zwei Dreiecksmatrizen, die jeweils alle interessierenden Kombinationen von Elementen der Vektoren R und L umfassen. Dargestellt ist exemplarisch lediglich die untere Dreiecksmatrix.
  • Gegeben sind ferner k Prozessoren, die hier mit p1 bis pk bezeichnet sind. Zur parallelisierten Verarbeitung von Kombinationen der Elemente der Vektoren R und L ist beispielhaft jeweils ein Prozessor p einer Zeile der Matrix 105 und damit einem Wert Ii des zweiten Vektors L zugeordnet. Der erste Prozessor p1 arbeitet also zunächst nacheinander auf Kombinationen des k-ten Elements Ik des zweiten Vektors L mit Elementen rk+1 bis rn des ersten Vektors R. Es wird vorgeschlagen, dass die Prozessoren p1 bis pk zeitlich versetzt auf Elementen des ersten Vektors R arbeiten. Dadurch kann eine Zahl von Zugriffen auf die Vektoren R und L bzw. deren Elemente minimiert werden. Sind die Vektoren L und R in einem von den Prozessoren p1 bis pk getrennten Speicher abgelegt, so ist nur eine verringerte Anzahl von Speicherzugriffen erforderlich, um sämtliche Kombinationen der Elemente der Vektoren R und L zu bilden. Durch die zeitliche Versetzung kann außerdem eine vollständige Auslastung aller Prozessoren während der gesamten Verarbeitungszeit erreicht werden.
  • Im hier dargestellten Beispiel werden zunächst Werte I1 bis Ik des zweiten Vektors L in die Prozessoren pk bis p1 geladen. Dann wird in einem ersten Speicherzugriff das zweite Element r2 des ersten Vektors R in den ersten Prozessor p1 geladen. Anschließend verarbeitet der erste Prozessor p1 die Kombination aus Ik und r2 . Das Ergebnis dieser Verarbeitung wird verworfen, da es nicht in der unteren Dreiecksmatrix liegt. Danach reicht der erste Prozessor p1 den zuvor empfangenen Wert des ersten Vektors R an den nächsten Prozessor p2 weiter. Gleichzeitig wird in einem zweiten Speicherzugriff das nächste Element des ersten Vektors R in den ersten Prozessor p1 geladen. Der erste Prozessor p1 kann dann die Kombination von Ik und r3 verarbeiten, während der zweite Prozessor p2 die Kombination von Ik-1 und r2 verarbeitet. Auch das Ergebnis dieser Verarbeitung wird verworfen, da es ebenfalls nicht in der unteren Dreiecksmatrix liegt. Nachfolgend kann in einem dritten Speicherzugriff das nächste Element des ersten Vektors R in den ersten Prozessor p1 geladen werden und zuvor verwendete Elemente des ersten Vektors R der Prozessoren p1 und p2 können jeweils um einen Prozessor weitergeschoben werden. Die Ergebnisse der darauf folgenden Verarbeitung sind mit einer 1 gekennzeichnet und liegen innerhalb der unteren Dreiecksmatrix. Alle nun folgenden Schritte tragen zur Ergebnisberechnung bei.
  • In 1 fasst ein Oval 110 Elemente des ersten Vektors R zusammen, die nacheinander in die Prozessoren p1 bis pk geladen bzw. geschoben und zeitgleich verarbeitet werden. Die beschriebene Vorgehensweise kann enden, wenn nacheinander sämtliche Elemente des ersten Vektors R in den ersten Prozessor p1 geladen wurden. Anschließend muss in die Prozessoren p1 bis pk jeweils ein neues Element des zweiten Vektors L geladen werden. Dieser Schritt kann entfallen, falls die Vektoren R und L identisch sind, da die Werte bereits aus dem vorherigen Durchlauf vorliegen.
  • Es wird vorgeschlagen, die zuvor durchgeführte Richtung (aufsteigender Index j) zu ändern und in umgekehrter Richtung (absteigender Index j) zu durchlaufen. Außerdem wird die Zuordnung von Prozessoren zu Elementen des zweiten Vektors L umgekehrt: Korrespondierte zuvor ein aufsteigender Index i des zweiten Vektors L mit einem absteigenden Index eines Prozessors pk bis p1 , so korrespondiert er nun mit einem aufsteigenden Index des Prozessors p1 bis pk oder umgekehrt. Die abweichende Zeilenlänge für jeden einzelnen Prozessor p1 bis pk kann dadurch ausgeglichen werden. Hatte Prozessor pk im aufsteigenden Durchlauf die meisten Elemente zu verarbeiten, so hat er im absteigenden Durchlauf die wenigsten Elemente zu verarbeiten.
  • Eine Zuordnung der Prozessoren p1 bis pk zu Elementen des zweiten Vektors L für weitere drei Zeilen der Matrix 105 ist in 1 eingezeichnet. Neben den Zuordnungen sind jeweils Blockpfeile dargestellt, die anzeigen, in welcher Richtung der Index j des ersten Vektors R während eines Durchgangs durch die Matrix 105 in Zeilenrichtung fortgeschaltet wird. Das Durchlaufen in Zeilenrichtung nach links endet in der Darstellung von 1 bei den Elementen unmittelbar rechts von den dunkel gefärbten Diagonalelementen der Matrix 105. Danach werden die Prozessoren p1 bis pk erneut mit Elementen des zweiten Vektors L geladen und ein neuer Durchlauf durch weitere Zeilen der Matrix 105 erfolgt in umgekehrter Richtung, wie oben beschrieben wurde.
  • 2 zeigt ein Prozessorsystem 200, das insbesondere zur Durchführung des Verfahrens 100 von 1 eingerichtet ist. Obwohl in 1 exemplarisch von drei Prozessoren p1 bis pn ausgegangen wurde, sind in 2 nur zwei Prozessoren 205 (entsprechend p1 und p2 ) dargestellt. Ein Prozessor 205 umfasst eine Eingangsschnittstelle 210 zur Entgegennahme eines Elements der Vektoren R bzw. L, eine Ausgangsschnittstelle 215 zur Verbindung mit einer Eingangsschnittstelle 210 eines nachfolgenden Prozessors 205, eine optionale Ergebnisschnittstelle 220 zur Bereitstellung eines Ergebnisses einer Verarbeitung auf der Basis von Elementen des ersten Vektors R und des zweiten Vektors L, eine Verarbeitungseinrichtung 225 zur Durchführung dieser Verarbeitung, sowie bevorzugt ein erstes Speicherelement 230, ein zweites Speicherelement 235 und/oder ein drittes Speicherelement 240. In der dargestellten Ausführungsform sind zusätzlich ein erster Multiplexer 245 und ein zweiter Multiplexer 250 vorgesehen.
  • Der Prozessor 205 ist dazu eingerichtet, über die Eingangsschnittstelle 210 ein Element Ii des zweiten Vektors L entgegenzunehmen und im ersten Speicherelement 230 abzulegen. Gleichzeitig kann ein zuvor verwendetes Element der beiden Vektoren R bzw. L aus dem dritten Speicherelement 240 über die Ausgangsschnittstelle 215 an einen nachfolgenden Prozessor 205 bereitgestellt werden. So können miteinander verkettete Prozessoren 205 gleichzeitig jeweils ein Element des ersten Vektors R an den nachfolgenden Prozessor 205 weitergeben. Eine zeitintensivere gestaffelte Weitergabe („ripplecarry“) ist nicht erforderlich.
  • Nach erfolgtem Durchlaufen einer Zeile der Matrix 105wird bevorzugt das nächste benötigte Element Ii aus dem ersten Speicherelement 230 bzw. direkt von der Schnittstelle 210 in das zweite Speicherelement 235 kopiert, um es gegen Überschreiben zu schützen. Die Verarbeitungseinrichtung 225 kann unmittelbar auf das zweite Speicherelement 235 und auf die Eingangsschnittstelle 210 zugreifen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • DE 19937723 C2 [0003]

Claims (11)

  1. Verfahren (100) zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R mittels Prozessoren 1 bis k, wobei das Verfahren (100) folgende Schritte umfasst: b) Laden des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; c) paralleles Verarbeiten geladener Elemente durch die Prozessoren; d) Weitergeben der geladenen Elemente des ersten Vektors R von den Prozessoren 1 bis k-1 an den jeweils nächsten Prozessor 2 bis k; e) Laden des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; f) Rückspringen zu Schritt c, falls nicht alle Elemente des ersten Vektors R geladen und verarbeitet wurden.
  2. Verfahren (100) zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R und eines zweiten Vektors L mittels Prozessoren 1 bis k, wobei das Verfahren (100) folgende Schritte umfasst: a) Laden von k Elementen des zweiten Vektors L in Prozessoren 1 bis k; Durchführen von Schritten b) bis f) des Verfahrens (100) von Anspruch 1; g) Laden der nächsten k Elemente des zweiten Vektors L in Prozessoren 1 bis k; h) Rückspringen zu Schritt c, falls nicht alle Elemente des zweiten Vektors L geladen und verarbeitet wurden.
  3. Verfahren (100) nach Anspruch 2, wobei die Verarbeitung auf Elemente beschränkt ist, deren Indizes in den Vektoren R und L voneinander verschieden sind, wobei die Schritte a bis h abwechselnd - mit aufsteigenden Indizes von Elementen des ersten Vektors R, wobei einem Prozessor mit niedrigem Index ein Element des zweiten Vektors L mit hohem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit niedrigem Index zugeordnet ist; und - mit absteigenden Indizes von Elementen des ersten Vektors R, wobei einem Prozessor mit niedrigem Index ein Element des zweiten Vektors L mit niedrigem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit hohem Index zugeordnet ist durchlaufen werden.
  4. Verfahren (100) nach einem der Ansprüche 2 oder 3, wobei die Vektoren eine Matrix aufspannen, deren Elemente mit Ergebnissen der Verarbeitungen im Schritt c gefüllt werden.
  5. Verfahren (100) nach einem der Ansprüche 2 oder 3, wobei die Vektoren R und L identisch sind.
  6. Verfahren (100) nach Anspruch 5, wobei die Schritte a) und g) übersprungen werden können, da die benötigten Daten bereits in einem Prozessor-eigenen Speicher vorgehalten werden.
  7. Verfahren (100) nach einem der vorangehenden Ansprüche, wobei die Verarbeitung eine Maximum-Likeliehood-Analyse von Elementen der Vektoren umfasst.
  8. Verfahren (100) nach Anspruch 7, wobei Elemente der Vektoren jeweils einen Richtungswinkel eines abgetasteten Radarsignals betreffen.
  9. Computerprogrammprodukt mit Programmcodemitteln zur Durchführung des Verfahrens (100) nach einem der vorangehenden Ansprüche, wenn das Computerprogrammprodukt auf einer Verarbeitungseinrichtung abläuft oder auf einem computerlesbaren Datenträger gespeichert ist.
  10. Prozessor (205) zur Durchführung eines Verfahrens (100) nach einem der Ansprüche 1 bis 8, wobei der Prozessor (205) folgendes umfasst: - eine Verarbeitungseinrichtung (225) zur Verarbeitung eines oder mehrerer Elemente eines Vektors (R, L); - ein erstes Speicherelement (230), das dazu eingerichtet ist, mit einem Element des Vektors (R, L) geladen zu werden; - ein zweites Speicherelement (235) zur Aufnahme des Elements des ersten Speicherelements (230), während das erste Speicherelement (230) neu geladen wird; - ein drittes Speicherelement (240) zur Bereitstellung eines Elements eines Vektors (R, L) einer weiteren Verarbeitungseinrichtung (225); - eine erste Schnittstelle (210) zum Aufnehmen eines Elements; - eine zweite Schnittstelle (215) zum Bereitstellen eines Elements; und - eine dritte Schnittstelle (220) zum Bereitstellen eines Ergebnisses
  11. Prozessorsystem (200), umfassend mehrere Prozessoren (205) nach Anspruch 10, die in einer Reihe miteinander verkettet sind.
DE102017207876.6A 2017-05-10 2017-05-10 Parallelisierte Verarbeitung Pending DE102017207876A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102017207876.6A DE102017207876A1 (de) 2017-05-10 2017-05-10 Parallelisierte Verarbeitung
US15/975,406 US11422806B2 (en) 2017-05-10 2018-05-09 Parallelized processing of elements of a first vector and a second vector using cyclical transmission of vector elements between processors
CN201810441489.4A CN108874463B (zh) 2017-05-10 2018-05-10 并行化处理

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102017207876.6A DE102017207876A1 (de) 2017-05-10 2017-05-10 Parallelisierte Verarbeitung

Publications (1)

Publication Number Publication Date
DE102017207876A1 true DE102017207876A1 (de) 2018-11-15

Family

ID=63962442

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017207876.6A Pending DE102017207876A1 (de) 2017-05-10 2017-05-10 Parallelisierte Verarbeitung

Country Status (3)

Country Link
US (1) US11422806B2 (de)
CN (1) CN108874463B (de)
DE (1) DE102017207876A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022088090A1 (zh) * 2020-10-30 2022-05-05 深圳市大疆创新科技有限公司 数字管理单元和数字信号处理系统
EP4137844A1 (de) * 2021-08-20 2023-02-22 Nxp B.V. Verfahren und vorrichtung zur bestimmung eines einfallswinkels

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2219106B (en) * 1988-05-26 1992-04-15 Secr Defence Processor for constrained least squares computations
CA1294366C (en) * 1988-10-13 1992-01-14 John Graham Mcwhirter Processor for constrained least squares computations
JPH05108699A (ja) * 1991-10-15 1993-04-30 Hitachi Ltd 共有データのベクトル処理方法
US5937202A (en) * 1993-02-11 1999-08-10 3-D Computing, Inc. High-speed, parallel, processor architecture for front-end electronics, based on a single type of ASIC, and method use thereof
JPH103468A (ja) * 1996-06-14 1998-01-06 Toyo Commun Equip Co Ltd 並列演算処理システム
US6304670B1 (en) * 1998-07-08 2001-10-16 Canon Kabushiki Kaisha Coloration and display of data matrices
DE19937723C2 (de) 1999-08-10 2001-10-04 Bosch Gmbh Robert Verfahren und Vorrichtung zur Bestimmung eines Höhenwinkelfehlers eines mehrstrahligen Radar-Sensors
US7831804B2 (en) * 2004-06-22 2010-11-09 St Microelectronics S.R.L. Multidimensional processor architecture
CN101061460B (zh) * 2004-09-21 2011-03-30 Nxp股份有限公司 用于混移运算的微处理器设备和方法
EP2022042B1 (de) * 2006-05-16 2010-12-08 Loquendo S.p.A. Kompensation der variabilität zwischen sitzungen zur automatischen extraktion von informationen aus sprache
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
GB2474901B (en) * 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
US9021233B2 (en) * 2011-09-28 2015-04-28 Arm Limited Interleaving data accesses issued in response to vector access instructions
CN105431819A (zh) * 2013-09-06 2016-03-23 华为技术有限公司 异步处理器消除亚稳态的方法和装置
US20160055031A1 (en) * 2014-11-13 2016-02-25 Mediatek Inc. Dual-System Architecture With Fast Recover And Switching Of Operating System
EP3211444B1 (de) * 2016-02-29 2019-06-12 Nxp B.V. Radarsystem

Also Published As

Publication number Publication date
CN108874463B (zh) 2024-07-23
US11422806B2 (en) 2022-08-23
CN108874463A (zh) 2018-11-23
US20180329709A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
DE69232431T2 (de) Vorrichtung zur Lösung von linearen Gleichungssystem
DE69231497T2 (de) Massivparalleles rechnersystem mit eingangs-ausgangsanordnung
DE112019000336T5 (de) Massiv parallele neuronale inferenz-datenverarbeitungselemente
DE202017105729U1 (de) Kerndurchschreiten in Hardware
DE112016002296T5 (de) Vektor-recheneinheit in einem neuronalen netzwerkprozessor
DE102010053458B4 (de) Verfahren zur Aufbereitung von IR-Bildern und korrespondierende Wärmebildkamera
DE112010003810B4 (de) Verfahren, Programm und paralleles Computersystem für die Planung einer Vielzahl von Berechnungsverfahren einschließlich All-to-All Kommunikation (A2A) zwischen einer Vielzahl von Knoten (Prozessoren), die ein Netzwerk formen
DE102018113992A1 (de) Verfahren und Gerät zum Erfassen einer Fahrspur
DE102019121589A1 (de) Verfahren zur Bestimmung einer Sensorkonfiguration
DE2220784C2 (de) Anordnung zur Berechnung der diskreten Fourier-Transformierten aufgrund von N reellen Abtastwerten
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE3788617T2 (de) Vektordatenverarbeitungssystem mit einer E/A-Steuerung für jeden Vektordatenprozessor und einer anderen E/A-Steuerung für mindestens einen anderen Vektordatenprozessor.
DE102017207876A1 (de) Parallelisierte Verarbeitung
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
DE112021005568T5 (de) Datenverarbeitungsvorrichtung und Datenverarbeitungsverfahren
DE102019105850A1 (de) Verfahren zur Erzeugung eines reduzierten neuronalen Netzes für ein Steuergerät eines Fahrzeuges mithilfe von Eigenvektoren
DE102023130782A1 (de) Trainieren eines neuronalen netzwerks mit einer budding-ensemble-architektur basierend auf diversitätsverlust
DE102017129933A1 (de) Verfahren zur Erfassung von Umgebungsinformationen mittels eines Radarsystems
DE2163621A1 (de) Schaltungsanordnung zur Durchführung der Fourier-Analyse
EP2642749B1 (de) Vorrichtung und Verfahren zur Optimierung der Bestimmung von Aufnahmebereichen
DE102019008662A1 (de) Verfahren zur parallelen und/oder inkrementellen Geolokalisierung von Grundursachen von durch ein Fahrzeug erfassten Ereignissen
DE112018007244T5 (de) Lichterfassungsvorrichtung und lichterfassungsverfahren
DE102022204263A1 (de) Verfahren und Vorrichtung zum Trainieren eines neuronalen Netzes
DE102008022532A1 (de) Abstandbestimmungsverfahren

Legal Events

Date Code Title Description
R012 Request for examination validly filed