DE102022126913A1 - Computer-implemented method for parallel execution of software applications using a processing device containing a hardware computing cluster, and processing device - Google Patents
Computer-implemented method for parallel execution of software applications using a processing device containing a hardware computing cluster, and processing device Download PDFInfo
- Publication number
- DE102022126913A1 DE102022126913A1 DE102022126913.2A DE102022126913A DE102022126913A1 DE 102022126913 A1 DE102022126913 A1 DE 102022126913A1 DE 102022126913 A DE102022126913 A DE 102022126913A DE 102022126913 A1 DE102022126913 A1 DE 102022126913A1
- Authority
- DE
- Germany
- Prior art keywords
- processing device
- software applications
- driver
- hardware
- computing cluster
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004438 eyesight Effects 0.000 claims description 10
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 230000003287 optical effect Effects 0.000 claims description 2
- 238000009877 rendering Methods 0.000 claims description 2
- 238000004422 calculation algorithm Methods 0.000 description 34
- 238000007726 management method Methods 0.000 description 27
- 238000013527 convolutional neural network Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000008447 perception Effects 0.000 description 8
- 230000016776 visual perception Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000007635 classification algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013486 operation strategy Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000013396 workstream Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Ein Verfahren zum parallelen Ausführen von Applikationen (9a, 9b, 9c) unter Verwendung einer Verarbeitungsvorrichtung (1), welche einen Hardware-Rechencluster (8a) und eine Treiberschicht (7) zum Steuern des Hardware-Rechenclusters (8a) enthält, wird bereitgestellt. Für jede Applikation (9a, 9b, 9c) wird eine ausführbare Datei bereitgestellt, die Scheduleranweisungen beinhaltet. Eine dynamische Bibliothek (10), welche Treiberaufrufe gemäß einem Jobtyp enthält, wird bereitgestellt. Während einer Laufzeit werden die ausführbaren Dateien (9) und die Treiberaufrufe von einem Managementmodul (6) geladen und zwei oder mehr Rechenjobs des Jobtyps werden von jeweiligen Recheninstanzen (11a, 11b, 12a, 12b, 13a, 13b) des Hardware-Rechenclusters (8a) parallel ausgeführt, wobei die Rechenjobs des Jobtyps von einer Job-Schedulerinstanz (22a) des Managementmoduls (6) durch Übermitteln der Treiberaufrufe an die Treiberschicht (7) gemäß den Scheduleranweisungen zeitlich geplant werden.A method for parallel execution of applications (9a, 9b, 9c) using a processing device (1) containing a hardware computing cluster (8a) and a driver layer (7) for controlling the hardware computing cluster (8a) is provided. For each application (9a, 9b, 9c) an executable file is provided which contains scheduler instructions. A dynamic library (10) containing driver calls according to a job type is provided. During a runtime, the executable files (9) and the driver calls are loaded by a management module (6) and two or more computing jobs of the job type are executed in parallel by respective computing instances (11a, 11b, 12a, 12b, 13a, 13b) of the hardware computing cluster (8a), wherein the computing jobs of the job type are scheduled by a job scheduler instance (22a) of the management module (6) by transmitting the driver calls to the driver layer (7) according to the scheduler instructions.
Description
Die vorliegende Erfindung ist auf ein computerimplementiertes Verfahren zum Ausführen von mindestens zwei Softwareapplikationen unter Verwendung einer Verarbeitungsvorrichtung gerichtet. Die Erfindung ist weiter auf ein Verfahren zum zumindest teilweise automatischen Führen eines Fahrzeugs, auf eine Verarbeitungsvorrichtung zum Ausführen von mindestens zwei Softwareapplikationen, auf eine elektronische Steuereinheit für ein Fahrzeug sowie auf Computerprogrammprodukte gerichtet.The present invention is directed to a computer-implemented method for executing at least two software applications using a processing device. The invention is further directed to a method for at least partially automatically driving a vehicle, to a processing device for executing at least two software applications, to an electronic control unit for a vehicle and to computer program products.
In letzter Zeit hat die Rechenleistung von Verarbeitungsvorrichtungen wie Einchipsystemen, SoCs (englisch: systems-on-a-chip), durch das Integrieren verschiedener Typen von Hardware-Recheneinheiten, wie etwa Koprozessoren oder Hardwarebeschleunigern, zusammen mit zentralen Recheneinheiten, CPUs (englisch: central processing units), rasch zugenommen. Im Allgemeinen können Job-Scheduler dazu verwendet werden, die erforderliche Gesamtausführungszeit für eine Softwareapplikation zu reduzieren.Recently, the computing power of processing devices such as systems-on-a-chip (SoCs) has increased rapidly by integrating various types of hardware computing units, such as coprocessors or hardware accelerators, together with central processing units (CPUs). In general, job schedulers can be used to reduce the total execution time required for a software application.
Bei einigen Applikationen, insbesondere Computer-Vision-Applikationen, zum Beispiel im Automobilbereich zum Ausführen von Fahrerassistenzsystemen, ADAS (englisch: advanced driver assistance systems), oder anderen Systemen zum automatischen oder teilautomatischen Führen eines Fahrzeugs, kann die Ausführung verschiedener Softwareapplikationen erforderlich sein. Um eine geringe Ausführungszeit zu erreichen, ist es wünschenswert, die Softwareapplikationen parallel auszuführen. Zu diesem Zweck könnte eine dedizierte Verarbeitungsvorrichtung für jede Softwareapplikation bereitgestellt werden, was jedoch die Gesamtkosten für Hardware erheblich ansteigen lassen würde.Some applications, particularly computer vision applications, for example in the automotive sector for running driver assistance systems, ADAS (advanced driver assistance systems), or other systems for automatically or semi-automatically driving a vehicle, may require the execution of different software applications. In order to achieve a low execution time, it is desirable to run the software applications in parallel. For this purpose, a dedicated processing device could be provided for each software application, but this would significantly increase the overall hardware costs.
Die
Eine Aufgabe der vorliegenden Erfindung ist es, eine Möglichkeit für die Ausführung von zwei oder mehr Softwareapplikationen unter Verwendung einer einzigen Verarbeitungsvorrichtung mit einer geringen Gesamtausführungszeit bereitzustellen.An object of the present invention is to provide a way to execute two or more software applications using a single processing device with a low overall execution time.
Diese Aufgabe wird durch den jeweiligen Gegenstand der unabhängigen Ansprüche erreicht. Bevorzugte Ausführungsformen und weitere Ausführungen sind Gegenstand der abhängigen Ansprüche.This object is achieved by the respective subject matter of the independent claims. Preferred embodiments and further embodiments are the subject matter of the dependent claims.
Die Erfindung beruht auf dem Gedanken, Rechenjobs desselben Jobtyps parallel auf unterschiedlichen Recheninstanzen eines Hardware-Rechenclusters zeitlich zu planen (englisch: to schedule), wobei die erforderlichen Treiberaufrufe von den ausführbaren Dateien der Softwareapplikationen entkoppelt werden, indem sie in einer dynamischen Bibliothek bereitgestellt werden.The invention is based on the idea of scheduling computing jobs of the same job type in parallel on different computing instances of a hardware computing cluster, whereby the required driver calls are decoupled from the executable files of the software applications by providing them in a dynamic library.
Gemäß einem ersten Aspekt der Erfindung wird ein computerimplementiertes Verfahren zur parallelen Ausführung von mindestens zwei Softwareapplikationen unter Verwendung einer Verarbeitungsvorrichtung, welche einen ersten Hardware-Rechencluster und eine Treiberschicht, insbesondere einen ersten Gerätetreiber, zum Steuern des ersten Hardware-Rechenclusters enthält, bereitgestellt. Für jede der mindestens zwei Softwareapplikationen wird eine ausführbare Datei, die einen Satz von Scheduleranweisungen gemäß der jeweiligen Softwareapplikation beinhaltet bereitgestellt, insbesondere der Verarbeitungsvorrichtung, zum Beispiel einer zentralen Verarbeitungseinheit, CPU, der Verarbeitungsvorrichtung. Die ausführbaren Dateien können zum Beispiel auf einem oder mehreren Speichergeräten der Verarbeitungsvorrichtung oder der CPU gespeichert werden.According to a first aspect of the invention, a computer-implemented method is provided for parallel execution of at least two software applications using a processing device which includes a first hardware computing cluster and a driver layer, in particular a first device driver, for controlling the first hardware computing cluster. For each of the at least two software applications, an executable file containing a set of scheduler instructions according to the respective software application is provided, in particular to the processing device, for example a central processing unit, CPU, of the processing device. The executable files can be stored, for example, on one or more storage devices of the processing device or the CPU.
Eine dynamische Bibliothek, die einen Satz von ersten Treiberaufrufen für die Treiberschicht gemäß einem ersten Jobtyp enthält, wird bereitgestellt, der Verarbeitungsvorrichtung, zum Beispiel der CPU. Die dynamische Bibliothek kann zum Beispiel auf einem oder mehreren Speichergeräten gespeichert werden. Während einer Laufzeit der mindestens zwei Softwareapplikationen werden die ausführbaren Dateien, die den mindestens zwei Softwareapplikationen entsprechen, und die ersten Treiberaufrufe von einem Managementmodul geladen, welches insbesondere ein Softwaremodul der Verarbeitungsvorrichtung ist. Das Managementmodul kann zum Beispiel von der CPU gesteuert werden. Während der Laufzeit werden zwei oder mehr Rechenjobs des ersten Jobtyps von jeweiligen Recheninstanzen des ersten Hardware-Rechenclusters parallel ausgeführt. Dabei werden die Rechenjobs des ersten Jobtyps von einer ersten Job-Schedulerinstanz des Managementmoduls durch Übermitteln der ersten Treiberaufrufe an die Treiberschicht, insbesondere den ersten Gerätetreiber, gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien, die den mindestens zwei Softwareapplikationen entsprechen, zeitlich geplant.A dynamic library containing a set of first driver calls for the driver layer according to a first job type is provided to the processing device, for example the CPU. The dynamic library can be stored on one or more storage devices, for example. During a runtime of the at least two software applications, the executable files corresponding to the at least two software applications and the first driver calls are loaded by a management module, which is in particular a software module of the processing device. The management module can be controlled by the CPU, for example. During runtime, two or more computing jobs of the first job type are executed in parallel by respective computing instances of the first hardware computing cluster. The computing jobs of the first job type are scheduled by a first job scheduler instance of the management module by transmitting the first driver calls to the driver layer, in particular the first device driver, according to the sets of scheduler instructions of the executable files corresponding to at least two software applications.
Soweit nicht anders erwähnt, können alle Schritte des computerimplementierten Verfahrens von der Verarbeitungsvorrichtung, die zum Beispiel eine Verarbeitungsvorrichtung eines Fahrzeugs, insbesondere eines Kraftfahrzeugs, ist, durchgeführt werden. Die Verarbeitungsvorrichtung kann zum Beispiel als ein Einchipsystem, SoC, implementiert sein. Bei verschiedenen Ausführungsformen beinhaltet die Verarbeitungsvorrichtung eine oder mehrere Hardware- und/oder Softwareschnittstellen und/oder eine oder mehrere Speichereinheiten. Eine Speichereinheit kann als flüchtiger Datenspeicher, beispielsweise als dynamischer Speicher mit wahlfreiem Zugriff, DRAM (englisch: „dynamic random access memory“) oder statischer Speicher mit wahlfreiem Zugriff, SRAM (englisch: „static random access memory“), oder als nicht-flüchtiger Datenspeicher, beispielsweise als Festwertspeicher, ROM (englisch: „read-only memory“), als programmierbarer Festwertspeicher, PROM (englisch: „programmable read-only memory“), als löschbarer Festwertspeicher, EPROM (englisch: „erasable read-only memory“), als elektrisch löschbarer Festwertspeicher, EEPROM (englisch: „electrically erasable read-only memory“), als Flash-Speicher oder Flash-EEPROM, als ferroelektrischer Speicher mit wahlfreiem Zugriff, FRAM (englisch: „ferroelectric random access memory“), als magnetoresistiver Speicher mit wahlfreiem Zugriff, MRAM (englisch: „magnetoresistive random access memory“) oder als Phasenwechselspeicher mit wahlfreiem Zugriff, PCRAM (englisch: „phase-change random access memory“), ausgestaltet sein.Unless otherwise mentioned, all steps of the computer-implemented method can be carried out by the processing device, which is, for example, a processing device of a vehicle, in particular a motor vehicle. The processing device can, for example, be implemented as a system on chip, SoC. In various embodiments, the processing device includes one or more hardware and/or software interfaces and/or one or more memory units. A memory unit can be a volatile data storage device, for example a dynamic random access memory (DRAM) or a static random access memory (SRAM), or a non-volatile data storage device, for example a read-only memory (ROM), a programmable read-only memory (PROM), an erasable read-only memory (EPROM), an electrically erasable read-only memory (EEPROM), a flash memory or flash EEPROM, a ferroelectric random access memory (FRAM), a magnetoresistive random access memory (MRAM), or a phase-change random access memory (PCRAM). memory”).
Ein Hardware-Rechencluster weist zwei oder mehr Recheninstanzen auf, welche homogen auf einer einzigen Hardware-Recheneinheit oder auf zwei oder mehr jeweiligen Hardware-Recheneinheiten arbeiten können und dazu angepasst sind, zwei oder mehr Rechenjobs desselben Jobtyps parallel auszuführen, wobei jede Recheninstanz einen der zwei oder mehr Rechenjobs ausführt. Die Anzahl von Recheneinheiten des Hardware-Rechenclusters ist gleich der Anzahl von Rechenjobs des jeweiligen Jobtyps, die durch den Hardware-Rechencluster parallel ausgeführt werden oder ausführbar sind.A hardware computing cluster comprises two or more computing instances that can operate homogeneously on a single hardware computing unit or on two or more respective hardware computing units and are adapted to execute two or more computing jobs of the same job type in parallel, with each computing instance executing one of the two or more computing jobs. The number of computing units of the hardware computing cluster is equal to the number of computing jobs of the respective job type that are executed or can be executed in parallel by the hardware computing cluster.
Eine Hardware-Recheneinheit kann zum Beispiel ein Koprozessor oder ein Hardwarebeschleuniger, HWA (englisch: hardware accelerator), sein. Unter einem HWA kann zum Beispiel eine Hardwareeinheit verstanden werden, die keine eigene CPU aufweist, sondern der separaten CPU der Verarbeitungsvorrichtung beherrscht wird. Die CPU kann für den Hardwarebeschleuniger oder Koprozessor als Master fungieren, zum Beispiel durch Konfigurieren eines oder mehrerer spezieller Funktionsregister, SFR, des HWA oder Koprozessors, um ihn für seinen Betrieb zu konfigurieren, Eingabe- und/oder Ausgabepuffer bereitzustellen und den Betrieb des HWA oder Koprozessors auszulösen. Abhängig von den spezifischen auszuführenden Softwareapplikationen oder Jobtypen kann die Hardware-Recheneinheit als eine Neuronale-Netzwerk-Maschine und/oder ein Hardwarebeschleuniger zur Berechnung eines optischen Flusses basierend auf Kamerabildern und/oder ein Shader-Prozessor und/oder eine Computer-Vision-Maschine und/oder ein Hardwarebeschleuniger zum Rendern von Bildern und/oder eine Graphikverarbeitungseinheit, GPU (englisch: graphics processing unit), implementiert sein.A hardware computing unit can be, for example, a coprocessor or a hardware accelerator, HWA. A HWA can be understood, for example, as a hardware unit that does not have its own CPU, but is mastered by the separate CPU of the processing device. The CPU can act as a master for the hardware accelerator or coprocessor, for example by configuring one or more special function registers, SFR, of the HWA or coprocessor to configure it for its operation, provide input and/or output buffers and trigger the operation of the HWA or coprocessor. Depending on the specific software applications or job types to be executed, the hardware computing unit can be implemented as a neural network engine and/or a hardware accelerator for calculating an optical flow based on camera images and/or a shader processor and/or a computer vision engine and/or a hardware accelerator for rendering images and/or a graphics processing unit, GPU.
Das Managementmodul, welches auch als Hardware-Cluster-Manager bezeichnet werden kann, ist zum Beispiel ein Softwaremodul, welches in der Middleware eines Betriebssystems, insbesondere eines High-Level-Betriebssystems, der Verarbeitungsvorrichtung, insbesondere der CPU implementiert sein kann, die als eine Arbitrationsebene zu den zwei oder mehr Softwareapplikationen zum Zugriff auf den ersten Hardware-Rechencluster und gegebenenfalls weitere Hardware-Rechencluster der Verarbeitungsvorrichtung fungiert.The management module, which can also be referred to as a hardware cluster manager, is, for example, a software module that can be implemented in the middleware of an operating system, in particular a high-level operating system, of the processing device, in particular the CPU, which acts as an arbitration level to the two or more software applications for accessing the first hardware computing cluster and, if applicable, further hardware computing clusters of the processing device.
Die Treiberschicht beinhaltet den ersten Gerätetreiber für den ersten Hardware-Rechencluster und gegebenenfalls einen jeweiligen weiteren Gerätetreiber für jeden weiteren Hardware-Rechencluster der Verarbeitungsvorrichtung. Unter einem Gerätetreiber kann beispielsweise ein Softwaremodul verstanden werden, welches den jeweiligen Hardware-Rechencluster abhängig von den jeweiligen Treiberaufrufen betreibt und/oder steuert. Ein Gerätetreiber kann als eine Softwareschnittstelle zu dem jeweiligen Hardware-Rechencluster betrachtet werden, welche das Managementmodul dazu befähigt, auf den jeweiligen Hardware-Rechencluster zuzugreifen.The driver layer contains the first device driver for the first hardware computing cluster and, if necessary, a respective further device driver for each further hardware computing cluster of the processing device. A device driver can be understood, for example, as a software module which operates and/or controls the respective hardware computing cluster depending on the respective driver calls. A device driver can be viewed as a software interface to the respective hardware computing cluster, which enables the management module to access the respective hardware computing cluster.
Ein Rechenjob kann als eine Einheit von Arbeit verstanden werden, welche zur Ausführung der jeweiligen Softwareapplikation auszuführen ist. Ein Rechenjob kann eine oder zwei Aufgaben (englisch: tasks) oder Schritte (englisch: steps) beinhalten. Ein Rechenjob kann zum Beispiel mit einem einzelnen Vorgang identifiziert werden, der Unterprozesse, auch als Kind-Prozesse bezeichnet, beinhalten kann oder nicht und der die nötigen Aufgaben oder Schritte durchführt. Insbesondere muss zur Ausführung irgendeiner der zwei oder mehr Softwareapplikationen, zumindest ein Rechenjob des ersten Jobtyps, im Allgemeinen eine Vielzahl von Rechenjobs, die zumindest einen Rechenjob des ersten Jobtyps beinhalten, ausgeführt werden. Insbesondere werden die zwei oder mehr Rechenjobs des ersten Jobtyps zur Ausführung durch die erste Job-Schedulerinstanz zeitlich geplant und kann dann von einem Job-Steuermodul gesteuert werden.A computing job can be understood as a unit of work that is to be carried out to execute the respective software application. A computing job can include one or two tasks or steps. A computing job can, for example, be identified with a single process that may or may not include subprocesses, also referred to as child processes, and that performs the necessary tasks or steps. In particular, to execute any of the two or more software applications, at least one computing job of the first job type, generally a plurality of computing jobs that include at least one computing job of the first job type, must be executed. In particular, the two or more computing jobs of the first job type are selected for execution by the first Job scheduler instance and can then be controlled by a job control module.
Dabei ist die erste Job-Schedulerinstanz, die auch als ein erster Job-Scheduler bezeichnet werden kann, insbesondere ein Softwaremodul, welches dazu angepasst ist, Ressourcen, die die jeweiligen Recheninstanzen des ersten Hardware-Rechenclusters beinhalten, zuzuordnen, um die Rechenjobs des ersten Jobtyps durchzuführen.The first job scheduler instance, which can also be referred to as a first job scheduler, is in particular a software module which is adapted to allocate resources which include the respective computing instances of the first hardware computing cluster in order to carry out the computing jobs of the first job type.
Die dynamische Bibliothek kann eine oder mehrere geteilte Bibliotheken enthalten, die zum Beispiel den Satz von ersten Treiberaufrufen enthalten und nur während der Laufzeit gestartet werden. Die dynamische Bibliothek ist nicht Teil irgendeiner der ausführbaren Dateien oder der zwei oder mehr Softwareapplikationen. Während der Laufzeit kann die CPU oder das Managementmodul eine Verbindung zwischen der dynamischen Bibliothek und den ausführbaren Dateien schaffen. Insbesondere kann die dynamische Bibliothek während der Laufzeit in einen Adressraum geladen werden.The dynamic library may contain one or more shared libraries, which, for example, contain the set of initial driver calls and are only started during runtime. The dynamic library is not part of any of the executable files or the two or more software applications. During runtime, the CPU or the management module may create a connection between the dynamic library and the executable files. In particular, the dynamic library may be loaded into an address space during runtime.
Erfindungsgemäß kann das Managementmodul derart betrachtet werden, dass es als ein Service-Provider für die mindestens zwei Softwareapplikationen, die unterschiedlich zueinander sein können, agieren kann. Alle Recheninstanzen des ersten Hardware-Rechenclusters und gegebenenfalls der weiteren Hardware-Rechencluster der Verarbeitungsvorrichtung, können auf nur einen Managementvorgang des Managementmoduls abgebildet werden, was sie vor illegalem Zugriff durch andere Prozesse schützen kann. Das Managementmodul kann direkt mit der Treiberschicht interagieren und kann insbesondere die einzige Entität der Verarbeitungsvorrichtung sein, die Zugriff auf die Treiberschicht hat. Mit anderen Worten werden die erforderlichen Treiberaufrufe auf niedriger Ebene in der dynamischen Bibliothek bereitgestellt und das Managementmodul kann die Rechenjobs des ersten Jobtyps entsprechend aus seinem Kontext heraus ausführen.According to the invention, the management module can be considered such that it can act as a service provider for the at least two software applications, which can be different from each other. All computing instances of the first hardware computing cluster and, if applicable, the further hardware computing clusters of the processing device, can be mapped to only one management process of the management module, which can protect them from illegal access by other processes. The management module can interact directly with the driver layer and, in particular, can be the only entity of the processing device that has access to the driver layer. In other words, the required low-level driver calls are provided in the dynamic library and the management module can execute the computing jobs of the first job type accordingly from its context.
Auf diese Weise können die zwei oder mehr Softwareapplikationen unter Verwendung lediglich der Verarbeitungsvorrichtung mit einer geringen Gesamtausführungszeit ausgeführt werden. Insbesondere können die zwei oder mehr Softwareapplikationen gemäß einer Strategie für hardwarebegrenzten Betrieb, HLOS (englisch: hardware limited operation strategy), ausgeführt werden, wobei Speichertrennung zwischen unterschiedlichen Vorgängen beibehalten wird. Zum Beispiel kann eine interne Zustandsmaschine des Managementmoduls den jeweiligen Status jeder Recheninstanz des ersten Hardware-Rechenclusters verfolgen, um die Rechenjobs des ersten Jobtyps über diese verteilt zeitlich zu planen, um eine möglichst geringe Ausführungszeit für die zwei oder mehr Softwareapplikationen zu erreichen.In this way, the two or more software applications may be executed using only the processing device with a low overall execution time. In particular, the two or more software applications may be executed according to a hardware limited operation strategy (HLOS), maintaining memory separation between different operations. For example, an internal state machine of the management module may track the respective status of each computing instance of the first hardware computing cluster in order to schedule the computing jobs of the first job type across them in order to achieve the lowest possible execution time for the two or more software applications.
Gemäß einigen Ausführungen beinhaltet die Verarbeitungsvorrichtung einen zweiten Hardware-Rechencluster und die Treiberschicht, insbesondere ein zweiter Gerätetreiber, ist dazu angepasst, den zweiten Hardware-Rechencluster zu steuern. Die dynamische Bibliothek enthält einen Satz zweiter Treiberaufrufe für die Treiberschicht gemäß einem zweiten Jobtyp, der insbesondere unterschiedlich zu dem ersten Jobtyp ist. Während der Laufzeit werden die zweiten Treiberaufrufe von dem Managementmodul geladen und zwei oder mehr Rechenjobs des zweiten Jobtyps werden von jeweiligen Recheninstanzen des zweiten Hardware-Rechenclusters parallel ausgeführt. Dabei werden die Rechenjobs des zweiten Jobtyps von einer zweiten Job-Schedulerinstanz des Managementmoduls durch Übermitteln der zweiten Treiberaufrufe an die Treiberschicht, insbesondere den zweiten Gerätetreiber, gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien gemäß mindestens zwei Softwareapplikationen zeitlich geplant.According to some embodiments, the processing device includes a second hardware computing cluster and the driver layer, in particular a second device driver, is adapted to control the second hardware computing cluster. The dynamic library contains a set of second driver calls for the driver layer according to a second job type, which is in particular different from the first job type. During runtime, the second driver calls are loaded by the management module and two or more computing jobs of the second job type are executed in parallel by respective computing instances of the second hardware computing cluster. The computing jobs of the second job type are scheduled by a second job scheduler instance of the management module by transmitting the second driver calls to the driver layer, in particular the second device driver, according to the sets of scheduler instructions of the executable files according to at least two software applications.
Bei derartigen Ausführungen können verschiedene Typen von Hardware-Recheneinheiten, insbesondere HWAs oder Koprozessoren, zur Ausführung der zwei oder mehr Softwareprogramme mit verbesserter Effizienz benutzt werden. Die verschiedenen Jobtypen werden von verschiedenen Job-Schedulerinstanzen des Managementmoduls zeitlich geplant.In such implementations, different types of hardware processing units, in particular HWAs or coprocessors, can be used to execute the two or more software programs with improved efficiency. The different job types are scheduled by different job scheduler instances of the management module.
Gemäß einigen Ausführungen beinhaltet das Ausführen einer ersten Softwareapplikation der mindestens zwei Softwareapplikationen ein Ausführen zumindest eines der Rechenjobs des ersten Jobtyps und ein Ausführen einer zweiten Softwareapplikation der mindestens zwei Softwareapplikationen beinhaltet ein Ausführen zumindest eines weiteren der Rechenjobs des ersten Jobtyps. Alternativ oder zusätzlich beinhaltet gegebenenfalls das Ausführen der ersten Softwareapplikation der mindestens zwei Softwareapplikationen ein Ausführen mindestens eines der Rechenjobs des zweiten Jobtyps und das Ausführen der zweiten Softwareapplikation der mindestens zwei Softwareapplikationen beinhaltet ein Ausführen mindestens eines weiteren der Rechenjobs des zweiten Jobtyps.According to some embodiments, executing a first software application of the at least two software applications includes executing at least one of the computing jobs of the first job type and executing a second software application of the at least two software applications includes executing at least one more of the computing jobs of the first job type. Alternatively or additionally, optionally executing the first software application of the at least two software applications includes executing at least one of the computing jobs of the second job type and executing the second software application of the at least two software applications includes executing at least one more of the computing jobs of the second job type.
Bei derartigen Ausführungen ermöglicht die Erfindung eine besonders verbesserte Effizienz hinsichtlich der Ausführungszeit.In such embodiments, the invention enables a particularly improved efficiency in terms of execution time.
Gemäß einigen Ausführungen beinhalten die mindestens zwei Softwareapplikationen, insbesondere die erste Softwareapplikation und/oder die zweite Softwareapplikation, eine Applikation zum Ausführen einer Computer-Vision-Aufgabe, zum Beispiel eine Tiefenschätzungsaufgaben, die zum Beispiel auf einem Struktur-aus-Bewegung-Algorithmus, SfM-Algorithmus (englisch: structure-from-motion algorithm), basieren kann.According to some embodiments, the at least two software applications, in particular the first software application and/or the second software application, include an application for executing a computer vision task, for example Consider a depth estimation task that can be based, for example, on a structure-from-motion algorithm (SfM algorithm).
Computer-Vision-Algorithmen, die auch als Maschinen-Vision-Algorithmen oder Algorithmen zur automatischen visuellen Wahrnehmung bezeichnet werden können, können als Computeralgorithmen zur automatischen Durchführung einer visuellen Wahrnehmungsaufgabe betrachtet werden. Eine visuelle Wahrnehmungsaufgabe, auch als Computer-Vision-Aufgabe bezeichnet, kann zum Beispiel als eine Aufgabe zum Extrahieren visueller Informationen aus Bilddaten verstanden werden. Insbesondere kann die visuelle Wahrnehmungsaufgabe in einigen Fällen im Prinzip von einem Menschen durchgeführt werden, der dazu imstande ist, ein Bild, das den Bilddaten entspricht, visuell wahrzunehmen. Im vorliegenden Zusammenhang werden die visuellen Wahrnehmungsaufgaben jedoch automatisch durchgeführt, ohne dass die Unterstützung durch einen Menschen erforderlich ist.Computer vision algorithms, which may also be referred to as machine vision algorithms or automatic visual perception algorithms, can be considered as computer algorithms for automatically performing a visual perception task. A visual perception task, also referred to as a computer vision task, can be understood, for example, as a task for extracting visual information from image data. In particular, the visual perception task can, in some cases, in principle be performed by a human who is able to visually perceive an image corresponding to the image data. In the present context, however, the visual perception tasks are performed automatically, without the need for human assistance.
Zum Beispiel kann ein Computer-Vision-Algorithmus als ein Bild-Verarbeitungs-Algorithmus oder ein Algorithmus zur Bildanalyse verstanden werden, der unter Verwendung von maschinellem Lernen trainiert wird und zum Beispiel auf einem künstlichen neuronalen Netzwerk, insbesondere einem faltenden neuronalen Netzwerk, basiert.For example, a computer vision algorithm can be understood as an image processing algorithm or an image analysis algorithm that is trained using machine learning and is based, for example, on an artificial neural network, in particular a convolutional neural network.
Zum Beispiel kann der Computer-Vision-Algorithmus einen Objekterkennungsalgorithmus, einen Hinderniserkennungsalgorithmus, einen Objektverfolgungsalgorithmus, einen Klassifizierungsalgorithmus, einen Segmentierungsalgorithmus und/oder einen Tiefenschätzungsalgorithmus beinhalten. For example, the computer vision algorithm may include an object detection algorithm, an obstacle detection algorithm, an object tracking algorithm, a classification algorithm, a segmentation algorithm, and/or a depth estimation algorithm.
Entsprechende Algorithmen können analog dazu basierend auf anderen Eingangsdaten als visuell von einem Menschen wahrnehmbaren Bildern durchgeführt werden. Zum Beispiel können Punktwolken oder Bilder von Infrarotkameras et cetera auch mittels entsprechend angepasster Computeralgorithmen analysiert werden. Genau genommen sind die entsprechenden Algorithmen jedoch nicht visuelle Wahrnehmungsalgorithmen, da die entsprechenden Sensoren in Domains arbeiten können, die vom menschlichen Auge nicht wahrnehmbar sind, wie etwa der Infrarotbereich. Daher werden hier und im Folgenden derartige Algorithmen als Wahrnehmungs- oder automatische Wahrnehmungsalgorithmen bezeichnet. Wahrnehmungsalgorithmen beinhalten daher visuelle Wahrnehmungsalgorithmen, sind aber hinsichtlich einer menschlichen Wahrnehmung nicht auf diese beschränkt. Folglich kann ein Wahrnehmungsalgorithmus gemäß diesem Verständnis als Computeralgorithmus zur automatischen Ausführung einer Wahrnehmungsaufgabe, zum Beispiel unter Verwendung eines Algorithmus zur Sensordatenanalyse oder von Verarbeitungssensordaten, die zum Beispiel unter Verwendung von maschinellem Lernen trainiert werden und zum Beispiel auf einem künstlichen neuronalen Netzwerk basieren können, betrachtet werden. Die verallgemeinerten Wahrnehmungsalgorithmen können auch Objekterkennungsalgorithmen, Objektverfolgungsalgorithmen, Klassifikationsalgorithmen und/oder Segmentierungsalgorithmen, wie etwa semantische Segmentierungsalgorithmen beinhalten.Corresponding algorithms can analogously be carried out based on input data other than images that can be visually perceived by a human. For example, point clouds or images from infrared cameras, etc. can also be analyzed using appropriately adapted computer algorithms. Strictly speaking, however, the corresponding algorithms are not visual perception algorithms, since the corresponding sensors can work in domains that are not perceptible to the human eye, such as the infrared range. Therefore, here and below, such algorithms are referred to as perception or automatic perception algorithms. Perception algorithms therefore include visual perception algorithms, but are not limited to them with regard to human perception. Consequently, a perception algorithm according to this understanding can be viewed as a computer algorithm for automatically performing a perception task, for example using an algorithm for sensor data analysis or processing sensor data that can be trained using machine learning, for example, and can be based on an artificial neural network, for example. The generalized perception algorithms may also include object detection algorithms, object tracking algorithms, classification algorithms, and/or segmentation algorithms, such as semantic segmentation algorithms.
Falls ein künstliches neuronales Netzwerk verwendet wird, um einen visuellen Wahrnehmungsalgorithmus zu implementieren, ist eine gewöhnlich verwendete Architektur ein faltendes neuronales Netzwerk, CNN (englisch: convolutional neural network). Insbesondere kann ein 2D-CNN auf die jeweiligen 2D-Kamerabilder angewendet werden. Auch für andere Wahrnehmungsalgorithmen können CNNs verwendet werden. Zum Beispiel können 3D-CNNs, 2D-CNNs oder 1 D-CNNs auf Punktwolken abhängig von den räumlichen Abmessungen der Punktwolke und den Einzelheiten der Verarbeitung angewendet werden.If an artificial neural network is used to implement a visual perception algorithm, a commonly used architecture is a convolutional neural network (CNN). In particular, a 2D CNN can be applied to the respective 2D camera images. CNNs can also be used for other perception algorithms. For example, 3D CNNs, 2D CNNs, or 1D CNNs can be applied to point clouds depending on the spatial dimensions of the point cloud and the details of the processing.
Für Anwendungsfälle oder Anwendungssituationen, die sich bei dem Verfahren ergeben können und die hier nicht explizit beschrieben sind, kann es vorgesehen sein, dass gemäß dem Verfahren eine Fehlernachricht und/oder eine Aufforderung zur Benutzerrückmeldung ausgegeben wird und/oder eine Standardeinstellung und/oder ein vorbestimmter initialer Zustand eingestellt wird.For use cases or application situations that may arise during the method and which are not explicitly described here, it may be provided that, according to the method, an error message and/or a request for user feedback is issued and/or a default setting and/or a predetermined initial state is set.
Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren zum zumindest teilweise automatischen Führen eines Fahrzeugs bereitgestellt. Dabei wird ein erfindungsgemäßes computerimplementiertes Verfahren ausgeführt, insbesondere werden die mindestens zwei Softwareapplikationen unter Verwendung einer Verarbeitungsvorrichtung wie hinsichtlich des erfindungsgemäßen computerimplementierten Verfahrens beschrieben parallel ausgeführt. Das Fahrzeug wird abhängig von einem Ergebnis oder mit anderen Worten einer Ausgabe der mindestens zwei Softwareapplikationen zumindest teilweise automatisch ausgeführt.According to a further aspect of the invention, a method for at least partially automatically driving a vehicle is provided. In this case, a computer-implemented method according to the invention is carried out, in particular the at least two software applications are carried out in parallel using a processing device as described with regard to the computer-implemented method according to the invention. The vehicle is driven at least partially automatically depending on a result or, in other words, an output of the at least two software applications.
Das Fahrzeug kann zum Beispiel ein elektronisches Fahrzeugführungssystem aufweisen, welches dazu angepasst ist, das Fahrzeug abhängig von einem Ergebnis der mindestens zwei Softwareapplikationen zumindest teilweise automatisch zu führen. Das elektronische Fahrzeugführungssystem kann zum Beispiel die Verarbeitungsvorrichtung enthalten. Zum Beispiel kann eine elektronische Steuereinheit, ECU (englisch: electronic control unit), des elektronischen Fahrzeugführungssystems die Verarbeitungsvorrichtung enthalten.The vehicle may, for example, have an electronic vehicle guidance system which is adapted to guide the vehicle at least partially automatically depending on a result of the at least two software applications. The electronic vehicle guidance system may, for example, contain the processing device. For example, an electronic control unit (ECU) of the electronic vehicle guidance system containing the processing device.
Ein elektronisches Fahrzeugführungssystem kann als ein elektronisches System verstanden werden, welches dazu eingerichtet ist, ein Fahrzeug vollautomatisch oder vollautonom und insbesondere, ohne dass ein manuelles Eingreifen oder Steuern durch einen Fahrer oder Benutzer des Fahrzeugs notwendig wäre, zu führen. Das Fahrzeug führt alle erforderlichen Funktionen, wie etwa Lenkmanöver, Abbremsmanöver und/oder Beschleunigungsmanöver sowie Überwachung und Aufzeichnung des Straßenverkehrs sowie entsprechende Reaktionen automatisch aus. Insbesondere kann das elektronische Fahrzeugführungssystem einen vollautomatischen oder vollautonomen Fahrmodus gemäß Stufe 5 der SAE J3016 Klassifikation implementieren. Ein elektronisches Fahrzeugführungssystem kann auch als ein Fahrerassistenzsystem, ADAS, implementiert sein, welches einem Fahrer beim teilautomatischen oder teilautonomen Fahren assistiert. Insbesondere kann das elektronische Fahrzeugführungssystem einen teilautomatischen oder teilautonomen Fahrmodus gemäß den Stufen 1 bis 4 der SAE J3016 Klassifikation implementieren. Hier und im Folgenden bezieht sich SAE J3016 auf den entsprechenden Standard mit Datum vom Juni 2018.An electronic vehicle guidance system can be understood as an electronic system that is designed to guide a vehicle fully automatically or fully autonomously and in particular without manual intervention or control by a driver or user of the vehicle being necessary. The vehicle automatically carries out all required functions, such as steering maneuvers, braking maneuvers and/or acceleration maneuvers as well as monitoring and recording road traffic and corresponding reactions. In particular, the electronic vehicle guidance system can implement a fully automatic or fully autonomous driving mode according to
Das wenigstens teilweise automatische Führen des Fahrzeugs kann daher ein Führen des Fahrzeugs gemäß einem vollautomatischen oder vollautonomen Fahrmodus nach Stufe 5 der SAE J3016 Klassifikation beinhalten. Das wenigstens teilweise automatische Führen des Fahrzeugs kann auch ein Führen des Fahrzeugs gemäß einem teilautomatischen oder teilautonomen Fahrmodus nach den Stufen 1 bis 4 der SAE J3016 Klassifikation beinhalten.The at least partially automatic driving of the vehicle can therefore include driving the vehicle according to a fully automatic or fully autonomous driving mode according to
Abgesehen von der Verarbeitungsvorrichtung kann das elektronische Fahrzeugführungssystem bei manchen Ausführungen eines oder mehrere Sensorsysteme aufweisen, die Umgebungssensorsysteme und/oder Fahrzeugzustandssensorsysteme, Aktuatoren zur Beeinflussung der Längs- und/oder Quersteuerung des Fahrzeugs sowie weitere ECUs und/oder Recheneinheiten beinhalten.Apart from the processing device, the electronic vehicle guidance system may, in some embodiments, comprise one or more sensor systems, which include environmental sensor systems and/or vehicle condition sensor systems, actuators for influencing the longitudinal and/or lateral control of the vehicle, and other ECUs and/or computing units.
Gemäß einem weiteren Aspekt der Erfindung wird eine Verarbeitungsvorrichtung zum parallelen Ausführen von mindestens zwei Softwareapplikationen, insbesondere durch Ausführen eines erfindungsgemäßen computerimplementierten Verfahrens, bereitgestellt. Die Verarbeitungsvorrichtung enthält einen ersten Hardware-Rechencluster und eine Treiberschicht zum Steuern des ersten Hardware-Rechenclusters. Die Verarbeitungsvorrichtung weist zumindest ein Speichergerät auf, das eine jeweilige ausführbare Datei für jede der mindestens zwei Softwareapplikationen beinhaltet, die einen Satz von Scheduleranweisungen gemäß der jeweiligen Softwareapplikation beinhaltet. Das mindestens eine Speichergerät speichert eine dynamische Bibliothek, die einen Satz von ersten Treiberaufrufen für die Treiberschicht gemäß einem ersten Jobtyp beinhaltet. Die Verarbeitungsvorrichtung beinhaltet ein Managementmodul, welches dazu angepasst ist, die ausführbaren Dateien, die den mindestens zwei Softwareapplikationen entsprechen, und die ersten Treiberaufrufe während einer Laufzeit der mindestens zwei Softwareapplikationen zu laden. Das Managementmodul ist dazu angepasst, eine erste Job-Schedulerinstanz zum zeitlichen Planen von zwei oder mehr Rechenjobs des ersten Jobtyps durch Übermitteln der ersten Treiberaufrufe an die Treiberschicht gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien, die den mindestens zwei Softwareapplikationen entsprechen, auszuführen. Der erste Hardware-Rechencluster ist dazu angepasst, die zwei oder mehr Rechenjobs des ersten Jobtyps durch jeweilige Recheninstanzen des ersten Hardware-Rechenclusters abhängig von den übermittelten ersten Treiberaufrufen parallel auszuführen.According to a further aspect of the invention, a processing device is provided for executing at least two software applications in parallel, in particular by executing a computer-implemented method according to the invention. The processing device includes a first hardware computing cluster and a driver layer for controlling the first hardware computing cluster. The processing device has at least one storage device that includes a respective executable file for each of the at least two software applications, which includes a set of scheduler instructions according to the respective software application. The at least one storage device stores a dynamic library that includes a set of first driver calls for the driver layer according to a first job type. The processing device includes a management module that is adapted to load the executable files corresponding to the at least two software applications and the first driver calls during a runtime of the at least two software applications. The management module is adapted to execute a first job scheduler instance for scheduling two or more computing jobs of the first job type by transmitting the first driver calls to the driver layer according to the sets of scheduler instructions of the executable files corresponding to the at least two software applications. The first hardware computing cluster is adapted to execute the two or more computing jobs of the first job type in parallel by respective computing instances of the first hardware computing cluster depending on the transmitted first driver calls.
Gemäß einigen Ausführungen beinhaltet die Verarbeitungsvorrichtung einen zweiten Hardware-Rechencluster und die Treiberschicht ist dazu angepasst, den zweiten Hardware-Rechencluster zu steuern. Die dynamische Bibliothek enthält einen Satz von zweiten Treiberaufrufen für die Treiberschicht gemäß einem zweiten Jobtyp. Das Managementmodul ist dazu angepasst, eine zweite Job-Schedulerinstanz zum zeitlichen Planen von zwei oder mehr Rechenjobs des zweiten Jobtyps durch Übermitteln der zweiten Treiberaufrufe an die Treiberschicht gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien, die den mindestens zwei Softwareapplikationen entsprechen, auszuführen. Der zweite Hardware-Rechencluster ist dazu angepasst, die zwei oder mehr Rechenjobs des zweiten Jobtyps durch jeweilige Recheninstanzen des zweiten Hardware-Rechenclusters abhängig von den übermittelten zweiten Treiberaufrufen auszuführen.According to some implementations, the processing device includes a second hardware computing cluster and the driver layer is adapted to control the second hardware computing cluster. The dynamic library includes a set of second driver calls for the driver layer according to a second job type. The management module is adapted to execute a second job scheduler instance for scheduling two or more computing jobs of the second job type by transmitting the second driver calls to the driver layer according to the sets of scheduler instructions of the executable files corresponding to the at least two software applications. The second hardware computing cluster is adapted to execute the two or more computing jobs of the second job type by respective computing instances of the second hardware computing cluster depending on the transmitted second driver calls.
Gemäß einigen Ausführungen ist der ersten Hardware-Rechencluster und/oder der zweite Hardware-Rechencluster als ein Koprozessor oder ein Hardwarebeschleuniger implementiert.According to some implementations, the first hardware computing cluster and/or the second hardware computing cluster is implemented as a coprocessor or a hardware accelerator.
Insbesondere weist die Verarbeitungsvorrichtung eine CPU auf und weder der erste Hardware-Rechencluster noch der zweite Hardware-Rechencluster weisen eine CPU auf.In particular, the processing device comprises a CPU and neither the first hardware computing cluster nor the second hardware computing cluster comprises a CPU.
Weitere Ausführungen der erfindungsgemäßen Verarbeitungsvorrichtung ergeben sich direkt aus den verschiedenen Ausführungen des erfindungsgemäßen Verfahrens und umgekehrt. Insbesondere können einzelne Merkmale und entsprechende Erläuterungen sowie Vorteile, die die verschiedenen Ausführungen des erfindungsgemäßen computerimplementierten Verfahrens betreffen analog auf entsprechende Ausführungen der erfindungsgemäßen Verarbeitungsvorrichtung übertragen werden. Insbesondere ist die erfindungsgemäße Verarbeitungsvorrichtung dazu ausgestaltet und programmiert, das erfindungsgemäße computerimplementierte Verfahren auszuführen. Insbesondere führt die erfindungsgemäße Verarbeitungsvorrichtung das erfindungsgemäße computerimplementierte Verfahren aus.Further embodiments of the processing device according to the invention result directly from the various embodiments of the method according to the invention and vice versa. In particular, individual features and corresponding explanations as well as advantages relating to the various embodiments of the computer-implemented method according to the invention can be transferred analogously to corresponding embodiments of the processing device according to the invention. In particular, the processing device according to the invention is designed and programmed to carry out the computer-implemented method according to the invention. In particular, the processing device according to the invention carries out the computer-implemented method according to the invention.
Wird in der vorliegenden Offenbarung erwähnt, dass die erfindungsgemäße Verarbeitungsvorrichtung oder eine Komponente der Verarbeitungsvorrichtung dazu angepasst, eingerichtet oder ausgestaltet et cetera ist, eine bestimmte Funktion durchzuführen oder zu realisieren, eine bestimmte Wirkung zu erreichen oder einem bestimmten Zweck zu dienen, so kann dies derart verstanden werden, dass die Komponente über ihre Benutzbarkeit oder Eignung für diese Funktion, diese Wirkung oder diesen Zweck hinaus im Prinzip oder theoretisch konkret und tatsächlich dazu imstande ist, die Funktion auszuführen oder zu realisieren, die Wirkung zu erreichen oder dem Zweck zu dienen durch eine entsprechende Anpassung, Programmierung, physisches Design und so weiter.If it is mentioned in the present disclosure that the processing device according to the invention or a component of the processing device is adapted, set up or configured, etc., to perform or realize a certain function, to achieve a certain effect or to serve a certain purpose, this can be understood to mean that the component, beyond its usability or suitability for this function, effect or purpose, is in principle or theoretically concretely and actually capable of performing or realizing the function, achieving the effect or serving the purpose through appropriate adaptation, programming, physical design, etc.
Gemäß einem weiteren Aspekt der Erfindung wird eine ECU für ein Fahrzeug bereitgestellt, wobei die ECU eine erfindungsgemäße Verarbeitungsvorrichtung beinhaltet.According to a further aspect of the invention, an ECU for a vehicle is provided, the ECU including a processing device according to the invention.
Gemäß einem weiteren Aspekt der Erfindung wird ein elektronisches Fahrzeugführungssystem für ein Fahrzeug, das eine erfindungsgemäße Verarbeitungsvorrichtung oder eine erfindungsgemäße ECU aufweist, bereitgestellt. Das elektronische Fahrzeugführungssystem ist insbesondere dazu angepasst, das Fahrzeug abhängig von einem Ergebnis der mindestens zwei Softwareapplikationen zumindest teilweise automatisch zu führen.According to a further aspect of the invention, an electronic vehicle guidance system is provided for a vehicle which has a processing device according to the invention or an ECU according to the invention. The electronic vehicle guidance system is particularly adapted to guide the vehicle at least partially automatically depending on a result of the at least two software applications.
Gemäß einem weiteren Aspekt der Erfindung wird ein erstes Computerprogramm, welches erste Befehle beinhaltet, bereitgestellt. Wenn die ersten Befehle von einer erfindungsgemäßen Verarbeitungsvorrichtung ausgeführt werden, veranlassen die ersten Befehle die Verarbeitungsvorrichtung dazu, ein erfindungsgemäßes computerimplementiertes Verfahren auszuführen.According to a further aspect of the invention, a first computer program is provided which includes first instructions. When the first instructions are executed by a processing device according to the invention, the first instructions cause the processing device to execute a computer-implemented method according to the invention.
Gemäß einem weiteren Aspekt der Erfindung wird ein zweites Computerprogramm, welches zweite Befehle beinhaltet, bereitgestellt. Wenn die zweiten Befehle von einem erfindungsgemäßen elektronischen Fahrzeugführungssystem ausgeführt werden, veranlassen die zweiten Befehle das elektronische Fahrzeugführungssystem dazu, ein erfindungsgemäßes Verfahren zum zumindest teilweise automatischen Führen eines Fahrzeugs auszuführen.According to a further aspect of the invention, a second computer program is provided which contains second instructions. When the second instructions are executed by an electronic vehicle guidance system according to the invention, the second instructions cause the electronic vehicle guidance system to execute a method according to the invention for at least partially automatically guiding a vehicle.
Gemäß einem weiteren Aspekt der Erfindung wird ein computerlesbares Medium bereitgestellt, welches ein erstes erfindungsgemäßes Computerprogramm und/oder ein zweites erfindungsgemäßes Computerprogramm speichert.According to a further aspect of the invention, a computer-readable medium is provided which stores a first computer program according to the invention and/or a second computer program according to the invention.
Die ersten und/oder zweiten Befehle können als jeweiliger Programmcode bereitgestellt werden. Der Programmcode kann als Binärcode oder Assembler und/oder als Quellcode einer Programmiersprache, zum Beispiel C, und/oder als Programmskript, zum Beispiel Python, bereitgestellt werden.The first and/or second instructions may be provided as respective program code. The program code may be provided as binary code or assembler and/or as source code of a programming language, for example C, and/or as a program script, for example Python.
Das erste Computerprogramm, das zweite Computerprogramm und das computerlesbare Medium können als jeweilige Computerprogrammprodukte, welche jeweils die ersten und/oder die zweiten Befehle beinhalten, bezeichnet werden.The first computer program, the second computer program and the computer-readable medium may be referred to as respective computer program products, each of which includes the first and/or second instructions.
Weitere Merkmale der Erfindung ergeben sich aus den Ansprüchen, den Figuren und der Figurenbeschreibung. Die vorstehend in der Beschreibung genannten Merkmale und Merkmalskombinationen sowie die nachfolgend in der Figurenbeschreibung genannten und/oder in den Figuren alleine gezeigten Merkmale und Merkmalskombinationen können von der Erfindung nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen umfasst sein. Insbesondere können auch Ausführungsformen und Merkmalskombinationen von der Erfindung umfasst sein, die nicht alle der Merkmale eines ursprünglich formulierten Anspruchs aufweisen. Darüber hinaus können Ausführungsformen und Merkmalskombinationen von der Erfindung umfasst sein, die über die in den Rückbezügen der Ansprüche dargelegten Merkmalskombinationen hinausgehen oder davon abweichen.Further features of the invention emerge from the claims, the figures and the description of the figures. The features and combinations of features mentioned above in the description as well as the features and combinations of features mentioned below in the description of the figures and/or shown in the figures alone can be included in the invention not only in the combination specified in each case, but also in other combinations. In particular, the invention can also include embodiments and combinations of features that do not have all of the features of an originally formulated claim. In addition, the invention can include embodiments and combinations of features that go beyond or deviate from the combinations of features set out in the references to the claims.
Im Folgenden wird die Erfindung im Einzelnen mit Bezug auf spezifische beispielhafte Ausführungen und jeweilige schematische Zeichnungen erläutert. In den Zeichnungen können identische und funktionsgleiche Elemente mit denselben Bezugszeichen bezeichnet sein. Die Beschreibung identischer oder funktionsgleicher Elemente wird mit Bezug auf andere Figuren nicht notwendigerweise wiederholt.In the following, the invention is explained in detail with reference to specific exemplary embodiments and respective schematic drawings. In the drawings, identical and functionally equivalent elements may be designated by the same reference numerals. The description of identical or functionally equivalent elements is not necessarily repeated with reference to other figures.
In den Figuren zeigen:
-
1 schematisch ein Fahrzeug mit einer beispielhaften Ausführung eines erfindungsgemäßen elektronischen Fahrzeugführungssystems; -
2 ein schematisches Blockdiagramm einer beispielhaften Ausführung einer erfindungsgemäßen Verarbeitungsvorrichtung; -
3 ein schematisches Blockdiagramm einer weiteren beispielhaften Ausführung einer erfindungsgemäßen Verarbeitungsvorrichtung; -
4 ein schematisches Blockdiagramm einer Job-Schedulerinstanz in einer weiteren beispielhaften Ausführung einer erfindungsgemäßen Verarbeitungsvorrichtung; -
5 ein Kommunikationsschema bei einer weiteren beispielhaften Ausführung einer erfindungsgemäßen Verarbeitungsvorrichtung; und -
6 ein schematisches Blockdiagramm einer Zustandsmaschine eines Managementmoduls bei einer weiteren Ausführung einer erfindungsgemäßen Verarbeitungsvorrichtung.
-
1 schematically shows a vehicle with an exemplary embodiment of an electronic vehicle guidance system according to the invention; -
2 a schematic block diagram of an exemplary embodiment of a processing device according to the invention; -
3 a schematic block diagram of another exemplary embodiment of a processing device according to the invention; -
4 a schematic block diagram of a job scheduler instance in another exemplary embodiment of a processing device according to the invention; -
5 a communication scheme in another exemplary embodiment of a processing device according to the invention; and -
6 a schematic block diagram of a state machine of a management module in a further embodiment of a processing device according to the invention.
Ein Blockdiagramm einer beispielhaften Ausführung der Verarbeitungsvorrichtung 1 ist in
Die Verarbeitungsvorrichtung 1 weist ein Managementmodul 6 auf, welches dazu angepasst ist, die ausführbaren Dateien 9, die den mindestens zwei Softwareapplikationen 9a, 9b, 9c entsprechen, und die ersten Treiberaufrufe während einer Laufzeit der mindestens zwei Softwareapplikationen 9a, 9b, 9c auszuführen. Das Managementmodul 6 ist dazu angepasst, eine erste Job-Schedulerinstanz 22a (siehe zum Beispiel
Zum Beispiel kann die Verarbeitungsvorrichtung 1 auch einen zweiten Hardware-Rechencluster 8b beinhalten und die Treiberschicht 7 kann einen zweiten Gerätetreiber 7b beinhalten, welcher dazu angepasst ist, den zweiten Hardware-Rechencluster 8b wie in
Ein Rechenjob kann zum Beispiel eine jeweilige Liste von Konfigurationen und eine Anweisungsliste, die zum Beispiel ein Modell oder eine Liste von Vertices et cetera enthält, sowie eine Eingabe, eine spezifische Funktion auszuführen und eine entsprechende Ausgabe zu erzeugen, enthalten.For example, a computation job may contain a respective list of configurations and an instruction list containing, for example, a model or a list of vertices, etc., as well as an input to execute a specific function and produce a corresponding output.
Wie insbesondere anhand der Figuren beschrieben, ermöglicht es die Erfindung zwei oder mehr Softwareapplikationen unter Verwendung einer einzigen Verarbeitungsvorrichtung mit einer geringen Ausführungszeit unter Verwendung eines verbesserten Managements von verfügbaren Hardware-Rechenclustern, insbesondere Koprozessoren und/oder Hardwarebeschleunigern, auszuführen.As described in particular with reference to the figures, the invention enables two or more software applications to be executed using a single processing device with a low execution time using improved management of available hardware computing clusters, in particular coprocessors and/or hardware accelerators.
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN THE DESCRIPTION
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.This list of documents listed by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA accepts no liability for any errors or omissions.
Zitierte PatentliteraturCited patent literature
- WO 2021195949 A1 [0004]WO 2021195949 A1 [0004]
Claims (15)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102022126913.2A DE102022126913A1 (en) | 2022-10-14 | 2022-10-14 | Computer-implemented method for parallel execution of software applications using a processing device containing a hardware computing cluster, and processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102022126913.2A DE102022126913A1 (en) | 2022-10-14 | 2022-10-14 | Computer-implemented method for parallel execution of software applications using a processing device containing a hardware computing cluster, and processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102022126913A1 true DE102022126913A1 (en) | 2024-04-25 |
Family
ID=90572709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102022126913.2A Pending DE102022126913A1 (en) | 2022-10-14 | 2022-10-14 | Computer-implemented method for parallel execution of software applications using a processing device containing a hardware computing cluster, and processing device |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102022126913A1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021195949A1 (en) | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | Method for scheduling hardware accelerator, and task scheduler |
WO2022187107A1 (en) | 2021-03-01 | 2022-09-09 | Nvidia Corporation | Interface for multiple processors |
-
2022
- 2022-10-14 DE DE102022126913.2A patent/DE102022126913A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021195949A1 (en) | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | Method for scheduling hardware accelerator, and task scheduler |
WO2022187107A1 (en) | 2021-03-01 | 2022-09-09 | Nvidia Corporation | Interface for multiple processors |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102017120438A1 (en) | ADVANCED TUTORIAL FOR AN AUTONOMOUS VEHICLE | |
DE102018126270A1 (en) | DECENTRALIZED VEHICLE CONTROL OF THE MINIMUM RISK CONDITION | |
DE102015002191A1 (en) | Security hypervisor function | |
DE102017201966A1 (en) | Control device for a motor vehicle and corresponding motor vehicle | |
DE102018202446A1 (en) | Method for modularizing a software architecture | |
DE102021130092A1 (en) | SYSTEM FOR PARALLEL PROCESSING OF APPLICATION ALGORITHMS FOR MIDDLEWARE NODES USING THREADS | |
EP3015992B1 (en) | Method for managing prioritized input data | |
DE102014014858A1 (en) | Control device for a motor vehicle, motor vehicle and method for safely performing a function | |
EP3935463B1 (en) | Method and device for operating an automated vehicle | |
DE102022126913A1 (en) | Computer-implemented method for parallel execution of software applications using a processing device containing a hardware computing cluster, and processing device | |
DE112013007676T5 (en) | information device | |
DE102006006843B4 (en) | Method for responding to a control module failure | |
DE112018005534T5 (en) | INFORMATION PROCESSING DEVICE, AUTONOMOUS MOTION DEVICE AND METHOD AND PROGRAM | |
DE102016219449A1 (en) | Parallelization method, parallelization tool and vehicle-mounted device | |
DE102020125714A1 (en) | SYSTEMS AND METHODS FOR DISTRIBUTED PROCESSING IN AN INFORMATION ECOSYSTEM | |
EP4016296A1 (en) | Vehicle control apparatus with synchronous driver | |
DE102021201212A1 (en) | Method for controlling a plurality of driving functions in an automated or autonomous vehicle | |
DE112009001842T5 (en) | Control device, control method and computer program | |
DE102019130484A1 (en) | Method and device for training an ensemble of neural networks | |
EP3901780A1 (en) | Digital circuit and method for configuring at least one configurable hardware component | |
EP2126700B1 (en) | Control of the run time behavior of processes | |
DE102018123563B4 (en) | Method for inter-core communication in a multi-core processor | |
DE102019205081A1 (en) | Method, device and computer program for operating a deep neural network | |
EP3893113B1 (en) | Monitoring of a component of a control system for a moving means | |
WO2021122366A1 (en) | Improving the operating parameters of a computing system in vehicles |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R081 | Change of applicant/patentee |
Owner name: CONNAUGHT ELECTRONICS LTD., TUAM, IE Free format text: FORMER OWNER: CONNAUGHT ELECTRONICS LTD., TUAM, GALWAY, IE |
|
R163 | Identified publications notified |