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 PDF

Info

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
Application number
DE102022126913.2A
Other languages
German (de)
Inventor
Amr Fawzy
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.)
CONNAUGHT ELECTRONICS LTD., TUAM, IE
Original Assignee
Connaught Electronics Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Connaught Electronics Ltd filed Critical Connaught Electronics Ltd
Priority to DE102022126913.2A priority Critical patent/DE102022126913A1/en
Publication of DE102022126913A1 publication Critical patent/DE102022126913A1/en
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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

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 WO 2021/195949 A1 beschreibt ein Verfahren zum zeitlichen Planen eines Hardwarebeschleunigers, wobei ein Aufgaben-Scheduler zwischen einer CPU und jedem Hardwarebeschleuniger verbunden ist. Ein Aufgaben-Scheduler erfasst eine Zielaufgabe und erfasst das Abhängigkeitsverhältnis zwischen der Zielaufgabe und zugeordneten Aufgaben. Wenn gemäß dem Abhängigkeitsverhältnis festgestellt wird, dass eine erste zugeordnete Aufgabe unter den zugeordneten Aufgaben ausgeführt worden ist, erfüllt die Zielaufgabe eine Bedingung für ihre Ausführung und der Aufgaben-Scheduler nimmt die zeitliche Planung für die Ausführung der Zielaufgabe durch einen relevanten Hardwarebeschleuniger vor.The WO 2021/195949 A1 describes a method for scheduling a hardware accelerator, wherein a task scheduler is connected between a CPU and each hardware accelerator. A task scheduler detects a target task and detects the dependency relationship between the target task and associated tasks. If it is determined according to the dependency relationship that a first associated task among the associated tasks has been executed, the target task satisfies a condition for its execution and the task scheduler schedules the execution of the target task by a relevant hardware accelerator.

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 level 5 of the SAE J3016 classification. An electronic vehicle guidance system can also be implemented as a driver assistance system, ADAS, which assists a driver in partially automatic or partially autonomous driving. In particular, the electronic vehicle guidance system can implement a partially automatic or partially autonomous driving mode according to levels 1 to 4 of the SAE J3016 classification. Here and below, SAE J3016 refers to the corresponding standard dated June 2018.

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 level 5 of the SAE J3016 classification. The at least partially automatic driving of the vehicle can also include driving the vehicle according to a partially automatic or partially autonomous driving mode according to levels 1 to 4 of the SAE J3016 classification.

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.
In the figures show:
  • 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.

1 zeigt ein Fahrzeug 1 mit einer beispielhaften Ausführung eines erfindungsgemäßen elektronischen Fahrzeugführungssystems 4. Das elektronische Fahrzeugführungssystem 4 weist eine erfindungsgemäße Verarbeitungsvorrichtung 1, zum Beispiel als Teil einer elektronischen Steuereinheit, ECU, 2 auf. Die ECU 2 kann zum Beispiel Daten von einem Peripheriegerät 3, wie etwa einem Sensor oder Aktuator, des Fahrzeugs 1 empfangen und/oder das Peripheriegerät 3 unter Verwendung der Verarbeitungsvorrichtung 1 steuern. Insbesondere kann die Verarbeitungsvorrichtung 1 eine erfindungsgemäßes computerimplementiertes Verfahren ausführen, um mindestens zwei Softwareapplikationen 9a, 9b, 9c auszuführen (siehe zum Beispiel 3). Das elektronische Fahrzeugführungssystem 4 kann das Fahrzeug 5 abhängig von einem Ergebnis der mindestens zwei Softwareapplikationen 9a, 9b, 9c zumindest teilweise automatisch führen. 1 shows a vehicle 1 with an exemplary embodiment of an electronic vehicle guidance system 4 according to the invention. The electronic vehicle guidance system 4 has a processing device 1 according to the invention, for example as part of an electronic control unit, ECU, 2. The ECU 2 can, for example, receive data from a peripheral device 3, such as a sensor or actuator, of the vehicle 1 and/or control the peripheral device 3 using the processing device 1. In particular, the processing device 1 can execute a computer-implemented method according to the invention to execute at least two software applications 9a, 9b, 9c (see, for example, 3 ). The electronic vehicle guidance system 4 can guide the vehicle 5 at least partially automatically depending on a result of the at least two software applications 9a, 9b, 9c.

Ein Blockdiagramm einer beispielhaften Ausführung der Verarbeitungsvorrichtung 1 ist in 2 gezeigt. Die Verarbeitungsvorrichtung 1 enthält einen ersten Hardware-Rechencluster 8a und eine Treiberschicht 7, die einen ersten Gerätetreiber 7a zum Steuern des ersten Hardware-Rechenclusters 8a beinhaltet. Des Weiteren beinhaltet die Verarbeitungsvorrichtung 1 mindestens ein Speichergerät (nicht gezeigt), welches eine jeweilige ausführbare Datei 9 für jede der mindestens zwei Softwareapplikationen 9a, 9b, 9c speichert. Jede der ausführbaren Dateien 9 beinhaltet einen Satz von Scheduleranweisungen gemäß der jeweiligen Softwareapplikation 9a, 9b, 9c. Das zumindest eine Speichergerät speichert auch eine dynamische Bibliothek 10, welche einen Satz von ersten Treiberaufrufen für die Treiberschicht 7 gemäß einem ersten Jobtyp enthält.A block diagram of an exemplary embodiment of the processing device 1 is shown in 2 The processing device 1 includes a first hardware computing cluster 8a and a driver layer 7 including a first device driver 7a for controlling the first hardware computing cluster 8a. Furthermore, the processing device 1 includes at least one storage device (not shown) storing a respective executable file 9 for each of the at least two software applications 9a, 9b, 9c. Each of the executable files 9 includes a set of scheduler instructions according to the respective software application 9a, 9b, 9c. The at least one storage device also stores a dynamic library 10 containing a set of first driver calls for the driver layer 7 according to a first job type.

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 3) zum zeitlichen Planen von zwei oder mehr Rechenjobs des ersten Jobtyps durch Übermitteln der ersten Treiberaufrufe an den ersten Gerätetreiber 7a gemäß den Sätzen der Scheduleranweisungen der ausführbaren Dateien 9, die den mindestens zwei Softwareapplikationen 9a, 9b, 9c entsprechen, auszuführen. Der erste Hardware-Rechencluster 8a ist dazu angepasst, zwei oder mehr Rechenjobs des ersten Jobtyps durch jeweilige Recheninstanzen 11 a, 12a, 13a (siehe zum Beispiel 3) des ersten Hardware-Rechenclusters 8a abhängig von den übermittelten ersten Treiberaufrufen parallel auszuführen.The processing device 1 comprises a management module 6 which is adapted to execute the executable files 9 corresponding to the at least two software applications 9a, 9b, 9c and the first driver calls during a runtime of the at least two software applications 9a, 9b, 9c. The management module 6 is adapted to execute a first job scheduler instance 22a (see for example 3 ) for scheduling two or more computing jobs of the first job type by transmitting the first driver calls to the first device driver 7a according to the sets of scheduler instructions of the executable files 9 corresponding to the at least two software applications 9a, 9b, 9c. The first hardware computing cluster 8a is adapted to execute two or more computing jobs of the first job type by respective computing instances 11a, 12a, 13a (see for example 3 ) of the first hardware computing cluster 8a in parallel depending on the transmitted first driver calls.

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 2 angedeutet zu steuern. Die dynamische Bibliothek 10 enthält dann einen Satz von zweiten Treiberaufrufen für die Treiberschicht 7 gemäß einem zweiten Jobtyp, der sich von dem ersten Jobtyp unterscheidet. Das Managementmodul 6 ist dazu angepasst, eine zweite Job-Schedulerinstanz 22b (siehe zum Beispiel 3) zum zeitlichen Planen von zwei oder mehr Rechenjobs des zweiten Jobtyps durch Übermitteln der zweiten Treiberaufrufe an den zweiten Gerätetreiber 7b gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien 9, die den mindestens zwei Softwareapplikationen 9a, 9b, 9c entsprechen, auszuführen. Der zweite Hardware-Rechencluster 8b ist dazu angepasst, die zwei oder mehr Rechenjobs des zweiten Jobtyps durch jeweilige Recheninstanzen 11 b, 12b, 13b (siehe zum Beispiel 3) des zweiten Hardware-Rechenclusters 8b abhängig von den übermittelten zweiten Treiberaufrufen parallel auszuführen.For example, the processing device 1 may also include a second hardware computing cluster 8b and the driver layer 7 may include a second device driver 7b adapted to control the second hardware computing cluster 8b as in 2 The dynamic library 10 then contains a set of second driver calls for the driver layer 7 according to a second job type that differs from the first job type. The management module 6 is adapted to control a second job scheduler instance 22b (see for example 3 ) for scheduling two or more computing jobs of the second job type by transmitting the second driver calls to the second device driver 7b according to the sets of scheduler instructions of the executable files 9 corresponding to the at least two software applications 9a, 9b, 9c. The second hardware computing cluster 8b is adapted to execute the two or more computing jobs of the second job type by respective computing instances 11b, 12b, 13b (see for example 3 ) of the second hardware computing cluster 8b in parallel depending on the transmitted second driver calls.

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.

3 zeigt ein Blockdiagramm einer weiteren beispielhaften Ausführung einer erfindungsgemäßen Verarbeitungsvorrichtung 1, die auf einer Verarbeitungsvorrichtung von 2 basiert. Dabei beinhaltet das Managementmodul 6 eine Service-Schnittstellenschicht 14 zum Empfangen der ausführbaren Dateien 9 und der Daten aus der dynamischen Bibliothek 10. Jede der Job-Schedulerinstanzen 22a, 22b weist eine jeweilige Anweisungswarteschlange 15a, 15b, auch als Prioritätswarteschlange bezeichnet, einen jeweiligen Algorithmus zur zeitlichen Planung, der hinsichtlich des zugeordneten Hardware-Rechenclusters 8a, 8b vollständig konfigurierbar ist, einen jeweiligen Arbeitsstrang-Cluster 16a, 16b und einen jeweiligen Dispatcher 17a, 17b auf. Die mindestens zwei Softwareapplikationen 9a, 9b, 9c können zum Beispiel ihre jeweilige Anfrage an die Hardware-Rechencluster 8a, 8b zur Ausführung der erforderlichen Jobs über die Anweisungswarteschlangen 15a, 15b absenden. Die Dispatcher 17a, 17b sind jeweilige Softwaremodule, die dazu imstande sind, zu entscheiden, welcher Job an welchen Arbeitsstrang 16a, 16b und folglich an welche Recheninstanz 11a, 11b, 12a, 12b, 13a, 13b gehen soll. 3 shows a block diagram of another exemplary embodiment of a processing device 1 according to the invention, which is based on a processing device of 2 The management module 6 includes a service interface layer 14 for receiving the executable files 9 and the data from the dynamic library 10. Each of the job scheduler instances zen 22a, 22b have a respective instruction queue 15a, 15b, also referred to as a priority queue, a respective scheduling algorithm that is fully configurable with respect to the associated hardware computing cluster 8a, 8b, a respective work thread cluster 16a, 16b and a respective dispatcher 17a, 17b. The at least two software applications 9a, 9b, 9c can, for example, send their respective request to the hardware computing clusters 8a, 8b to execute the required jobs via the instruction queues 15a, 15b. The dispatchers 17a, 17b are respective software modules that are able to decide which job should go to which workstream 16a, 16b and consequently to which computing instance 11a, 11b, 12a, 12b, 13a, 13b.

4 zeigt ein Blockdiagramm einer beispielhaften Ausführung der ersten Job-Schedulerinstanz 22a des in 3 gezeigten Managementmoduls 6. Die erste Job-Schedulerinstanz 22a kann eine Vielzahl von Arbeitssträngen 18a, 19a, 20a (cmdProc) in dem Arbeitsstrang-Cluster 16a initialisieren, wobei die Anzahl der Stränge gleich der Gesamtanzahl von Hardware-Rechenclustern 8a, 8b sein kann. Der Dispatcher 17a kann eine Client-Serviceanfrage empfangen, welche die ausführbare Datei 9 und zum Beispiel Metadaten enthält. Der Dispatcher 17a kann die Anfragepriorität hinsichtlich des gegenwärtigen Lastzustands der Hardware-Rechencluster 8a, 8b auswerten und entscheiden, ob die Anfrage sofort ausgeführt wird oder die Anfrage zurückgehalten wird bis der Lastzustand sich mit Hilfe einer Prioritätswarteschlange ändert. Die zweite Job-Schedulerinstanz 22b kann analog implementiert sein. 4 shows a block diagram of an exemplary embodiment of the first job scheduler instance 22a of the 3 shown management module 6. The first job scheduler instance 22a can initialize a plurality of work threads 18a, 19a, 20a (cmdProc) in the work thread cluster 16a, wherein the number of threads can be equal to the total number of hardware computing clusters 8a, 8b. The dispatcher 17a can receive a client service request containing the executable file 9 and, for example, metadata. The dispatcher 17a can evaluate the request priority with respect to the current load state of the hardware computing clusters 8a, 8b and decide whether the request is executed immediately or the request is held back until the load state changes with the aid of a priority queue. The second job scheduler instance 22b can be implemented analogously.

5 zeigt ein Kommunikationsschema bei einer weiteren beispielhaften Ausführung einer Verarbeitungsvorrichtung 1. Bei diesem Beispiel werden sechs Hardware-Rechencluster 8a, 8b, 8c, 8d, 8e, 8f und entsprechende Gerätetreiber 7a, 7b, 7c, 7e, 7f bereitgestellt. Für jede von, in diesem Beispiel, drei Softwareapplikationen 9a, 9b, 9c kann das Managementmodul 6 die jeweiligen Hardwareanweisungen 21 a, 21 b, 21c an die Gerätetreiber 7a, 7b, 7c, 7e, 7f übermitteln. 5 shows a communication scheme in another exemplary embodiment of a processing device 1. In this example, six hardware computing clusters 8a, 8b, 8c, 8d, 8e, 8f and corresponding device drivers 7a, 7b, 7c, 7e, 7f are provided. For each of, in this example, three software applications 9a, 9b, 9c, the management module 6 can transmit the respective hardware instructions 21a, 21b, 21c to the device drivers 7a, 7b, 7c, 7e, 7f.

6 zeigt ein schematisches Blockdiagramm einer Zustandsmaschine eines Managementmoduls 6 bei einer weiteren beispielhaften Ausführung einer Verarbeitungsvorrichtung 1. Jeder Hardware-Rechencluster 8a, 8b, 8c, 8d, 8e, 8f kann in dem Nicht-Initialisiert-Zustand 600 als ein Hinweis darauf beginnen, dass noch keine Laufzeitladung der ausführbaren Dateien 9 oder der dynamischen Bibliothek 10 ausgeführt wurde. Nach der Initialisierung wird in Block 610 geprüft, ob die Initialisierung fehlgeschlagen ist, in diesem Fall gelangt der jeweilige Hardware-Rechencluster 8a, 8b, 8c, 8d, 8e, 8f in einen Fehler-Zustand 620, oder erfolgreich ist. In diesem Fall gelangt der Hardware-Rechencluster 8a, 8b, 8c, 8d, 8e, 8f in einen Verfügbar-Zustand 630. Sobald eine Anweisung an einen Arbeitsstrang-Cluster 16a, 16b eines verfügbaren Hardware-Rechenclusters 8a, 8b, 8c, 8d, 8e, 8f ergangen ist, ändert sich sein Zustand in einen Belegt-Zustand 640. Sobald der jeweilige Hardware-Rechencluster 8a, 8b, 8c, 8d, 8e, 8f die Ausführung der gegenwärtigen Anweisung beendet, überprüft der Arbeitsstrang-Cluster 16a, 16b in Block 650, ob anhängige Anweisungen über die Prioritätswarteschlange vorliegen, und fährt mit der Ausführung der Anweisung mit der höchsten Priorität in dem Belegt-Zustand 640 fort. Ist die Prioritätswarteschlange leer, so ist der Verfügbar-Zustand 630 eingetreten. 6 shows a schematic block diagram of a state machine of a management module 6 in another exemplary embodiment of a processing device 1. Each hardware computing cluster 8a, 8b, 8c, 8d, 8e, 8f can start in the non-initialized state 600 as an indication that no runtime loading of the executable files 9 or the dynamic library 10 has yet been carried out. After initialization, a check is made in block 610 as to whether initialization has failed, in which case the respective hardware computing cluster 8a, 8b, 8c, 8d, 8e, 8f enters an error state 620 or is successful. In this case, the hardware computing cluster 8a, 8b, 8c, 8d, 8e, 8f enters an available state 630. As soon as an instruction is issued to a work thread cluster 16a, 16b of an available hardware computing cluster 8a, 8b, 8c, 8d, 8e, 8f, its state changes to a busy state 640. As soon as the respective hardware computing cluster 8a, 8b, 8c, 8d, 8e, 8f finishes executing the current instruction, the work thread cluster 16a, 16b checks in block 650 whether there are pending instructions via the priority queue and continues executing the instruction with the highest priority in the busy state 640. If the priority queue is empty, the available state 630 has occurred.

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)

Computerimplementiertes Verfahren zum parallelen Ausführen von mindestens zwei Softwareapplikationen (9a, 9b, 9c) unter Verwendung einer Verarbeitungsvorrichtung (1), welche einen ersten Hardware-Rechencluster (8a) und eine Treiberschicht (7) zum Steuern des ersten Hardware-Rechenclusters (8a) enthält, wobei - für jede der mindestens zwei Softwareapplikationen (9a, 9b, 9c) eine ausführbare Datei (9), die einen Satz von Scheduleranweisungen gemäß der jeweiligen Softwareapplikation beinhaltet, bereitgestellt wird; - eine dynamische Bibliothek (10), die einen Satz von ersten Treiberaufrufen für die Treiberschicht (7) gemäß einem ersten Jobtyp beinhaltet, bereitgestellt wird; - während einer Laufzeit der mindestens zwei Softwareapplikationen (9a, 9b, 9c) die ausführbaren Dateien (9), die den mindestens zwei Softwareapplikationen (9a, 9b, 9c) entsprechen, und die ersten Treiberaufrufe von einem Managementmodul (6) geladen werden; und - während der Laufzeit zwei oder mehr Rechenjobs des ersten Jobtyps von jeweiligen Recheninstanzen (11a, 11b, 12a, 12b, 13a, 13b) des ersten Hardware-Rechenclusters (8a) parallel ausgeführt werden, wobei die Rechenjobs des ersten Jobtyps von einer ersten Job-Schedulerinstanz (22a) des Managementmoduls (6) durch Übermitteln der ersten Treiberaufrufe an die Treiberschicht (7) gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien (9), die den mindestens zwei Softwareapplikationen (9a, 9b, 9c) entsprechen, zeitlich geplant werden.Computer-implemented method for parallel execution of at least two software applications (9a, 9b, 9c) using a processing device (1) which contains a first hardware computing cluster (8a) and a driver layer (7) for controlling the first hardware computing cluster (8a), wherein - for each of the at least two software applications (9a, 9b, 9c) an executable file (9) containing a set of scheduler instructions according to the respective software application is provided; - a dynamic library (10) containing a set of first driver calls for the driver layer (7) according to a first job type is provided; - during a runtime of the at least two software applications (9a, 9b, 9c), the executable files (9) corresponding to the at least two software applications (9a, 9b, 9c) and the first driver calls are loaded by a management module (6); and - during runtime, two or more computing jobs of the first job type are executed in parallel by respective computing instances (11a, 11b, 12a, 12b, 13a, 13b) of the first hardware computing cluster (8a), wherein the computing jobs of the first job type are scheduled by a first job scheduler instance (22a) of the management module (6) by transmitting the first driver calls to the driver layer (7) according to the sets of scheduler instructions of the executable files (9) corresponding to the at least two software applications (9a, 9b, 9c). Computerimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass - die Verarbeitungsvorrichtung (1) einen zweiten Hardware-Rechencluster (8b) aufweist und die Treiberschicht (7) dazu angepasst ist, den zweiten Hardware-Rechencluster (8b) zu steuern; - die dynamische Bibliothek (10) einen Satz von zweiten Treiberaufrufen für die Treiberschicht (7) gemäß einem zweiten Jobtyp enthält; und - während der Laufzeit die zweiten Treiberaufrufe von dem Managementmodul (6) geladen werden und zwei oder mehr Rechenjobs des zweiten Jobtyps von jeweiligen Recheninstanzen (11a, 11b, 12a, 12b, 13a, 13b) des zweiten Hardware-Rechenclusters (8b) parallel ausgeführt werden, wobei die Rechenjobs des zweiten Jobtyps von einer zweiten Job-Schedulerinstanz (22b) des Managementmoduls (6) durch Übermitteln der zweiten Treiberaufrufe an die Treiberschicht (7) gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien (9), die den mindestens zwei Softwareapplikationen (9a, 9b, 9c) entsprechen, zeitlich geplant werden.Computer-implemented method according to Claim 1 , characterized in that - the processing device (1) has a second hardware computing cluster (8b) and the driver layer (7) is adapted to control the second hardware computing cluster (8b); - the dynamic library (10) contains a set of second driver calls for the driver layer (7) according to a second job type; and - during runtime, the second driver calls are loaded by the management module (6) and two or more computing jobs of the second job type are executed in parallel by respective computing instances (11a, 11b, 12a, 12b, 13a, 13b) of the second hardware computing cluster (8b), wherein the computing jobs of the second job type are scheduled by a second job scheduler instance (22b) of the management module (6) by transmitting the second driver calls to the driver layer (7) according to the sets of scheduler instructions of the executable files (9) corresponding to the at least two software applications (9a, 9b, 9c). Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass - das Ausführen einer ersten Softwareapplikation (9a) der mindestens zwei Softwareapplikationen (9a, 9b, 9c) ein Ausführen mindestens eines der Rechenjobs des ersten Typs beinhaltet; und - das Ausführen einer zweiten Softwareapplikation (9b) der mindestens zwei Softwareapplikationen (9a, 9b, 9c) ein Ausführen mindestens eines weiteren der Rechenjobs des ersten Typs beinhaltet.Computer-implemented method according to one of the preceding claims, characterized in that - executing a first software application (9a) of the at least two software applications (9a, 9b, 9c) includes executing at least one of the computing jobs of the first type; and - executing a second software application (9b) of the at least two software applications (9a, 9b, 9c) includes executing at least one further of the computing jobs of the first type. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die mindestens zwei Softwareapplikationen (9a, 9b, 9c) eine Applikation zum Ausführen einer Computer-Vision-Aufgabe beinhalten.Computer-implemented method according to one of the preceding claims, characterized in that the at least two software applications (9a, 9b, 9c) include an application for executing a computer vision task. Computerimplementiertes Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass die Computer-Vision-Aufgabe eine Tiefenschätzungsaufgabe beinhaltet.Computer-implemented method according to Claim 4 , characterized in that the computer vision task includes a depth estimation task. Verfahren zum zumindest teilweise automatischen Führen eines Fahrzeugs (5), wobei ein computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche ausgeführt wird und das Fahrzeug (5) abhängig von einem Ergebnis der mindestens zwei Softwareapplikationen (9a, 9b, 9c) zumindest teilweise automatisch geführt wird.Method for at least partially automatically driving a vehicle (5), wherein a computer-implemented method according to one of the preceding claims is carried out and the vehicle (5) is at least partially automatically driven depending on a result of the at least two software applications (9a, 9b, 9c). Verarbeitungsvorrichtung (1) zum parallelen Ausführen von mindestens zwei Softwareapplikationen (9a, 9b, 9c), welche einen ersten Hardware-Rechencluster (8a) und eine Treiberschicht (7) zum Steuern des ersten Hardware-Rechenclusters (8a) enthält, wobei - die Verarbeitungsvorrichtung (1) mindestens ein Speichergerät aufweist, das eine jeweilige ausführbare Datei (9) für jede der mindestens zwei Softwareapplikationen (9a, 9b, 9c) speichert, welche einen Satz von Scheduleranweisungen gemäß der jeweiligen Softwareapplikation beinhaltet; - das zumindest eine Speichergerät eine dynamische Bibliothek (10) speichert, welche einen Satz von ersten Treiberaufrufen für die Treiberschicht (7) gemäß einem ersten Jobtyp enthält; - die Verarbeitungsvorrichtung (1) ein Managementmodul (6) aufweist, 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) zu laden; - das Managementmodul (6) dazu angepasst ist, eine erste Job-Schedulerinstanz (22a) zum zeitlichen Planen von zwei oder mehr Rechenjobs des ersten Jobtyps durch Übermitteln der ersten Treiberaufrufe an die Treiberschicht (7) gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien (9), die den mindestens zwei Softwareapplikationen (9a, 9b, 9c) entsprechen, auszuführen; und - der erste Hardware-Rechencluster (8a) dazu angepasst ist, die zwei oder mehr Rechenjobs des ersten Jobtyps durch jeweilige Recheninstanzen (11a, 11b, 12a, 12b, 13a, 13b) des ersten Hardware-Rechenclusters (8a) abhängig von den übermittelten ersten Treiberaufrufen parallel auszuführen.Processing device (1) for executing at least two software applications (9a, 9b, 9c) in parallel, which includes a first hardware computing cluster (8a) and a driver layer (7) for controlling the first hardware computing cluster (8a), wherein - the processing device (1) has at least one storage device that stores a respective executable file (9) for each of the at least two software applications (9a, 9b, 9c), which includes a set of scheduler instructions according to the respective software application; - the at least one storage device stores a dynamic library (10) that contains a set of first driver calls for the driver layer (7) according to a first job type; - the processing device (1) has a management module (6) which is adapted to load the executable files (9) corresponding to the at least two software applications (9a, 9b, 9c) and the first driver calls during a runtime of the at least two software applications (9a, 9b, 9c); - the management module (6) is adapted to create a first job scheduler instance (22a) for scheduling two or more computing jobs of the first job type by transmitting the first driver calls to the driver layer (7) according to the sets of scheduler instructions of the executable files (9) corresponding to the at least two software applications (9a, 9b, 9c); and - the first hardware computing cluster (8a) is adapted to execute the two or more computing jobs of the first job type in parallel by respective computing instances (11a, 11b, 12a, 12b, 13a, 13b) of the first hardware computing cluster (8a) depending on the transmitted first driver calls. Verarbeitungsvorrichtung (1) nach Anspruch 7, dadurch gekennzeichnet, dass - die Verarbeitungsvorrichtung (1) einen zweiten Hardware-Rechencluster (8b) aufweist und die Treiberschicht (7) dazu angepasst ist, den zweiten Hardware-Rechencluster (8b) zu steuern; - die dynamische Bibliothek (10) einen Satz von zweiten Treiberaufrufen für die Treiberschicht (7) gemäß einem zweiten Jobtyp enthält; - das Managementmodul (6) dazu angepasst ist, eine zweite Job-Schedulerinstanz (22b) zum zeitlichen Planen von zwei oder mehr Rechenjobs des zweiten Jobtyps durch Übermitteln der zweiten Treiberaufrufe an die Treiberschicht (7) gemäß den Sätzen von Scheduleranweisungen der ausführbaren Dateien (9), die den mindestens zwei Softwareapplikationen (9a, 9b, 9c) entsprechen, auszuführen; und - der zweite Hardware-Rechencluster (8b) dazu angepasst ist, die zwei oder mehr Rechenjobs des zweiten Jobtyps durch jeweilige Recheninstanzen (11a, 11b, 12a, 12b, 13a, 13b) des zweiten Hardware-Rechenclusters (8b) abhängig von den übermittelten zweiten Treiberaufrufen parallel auszuführen.Processing device (1) according to Claim 7 , characterized in that - the processing device (1) has a second hardware computing cluster (8b) and the driver layer (7) is adapted to control the second hardware computing cluster (8b); - the dynamic library (10) contains a set of second driver calls for the driver layer (7) according to a second job type; - the management module (6) is adapted to execute a second job scheduler instance (22b) for scheduling two or more computing jobs of the second job type by transmitting the second driver calls to the driver layer (7) according to the sets of scheduler instructions of the executable files (9) corresponding to the at least two software applications (9a, 9b, 9c); and - the second hardware computing cluster (8b) is adapted to execute the two or more computing jobs of the second job type in parallel by respective computing instances (11a, 11b, 12a, 12b, 13a, 13b) of the second hardware computing cluster (8b) depending on the transmitted second driver calls. Verarbeitungsvorrichtung (1) nach einem der Ansprüche 7 oder 8, dadurch gekennzeichnet, dass der erste Hardware-Rechencluster (8a) als ein Koprozessor oder ein Hardwarebeschleuniger implementiert ist.Processing device (1) according to one of the Claims 7 or 8th , characterized in that the first hardware computing cluster (8a) is implemented as a coprocessor or a hardware accelerator. Verarbeitungsvorrichtung (1) nach einem der Ansprüche 7 oder 8, dadurch gekennzeichnet, dass der erste Hardware-Rechencluster (8a) eine erste Neuronale-Netzwerk-Maschine und/oder einen ersten Hardwarebeschleuniger zum Berechnen eines optischen Flusses basierend auf Kamerabildern und/oder einen Shader-Prozessor und/oder eine Computer-Vision-Maschine und/oder einen ersten Hardwarebeschleuniger zum Rendern von Bildern und/oder eine erste Graphik-Verarbeitungseinheit aufweist.Processing device (1) according to one of the Claims 7 or 8th , characterized in that the first hardware computing cluster (8a) comprises a first neural network engine and/or a first 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 first hardware accelerator for rendering images and/or a first graphics processing unit. Verarbeitungsvorrichtung (1) gemäß einem der Ansprüche 7 bis 10, dadurch gekennzeichnet, dass die Verarbeitungsvorrichtung (1) ein Einchipsystem ist.Processing device (1) according to one of the Claims 7 until 10 , characterized in that the processing device (1) is a single-chip system. Elektronische Steuereinheit (2) für ein Fahrzeug (5), aufweisend eine Verarbeitungsvorrichtung (1) nach einem der Ansprüche 7 bis 11.Electronic control unit (2) for a vehicle (5), comprising a processing device (1) according to one of the Claims 7 until 11 . Elektronisches Fahrzeugführungssystem (4) für ein Fahrzeug (5), aufweisend eine Verarbeitungsvorrichtung nach einem der Ansprüche 7 bis 11 oder eine elektronische Steuereinheit (2) nach Anspruch 12.Electronic vehicle guidance system (4) for a vehicle (5), comprising a processing device according to one of the Claims 7 until 11 or an electronic control unit (2) according to Claim 12 . Computerprogrammprodukt, welches Befehle beinhaltet, die, wenn sie von einer Verarbeitungsvorrichtung (1) nach einem der Ansprüche 7 bis 11 ausgeführt werden, die Verarbeitungsvorrichtung (1) dazu veranlassen, ein computerimplementiertes Verfahren nach einem der Ansprüche 1 bis 5 auszuführen.Computer program product which contains instructions which, when executed by a processing device (1) according to one of the Claims 7 until 11 are executed, causing the processing device (1) to execute a computer-implemented method according to one of the Claims 1 until 5 to execute. Computerprogrammprodukt, welches Befehle beinhaltet, die, wenn sie von einem elektronischen Fahrzeugführungssystem (4) nach Anspruch 13 ausgeführt werden, das elektronische Fahrzeugführungssystem (4) dazu veranlassen, ein Verfahren nach Anspruch 6 auszuführen.Computer program product containing instructions which, when executed by an electronic vehicle guidance system (4) according to Claim 13 cause the electronic vehicle guidance system (4) to carry out a procedure according to Claim 6 to execute.
DE102022126913.2A 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 Pending DE102022126913A1 (en)

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)

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

Patent Citations (2)

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