DE102020101704A1 - Verfahren und vorrichtung zur zuweisung von automobilcomputeraufgaben an vernetzte vorrichtungen mit heterogenen fähigkeiten - Google Patents

Verfahren und vorrichtung zur zuweisung von automobilcomputeraufgaben an vernetzte vorrichtungen mit heterogenen fähigkeiten Download PDF

Info

Publication number
DE102020101704A1
DE102020101704A1 DE102020101704.9A DE102020101704A DE102020101704A1 DE 102020101704 A1 DE102020101704 A1 DE 102020101704A1 DE 102020101704 A DE102020101704 A DE 102020101704A DE 102020101704 A1 DE102020101704 A1 DE 102020101704A1
Authority
DE
Germany
Prior art keywords
implementations
job
specific
task
computer resources
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
DE102020101704.9A
Other languages
English (en)
Inventor
Kwame-Lante Wright
Fan Bai
Bhaskar Krishnamachari
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.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
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 GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102020101704A1 publication Critical patent/DE102020101704A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]
    • H04W4/44Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P] for communication between vehicles and infrastructures, e.g. vehicle-to-cloud [V2C] or vehicle-to-home [V2H]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]
    • H04W4/46Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P] for vehicle-to-vehicle communication [V2V]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Traffic Control Systems (AREA)

Abstract

Ein Aufgabenzuweisungssystem zum dynamischen Zuweisen von Computeraufgaben zu vernetzten Computerressourcen mit heterogenen Fähigkeiten beinhaltet: eine Aufgabenbibliothek mit einer Vielzahl von Aufgaben, wobei jede Aufgabe eine von einer Vielzahl von verschiedenen Implementierungen einer Anwendung ist, wobei die verschiedenen Implementierungen einer Anwendung unterschiedliche Genauigkeitsstufen und Ressourcenverbrauch während der Ausführung bereitstellen, wobei die verschiedenen Implementierungen basierend auf einem Kompromiss zwischen Genauigkeitsstufen und Ressourcenverbrauch während der Ausführung eingerichtet sind; und ein Echtzeit-Planungs-Modul, das eingerichtet ist, um verfügbare Computerressourcen und die Konnektivität zu den Computerressourcen zu überwachen, eine Vielzahl von Aufgabenanforderungen zu empfangen, Anwendungen zu priorisieren, die bei der Ausführung der Aufgaben auszuführen sind, wobei kritischeren Anwendungen eine höhere Priorität zugewiesen wird, Computerressourcen den Anwendungen mit höherer Priorität zuzuweisen, verbleibende Computerressourcen anderen Anwendungen zuzuweisen und spezifische Implementierungen von Anwendungen zur Zuordnung zu spezifischen Computerressourcen in einer Weise auszuwählen, die einen Gesamtnutzen maximiert.

Description

  • Technisches Gebiet
  • Die in dieser Patentschrift beschriebene Technologie bezieht sich im Allgemeinen auf Computersysteme und insbesondere auf verteilte Verarbeitungssysteme.
  • Fahrzeuge werden zu Rechenzentren auf Rädern. Fahrzeuge können hochentwickelte Verarbeitungseinheiten beinhalten, darunter Zentraleinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs), feldprogrammierbare Gate-Arrays (FPGAs) und andere Verarbeitungselemente. Die Nachfrage nach On-Board-Vernetzung und Unterstützung der Kommunikation von Fahrzeug zu Fahrzeug/Fahrzeug zu Infrastruktur (V2V/V2I) steigt. Mit der Verfügbarkeit von dedizierten Kurzstrecken-Kommunikationsnetzen (DSRC), Wi-Fi und Mobilfunknetzen (z.B. LTE) können Fahrzeuge einen besseren Zugang zu Off-Board-Ressourcen wie Off-Board-Computerressourcen (z.B. EDGE- und Cloud-Geräte) und Off-Board-Sensoren (z.B. von anderen Fahrzeugen, Verkehrskameras usw.) erhalten.
  • Dementsprechend ist es wünschenswert, ein Echtzeit-Rahmenwerk für die verteilte Verarbeitung bereitzustellen, um bei steigendem Verarbeitungsbedarf zu unterstützen. Darüber hinaus werden sich weitere wünschenswerte Merkmale und Merkmale der vorliegenden Erfindung aus der anschließenden detaillierten Beschreibung der Erfindung und der beigefügten Ansprüche in Verbindung mit den begleitenden Figuren und dem Hintergrund der Erfindung ergeben.
  • BESCHREIBUNG
  • Systeme und Verfahren zum Zuweisen von Aufgaben der Fahrzeuginformatik an vernetzte Vorrichtungen mit heterogenen Fähigkeiten sind vorgesehen. In einer Ausführungsform beinhaltet ein Aufgabenzuweisungssystem zum dynamischen Zuweisen von atomaren Computeraufgaben zu einer Reihe von vernetzten Computerressourcen mit heterogenen Fähigkeiten: eine Aufgabenbibliothek mit einer Vielzahl von Aufgaben, wobei jede Aufgabe eine von einer Vielzahl von verschiedenen Implementierungen einer Anwendung ist, wobei die verschiedenen Implementierungen einer Anwendung unterschiedliche Genauigkeitsstufen und Ressourcenverbrauch während der Ausführung bereitstellen, wobei die verschiedenen Implementierungen basierend auf einem Kompromiss zwischen Genauigkeitsstufen und Ressourcenverbrauch während der Ausführung eingerichtet sind; ein Echtzeit-Planungs-Modul mit einem oder mehreren Prozessoren, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, wobei das Planungs-Modul eingerichtet ist, um verfügbare Computerressourcen und die Konnektivität zu den Computerressourcen zu überwachen, eine Vielzahl von Aufgabenanforderungen zu empfangen, wobei die Aufgabenanforderungen eine Spezifikation von Aufträgen sind, die zur Leistung angefordert werden, Anwendungen zu priorisieren, die bei der Ausführung der Aufträge ausgeführt werden sollen, wobei kritischeren Anwendungen eine höhere Priorität zugewiesen wird, Computerressourcen den Anwendungen mit höherer Priorität zuzuordnen, verbleibende Computerressourcen anderen Anwendungen zuzuordnen und spezifische Implementierungen von Anwendungen zur Zuordnung zu spezifischen Computerressourcen in einer Weise auszuwählen, die ein Gesamtprogramm maximiert; und ein Dispatcher-Modul mit einem oder mehreren Prozessoren, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, wobei das Dispatcher-Modul eingerichtet ist, um die zugewiesenen spezifischen Implementierungen von Anwendungen zur Ausführung an ihre zugewiesene Computerressource zu senden.
  • In einer Ausführungsform beinhaltet die Reihe der vernetzten Computervorrichtungen On-Board-Hardware und eine oder mehrere mobile Vorrichtungen, Edge-Vorrichtungen und Cloud-basierte Server.
  • In einer Ausführungsform beinhalten die Rechenressourcen eine oder mehrere Zentraleinheiten (CPUs), Grafikprozessoren (GPUs), digitale Signalprozessoren (DSPs), anwendungsspezifische integrierte Schaltungen (ASICs) und FPGAs (Field Programmable Gate Arrays).
  • In einer Ausführungsform ist das Echtzeit-Planungs-Modul eingerichtet, zum: einen gierigen Algorithmus auszuführen, um eine Zuordnung von spezifischen Implementierungen von Anwendungen zu spezifischen Computerressourcen zu bestimmen; und die spezifische Zuordnung von spezifischen Implementierungen zu spezifischen Computerressourcen auszugeben.
  • In einer Ausführungsform ist der gierige Algorithmus eingerichtet, zum: bewerten von Auftragsimplementierungen basierend auf dem Nutzen, wobei die Auftragsimplementierung mit dem höchsten Nutzen zuerst bewertet wird; und planen von Auftragsimplementierungen eine nach der anderen in der Rangfolge an einem besten verfügbaren Knoten, wobei eine Auftragsimplementierung geplant wird, wenn noch keine andere Implementierung des Auftrags bereits geplant wurde und der beste verfügbare Knoten in der Lage ist, die Auftragsimplementierung auszuführen.
  • In einer Ausführungsform ist der gierige Algorithmus eingerichtet, zum: aufzählen aller möglichen Kombinationen von Aufträgen, wobei jede mögliche Kombination von Aufträgen als Bündel bezeichnet wird; potenzielle Bündel-Knoten-Paare zu bestimmen; eine Nutzenmessung für jedes potenzielle Bündel-Knoten-Paar zu berechnen; die Bündel-Knoten-Paare in der Reihenfolge der Nutzen zu sortieren, in der das Bündel-Knoten-Paar mit dem höchsten Nutzen zuerst positioniert ist; und Bündel eines nach der anderen zu planen, bis alle Knoten zugeordnet wurden oder alle Aufträge geplant wurden, wobei zugewiesene Bündel keine Implementierungen desselben Auftrags enthalten können.
  • In einer Ausführungsform beinhaltet das Aufgabenzuweisungssystem ferner eine Aufgabenprofil-Datenbank, die Aufgabenprofile für jede Anwendungsimplementierung enthält, wobei die Aufgabenprofile statische und dynamische Daten über Aufgaben, einschließlich Ressourcennutzung, Latenz und Zuverlässigkeit, beinhalten, wobei die Aufgabenprofile durch das Planungs-Modul zugänglich sind, wenn spezifische Implementierungen von Anwendungen für die Zuordnung zu spezifischen Computerressourcen ausgewählt werden.
  • In einer Ausführungsform beinhaltet das Aufgabenzuweisungssystem ferner einen Ressourcenmonitor, der eingerichtet ist, um Geräte und ihre verfügbaren Computerressourcen zu verfolgen, wobei das Echtzeit-Planungs-Modul eingerichtet ist, um verfügbare Computerressourcen anhand von Informationen zu überwachen, die vom Ressourcenmonitor bereitgestellt werden.
  • In einer Ausführungsform beinhaltet das Aufgabenzuweisungssystem ferner einen Leistungsmonitor, der eingerichtet ist, um Statistiken über die Kommunikationskanäle und die Gerätegeschwindigkeit zu sammeln.
    In einer Ausführungsform beinhaltet das Aufgabenzuweisungssystem ferner einen Kommunikationsmanager, der eingerichtet ist, um Kommunikationsverbindungen zwischen Vorrichtungen zu verwalten, die Computerressourcen bereitstellen, wobei die Kommunikationsverbindungen unter Verwendung einer Vielzahl von dedizierten Kurzstreckenkommunikation (DSRC), einem drahtlosen Mobilfunknetz (z.B. LTE, 5G oder anderen), Ethernet, einem drahtlosen lokalen Netzwerk (WLAN) und einem Controller Area Network (CAN) implementiert sind.
  • In einer weiteren Ausführungsform ist ein prozessorimplementiertes Verfahren in einem Fahrzeug zum dynamischen Zuweisen von Aufgaben der Fahrzeuginformatik zu einer Reihe von vernetzten Computerressourcen mit heterogenen Fähigkeiten vorgesehen. Das Verfahren beinhaltet: Empfangen von Aufgabenanforderungen für die Ausführung von Aufträgen durch Computerressourcen durch einen Prozessor im Fahrzeug; Überwachen des Status und der Konnektivität zu den Computerressourcen durch den Prozessor; Identifizieren von spezifischen Auftragsimplementierungen für die Planung durch den Prozessor; Planen von spezifischen Auftragsimplementierungen für spezifische Computerressourcen durch den Prozessor; Abrufen der spezifischen Auftragsimplementierungen, die aus einer Aufgabenbibliothek geplant wurden, durch den Prozessor; und Senden der spezifischen Auftragsimplementierungen für die Ausführung an die spezifischen Computerressourcen, durch den Prozessor.
  • In einer Ausführungsform beinhalten die Rechenressourcen eine oder mehrere Zentraleinheiten (CPUs), Grafikprozessoren (GPUs), digitale Signalprozessoren (DSPs), anwendungsspezifische integrierte Schaltungen (ASICs) und feldprogrammierbare Gate-Arrays (FPGAs), und die Rechenressourcen befinden sich in einer Vielzahl von fahrzeugseitigen Rechengeräten, Edge-Computern und Cloudbasierten Rechengeräten.
  • In einer Ausführungsform beinhaltet die Überwachung das Verfolgen von Computervorrichtungen und ihren verfügbaren Computerressourcen sowie das Sammeln von Statistiken über Kommunikationskanäle und die Geschwindigkeit der Computervorrichtung.
  • In einer Ausführungsform werden die spezifischen Auftragsimplementierungen aus einer Aufgabenprofil-Datenbank identifiziert, die statische und dynamische Daten über Aufgaben enthält, einschließlich Ressourcenauslastung, Latenzzeit und Zuverlässigkeit.
  • In einer Ausführungsform werden die spezifischen Auftragsimplementierungen basierend auf den statischen und dynamischen Daten über Aufgaben, verfügbare Ressourcen, Kommunikationskanäle und Gerätegeschwindigkeit geplant.
  • In einer Ausführungsform beinhaltet die Planung spezifischer Auftragsimplementierungen auf spezifische Computerressourcen das Ausführen eines Planungsalgorithmus, um Aufträge Geräten zur Ausführung zuzuweisen, wobei der Planungsalgorithmus einen ILP-basierten Algorithmus oder einen gierigen Algorithmus beinhaltet.
  • In einer Ausführungsform beinhaltet der Planungsalgorithmus einen gierigen Algorithmus; der gierige Algorithmus ist eingerichtet, um basierend auf der Nutzen-Einordnung Auftragsimplementierungen zu sortieren, wobei die Auftragsimplementierung mit dem höchsten Nutzen das höchste Einordnung erhält; und der gierige Algorithmus ist eingerichtet, um Auftragsimplementierungen einen nach den anderen in Rangfolge einer der besten verfügbaren Computerressourcen zu planen, wobei eine Auftragsimplementierung geplant ist, wenn keine andere Auftragsimplementierung bereits geplant wurde und der beste verfügbare Knoten in der Lage ist, die Auftragsimplementierung auszuführen.
  • In einer Ausführungsform beinhaltet der Planungsalgorithmus einen gierigen Algorithmus und der gierige Algorithmus ist eingerichtet, um: alle möglichen Kombinationen von Anwendungsimplementierungen aufzuzählen, wobei jede Kombination als Bündel bezeichnet wird; den Nutzen jedes Bündel-Knoten-Paares zu berechnen; die Bündel-Knoten-Paare in Nutzenreihenfolge zu sortieren, wobei das Bündel-Knoten-Paar mit dem höchsten Nutzen zuerst positioniert ist; und Bündel eines nach dem anderen zu planen, bis alle Knoten zugewiesen wurden oder alle Aufträge geplant wurden, wobei zugewiesene Bündel keine Implementierungen desselben Auftrags enthalten können.
  • In einer Ausführungsform beinhaltet die Aufgabenbibliothek Binärdateien der verschiedenen Auftragsimplementierungen und die verschiedenen Auftragsimplementierungen bieten verschiedene Möglichkeiten der Aufgabenimplementierung.
  • In einer weiteren Ausführungsform ist ein Fahrzeug vorgesehen. Das Fahrzeug beinhaltet: eine Vielzahl von Computerressourcen; eine Aufgabenbibliothek mit einer Vielzahl von Aufgaben, wobei jede Aufgabe eine von einer Vielzahl von verschiedenen Implementierungen einer Anwendung ist, wobei die verschiedenen Implementierungen einer Anwendung unterschiedliche Genauigkeitsstufen und Ressourcenauslastung während der Ausführung bereitstellen, wobei die verschiedenen Implementierungen basierend auf einem Kompromiss zwischen Genauigkeitsstufen und Ressourcenauslastung während der Ausführung eingerichtet sind; ein Echtzeit-Planungs-Modul mit einem oder mehreren Prozessoren, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, wobei das Planungs-Modul eingerichtet ist, um verfügbare Computerressourcen und die Konnektivität zu den Computerressourcen zu überwachen, Auftragsanforderungen zum Ausführen einer Vielzahl von Anwendungen zu empfangen, die Anwendungen zu priorisieren, wobei kritischeren Anwendungen eine höhere Priorität zugewiesen wird, Computerressourcen den Anwendungen mit höherer Priorität zuzuordnen, verbleibende Computerressourcen anderen Anwendungen zuzuweisen und spezifische Implementierungen von Anwendungen zur Zuordnung zu spezifischen Computerressourcen in einer Weise auszuwählen, die ein Gesamtprogramm maximiert; und ein Dispatcher-Modul mit einem oder mehreren Prozessoren, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, wobei das Dispatcher-Modul eingerichtet ist, um die zugewiesenen spezifischen Implementierungen von Anwendungen zur Ausführung an ihre zugewiesene Computerressource zu senden.
  • Figurenliste
  • Die exemplarischen Ausführungsformen werden im Folgenden in Verbindung mit den folgenden Bezugszeichen beschrieben, wobei gleiche Bezugszeichen gleiche Elemente bezeichnen und wobei:
    • 1A ist ein Blockdiagramm, das eine exemplarische Rechenumgebung gemäß verschiedener Ausführungsformen darstellt;
    • 1B ist ein Diagramm, das ein exemplarisches Fahrzeug in einer exemplarischen Computerumgebung darstellt und verschiedene Ebenen veranschaulicht, auf denen sich Verarbeitungsmodule in Bezug auf das exemplarische Fahrzeug gemäß verschiedener Ausführungsformen befinden können;
    • 2 stellt ein exemplarisches Fahrzeug dar, das ein Aufgabenverteilungssystem gemäß verschiedener Ausführungsformen beinhaltet;
    • 3 ist ein Blockdiagramm, das eine exemplarische Umgebung für ein Aufgabenverteilungssystem gemäß verschiedener Ausführungsformen darstellt;
    • 4A und 4B sind Diagramme eines exemplarischen Betriebsszenarios, das einen potenziellen Nutzen der Bereitstellung verschiedener Implementierungen einer Anwendung gemäß verschiedener Ausführungsformen veranschaulicht;
    • 5A und 5B sind Diagramme, die die Verwendung eines exemplarischen gierigen Algorithmus veranschaulichen, um Anwendungsimplementierungen zur Ausführung gemäß verschiedener Ausführungsformen zu planen;
    • 6 ist ein Diagramm, das exemplarische Aufträge und exemplarische Auftragsbündel veranschaulicht, die bei der Planung von Aufträgen mit einem exemplarischen gierigen Algorithmus gemäß verschiedenen Ausführungsformen verwendet werden;
    • 7A und 7B sind Diagramme, die die Sortierung und Planung von Bündels zu Knoten (z.B. Rechenressourcen) am Beispiel des gierigen Algorithmus nach verschiedenen Ausführungsformen veranschaulichen;
    • 8 ist ein exemplarisches Flussdiagramm, das exemplarische Komponenten in einer exemplarischen Umgebung für ein exemplarisches Aufgabenzuweisungssystem gemäß verschiedenen Ausführungsformen veranschaulicht; und
    • 9 ist ein Prozessablaufdiagramm, das einen exemplarischen Prozess in einem exemplarischen Aufgabenzuweisungssystem gemäß verschiedener Ausführungsformen darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende detaillierte Beschreibung ist lediglich exemplarischer Natur und soll die Anwendung und Verwendung nicht einschränken. Darüber hinaus besteht keine Absicht, an eine ausdrückliche oder stillschweigende Theorie gebunden zu sein, die im vorhergehenden technischen Gebiet, Hintergrund, Zusammenfassung oder der folgenden detaillierten Beschreibung dargestellt wird. Wie hierin verwendet, bezieht sich der Begriff „Modul“ auf jede Hardware, Software, Firmware, elektronische Steuerkomponente, Verarbeitungslogik und/oder Prozessorvorrichtung, einzeln oder in beliebiger Kombination, einschließlich, aber nicht beschränkt auf: anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine elektronische Schaltung, einen Prozessor (gemeinsam, dediziert oder Gruppe) und Speicher, der eine oder mehrere Software- oder Firmwareprogramme, eine kombinatorische Logikschaltung und/oder andere geeignete Komponenten ausführt, die die beschriebene Funktionalität bereitstellen.
  • Ausführungsformen der vorliegenden Offenbarung können hierin in Bezug auf funktionale und/oder logische Blockkomponenten und verschiedene Verarbeitungsschritte beschrieben werden. Es ist zu beachten, dass solche Blockkomponenten durch eine beliebige Anzahl von Hardware-, Software- und/oder Firmwarekomponenten realisiert werden können, die zur Ausführung der angegebenen Funktionen eingerichtet sind. So kann beispielsweise eine Ausführungsform der vorliegenden Offenbarung verschiedene integrierte Schaltungskomponenten verwenden, z.B. Speicherelemente, digitale Signalverarbeitungselemente, Logikelemente, Nachschlagetabellen oder dergleichen, die eine Vielzahl von Funktionen unter der Kontrolle eines oder mehrerer Mikroprozessoren oder anderer Steuergeräte ausführen können. Darüber hinaus werden die Fachleute verstehen, dass Ausführungsformen der vorliegenden Offenbarung in Verbindung mit einer beliebigen Anzahl von Systemen praktiziert werden können und dass die hierin beschriebenen Systeme lediglich exemplarische Ausführungsformen der vorliegenden Offenbarung sind.
  • Der Kürze halber können konventionelle Techniken in Bezug auf Signalverarbeitung, Datenübertragung, Signalisierung, Steuerung, maschinelle Lernmodelle, Radar, Lidar, Bildanalyse und andere funktionale Aspekte der Systeme (und der einzelnen Betriebskomponenten der Systeme) hierin nicht im Detail beschrieben werden. Darüber hinaus sollen die in den verschiedenen Abbildungen dargestellten Verbindungslinien exemplarische Funktionsbeziehungen und/oder physikalische Kopplungen zwischen den verschiedenen Elementen darstellen. Es ist zu beachten, dass viele alternative oder zusätzliche funktionale Beziehungen oder physische Verbindungen in einer Ausführungsform der vorliegenden Offenbarung vorhanden sein können.
  • Der hierin beschriebene Gegenstand offenbart Vorrichtungen, Systeme, Techniken und Artikel zur Bereitstellung eines Echtzeit-Verteilungsrahmens zur Unterstützung bei der steigenden Verarbeitungsnachfrage. Die folgende Offenbarung enthält Geräte, Systeme, Techniken und Artikel zur Nutzung gemeinsamer Hardware-Ressourcen für mehrere Systeme, wodurch Kosten gesenkt, die Redundanz verbessert und wiederverwendbares Fachwissen genutzt werden kann. Die folgende Offenbarung enthält Geräte, Systeme, Techniken und Artikel zur gemeinsamen Nutzung von Hardware-Ressourcen, die Leistungsgarantien für sicherheitskritische Anwendungen und besten Aufwand für unkritische Anwendungen bieten können. Die folgende Offenbarung enthält Geräte, Systeme, Techniken und Artikel, die es ermöglichen, sicherheitskritische Anwendungen mit unkritischen Aufgaben zu koexistieren. Die folgende Offenbarung enthält Geräte, Systeme, Techniken und Artikel zur Verwendung von Polymorphismus - unter Verwendung anpassungsfähiger Arbeitslasten, um Einschränkungen zu erfüllen und gleichzeitig die Funktionalität zu erhalten. Die folgende Offenbarung enthält Geräte, Systeme, Techniken und Artikel zur Nutzung einer gierigen, heuristischen Lösung, um eine suboptimale Lösung zu erreichen, aber mit schneller Entscheidungsfähigkeit. Die folgende Offenbarung enthält Geräte, Systeme, Techniken und Artikel zur Verwendung einer ILP-Problemformulierung und -Lösung zur globalen Optimierung.
  • 1A ist ein Blockdiagramm, das eine exemplarische Rechenumgebung 100 darstellt. Die exemplarische Computerumgebung beinhaltet eine Softwareumgebung 102 und eine Hardwareumgebung 104. Die Softwareumgebung 102 beinhaltet mehrere Softwareanwendungen 106, die zu verschiedenen Zeiten mit Hardware aus der Hardwareumgebung 104 ausgeführt werden sollen. In diesem Beispiel beinhaltet die exemplarische Computerumgebung eine automobile Computerumgebung und die exemplarischen Softwareanwendungen, die sich in einem Automobil befinden können.
    In diesem Beispiel beinhaltet die Beispielsoftware unter anderem die Motorsteuergerätesoftware, die ABS-Software (Antiblockiersystem), die Tempomat-Software und die Radiosoftware. Ein Teil der Software ist für den sicheren Betrieb des Fahrzeugs wichtiger und wird daher als Software mit höherer Priorität betrachtet, während ein Teil der Software für den sicheren Betrieb des Fahrzeugs weniger wichtig ist und als Software mit niedrigerer Priorität betrachtet wird. Als Beispiel würde die ABS-Software als Software mit höherer Priorität betrachtet werden und die Funksoftware als Software mit niedrigerer Priorität. Wenn der Bedarf an Rechenressourcen der Softwareumgebung 102 die Rechenleistung der Hardwareumgebung 104 übersteigt, muss die Software in der Softwareumgebung 102 möglicherweise priorisiert werden, damit die Software mit höherer Priorität immer dann ausgeführt werden kann, wenn die Ausführung erforderlich ist.
  • Die Hardwareumgebung beinhaltet eine Vielzahl von Verarbeitungsmodulen 108, 109. Jedes Verarbeitungsmodul 108 kann mehrere Computerressourcen beinhalten, wie beispielsweise eine Zentraleinheit (CPU) 110, eine Grafikverarbeitungseinheit (GPU) 112 und/oder andere Computerressourcen. Die Verarbeitungsmodule 108, 109 können in einem verteilten Netzwerk verteilt werden. Einige der Verarbeitungsmodule (z.B. Verarbeitungsmodule 108) können lokal und andere (z.B. Verarbeitungsmodul 109) entfernt sein. Die verschiedenen Verarbeitungsmodule sind nicht nur lokal oder entfernt, sondern können auch unterschiedliche Rechenfähigkeiten und Zugriffszeiten aufweisen (z.B. basierend auf dem Kommunikationsnetzwerk, über das sie zugänglich sind). Im Beispiel eines Fahrzeugs können sich die lokalen Verarbeitungsmodule 108 an Bord des Fahrzeugs befinden, und die entfernten Verarbeitungsmodule 109 können außerhalb des Fahrzeugs angeordnet sein.
  • 1B ist ein Diagramm, das ein exemplarisches Fahrzeug 122 in einer exemplarischen Rechenumgebung 120 darstellt und verschiedene Ebenen veranschaulicht, auf denen sich Verarbeitungsmodule relativ zum exemplarischen Fahrzeug 122 befinden können. In diesem Beispiel beinhaltet die Beispielumgebung 120 Verarbeitungsmodule, die sich an Bord des Fahrzeugs 122 in einer ersten Ebene (1) befinden. Die Beispielumgebung 120 kann auch mobile Verarbeitungsmodule 124 (z.B. in einer mobilen Vorrichtung wie einem Smartphone, Tablett, Phablet usw. enthalten) beinhalten, die sich innerhalb oder in unmittelbarer Nähe des Fahrzeugs 122 in einer zweiten Ebene (2) befinden. Die Beispielumgebung 120 kann EDGE-Verarbeitungsmodule 126 (z.B. enthalten in EDGE-Vorrichtungen wie Verkehrsvorrichtung oder Schild) beinhalten, die sich in unmittelbarer Nähe des Fahrzeugs 122 in einer dritten Ebene (3) befinden. Die Beispielumgebung 120 kann Cloud-Verarbeitungsmodule 128 (z.B. in einer Cloud-Vorrichtung wie einem Server enthalten) beinhalten, die für das Fahrzeug 122 in einer vierten Ebene (4) zugänglich sind.
  • Die exemplarischen Computerumgebungen 100 und 120 implementieren ein Aufgabenzuweisungssystem, das eingerichtet ist, um Computeraufgaben aus der Softwareumgebung (z.B. Softwareumgebung 102) verschiedenen Verarbeitungsmodulen zuzuordnen, basierend auf Priorität, Computeranforderungen und Rechenfähigkeiten.
  • 2 stellt ein exemplarisches Fahrzeug 200 dar, das ein Aufgabenverteilungssystem 210 beinhaltet. Wie in 1 dargestellt, beinhaltet das Fahrzeug 200 im Allgemeinen ein Fahrgestell 12, eine Karosserie 14, Vorderräder 16 und Hinterräder 18. Die Karosserie 14 ist auf dem Fahrgestell 12 angeordnet und umschließt im Wesentlichen Komponenten des Fahrzeugs 200. Die Karosserie 14 und das Fahrgestell 12 können gemeinsam einen Rahmen bilden. Die Räder 16-18 sind jeweils drehbar mit dem Fahrgestell 12 in der Nähe einer entsprechenden Ecke der Karosserie 14 gekoppelt.
  • In verschiedenen Ausführungsformen kann das Fahrzeug 200 ein autonomes Fahrzeug oder ein teilautonomes Fahrzeug sein. Ein autonomes Fahrzeug 200 ist beispielsweise ein Fahrzeug, das automatisch gesteuert wird, um Passagiere von einem Ort zum anderen zu befördern. Das Fahrzeug 200 ist in der veranschaulichten Ausführungsform als Personenkraftwagen dargestellt, aber auch andere Fahrzeugtypen, einschließlich Motorräder, Lastkraftwagen, Sport Utility Vehicles (SUVs), Freizeitfahrzeuge (RVs), Seeschiffe, Flugzeuge usw., können verwendet werden.
  • Wie dargestellt, beinhaltet das Fahrzeug 200 im Allgemeinen ein Antriebssystem 20, ein Getriebesystem 22, ein Lenksystem 24, ein Bremssystem 26, ein Sensorsystem 28, ein Stellgliedsystem 30, mindestens eine Datenspeichervorrichtung 32, mindestens eine Steuerung 34 und ein Kommunikationssystem 36. Das Antriebssystem 20 kann in verschiedenen Ausführungsformen einen Verbrennungsmotor, eine elektrische Maschine, wie beispielsweise einen Fahrmotor, und/oder ein Brennstoffzellenantriebssystem beinhalten. Das Getriebesystem 22 ist eingerichtet, um die Leistung vom Antriebssystem 20 auf die Fahrzeugräder 16 und 18 entsprechend den wählbaren Übersetzungsverhältnissen zu übertragen. Gemäß verschiedenen Ausführungsformen kann das Getriebesystem 22 ein stufenloses Automatikgetriebe, ein stufenloses Getriebe oder ein anderes geeignetes Getriebe beinhalten.
  • Das Bremssystem 26 ist eingerichtet, um den Fahrzeugrädern 16 und 18 ein Bremsmoment zur Verfügung zu stellen. Das Bremssystem 26 kann in verschiedenen Ausführungsformen Reibungsbremsen, Drahtbremse, ein regeneratives Bremssystem, wie beispielsweise eine elektrische Maschine, und/oder andere geeignete Bremssysteme beinhalten.
  • Das Lenksystem 24 beeinflusst eine Position der Fahrzeugräder 16 und/oder 18. Obwohl dargestellt als ein Lenkrad 25 zu veranschaulichenden Zwecken, darf das Lenksystem 24 in einigen Ausführungsformen, die im Rahmen der vorliegenden Offenbarung vorgesehen sind, kein Lenkrad beinhalten.
  • Das Sensorsystem 28 beinhaltet eine oder mehrere Sensorvorrichtungen 40a-40n, die beobachtbare Bedingungen der äußeren Umgebung und/oder der inneren Umgebung des Fahrzeugs 200 (wie den Zustand eines oder mehrerer Insassen) erfassen und Sensordaten in Bezug darauf erzeugen. Abtastvorrichtungen 40a-40n können unter anderem Radargeräte (z.B. Langstrecken- und Mittelstrecken-Kurzstreckenradar), Lidarsysteme, globale Positionierungssysteme, optische Kameras (z.B. nach vorne gerichtete, 360-Grad-Kameras, nach hinten gerichtete, nach der Seite gerichtete, Stereokameras usw.), Wärmebildkameras (z.B. Infrarotkameras), Ultraschallsensoren, Odometriesensoren (z.B. Drehgeber) und/oder andere Sensoren beinhalten, die in Verbindung mit Systemen und Verfahren gemäß dem vorliegenden Gegenstand verwendet werden können.
  • Das Stellgliedsystem 30 beinhaltet eine oder mehrere Stellgliedsvorrichtungen 42a-42n, die ein oder mehrere Fahrzeugmerkmale steuern, wie beispielsweise das Antriebssystem 20, das Getriebesystem 22, das Lenksystem 24 und das Bremssystem 26. In verschiedenen Ausführungsformen kann das Fahrzeug 200 auch innere und/oder äußere Fahrzeugmerkmale beinhalten, die in 1 nicht dargestellt sind, wie beispielsweise verschiedene Türen, einen Kofferraum und Kabinenmerkmale wie Luft, Musik, Beleuchtung, Touchscreen-Displaykomponenten (wie sie beispielsweise in Verbindung mit Navigationssystemen verwendet werden) und dergleichen.
  • Die Datenspeichervorrichtung 32 speichert Daten zur Verwendung bei der automatischen Steuerung des Fahrzeugs 200. Die Datenspeichervorrichtung 32 speichert in verschiedenen Ausführungsformen definierte Karten der navigierbaren Umgebung. In verschiedenen Ausführungsformen können die definierten Karten durch ein entferntes System vordefiniert und von diesem bezogen werden. So können beispielsweise die definierten Karten vom entfernten System zusammengestellt und an das Fahrzeug 200 (drahtlos und/oder drahtgebunden) übermittelt und in der Datenspeichervorrichtung 32 gespeichert werden. Routeninformationen können auch in der Datenspeichervorrichtung 32 gespeichert werden - d.h. eine Reihe von Straßenabschnitten (die geografisch einer oder mehreren der definierten Karten zugeordnet sind), die zusammen eine Route definieren, die der Benutzer nehmen kann, um von einem Startort (z.B. dem aktuellen Standort des Benutzers) zu einem Zielort zu gelangen. Wie zu beachten ist, kann die Datenspeichervorrichtung 32 Teil der Steuerung 34, getrennt von der Steuerung 34, oder Teil der Steuerung 34 und Teil eines separaten Systems sein.
  • Die Steuerung 34 beinhaltet mindestens einen Prozessor 44 und eine computerlesbare Speichervorrichtung oder ein Medium 46. Der Prozessor 44 kann ein beliebiger maßgeschneiderter oder kommerziell verfügbarer Prozessor, eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU), eine anwendungsspezifische integrierte Schaltung (ASIC) (z.B. ein kundenspezifischer ASIC, der ein neuronales Netzwerk implementiert), ein feldprogrammierbares Gate-Array (FPGA), ein Hilfsprozessor unter mehreren der Steuerung 34 zugeordneten Prozessoren, ein halbleiterbasierter Mikroprozessor (in Form eines Mikrochips oder Chipsatzes), eine beliebige Kombination derselben oder allgemein eine Vorrichtung zur Ausführung von Anweisungen sein. Die computerlesbare Speichervorrichtung oder das Medium 46 kann beispielsweise einen flüchtigen und nichtflüchtigen Speicher im Nur-Lese-Speicher (ROM), einen Direktzugriffsspeicher (RAM) und einen Keep-Alive-Speicher (KAM) beinhalten. KAM ist ein persistenter oder nichtflüchtiger Speicher, der zum Speichern verschiedener Betriebsvariablen verwendet werden kann, während der Prozessor 44 ausgeschaltet ist. Die computerlesbare Speichervorrichtung oder das computerlesbare Speichermedium 46 kann unter Verwendung einer beliebigen Anzahl bekannter Speichervorrichtungen wie PROMs (programmierbarer Nur-Lese-Speicher), EPROMs (elektrisch PROM), EEPROMs (elektrisch löschbares PROM), Flash-Speicher oder anderer elektrischer, magnetischer, optischer oder kombinierter Speichervorrichtungen, die Daten speichern können, von denen einige ausführbare Anweisungen darstellen, implementiert werden, die von der Steuerung 34 zur Steuerung des Fahrzeugs 200 verwendet werden. In verschiedenen Ausführungsformen ist die Steuerung 34 eingerichtet, um ein Abbildungssystem zu implementieren, wie im Folgenden ausführlich erläutert.
  • Die Anweisungen können ein oder mehrere separate Programme beinhalten, von denen jedes eine geordnete Liste von ausführbaren Anweisungen zur Implementierung logischer Funktionen umfasst. Die Anweisungen, wenn sie vom Prozessor 44 ausgeführt werden, empfangen und verarbeiten Signale (z.B. Sensordaten) vom Sensorsystem 28, führen Logik, Berechnungen, Verfahren und/oder Algorithmen zum automatischen Steuern der Komponenten des Fahrzeugs 200 durch und erzeugen Steuersignale, die an das Stellgliedsystem 30 übertragen werden, um die Komponenten des Fahrzeugs 200 basierend auf der Logik, Berechnungen, Verfahren und/oder Algorithmen automatisch zu steuern. Obwohl nur eine Steuerung 34 in 2 dargestellt ist, können Ausführungsformen des Fahrzeugs 200 eine beliebige Anzahl von Steuerungen 34 beinhalten, die über ein geeignetes Kommunikationsmedium oder eine Kombination von Kommunikationsmedien kommunizieren und zusammenarbeiten, um die Sensorsignale zu verarbeiten, Logik, Berechnungen, Verfahren und/oder Algorithmen durchzuführen und Steuersignale zur automatischen Steuerung von Merkmalen des Fahrzeugs 200 zu erzeugen.
  • Das Kommunikationssystem 36 ist eingerichtet, um Informationen drahtlos an und von anderen Einheiten 48 zu übertragen, wie beispielsweise, aber nicht beschränkt auf, andere Fahrzeuge („V2V“-Kommunikation), Infrastruktur („V2I“-Kommunikation), Netzwerke („V2N“-Kommunikation), Fußgänger („V2P“-Kommunikation), entfernte Transportsysteme und/oder Benutzergeräte. In einer exemplarischen Ausführungsform ist das Kommunikationssystem 36 ein drahtloses Kommunikationssystem, das eingerichtet ist, um über ein drahtloses lokales Netzwerk (WLAN) unter Verwendung der Standards IEEE 802.11 oder unter Verwendung einer zellularen Datenkommunikation zu kommunizieren. Im Rahmen der vorliegenden Offenbarung werden jedoch auch zusätzliche oder alternative Kommunikationsmethoden, wie beispielsweise ein dedizierter Kurzstreckenkommunikationskanal (DSRC), berücksichtigt. DSRC-Kanäle beziehen sich auf ein- oder zweiseitige drahtlose Kommunikationskanäle mit kurzer bis mittlerer Reichweite, die speziell für den Einsatz im Automobil entwickelt wurden, sowie auf einen entsprechenden Satz von Protokollen und Standards.
  • 3 ist ein Blockdiagramm, das eine exemplarische Umgebung 300 für ein Aufgabenzuweisungssystem 302 darstellt. Das exemplarische Aufgabenzuweisungssystem 302 ist eingerichtet, um atomare Rechenaufgaben dynamisch einer Reihe von vernetzten Rechengeräten mit heterogenen Fähigkeiten zuzuordnen. Die Reihe der vernetzten Computergeräte umfasst On-Board-Hardware und eines oder mehrere mobile Geräte, Edge-Geräte und Cloud-basierte Server. Jede vernetzte Computervorrichtung beinhaltet eine oder mehrere Computerressourcen 301. Jede Rechenressource 301 kann eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU), einen digitalen Signalprozessor (DSP), einen mathematischen Co-Prozessor, eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA) und/oder eine andere Verarbeitungsvorrichtung beinhalten.
  • Das Beispiel-Aufgabenzuweisungssystem 302 umfasst einen oder mehrere Prozessoren, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, die Komponenten des Aufgabenzuweisungssystems implementieren. Die exemplarischen Komponenten des Aufgabenzuweisungssystems beinhalten ein Echtzeit-Planungs-Modul 304, einen Monitor 308, eine Aufgabenbibliothek 310 und ein Dispatcher-Modul 312. Das exemplarische Echtzeit-Planungs-Modul 304 ist eingerichtet, um empfangene Auftragsspezifikationen und/oder Anforderungen 306 für die Ausführung von Aufträgen durch die Computerressourcen 301 zu empfangen, den Status und die Konnektivität mit den Computerressourcen 301 unter Verwendung von Informationen aus dem Leistungsmonitor 308 zu überwachen, spezifische Auftragsimplementierungen aus der Aufgabenbibliothek 310 zu identifizieren und die spezifischen Auftragsimplementierungen für die Computerressourcen 301 zu planen, um die Aufgabenanforderungen 306 zu erfüllen. Das Beispiel-Dispatcher-Modul 312 ist eingerichtet, um die spezifischen Auftragsimplementierungen abzurufen, und plant die spezifischen Auftragsimplementierungen zur Ausführung auf spezifische Computerressourcen 301, denen sie zugewiesen wurden.
  • Die exemplarische Aufgabenbibliothek 310 enthält eine Vielzahl von Aufgaben. Jede Aufgabe ist eine spezifische Implementierung einer Anwendung, die mit einer oder mehreren der Computerressourcen 301 ausgeführt werden kann. Eine Anwendung kann mehrere Implementierungen aufweisen, wobei die verschiedenen Implementierungen einer Anwendung unterschiedliche Genauigkeitsgrade und Ressourcenverbrauch während der Ausführung bieten. Die verschiedenen Implementierungen einer Anwendung werden basierend auf einem Kompromiss zwischen dem Grad der Genauigkeit der Ergebnisse aus der Ausführung der Implementierung der Anwendung und dem Ressourcenverbrauch während der Ausführung eingerichtet.
    Die 4A und 4B sind Diagramme eines exemplarischen Betriebsszenarios, das einen möglichen Nutzen aus der Bereitstellung verschiedener Implementierungen einer Anwendung veranschaulicht. Im exemplarischen Betriebsszenario macht ein Visionssystem in einem Fahrzeug eine Momentaufnahme 400 der Umgebung vor dem Fahrzeug. Ein Erkennungssystem im Fahrzeug kann die Ausführung einer Anwendung zum Erkennen von Objekten im Snapshot 400 anfordern. Die Anwendung kann zwei Implementierungen haben, eine erste Implementierung, die eine weniger genaue Analyse der Momentaufnahme 400 liefert, aber weniger Rechenressourcen für die Ausführung benötigt, und eine zweite Implementierung, die eine genauere Analyse der Momentaufnahme 400 liefert, aber mehr Rechenressourcen für die Ausführung benötigt.
  • In 4A sind die Ergebnisse der Objekterkennung aus der ersten exemplarischen Implementierung dargestellt. Im ersten Beispiel wird ein 16-schichtiges neuronales Faltungsnetzwerk (CNN) mit 57,1% mittlerer durchschnittlicher Genauigkeit (mAP) verwendet, das in 4,8 ms/Frame ausgeführt wird. Die erste Beispielimplementierung bietet eine weniger genaue Analyse des Snapshots 400 (z.B. werden einige Fahrzeuge 402 im Snapshot identifiziert und einige der Fahrzeuge 404 im Snapshot werden nicht identifiziert), benötigt aber weniger Rechenressourcen für die Ausführung (z.B. wird in 4,8 ms pro Snapshot ausgeführt).
  • In 4B sind die Ergebnisse der Objekterkennung aus der zweiten exemplarischen Implementierung dargestellt. Im zweiten Beispiel wird ein 32-lagiger CNN mit 76,8% mAP verwendet, der in 14,9 ms/Frame ausgeführt wird. Die zweite BeispielImplementierung bietet eine genauere Analyse des Snapshots (z.B. werden mehr oder alle Fahrzeuge 402 im Snapshot identifiziert), erfordert aber größere Rechenressourcen für die Ausführung (z.B. Ausführung in 14,9 ms pro Snapshot). Abhängig von der Arbeitsbelastung der Computerressourcen kann es vorteilhaft sein, die erste Implementierung der Anwendung zu nutzen, um einige Erkennungsinformationen zu erhalten, da einige Informationen gegen zeitliche Einschränkungen besser sein können als keine Informationen.
  • Unter Bezugnahme auf 3 ist der exemplarische Monitor 308 eingerichtet, um Geräte und ihre verfügbaren Computerressourcen 301 zu verfolgen. Der exemplarische Monitor 308 ist ferner eingerichtet, um Statistiken über Kommunikationskanäle zu und von den Computerressourcen 301 und Gerätegeschwindigkeiten für die Computerressourcen 301 zu sammeln. Der exemplarische Leistungsmonitor 308 ist ferner eingerichtet, um die verfolgten Daten und Statistiken an das exemplarische Echtzeit-Planungs-Modul 304 zu übermitteln.
  • Das exemplarische Echtzeit-Planungs-Modul 304 ist eingerichtet, um verfügbare Computerressourcen 301 und die Konnektivität zu den Computerressourcen 301 unter Verwendung des Monitors 308 zu überwachen, eine Vielzahl empfangener Auftragsspezifikationen und/oder Anforderungen 306 zu empfangen, wobei die Spezifikationen/Anforderungen 306 Aufgaben identifizieren, die zur Leistung angefordert werden, Anwendungen zu priorisieren, die bei der Ausführung der Aufgaben ausgeführt werden sollen, wobei kritischeren Anwendungen eine höhere Priorität zugewiesen wird, Computerressourcen 301 zuerst den Anwendungen mit höherer Priorität zuzuordnen, verbleibende Computerressourcen 301 anderen Anwendungen zuzuweisen und spezifische Implementierungen von Anwendungen zur Zuordnung zu spezifischen Computerressourcen 301 in einer Weise auszuwählen, die ein Gesamtnutzen maximiert.
  • Das exemplarische Echtzeit-Planungs-Modul 304 ist eingerichtet, um einen Planungs-Algorithmus zu verwenden, um zu bestimmen, welche spezifische Anwendungsimplementierung mit welcher Computerressource geplant werden soll. Das durch den Planungs-Algorithmus gelöste Problem kann wie folgt ausgedrückt werden:
    • Angenommen Nk heterogene Rechenknoten: k0, k1, ... , kN K -1.
  • Es gibt Nk Aufträge, jo. j1, ... , jN j-1. Nr-dimensionale Ressourcenvektoren R ( k ) > 0 N r
    Figure DE102020101704A1_0001
    für jeden Knoten k.
  • Der Ressourcenverbrauch wird durch r(j, k, m) dargestellt, wobei r ( j , k , m ) 0 N r ,
    Figure DE102020101704A1_0002
    Ressourcenvektoren, die von einem Auftrag benötigt werden, während sie auf einem Knoten k unter Verwendung von Implementierungen m laufen.
  • X(j, k, m) ∈ {0,1} sei die binäre Allokationsvariable, wobei 1 gilt, wenn der Auftrag j auf Knoten k unter Verwendung der Implementierung m geplant ist, und 0 sonst. Eine valide Allokation oder Auftrag muss folgenden Bedingungen genügen: k , R ( k ) j m X ( j , k , m ) r ( j , k , m )
    Figure DE102020101704A1_0003
    j , k m X ( j , k , m ) 1
    Figure DE102020101704A1_0004
  • Gleichung 1, die Ressourcenbedingung, gewährleistet, dass einem Knoten zugeordnete Aufträge die Ressourcen nicht überschreiten, wobei Gleichung 2, die Zuordnungsbedingung, gewährleistet, dass ein Auftrag zumindest einmal zugeordnet ist (eine Implementierung an einem Knoten).
  • U(j, k, m) sei der nutzerspezifische Nutzen durch Ausführen des Auftrags j auf Knoten k unter Verwendung der Implementierung m.
  • Dann ist das Ziel zu maximieren: j k m X ( j , k , m ) u ( j , k , m )
    Figure DE102020101704A1_0005
    gemäß: k , R ( k ) j m X ( j , k , m ) r ( j , k , m ) j , k m X ( j , k , m ) 1
    Figure DE102020101704A1_0006
    In einem Beispiel ist das exemplarische Echtzeit-Planungs-Modul 304 eingerichtet, um ein ganzzahliges lineares Programm (ILP) als Planungsalgorithmus auszuführen, um eine Zuordnung von spezifischen Implementierungen von Anwendungen zu spezifischen Computerressourcen zu bestimmen. Das ILP kann rundungsbasierte Methoden wie COIN-OR branch and cut (CBC) Open-Source ILP Solver oder einen Gurobi ILP Solver verwenden.
  • In einem Beispiel ist das exemplarische Echtzeit-Planungs-Modul 304 eingerichtet, um einen gierigen Algorithmus als Planungsalgorithmus auszuführen, um eine Zuordnung von spezifischen Implementierungen von Anwendungen zu spezifischen Computerressourcen zu bestimmen und die spezifische Zuordnung von spezifischen Implementierungen zu spezifischen Computerressourcen auszugeben.
  • In einem Beispiel ist der gierige Algorithmus eingerichtet, um basierend auf der Nutzen-Einordnung Anwendungsimplementierungen zu sortieren, wobei die Anwendungsimplementierung mit dem höchsten Nutzen die höchste Einordnung erhält; und Anwendungsimplementierungen in Rangfolge eine nach der anderen an einem besten verfügbaren Knoten (z.B. Rechenressource 301) zu planen, wobei eine Anwendungsimplementierung geplant wird, wenn noch keine andere Implementierung der Anwendung bereits geplant wurde und der beste verfügbare Knoten in der Lage ist, die Anwendungsimplementierung auszuführen.
  • 5A und 5B sind Diagramme, die die Verwendung eines exemplarischen gierigen Algorithmus zur Planung von Anwendungsimplementierungen zur Ausführung veranschaulichen. In 5A ist ein Blockdiagramm dargestellt, das exemplarische Aufgaben und Anwendungsimplementierungen veranschaulicht, die von einem System geplant werden können, und die Art der Computerressource (z.B. CPU oder GPU), die zur Ausführung der Anwendungsimplementierung verwendet werden kann. In diesem Beispiel sollen drei Aufgaben ausgeführt werden, Auftrag 1, Auftrag 2 und Auftrag 3. Auftrag 1 hat eine Anwendungsimplementierung - Auftrag 1.A (für die CPU-Ausführung), Auftrag 2 hat zwei Anwendungsimplementierungen - Auftrag 2.A (für die CPU-Ausführung) und Auftrag 2.B (für die GPU-Ausführung), und Auftrag 3 hat zwei Anwendungsimplementierungen - Auftrag 3.A (für die GPU-Ausführung) und Auftrag 3.B (für die GPU-Ausführung).
  • In 5B ist ein Blockdiagramm dargestellt, das die exemplarische Sortierung und Planung der drei Aufgaben auf Rechenknoten mit einem exemplarischen gierigen Algorithmus veranschaulicht. Der exemplarische gierige Algorithmus sortiert zunächst die Anwendungsimplementierungen basierend auf dem Nutzen-Einordnung mit der Anwendungsimplementierung mit dem höchsten Nutzen-Einordnung. In diesem Beispiel wird Auftrag 3.A an erster Stelle, Auftrag 2.B an zweiter Stelle, Auftrag 2.A an dritter Stelle, Auftrag 1.A an vierter Stelle und Auftrag 3.B an letzter Stelle platziert. Die Anwendungsimplementierungen werden nach ihrer Nutzen-Einordnung in der Reihenfolge des höchsten Nutzenrangs bis zum niedrigsten Nutzenrang sortiert.
  • Zweitens, der gierige Beispiel-Algorithmus plant Aufgaben auf Rechenknoten. Da Auftrag 3.A an erster Stelle steht, wird er für die Ausführung an Knoten 1 geplant, der über genügend Rechenressourcen für Auftrag 3.A. verfügt. Auftrag 2.B, der an zweiter Stelle steht, wird als nächstes an Knoten 1 geplant, der über genügend Rechenressourcen für Auftrag 2.B zusätzlich zu Auftrag 3.A verfügt. Auftrag 2.A wird nicht geplant, da bereits eine weitere Implementierung der Anwendung, Auftrag 2.B, geplant wurde. Auftrag 1.A, der als nächstes in der Nutzen-Einordnung steht, wird als nächstes am Knoten 2 geplant, der über genügend Rechenressourcen für Auftrag 1.A. verfügt. Auftrag 3.B wird nicht geplant, da eine andere Implementierung der Anwendung, Auftrag 3.A, bereits geplant wurde. Zusammenfassend lässt sich sagen, dass der gierige Algorithmus Anwendungsimplementierungen eine nach der anderen in Rangfolge an einem besten verfügbaren Knoten plant, wobei eine Anwendungsimplementierung geplant wird, wenn noch keine andere Implementierung der Anwendung bereits geplant wurde und der beste verfügbare Knoten in der Lage ist, die Anwendungsimplementierung auszuführen.
  • Unter Bezugnahme auf 3 wird in einem weiteren Beispiel das exemplarische Echtzeit-Planungs-Modul 304 mit einem weiteren exemplarischen gierigen Algorithmus eingerichtet, um spezifische Anwendungsimplementierungen zur Ausführung an spezifischen Knoten zu planen. Der gierige Algorithmus in diesem Beispiel ist eingerichtet, um: alle möglichen Kombinationen von Anwendungsimplementierungen aufzuzählen, wobei jede Kombination hierin als Bündel bezeichnet wird; den Nutzen jedes Bündel-Knoten-Paares zu berechnen; Bündel-Knoten-Paare zuerst nach dem höchsten Nutzen zu sortieren, und Bündel einzeln zu planen, bis alle Knoten zugewiesen wurden oder alle Aufträge geplant wurden, wobei zugewiesene Bündel keine Implementierungen desselben Auftrags enthalten können.
  • 6 ist ein Diagramm, das exemplarische Aufträge und exemplarische Auftragsbündel veranschaulicht, die bei der Planung von Aufträgen mit einem exemplarischen gierigen Algorithmus verwendet werden. In 6 ist ein Blockdiagramm dargestellt, das exemplarische Aufgaben und Anwendungsimplementierungen veranschaulicht, die von einem System geplant werden können, und die Art der Computerressource (z.B. CPU oder GPU), die zur Ausführung der Anwendungsimplementierung verwendet werden kann. In diesem Beispiel sollen drei Aufgaben ausgeführt werden, Auftrag 1, Auftrag 2 und Auftrag 3. Auftrag 1 hat eine Anwendungsimplementierung - Auftrag 1.A (für die CPU-Ausführung), Auftrag 2 hat zwei Anwendungsimplementierungen - Auftrag 2.A (für die CPU-Ausführung) und Auftrag 2.B (für die GPU-Ausführung), und Auftrag 3 hat zwei Anwendungsimplementierungen - Auftrag 3.A (für die GPU-Ausführung) und Auftrag 3.B (für die GPU-Ausführung).
  • 6 veranschaulicht auch die Aufzählung aller möglichen Kombinationen von Anwendungsimplementierungen (z.B. Bündels). Wie dargestellt, kann ein Bündel in diesem Beispiel aus einer Anwendungsimplementierung (z.B. (1A), (2A), (2B), (3A), (3B)) bestehen. Ein Bündel kann in diesem Beispiel aus zwei Anwendungsimplementierungen bestehen (z.B. (1A, 2A), (1A, 2B), (1A, 3A), (1A, 3B), (2A, 3A), (2A, 3B), (2B, 3A), (2B, 3B)). Ein Bündel kann in diesem Beispiel aus drei Anwendungsimplementierungen (1A, 2A, 3A), (1A, 2A, 3B), (1A, 2B, 3A), (1A, 2B, 3B) bestehen. Ein Bündel kann nur eine Implementierung derselben Anwendung beinhalten - es kann nicht zwei oder mehr Implementierungen derselben Anwendung beinhalten. Wie dargestellt, ist das Beispielbündel 602 ein geeignetes Bündel, da es nicht mehr als eine Implementierung derselben Anwendung enthält - es enthält jeweils eine Implementierung der Anwendungsaufträge 1, 2 und 3 (1A, 2A, 3B). Wie dargestellt, kann der Satz 604 kein Bündel sein - er beinhaltet zwei Implementierungen derselben Anwendung (Auftrag 3.A und Auftrag 3.B).
  • 7A und 7B sind Diagramme, die die Sortierung und Planung von Bündels zu Knoten (z.B. Rechenressourcen) am Beispiel des gierigen Algorithmus veranschaulichen. In 7A ist ein Diagramm 702 dargestellt, das die mögliche Zuordnung von Bündels zu Knoten veranschaulicht. Obwohl nur wenige mögliche Kombinationen von Bündeln zu Knoten dargestellt werden, kann der Graph alle möglichen Kombinationen von Bündeln zu Knoten offenlegen. In diesem Beispiel zeigt der Graph, dass die Bündel B1 oder B2 dem Knoten 1 (N1) zugeordnet werden konnten, nur das Bündel B3 dem Knoten 2 (N2) und die Bündel B2 und B3 dem Knoten 3 (N3) zugeordnet werden konnten. Neben der Darstellung möglicher Zuordnungen von Bündeln zu Knoten werden auch Nutzenwerte dargestellt, die nach dem Beispielalgorithmus berechnet und jedem potenziellen Bündel zu Knoten zugeordnet werden. In diesem Beispiel wird der Potentialbündel-Knotenzuordnung (N1B1) ein berechneter Nutzwert von u1, der Potentialbündel-Knotenzuordnung (N1B2) ein berechneter Nutzwert von u2, der Potentialbündel-Knotenzuordnung (N3B2) ein berechneter Nutzwert von u3, der Potentialbündel-Knotenzuordnung (N2B3) ein berechneter Nutzwert von u4 und der Potentialbündel-Knotenzuordnung (N3B3) ein berechneter Nutzwert von u5 zugeordnet.
  • Außerdem ist ein Konfliktdiagramm 704 dargestellt, das die konkurrierenden Potenzialbündel, die jedem Knoten zugeordnet werden können, und den berechneten Nutzwert für jede Zuordnung von Potenzialbündeln zu Knoten zeigt. Der Konfliktgraph 704 zeigt, dass die Knotenzuordnungen entweder Bündel zu Knotenkombination N1B1 oder N1B2, Knotenkombination N2B3 und Bündel zu Knotenkombination N3B2 oder N3B3 beinhalten können.
  • 7B ist ein Diagramm, das die Umwandlung von Informationen aus dem Konfliktgraph 710 in eine tatsächliche Zuordnung von Bund zu Knoten am Beispiel des gierigen Algorithmus veranschaulicht. Das Konfliktdiagramm 710 zeigt in diesem Beispiel die konkurrierenden Potentialbündel, die jedem Knoten zugeordnet werden können, und den berechneten Nutzwert für jede Potentialbündel-Knoten-Zuordnung und zeigt, dass der Potentialbündel-Knoten-Zuordnung (N1B1) ein berechneter Nutzwert von 20 zugeordnet ist, Potentialbündel-Knotenzuordnung (N1B2) wird ein berechneter Nutzwert von 10, Potentialbündel-Knotenzuordnung (N3B2) ein berechneter Nutzwert von 15, Potentialbündel-Knotenzuordnung (N2B3) ein berechneter Nutzwert von 5 und Potentialbündel-Knotenzuordnung (N3B3) ein berechneter Nutzwert von 8 zugewiesen.
  • 7B enthält auch eine Tabelle 712 zur Verwendung bei der Konvertierung von Daten aus dem Konfliktgraph 710 in tatsächliche Bündel-Knoten-Zuordnungen. Tabelle 712 zeigt, dass, da der Zuordnung von Potentialbündel zu Knoten (N1B1) der höchste berechnete Nutzwert bei 20 zugeordnet ist, das Bündel B1 auf Knoten 1 (N1) geplant ist. Da der Potentialbündel-Knoten-Zuordnung (N3B2) der nächsthöhere berechnete Nutzwert bei 15 zugeordnet ist, wird das Bündel B2 auf Knoten 3 (N3) terminiert, da Knoten 3 (N3) nicht bereits zugeordnet wurde. Auch wenn die Zuordnung von Potentialbündel zu Knoten (N1B2) mit 10 den nächsthöheren berechneten Nutzwert erhält, wird das Bündel B2 nicht auf Knoten 1 (N1) terminiert, da Knoten 1 (N1) bereits zugeordnet wurde. Auch wenn die Zuordnung von Potentialbündel zu Knoten (N3B3) mit 8 den nächsthöheren berechneten Nutzwert erhält, wird das Bündel B3 nicht auf Knoten 3 (N3) terminiert, da Knoten 3 (N3) bereits zugeordnet wurde. Da der Potentialbündel-Knoten-Zuordnung (N2B3) der nächsthöhere berechnete Nutzwert bei 5 zugeordnet ist, wird das Bündel B3 auf Knoten 2 (N2) terminiert, da Knoten 2 (N2) nicht bereits zugeordnet wurde.
  • Zusammenfassend zeigt Tabelle 712, dass der exemplarische gierige Algorithmus die Bündel-Knoten-Paare zuerst nach dem höchsten Nutzen sortiert und die Bündel eines nach dem anderen einplant, bis alle Knoten zugeordnet oder alle Aufträge geplant sind.
  • Unter Bezugnahme auf 3 ist das Beispiel-Dispatcher-Modul 312 eingerichtet, um die zugewiesenen spezifischen Implementierungen von Anwendungen zur Ausführung an die zugewiesene Computerressource zu senden. Daher werden die über einen gierigen Algorithmus vorgenommenen Zuweisungen durch das Beispiel-Dispatcher-Modul 312 implementiert.
  • 8 ist ein exemplarisches Flussdiagramm, das exemplarische Komponenten in einer exemplarischen Umgebung 800 für ein exemplarisches Aufgabenzuweisungssystem darstellt. Das exemplarische Aufgabenzuweisungssystem ist eingerichtet, um atomare Computeraufgaben dynamisch einer Reihe von vernetzten Computervorrichtungen mit heterogenen Fähigkeiten zuzuordnen.
  • Ein Beispiel eines Echtzeit-Planungs-Moduls 802 empfängt Aufgabenanforderungen 804 für die Ausführung von Aufträgen durch Computerressourcen in Computervorrichtungen. Zu den exemplarischen Rechenvorrichtungen gehören lokale Rechengeräte 806 (z.B. Onboard-Controller in einem Fahrzeug), Edge-Computergeräte 808 (z.B. Controller in Verkehrseinrichtungen) und Cloud-Computergeräte 810 (z.B. Cloud-basierte Server). Die exemplarischen Rechengeräte 806, 808, 810 beinhalten Rechenressourcen, die aus CPUs, GPUs, ASICs, FPGAs, DSPs, etc. bestehen.
  • Das exemplarische Echtzeit-Planungs-Modul 802 überwacht den Status und die Konnektivität zu den Computerressourcen über einen Ressourcenmonitor 812 und einen Leistungsmonitor 814. Der exemplarische Ressourcenmonitor 812 verfolgt die Geräte 806, 808, 810 und ihre verfügbaren Ressourcen. Der exemplarische Leistungsmonitor 814 sammelt Statistiken über die Kommunikationskanäle und die Gerätegeschwindigkeit.
  • Das exemplarische Echtzeit-Planungs-Modul 802 identifiziert spezifische Auftragsimplementierungen aus der Aufgabenprofil-Datenbank 816. Die exemplarische Aufgabenprofil-Datenbank 816 enthält statische und dynamische Daten über Aufgaben, einschließlich Ressourcenauslastung, Latenzzeit, Zuverlässigkeit usw. Basierend auf den statischen und dynamischen Daten über Aufgaben, verfügbare Ressourcen und Kommunikationskanäle und Gerätegeschwindigkeit plant das exemplarische Echtzeit-Planungs-Modul 802 spezifische Auftragsimplementierungen für spezifische Computerressourcen, um die Aufgabenanforderungen 804 zu erfüllen. Das exemplarische Echtzeit-Planungs-Modul 802 führt Planungsalgorithmen aus, um Aufträge zur Ausführung an Geräte zuzuweisen. Die Planungsalgorithmen können die Verwendung von ILP- oder gierigen Algorithmen beinhalten.
  • Das Beispiel-Dispatcher-Modul 818 ruft die spezifischen Auftragsimplementierungen ab, die durch das Beispiel-Echtzeit-Planungs-Modul 802 aus einer Aufgabenbibliothek 820 geplant wurden, und sendet die spezifischen Auftragsimplementierungen zur Ausführung an spezifische Computerressourcen innerhalb von Computergeräten 806, 808, 810 über einen Kommunikationsmanager 822. Die exemplarische Aufgabenbibliothek 820 enthält Binärdateien der Auftragsimplementierungen. Der exemplarische Kommunikationsmanager 822 verwaltet Kommunikationsverbindungen zwischen Geräten. Die Kommunikationsverbindungen können über DSRC, Mobilfunknetz (z.B. LTE, 5G oder andere), Ethernet, Controller Area Network (CAN), Wireless Local Area Network (WLAN) und/oder andere Kommunikationsprotokolle realisiert werden.
    9 ist ein Prozessablaufdiagramm, das einen exemplarischen Prozess 900 in einem exemplarischen Aufgabenzuweisungssystem darstellt. Die Reihenfolge der Bedienung innerhalb des Prozesses 900 beschränkt sich nicht auf die sequentielle Ausführung, wie in der Abbildung dargestellt, sondern kann gegebenenfalls in einer oder mehreren unterschiedlichen Ordnungen und in Übereinstimmung mit der vorliegenden Offenbarung durchgeführt werden.
  • Der exemplarische Prozess 900 beinhaltet das Empfangen von Aufgabenanforderungen für die Ausführung von Aufträgen durch Computerressourcen (Operation 902) in Computergeräten. Die exemplarischen Rechenvorrichtungen können lokale Rechenvorrichtungen 806 (z.B. Onboard-Controller in einem Fahrzeug), Edge-Computervorrichtungen 808 (z.B. Controller in Verkehrseinrichtungen) und Cloud-Computervorrichtungen 810 (z.B. Cloud-basierte Server) beinhalten. Die exemplarischen Rechenvorrichtungen 806, 808, 810 können Rechenressourcen beinhalten, die aus Zentraleinheiten (CPUs), Grafikprozessoreinheiten (GPUs), digitalen Signalprozessoren (DSPs), anwendungsspezifischen integrierten Schaltungen (ASICs), feldprogrammierbaren Gate-Arrays (FPGAs) oder anderen bestehen.
  • Der exemplarische Prozess 900 beinhaltet die Überwachung des Status und der Konnektivität zu den Computerressourcen (Operation 904). Die Überwachung kann das Verfolgen von Computervorrichtungen und ihren verfügbaren Computerressourcen beinhalten, die Statistiken über Kommunikationskanäle und die Geschwindigkeit von Computervorrichtungen sammeln.
  • Der exemplarische Prozess 900 beinhaltet die Identifizierung spezifischer Auftragsimplementierungen für die Terminierung (Vorgang 906). Die spezifischen Auftragsimplementierungen können aus einer Aufgabenprofil-Datenbank 816 identifiziert werden. Die exemplarische Aufgabenprofil-Datenbank 816 kann statische und dynamische Daten über Aufgaben enthalten, einschließlich Ressourcenauslastung, Latenzzeit, Zuverlässigkeit usw.
  • Der exemplarische Prozess 900 beinhaltet die Planung spezifischer Auftragsimplementierungen auf spezifische Computerressourcen (Operation 908). Die spezifischen Auftragsimplementierungen können auf spezifische Computerressourcen geplant werden, um die Aufgabenanforderungen basierend auf statischen und dynamischen Daten über Aufgaben, verfügbare Ressourcen, Kommunikationskanäle und Gerätegeschwindigkeit zu erfüllen. Die Planung spezifischer Auftragsimplementierungen für spezifische Computerressourcen kann die Ausführung von Planungsalgorithmen beinhalten, um Aufträge zur Ausführung an Geräte zuzuweisen. Die Planungsalgorithmen können ILP-basierte Algorithmen beinhalten. Die Planungsalgorithmen können gierige Algorithmen beinhalten.
  • Ein gieriger Planungsalgorithmus kann eingerichtet werden, um Anwendungsimplementierungen, basierend auf der Nutzen-Einordnung, zu sortieren, wobei die Anwendungsimplementierung mit dem höchsten Nutzen die höchste Einordnung erhält; und Anwendungsimplementierungen in der Rangfolge eine nach der anderen an einem besten verfügbaren Knoten (z.B. Computerressource) zu planen, wobei eine Anwendungsimplementierung geplant wird, wenn noch keine andere Implementierung der Anwendung bereits geplant wurde und der beste verfügbare Knoten in der Lage ist, die Anwendungsimplementierung auszuführen. Der Nutzen einer Anwendungsimplementierung hängt von der Priorität ab und kann eine Funktion der Daten sein, die in der Datenbank der Aufgabenprofile enthalten sind, der gewählten Implementierung und dem Ort, an dem sie ausgeführt werden soll.
  • Ein gieriger Planungsalgorithmus kann eingerichtet werden, um: alle möglichen Kombinationen von Anwendungsimplementierungen aufzuzählen, wobei jede Kombination hierin als Bündel bezeichnet wird; den Nutzen jedes Bündel-Knoten-Paares zu berechnen; Bündel-Knoten-Paare zuerst nach dem höchsten Nutzen zu sortieren, und Bündel eines nach dem anderen zu planen, bis alle Knoten zugewiesen wurden oder alle Aufträge geplant wurden, wobei zugewiesene Bündel keine Implementierungen desselben Auftrags enthalten können.
  • Der exemplarische Prozess 900 beinhaltet das Abrufen der spezifischen Auftragsimplementierungen, die aus einer Aufgabenbibliothek geplant wurden, und (Operation 910) das Senden der spezifischen Auftragsimplementierungen zur Ausführung an spezifische Computerressourcen (Operation 912). Die exemplarische Aufgabenbibliothek kann Binärdateien der verschiedenen Auftragsimplementierungen enthalten. Die verschiedenen Auftragsimplementierungen bieten verschiedene Implementierungen von Aufgaben (Optionen) für verschiedene Hardware, Genauigkeitsstufen basierend auf akzeptablen Kompromissen.
  • Die Disposition kann über einen Kommunikationsmanager erfolgen. Der Kommunikationsmanager kann eingerichtet werden, um Kommunikationsverbindungen zwischen Geräten zu verwalten. Die Kommunikationsverbindungen können über DSRC, Mobilfunknetz (z.B. LTE, 5G oder andere), Ethernet, Controller Area Network (CAN), Wireless Local Area Network (WLAN) und/oder andere Kommunikationsprotokolle realisiert werden.
  • Im Folgenden werden die Merkmale mehrerer Ausführungsformen beschrieben, damit die Fachleute die Aspekte der vorliegenden Offenbarung besser verstehen können. Die Fachleute sollten verstehen, dass sie die vorliegende Offenbarung ohne weiteres als Grundlage für die Gestaltung oder Änderung anderer Prozesse und Strukturen zur Erfüllung der gleichen Zwecke und/oder zur Erzielung der gleichen Vorteile der hierin vorgestellten Ausführungsformen verwenden können. Die Fachleute sollten auch erkennen, dass solche gleichwertigen Konstruktionen nicht vom Geist und Umfang der vorliegenden Offenbarung abweichen und dass sie verschiedene Änderungen, Substitutionen und Änderungen hierin vornehmen können, ohne vom Geist und Umfang der vorliegenden Offenbarung abzuweichen.

Claims (10)

  1. Ein Aufgabenzuweisungssystem zum dynamischen Zuweisen von atomaren Computeraufgaben zu einer Reihe von vernetzten Computerressourcen mit heterogenen Fähigkeiten, wobei das System umfasst: eine Aufgabenbibliothek, die eine Vielzahl von Aufgaben umfasst, wobei jede Aufgabe eine von einer Vielzahl von verschiedenen Implementierungen einer Anwendung ist, wobei die verschiedenen Implementierungen einer Anwendung unterschiedliche Genauigkeitsstufen und Ressourcenverbräuche während der Ausführung bereitstellen, wobei die verschiedenen Implementierungen basierend auf einem Kompromiss zwischen Genauigkeitsstufen und Ressourcenverbräuchen während der Ausführung eingerichtet sind; und ein Echtzeit-Planungs-Modul, das einen oder mehrere Prozessoren umfasst, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, wobei das Planungs-Modul eingerichtet ist, um verfügbare Computerressourcen und die Konnektivität zu den Computerressourcen zu überwachen, eine Vielzahl von Aufgabenanforderungen zu empfangen, wobei die Aufgabenanforderungen eine Spezifikation von Aufträgen sind, die zur Durchführung angefordert werden, Anwendungen zu priorisieren, die bei dem Durchführen der Aufträge ausgeführt werden sollen, wobei kritischeren Anwendungen eine höhere Priorität zugeordnet wird, Computerressourcen den Anwendungen mit höherer Priorität zuzuordnen, verbleibende Computerressourcen anderen Anwendungen zuzuordnen und spezifische Implementierungen von Anwendungen zur Zuordnung zu spezifischen Computerressourcen in einer Weise auszuwählen, die einen Gesamtnutzen maximiert; ein Dispatcher-Modul, das einen oder mehrere Prozessoren umfasst, die durch Programmieranweisungen auf nichtflüchtigen, computerlesbaren Medien eingerichtet sind, wobei das Dispatcher-Modul eingerichtet ist, um die zugeordneten spezifischen Implementierungen von Anwendungen zur Ausführung an ihre zugewiesene Computerressource zu senden.
  2. Das Aufgabenzuweisungssystem nach Anspruch 1, wobei: die Reihe von vernetzten Computervorrichtungen On-Board-Hardware und eine oder mehrere mobile Vorrichtungen, EDGE-Vorrichtungen und Cloud-basierte Server umfasst; und die Rechenressourcen eine oder mehrere aus der Gruppe von zentralen Verarbeitungseinheiten, CPUs, Grafikprozessoreinheiten, GPUs, digitalen Signalprozessoren, DSPs, anwendungsspezifischen integrierten Schaltungen, ASICs, und feldprogrammierbaren Gate-Arrays, FPGAs, umfassen.
  3. Das Aufgabenzuweisungssystem nach Anspruch 1, wobei das Echtzeit-Planungs-Modul eingerichtet ist, zum: Ausführen eines gierigen Algorithmus, um eine Zuordnung von spezifischen Implementierungen von Anwendungen zu spezifischen Computerressourcen zu bestimmen; und Ausgeben der spezifischen Zuordnung von spezifischen Implementierungen zu spezifischen Computerressourcen.
  4. Das Aufgabenzuweisungssystem nach Anspruch 3, wobei der gierige Algorithmus eingerichtet ist zum: Einordnen, basierend auf dem Nutzen, von Auftragsimplementierungen, wobei die Auftragsimplementierung mit dem höchsten Nutzen an erster Stelle steht; und Planen von Auftragsimplementierungen in ihrer Rangfolge einen nach dem anderen, an einem besten verfügbaren Knoten, wobei eine Auftragsimplementierung geplant ist, wenn bisher noch keine andere Implementierung des Auftrags geplant wurde und der beste verfügbare Knoten in der Lage ist, die Auftragsimplementierung auszuführen.
  5. Das Aufgabenzuweisungssystem nach Anspruch 3, wobei der gierige Algorithmus eingerichtet ist, zum: Nummerieren aller möglichen Kombinationen von Aufträgen, wobei jede mögliche Kombination von Aufträgen als Bündel bezeichnet wird; Bestimmen von potentiellen Bündel-Knoten-Paaren; Berechnen einer Nutzenmessung für jedes potenzielle Bündel-Knoten-Paar; Sortieren der Bündel-Knoten-Paare in Nutzenreihenfolge, wobei das Bündel-Knoten-Paar mit dem höchsten Nutzen zuerst positioniert ist; und Planen der Bündel eines nach der anderen, bis alle Knoten zugeordnet sind oder alle Aufträge geplant sind, wobei zugeordnete Bündel keine Implementierungen desselben Auftrags enthalten dürfen.
  6. Das Aufgabenzuweisungssystem nach Anspruch 1, ferner umfassend: eine Aufgabenprofil-Datenbank, die Aufgabenprofile für jede Anwendungsimplementierung enthält, wobei die Aufgabenprofile statische und dynamische Daten über Aufgaben, einschließlich Ressourcennutzung, Latenz und Zuverlässigkeit, beinhalten, wobei die Aufgabenprofile durch das Planungs-Modul zugänglich sind, wenn spezifische Implementierungen von Anwendungen zur Zuordnung zu spezifischen Computerressourcen ausgewählt werden; einen Ressourcenmonitor, der eingerichtet ist, um Geräte und ihre verfügbaren Computerressourcen zu verfolgen, wobei das Echtzeit-Planungs-Modul eingerichtet ist, um verfügbare Computerressourcen anhand von Informationen zu überwachen, die von dem Ressourcenmonitor bereitgestellt werden; einen Durchführungsmonitor, der eingerichtet ist, um Statistiken über die Kommunikationskanäle und die Gerätegeschwindigkeit zu sammeln; und einen Kommunikationsmanager, der eingerichtet ist, um Kommunikationsverbindungen zwischen Vorrichtungen zu verwalten, die Computerressourcen bereitstellen, wobei die Kommunikationsverbindungen unter Verwendung einer Vielzahl von dedizierten Kurzstreckenkommunikationen, DSRC, einem zellularen drahtlosen Netzwerk, Ethernet, einem drahtlosen lokalen Netzwerk ,WLAN, und einem Controller Area Network, CAN, implementiert sind.
  7. Ein prozessorimplementiertes Verfahren in einem Fahrzeug zum dynamischen Zuweisen von Aufgaben der Fahrzeugberechnung zu einer Reihe von vernetzten Computerressourcen mit heterogenen Fähigkeiten, wobei das Verfahren umfasst: Empfangen, durch einen Prozessor im Fahrzeug, von Aufgabenanforderungen für die Durchführung von Aufträgen durch Computerressourcen; Überwachen, durch den Prozessor, des Status und der Verbindung zu den Computerressourcen; Identifizieren, durch den Prozessor, spezifischer Auftragsimplementierungen für die Planung; Planen, durch den Prozessor, von spezifischen Auftragsimplementierungen auf spezifischeComputerressourcen; Abrufen, durch den Prozessor, der spezifischen Auftragsimplementierungen, die aus einer Aufgabenbibliothek geplant wurden; und Senden, durch den Prozessor, der spezifischen Auftragsimplementierungen zur Ausführung an die spezifischen Computerressourcen.
  8. Das Verfahren nach Anspruch 7, wobei das Planen spezifischer Auftragsimplementierungen auf spezifische Computerressourcen das Ausführen eines Planungsalgorithmus zum Zuweisen von Aufträgen an Vorrichtungen zur Ausführung umfasst, wobei der Planungsalgorithmus einen ILP-basierten Algorithmus oder einen gierigen Algorithmus umfasst.
  9. Das Verfahren nach Anspruch 7, wobei: der Planungsalgorithmus einen gierigen Algorithmus umfasst; der gierige Algorithmus eingerichtet ist, um basierend auf der Nutzen-Einordnung Auftragsimplementierungen zu sortieren, wobei die Auftragsimplementierung mit dem höchsten Nutzen die höchste Einordnung erhält; und der gierige Algorithmus eingerichtet ist, um Auftragsimplementierungen eine nach der anderen in Rangfolge an einer besten verfügbaren Computerressource zu planen, wobei eine Auftragsimplementierung geplant ist, wenn noch keine andere Auftragsimplementierung bereits geplant wurde und der beste verfügbare Knoten in der Lage ist, die Auftragsimplementierung auszuführen.
  10. Das Verfahren nach Anspruch 7, wobei: der Planungsalgorithmus einen gierigen Algorithmus umfasst; der gierige Algorithmus eingerichtet ist, um alle möglichen Kombinationen von Anwendungsimplementierungen zu nummerieren, wobei jede Kombination als Bündel bezeichnet wird; potenzielle Bündel-Knoten-Paare zu bestimmen, den Nutzen jedes Bündel-Knoten-Paares zu berechnen; die Bündel-Knoten-Paare in Nutzen-Reihenfolge zu sortieren, wobei das Bündel-Knoten-Paar mit dem höchsten Nutzen zuerst positioniert ist; und Bündel eines nach dem anderen zu planen, bis alle Knoten zugewiesen wurden oder alle Aufträge geplant wurden, wobei zugewiesene Bündel keine Implementierungen desselben Auftrags enthalten können.
DE102020101704.9A 2019-02-25 2020-01-24 Verfahren und vorrichtung zur zuweisung von automobilcomputeraufgaben an vernetzte vorrichtungen mit heterogenen fähigkeiten Pending DE102020101704A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/283,944 2019-02-25
US16/283,944 US10956211B2 (en) 2019-02-25 2019-02-25 Method and apparatus of allocating automotive computing tasks to networked devices with heterogeneous capabilities

Publications (1)

Publication Number Publication Date
DE102020101704A1 true DE102020101704A1 (de) 2020-08-27

Family

ID=72139382

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020101704.9A Pending DE102020101704A1 (de) 2019-02-25 2020-01-24 Verfahren und vorrichtung zur zuweisung von automobilcomputeraufgaben an vernetzte vorrichtungen mit heterogenen fähigkeiten

Country Status (3)

Country Link
US (1) US10956211B2 (de)
CN (1) CN112000458A (de)
DE (1) DE102020101704A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020210729A1 (en) * 2019-04-12 2020-10-15 Harman International Industries, Incorporated Elastic computing for in-vehicle computing systems
US11567495B2 (en) * 2019-12-11 2023-01-31 Toyota Motor Engineering & Manufacturing North America, Inc. Methods and systems for selecting machine learning models to predict distributed computing resources
US20210291851A1 (en) * 2020-03-23 2021-09-23 Toyota Motor Engineering & Manufacturing North America, Inc. Switching decision for vehicle computational offloading to roadside edge server
US11297161B1 (en) * 2020-10-08 2022-04-05 Toyota Motor Engineering & Manufacturing North America, Inc. Systems and methods for managing an automotive edge computing environment
US20220179411A1 (en) * 2020-12-09 2022-06-09 International Business Machines Corporation Edge computing autonomous vehicle infrastructure
US20220222122A1 (en) * 2021-01-08 2022-07-14 Dell Products L.P. Model-based resource allocation for an information handling system
CN113612839A (zh) * 2021-07-30 2021-11-05 国汽智控(北京)科技有限公司 一种驾驶任务计算终端确定方法、装置及计算机设备
US20230100163A1 (en) * 2021-09-24 2023-03-30 Google Llc Allocating computing device resources
EP4235416A1 (de) * 2022-02-24 2023-08-30 HENSOLDT Sensors GmbH Gerät und verfahren zur verwaltung von ressourcen eines multifunktionalen funkfrequenzsystems
CN114706689B (zh) * 2022-05-17 2022-08-16 中诚华隆计算机技术有限公司 一种基于子任务特性的多核处理器任务调度方法及系统
CN116842994B (zh) * 2023-07-03 2024-03-01 上海交通大学 多神经网络执行效率动态优化方法及系统
CN117632298B (zh) * 2023-12-06 2024-05-31 江西理工大学 一种基于优先级列表索引机制的任务卸载及资源分配方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058412A (ja) * 2005-08-23 2007-03-08 Denso Corp 車載システム及び車載システムにおけるリソースの管理方法
US10346775B1 (en) * 2015-11-16 2019-07-09 Turbonomic, Inc. Systems, apparatus and methods for cost and performance-based movement of applications and workloads in a multiple-provider system
US9141433B2 (en) * 2009-12-18 2015-09-22 International Business Machines Corporation Automated cloud workload management in a map-reduce environment
US9515899B2 (en) * 2012-12-19 2016-12-06 Veritas Technologies Llc Providing optimized quality of service to prioritized virtual machines and applications based on quality of shared resources
US9329888B2 (en) * 2013-01-28 2016-05-03 International Business Machines Corporation Computing optimized virtual machine allocations using equivalence combinations
US10521439B2 (en) * 2014-04-04 2019-12-31 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method, apparatus, and computer program for data mining
US10049327B2 (en) * 2014-12-12 2018-08-14 Qualcomm Incorporated Application characterization for machine learning on heterogeneous core devices
GB2535718A (en) * 2015-02-24 2016-08-31 Addison Lee Ltd Resource management
CN104834556B (zh) * 2015-04-26 2018-06-22 西北工业大学 一种多态实时任务与多态计算资源的映射方法
US10628222B2 (en) * 2016-05-17 2020-04-21 International Business Machines Corporation Allocating compute offload resources
US10599471B1 (en) * 2016-08-08 2020-03-24 Cognizant Technology Solutions U.S. Corporation Project scheduling in a heterogeneous distributed computing environment
CN106878389B (zh) * 2017-01-04 2020-02-07 北京百度网讯科技有限公司 用于在云系统中进行资源调度的方法和装置
US10759444B2 (en) * 2017-07-07 2020-09-01 Toyota Research Institute, Inc. Resource optimization in vehicles
US20190034716A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Privacy-preserving demographics identification
CN108594819A (zh) * 2018-05-03 2018-09-28 济南浪潮高新科技投资发展有限公司 自动驾驶车载计算资源管理系统和方法

Also Published As

Publication number Publication date
US20200272509A1 (en) 2020-08-27
CN112000458A (zh) 2020-11-27
US10956211B2 (en) 2021-03-23

Similar Documents

Publication Publication Date Title
DE102020101704A1 (de) Verfahren und vorrichtung zur zuweisung von automobilcomputeraufgaben an vernetzte vorrichtungen mit heterogenen fähigkeiten
DE102018100112B4 (de) Verfahren und Systeme zum Verarbeiten von lokalen und Cloud-Daten in einem Fahrzeug
DE102018120845B4 (de) Verfahren und Vorrichtung zum Überwachen eines autonomen Fahrzeugs
DE102017108447A1 (de) Fahrzeugmodusplanung mit gelernten Benutzerpräferenzen
DE102018122588A1 (de) Systeme und verfahren zur zusammenarbeit zwischen autonomen fahrzeugen
DE102020101140A1 (de) Verfahren und system zum bestimmen einer aktion eines autonomen fahrzeugs (av) basierend auf fahrzeug- und edge-sensordaten
DE102020107029A1 (de) Beschleunigung der datenverarbeitung zur objektdetektion
DE102019133703A1 (de) Verfahren und systeme zur herstellung und lokalisierung für ein fahrzeug
DE102018119468A1 (de) Verfahren und vorrichtung zur unterstützung aufgabenkritischer anwendungen über rechnergestützte cloud-auslagerung
WO2017137124A1 (de) Kraftfahrzeug-steuervorrichtung und verfahren zum ermitteln von ausweichtrajektorien für ein kollisionsfreies ausweichmanöver mehrerer kraftfahrzeuge
DE102019113345A1 (de) Systeme und verfahren zur verwendung des strassenverständnisses zur einschränkung von radarspuren
DE102016003969A1 (de) Verfahren zum Erfassen von Umgebungsdaten mittels mehrerer Kraftfahrzeuge
DE102020105619A1 (de) System und verfahren zur bestimmung der fahrzeugposition
DE102020101973A1 (de) Verfahren zum priorisieren des empfangsprozesses für kooperative sensor-teilende objekte
DE102020129072A1 (de) Elektronische vorrichtung zur integration und vorhersage zukünftiger trajektorien einer beliebigen anzahl von umgebenden fahrzeugen und verfahren zum betrieb dieser vorrichtung
DE102019133708A1 (de) Verfahren und vorrichtung zum erfassen von statischen und dynamischen informationen auf spurniveau
DE102018120851A1 (de) Verfahren und Vorrichtung zur Koordination des Einsatzes einer Flotte von autonomen Fahrzeugen
DE102019114626B4 (de) Kraftfahrzeug mit einem System zur Hardware-Überprüfung in einem Kraftfahrzeug
DE102020106469A1 (de) Verfahren und systeme für die verwaltung automatisierter fahrfunktionen
DE102020101925A1 (de) Architektur und vorrichtung zur multi-datenstrom-bildverarbeitung auf gemeinsamen vorrichtungen
DE102012210454A1 (de) Verfahren und Vorrichtung zur Bereitstellung von Daten für einen elektronischen Horizont für ein Fahrerassistenzsystem eines Fahrzeugs
DE102020125772A1 (de) Warteschlangen für fahrzeugdatenübertragung
DE102020101832A1 (de) Verfahren und systeme zum interpretieren von verkehrssignalen und passieren von signalisierten kreuzungen
DE102017223621A1 (de) Verfahren und Steuereinheit zur Steuerung einer Funktion eines zumindest teilweise automatisiert fahrenden Fahrzeugs
WO2018073230A1 (de) Vorrichtungen, verfahren und computerprogramme für ein fahrzeug und eine zentralstelle

Legal Events

Date Code Title Description
R012 Request for examination validly filed