Beschreibung
Vorrichtungen, Verfahren und Computerprogramme für ein Fahrzeug und eine Zentralstelle
Die Erfindung bezieht sich auf eine Vorrichtung und ein Verfahren für ein Fahrzeug, eine Vorrichtung und ein Verfahren für eine Zentralstelle und Computerprogramme, spezifischer, aber nicht ausschließlich, auf Vorrichtungen zum Berechnen von Teilaufgaben einer verteilten Datenverarbeitung durch Berechnungsmodule von Fahrzeugen.
Der Entwurf von Fahrzeugen ist heute in vielen Fällen von Computern geprägt: Sowohl im Design-Prozess zur Darstellung von möglichen Varianten eines Designs, als auch in der technischen Entwicklung, etwa zur Simulation von Motor- oder Getriebekomponenten oder zur Durchführung von Luftflusssimulationen zum Erkennen von aerodynamischen Eigenschaften eines Fahrzeugentwurfs. Zusätzlich ergeben sich durch Maschinenlernen (engl. Machine Learning) Möglichkeiten, Eigenschaften von Fahrzeugen und Komponenten durch
Lernalgorithmen zu verbessern, etwa durch ein automatisiertes und evolutionäres Testen von Varianten. Sowohl Simulationen als auch Machine Learning-Algorithmen benötigen häufig große Mengen an Rechenleistung, um innerhalb vertretbarer Zeit zu Ergebnissen zu kommen.
Es besteht daher ein Bedarf für ein verbessertes Konzept zum Bereitstellen von Rechenleistung zur Durchführen von großen Datenverarbeitungen. Diesem Konzept wird durch die
unabhängigen Ansprüche Rechnung getragen.
Ausführungsbeispiele schaffen Vorrichtungen, Verfahren und Computerprogramme für Fahrzeuge und eine Zentralstelle. Die Zentralstelle kann beispielsweise ausgebildet sein, Fahrzeuge für die Verarbeitung von Teilaufgaben einer Datenverarbeitung basierend auf ein oder mehreren Kriterien, etwa Rechenleistung oder Verfügbarkeit, auszuwählen, und den entsprechenden Fahrzeugen die Teilaufgaben bereitzustellen. Diese Teilaufgaben werden von Recheneinheiten der Fahrzeuge bearbeitet, und ein Ergebnis wird der Zentralstelle
zurückgeschickt. Die Zentralstelle kann die Ergebnisse zusammenstellen und das
zusammengestellte Ergebnis bereitstellen.
Ausführungsbeispiele schaffen eine Vorrichtung für ein Fahrzeug. Die Vorrichtung umfasst ein Kommunikationsmodul, ausgebildet zu einer Kommunikation mit einer Zentralstelle. Die
Vorrichtung umfasst ferner ein Berechnungsmodul, ausgebildet zum Steuern des
Kommunikationsmoduls. Das Berechnungsmodul ist ferner ausgebildet zum Empfangen einer Teilaufgabe einer verteilten Datenverarbeitung von der Zentralstelle. Das Berechnungsmodul ist ferner ausgebildet zum Berechnen der Teilaufgabe der verteilten Datenverarbeitung zum Erhalten eines Ergebnisses der Teilaufgabe. Das Berechnungsmodul ist ferner ausgebildet zum Bereitstellen des Ergebnisses der Teilaufgabe für die Zentralstelle.
Das Berechnen der Teilaufgaben durch Fahrzeuge kann eine verteilte Bearbeitung der
Datenverarbeitung auf einer Vielzahl von Berechnungsmodulen ermöglichen, etwa zum
Bereitstellen von Rechenkapazität zum Lösen von Datenverarbeitungsaufgaben, die sich weitgehend parallelisieren lassen.
In zumindest manchen Ausführungsbeispielen kann das Berechnungsmodul ausgebildet sein, um eine Benachrichtigung über eine nicht- Verfügbarkeit des Fahrzeugs zum Berechnen der Teilaufgabe für die Zentralstelle bereitzustellen, falls die Vorrichtung deaktiviert wird, bevor die Teilaufgabe berechnet ist. Dies kann beispielsweise der Zentralstelle ermöglichen, die
Teilaufgabe einem weiteren Fahrzeug an Stelle des Fahrzeugs bereitzustellen.
In einigen Ausführungsbeispielen kann das Berechnungsmodul ausgebildet sein, um die Teilaufgabe basierend auf einer Architektur mit einer Instruktion für mehrere Datensätze (auch engl. Single Instruction, Multiple Data, SIMD) oder basierend auf einem Stream-Prozessor zu berechnen. SIMD-Architekturen oder Stream-Prozessoren können eine effizientere Berechnung von parallelisierbaren Datenverarbeitungsaufgaben ermöglichen.
In manchen Ausführungsbeispielen kann das Berechnungsmodul ferner ausgebildet sein, um über das Kommunikationsmodul mit ein oder mehreren weiteren Fahrzeugen zu kommunizieren zum Austausch von Ergebnissen von Teilaufgaben mit den ein oder mehreren weiteren
Fahrzeugen. Dies kann beispielsweise eine Nächste-Nachbarn-Kommunikation (auch engl. Nearest Neighbor Communication) ermöglichen zum effizienteren Lösen der Datenverarbeitung.
Ausführungsbeispiele schaffen ferner eine Vorrichtung für eine Zentralstelle. Die Vorrichtung umfasst ein Kommunikationsmodul, ausgebildet zur Kommunikation mit einer Mehrzahl von Fahrzeugen. Die Vorrichtung umfasst ferner ein Kontrollmodul, ausgebildet zum Steuern des Kommunikationsmoduls. Das Kontrollmodul ist ferner ausgebildet zum Bereitstellen von
Teilaufgaben einer verteilten Datenverarbeitung für die Mehrzahl von Fahrzeugen für eine verteilte Berechnung der verteilten Datenverarbeitung. Das Kontrollmodul ist ferner ausgebildet zum Empfangen von Ergebnissen der Teilaufgaben der verteilten Datenverarbeitung von der Mehrzahl von Fahrzeugen. Das Kontrollmodul ist ferner ausgebildet zum Zusammenstellen der Ergebnisse der verteilten Datenverarbeitung basierend auf den (empfangenen) Ergebnissen der Teilaufgaben.
Das Berechnen der Teilaufgaben durch Fahrzeuge kann eine verteilte Bearbeitung der
Datenverarbeitung auf einer Vielzahl von Berechnungsmodulen ermöglichen, etwa zum
Bereitstellen von Rechenkapazität zum Lösen von Datenverarbeitungsaufgaben, die sich weitgehend parallelisieren lassen.
In zumindest manchen Ausführungsbeispielen kann das Kontrollmodul ausgebildet sein, um die Mehrzahl von Fahrzeugen aus einer Gruppe von Fahrzeugen auszuwählen. Das Auswählen eines auszuwählenden Fahrzeugs für die Mehrzahl der Fahrzeuge kann auf zumindest einem Element der Gruppe von Systemauslastung eines Berechnungsmoduls des auszuwählenden Fahrzeugs, Energiekapazität des auszuwählenden Fahrzeugs, Leistungsfähigkeit des
Berechnungsmoduls des auszuwählenden Fahrzeugs, Konnektivität des auszuwählenden Fahrzeugs, Position des auszuwählenden Fahrzeugs, voraussichtliche Verfügbarkeit des auszuwählenden Fahrzeugs für ein Berechnen einer Teilaufgabe, vorherige Verarbeitung einer Teilaufgabe durch das auszuwählende Fahrzeug und Priorisierung des auszuwählenden Fahrzeugs für Berechnungen basieren. Dies kann eine Verteilung der Teilaufgaben an
Fahrzeuge ermöglichen, die für die Datenverarbeitung zur Verfügung stehen, beispielsweise Aufgrund ihrer Fähigkeiten oder ihrer Verfügbarkeit
Beispielsweise kann das Kontrollmodul ausgebildet sein, um die Teilaufgaben mehrfach oder gegenseitig überlappend der Mehrzahl von Fahrzeugen bereitzustellen. Dadurch kann eine Redundanz bei der Bearbeitung von Teilaufgaben ermöglicht werden, die eine Zeit für die Bearbeitung der gesamten Datenverarbeitung über alle Teilaufgaben verringern kann.
Beispielsweise kann das Kontrollmodul ausgebildet sein, um Teilaufgaben, die nicht innerhalb eines Zeitfensters von einem Fahrzeug der Mehrzahl von Fahrzeugen berechnet werden, einem anderen Fahrzeug der Mehrzahl von Fahrzeugen zum Berechnen bereitzustellen.
Beispielsweise kann das Kontrollmodul ausgebildet sein, um eine Teilaufgabe, die einem Fahrzeug bereitgestellt wurde, das zumindest vorübergehend nicht verfügbar ist, einem anderen Fahrzeug der Mehrzahl von Fahrzeugen zum Berechnen bereitzustellen. Dadurch
kann in manchen Fällen eine Gesamtdauer der Datenverarbeitung reduziert werden oder eine vollständige Bearbeitung ermöglicht werden.
In zumindest manchen Ausführungsbeispielen kann das Kontrollmodul ausgebildet sein, um zum Initiieren des Bereitstellens der Teilaufgaben für die Fahrzeuge der Mehrzahl von
Fahrzeugen die Fahrzeuge der Mehrzahl von Fahrzeugen zu kontaktieren (engl. Push-Prinzip). Dadurch kann eine aktive Verteilung der Teilaufgaben ermöglicht werden.
Alternativ oder zusätzlich kann das Kontrollmodul ausgebildet sein, um zum Initiieren des Bereitstellens einer Teilaufgabe für ein Fahrzeug der Mehrzahl von Fahrzeugen eine Anfrage des Fahrzeugs zu empfangen (engl. Pull-Prinzip). Dadurch können beispielsweise die
Fahrzeuge ihre Rechenkapazitäten zur Verfügung stellen, wenn sie für Berechnungen verfügbar sind.
Beispielsweise können die Teilaufgaben Instruktionen umfassen, die unabhängig von einer spezifischen Hardware-Architektur einer Berechnungseinheit eines Fahrzeugs der Mehrzahl von Fahrzeugen ausführbar sind, etwa in einer Zwischensprache (etwa einem Bytecode oder einem Code einer Programmiersprache für verteiltes Berechnen). Dies kann eine Modellübergreifende Berechnung der Teilaufgaben ermöglichen.
Ausführungsbeispiele schaffen ferner ein Verfahren für ein Fahrzeug. Das Verfahren umfasst Empfangen einer Teilaufgabe einer verteilten Datenverarbeitung von einer Zentralstelle. Das Verfahren umfasst ferner Berechnen der Teilaufgabe der verteilten Datenverarbeitung zum Erhalten eines Ergebnisses der Teilaufgabe. Das Verfahren umfasst ferner Bereitstellen des Ergebnisses der Teilaufgabe für die Zentralstelle.
Ausführungsbeispiele schaffen ferner ein Verfahren für eine Zentralstelle. Das Verfahren umfasst Bereitstellen von Teilaufgaben einer verteilten Datenverarbeitung für eine Mehrzahl von Fahrzeugen für eine verteilte Berechnung einer verteilten Datenverarbeitung. Das Verfahren umfasst ferner Empfangen von Ergebnissen der Teilaufgaben der verteilten Datenverarbeitung von der Mehrzahl von Fahrzeugen. Das Verfahren umfasst ferner Zusammenstellen der Ergebnisse der verteilten Datenverarbeitung basierend auf den Ergebnissen der Teilaufgaben.
Ausführungsbeispiele schaffen ferner ein Programm mit einem Programmcode zum
Durchführen zumindest eines der Verfahren, wenn der Programmcode auf einem Computer,
einem Prozessor, einem Kontrollmodul oder einer programmierbaren Hardwarekomponente ausgeführt wird.
Weitere vorteilhafte Ausgestaltungen werden nachfolgend anhand der in den Zeichnungen dargestellten Ausführungsbeispiele, auf welche Ausführungsbeispiele generell jedoch nicht insgesamt beschränkt sind, näher beschrieben. Es zeigen:
Fig. 1 zeigt ein Blockdiagramm einer Vorrichtung für ein Fahrzeug;
Fig. 1 a zeigt ein Flussdiagramm eines Verfahrens für ein Fahrzeug;
Fig. 2 zeigt ein Blockdiagramm einer Vorrichtung für eine Zentralstelle;
Fig. 2a zeigt ein Flussdiagramm eines Verfahrens für eine Zentralstelle
Fig. 3 zeigt ein Flussdiagramm eines beispielhaften Verfahrens für eine Zentralstelle; und
Fig. 4 zeigt ein Flussdiagramm eines Systems zum Berechnen einer Datenverarbeitung.
Verschiedene Ausführungsbeispiele werden nun ausführlicher unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, in denen einige Ausführungsbeispiele dargestellt sind. In den Figuren können die Dickenabmessungen von Linien, Schichten und/oder Regionen um der Deutlichkeit Willen übertrieben dargestellt sein.
Bei der nachfolgenden Beschreibung der beigefügten Figuren, die lediglich einige
exemplarische Ausführungsbeispiele zeigen, können gleiche Bezugszeichen gleiche oder vergleichbare Komponenten bezeichnen. Ferner können zusammenfassende Bezugszeichen für Komponenten und Objekte verwendet werden, die mehrfach in einem Ausführungsbeispiel oder in einer Zeichnung auftreten, jedoch hinsichtlich eines oder mehrerer Merkmale gemeinsam beschrieben werden. Komponenten oder Objekte, die mit gleichen oder zusammenfassenden Bezugszeichen beschrieben werden, können hinsichtlich einzelner, mehrerer oder aller Merkmale, beispielsweise ihrer Dimensionierungen, gleich, jedoch gegebenenfalls auch unterschiedlich ausgeführt sein, sofern sich aus der Beschreibung nicht etwas anderes explizit oder implizit ergibt.
Obwohl Ausführungsbeispiele auf verschiedene Weise modifiziert und abgeändert werden können, sind Ausführungsbeispiele in den Figuren als Beispiele dargestellt und werden hierin ausführlich beschrieben. Es sei jedoch klargestellt, dass nicht beabsichtigt ist,
Ausführungsbeispiele auf die jeweils offenbarten Formen zu beschränken, sondern dass Ausführungsbeispiele vielmehr sämtliche funktionale und/oder strukturelle Modifikationen, Äquivalente und Alternativen, die im Bereich der Erfindung liegen, abdecken sollen. Gleiche Bezugszeichen bezeichnen in der gesamten Figurenbeschreibung gleiche oder ähnliche Elemente.
Man beachte, dass ein Element, das als mit einem anderen Element„verbunden" oder „verkoppelt" bezeichnet wird, mit dem anderen Element direkt verbunden oder verkoppelt sein kann oder dass dazwischenliegende Elemente vorhanden sein können. Wenn ein Element dagegen als„direkt verbunden" oder„direkt verkoppelt" mit einem anderen Element bezeichnet wird, sind keine dazwischenliegenden Elemente vorhanden. Andere Begriffe, die verwendet werden, um die Beziehung zwischen Elementen zu beschreiben, sollten auf ähnliche Weise interpretiert werden (z.B.,„zwischen" gegenüber„direkt dazwischen",„angrenzend" gegenüber „direkt angrenzend" usw.).
Die Terminologie, die hierin verwendet wird, dient nur der Beschreibung bestimmter
Ausführungsbeispiele und soll die Ausführungsbeispiele nicht beschränken. Wie hierin verwendet, sollen die Singularformen„ einer,"„ eine",„eines " und„der, die, das" auch die Pluralformen beinhalten, solange der Kontext nicht eindeutig etwas anderes angibt. Ferner sei klargestellt, dass die Ausdrücke wie z.B.„beinhaltet",„beinhaltend",„aufweist",„umfasst", „umfassend" und/oder„aufweisend", wie hierin verwendet, das Vorhandensein von genannten Merkmalen, ganzen Zahlen, Schritten, Arbeitsabläufen, Elementen und/oder Komponenten angeben, aber das Vorhandensein oder die Hinzufügung von einem bzw. einer oder mehreren Merkmalen, ganzen Zahlen, Schritten, Arbeitsabläufen, Elementen, Komponenten und/oder Gruppen davon nicht ausschließen.
Solange nichts anderes definiert ist, haben sämtliche hierin verwendeten Begriffe (einschließlich von technischen und wissenschaftlichen Begriffen) die gleiche Bedeutung, die ihnen ein Durchschnittsfachmann auf dem Gebiet, zu dem die Ausführungsbeispiele gehören, beimisst. Ferner sei klargestellt, dass Ausdrücke, z.B. diejenigen, die in allgemein verwendeten
Wörterbüchern definiert sind, so zu interpretieren sind, als hätten sie die Bedeutung, die mit ihrer Bedeutung im Kontext der einschlägigen Technik konsistent ist, und nicht in einem
idealisierten oder übermäßig formalen Sinn zu interpretieren sind, solange dies hierin nicht ausdrücklich definiert ist.
Im Rahmen der immer stärkeren Durchdringung von Computertechnik im Rahmen der
Fahrzeugentwicklung steigt auch der Bedarf nach Rechenleistung. So werden einige
Fahrzeugsysteme mittlerweile mit rechenintensiven, maschinellen Lernverfahren entwickelt, um z.B. Bilderkennung zu ermöglichen. Aber auch die klassische Fahrzeugentwicklung kann z.B. im Rahmen von Computersimulationen zur Crashberechnung oder zur Modellierung von Strömungsverhalten leistungsstarke Computersysteme nutzen. Ein Bedarf an Rechenleistung in der Automobilentwicklung kann in manchen Szenarien vor allem auch durch die Forschung am automatischen Fahren weiterhin zunehmen, sodass die Frage entstehen kann, wie möglichst flexibel und kostengünstig diese Rechenleistung bereitgestellt werden kann.
In anderen Systemen kann versucht werden, die benötigte Rechenleistung über eine
Erweiterung/Neubau von Rechenzentren oder durch (gemietete) über das Internet
bereitgestellte Kapazität (etwa Cloud-Kapazität) zu lösen. Dabei kann ein Aufbau von
Rechenzentren mit hohen Kosten verbunden sein und kann es in manchen Fällen nicht ermöglichen, flexibel auf hohe Rechenleistungsanforderungen zu reagieren. Cloud-Kapazitäten können flexibler sein, können jedoch ebenfalls einen Aufbau von Rechenzentren benötigen, wenn die Cloud-Kapazität Firmenintern aufgebaut wird. Extern angemietete Cloud-Kapazitäten können eine höhere Flexibilität ermöglichen, können aber aus Sicht des Datenschutzes kritisch gesehen werden, da die notwendigen, teilweise geheimen Daten (z.B. Simulationsdaten) in manchen Szenarien an einen Drittanbieter überspielt werden können. Generell kann die Erweiterung um mehr Rechenleistung mit wesentlichen Kosten, vor allem für die Infrastruktur und den Betrieb, verbunden sein
Zumindest manche Ausführungsbeispiele schaffen ein Verfahren und System zur Nutzung von Fahrzeugen als verteilten Computer. Beispielsweise kann ein Fahrzeug als Compute Unit (Recheneinheit) aufgefasst werden. Dazu kann beispielsweise eine freie (verfügbare)
Rechenleistung von Steuergeräten, wie etwa eines Infotainmentsystems (Informations- und Unterhaltungssystem) oder von Fahrerassistenzsystemen, für Berechnungen zur Verfügung gestellt werden. Die Verbindung, über die die auszuführenden Berechnungen und die notwendigen Daten ausgetauscht werden, kann beispielsweise über einen mobilen Onlinedienst bereitgestellt werden. Eine Zentralstelle (die im Folgenden beispielsweise Telematic Service Provider (TSP), Telematikdienstanbieter, genannt werden kann) kann dabei eine Koordination
zur Verteilung der Berechnung auf die Fahrzeuge und Aggregation der Ergebnisse ermöglichen.
In aktuellen Fahrzeugen kann in einigen Steuergeräten leistungsfähige, hoch parallelisierte Hardware verbaut sein (z.B. Tegra-Prozessoren in einem Modularen Infotainment Baukasten- System (MIB), Active Info Display-System (Aktiver Informationsbildschirm) oder einem zentralen Fahrassistenzsystem (zFAS)). Die Grundannahme von manchen Ausführungsbeispielen kann sein, dass die Steuergeräte selten voll ausgelastet sind und deshalb freie Ressourcen für weitere Berechnungen haben. Zudem können manche Fahrzeughersteller mobile Onlinedienste bereitstellen, in deren Rahmen das Infotainmentsystem (z.B. MIB) und/oder eine Online Connectivity Unit (OCU, Onlinekonnektivitätseinheit) mit einem TSP (z.B. Modularer
Backendbaukasten (MBB)) kommunizieren kann. Zudem kann es möglich sein, etwa der OCU über einen Job-Mechanismus mitzuteilen, bestimmte Aktionen auszulösen.
Beispielsweise kann in zumindest manchen Ausführungsbeispielen die Berechnung nicht auf dedizierter Computerhardware sondern in den Fahrzeugen durchgeführt werden. Zumindest manche Ausführungsbeispiele können darauf basieren, die in hunderttausenden, produzierten Fahrzeugen verfügbare Rechenleistung kostengünstig zur Verfügung zu stellen. Dabei muss in manchen Ausführungsbeispielen kein neues Rechenzentrum aufgebaut oder Cloudlösungen angemietet werden, da eine Programmverteilung, Berechnung und Ergebnisübermittlung beispielsweise über einen mobilen Onlinedienst abgewickelt werden kann, den der
Fahrzeugeigentümer aktivieren muss. Dabei können zumindest einige Ausführungsbeispiele ohne verteiltes Dateisystem, ein aufwändiges Sicherheitskonzept, etc. auskommen, sondern können sich darauf konzentrieren, eine hohe Anzahl an Recheneinheiten schnell und robust mit Programmen und Daten versorgen zu können. Gleichzeitig kann die Möglichkeit bestehen, Eigentümer der Fahrzeuge durch geeignete Anreize an diesem Dienst partizipieren zu lassen und somit auch die Stärkung von einer Vernetzung der Fahrzeuge zu erreichen. Beispielsweise kann die freie Rechenkapazität der Steuergeräte in Verbindung mit der Internetanbindung in Form eines„Compute Unit Onlinedienstes" (Recheneinheit-Onlinedienst) zur Verfügung zu stellen. Dafür kann es notwendig sein, dass der Nutzer diesen Compute Unit Onlinedienst aktiviert und sich mit dieser Nutzung einverstanden erklärt.
Die Fahrzeuge können in manchen Ausführungsbeispielen zwar keine hohe Verfügbarkeit aufweisen, können dafür sehr zahlreich sein und leistungsstarke, eingebettete Systeme aufweisen. Die Zentralstelle (etwa der TSP), die die Ressourcenallokation und Verteilung auf
Fahrzeuge übernimmt, kann besonders darauf optimiert sein, mit Compute Units geringer Verfügbarkeit umzugehen
Fig. 1 zeigt ein Blockdiagramm einer Vorrichtung 10 für ein Fahrzeug 100. Die Vorrichtung 10 umfasst ein Kommunikationsmodul 12, ausgebildet zu einer Kommunikation mit einer
Zentralstelle 200. Die Vorrichtung umfasst ferner ein Berechnungsmodul 14, ausgebildet zum Steuern des Kommunikationsmoduls 12. Das Berechnungsmodul 14 ist ferner ausgebildet zum Empfangen einer Teilaufgabe einer verteilten Datenverarbeitung von der Zentralstelle 200, etwa über das Kommunikationsmodul 12. Das Berechnungsmodul 14 ist ferner ausgebildet zum Berechnen der Teilaufgabe der verteilten Datenverarbeitung zum Erhalten eines Ergebnisses der Teilaufgabe. Das Berechnungsmodul 14 ist ferner ausgebildet zum Bereitstellen des Ergebnisses der Teilaufgabe für die Zentralstelle 200, etwa über das Kommunikationsmodul 12. Das Kommunikationsmodul 12 ist mit dem Berechnungsmodul 14 gekoppelt.
Ausführungsbeispiele schaffen ferner das Fahrzeug 100 mit der Vorrichtung 10 für das
Fahrzeug. Fig. 1 a zeigt ein Flussdiagramm eines entsprechenden Verfahrens für das Fahrzeug 100. Das Verfahren umfasst Empfangen 1 10 der Teilaufgabe der verteilten Datenverarbeitung von der Zentralstelle 200. Das Verfahren umfasst ferner Berechnen 120 der Teilaufgabe der verteilten Datenverarbeitung zum Erhalten des Ergebnisses der Teilaufgabe. Das Verfahren umfasst ferner Bereitstellen 130 des Ergebnisses der Teilaufgabe für die Zentralstelle 200.
Beispielsweise kann die Datenverarbeitung einer parallelisierbaren Datenverarbeitung oder einer aufteilbaren Datenverarbeitung entsprechen. Beispielsweise kann die Datenverarbeitung einem verteilten Maschinenlern-Algorithmus oder einer Simulation entsprechen. Die
Datenverarbeitung kann beispielsweise eine Mehrzahl von Teilaufgaben umfassen. Eine Teilaufgabe der Datenverarbeitung kann beispielsweise ein von einem einzelnen
Berechnungsmodul ausführbarer Teil der Datenverarbeitung sein. Beispielsweise kann die Teilaufgabe Information über Instruktionen der Teilaufgabe und Information über Daten der Teilaufgabe umfassen. Die Instruktionen der Teilaufgabe können sich auf die Daten der Teilaufgabe beziehen. Beispielsweise können die Instruktionen der Teilaufgabe die Daten der Teilaufgabe verarbeiten. Die Information über die Instruktionen der Teilaufgabe kann
beispielsweise die Instruktionen der Teilaufgabe oder einen Verweis auf die Instruktionen der Teilaufgabe umfassen. Die Information über die Daten der Teilaufgabe kann beispielsweise die Daten der Teilaufgabe oder einen Verweis auf die Daten der Teilaufgabe umfassen. Das Berechnungsmodul 14 kann ausgebildet sein die Instruktionen der Teilaufgabe und/oder die Daten der Teilaufgabe basierend auf dem Verweis auf die Instruktionen oder dem Verweise auf die Daten abzurufen. Beziehen sich verschiedene Teilaufgaben auf die gleichen Daten
und/oder die gleichen Instruktionen, so kann das Berechnungsmodul 14 ausgebildet sein, die Daten der Teilaufgabe und/oder die Instruktionen der Teilaufgabe vorzuhalten
(zwischenzuspeichern).
In zumindest manchen Ausführungsbeispielen kann die Teilaufgabe Instruktionen umfassen, die unabhängig von einer spezifischen Hardware-Architektur einer Berechnungseinheit eines Fahrzeugs (etwa eines Fahrzeugs einer Mehrzahl von Fahrzeugen 100a; 100b, wie in Fig. 2 eingeführt) ausführbar sind. Beispielsweise kann die Teilaufgabe auf einer
hardwareübergreifenden Sprache basieren, beispielsweise auf OpenCL (Open Computation Language, Offene Berechnungssprache) oder basierend auf CUDA. Alternativ kann die
Teilaufgabe auf einem Bytecode basieren, und das Berechnungsmodul 14 kann ausgebildet sein, den Bytecode der Teilaufgabe zu interpretieren.
Beispielsweise können die Teilaufgaben auf einem Framework basieren, über das
plattformunabhängig Programme geschrieben werden können, sodass Programme auf verschiedenen Steuergeräten laufen können. Durch die Verwendung von hochparallelen GPUs existiert so ein Framework häufig schon durch den Chiphersteller bzw. in Form einer unabhängigen API. In diesem Fall könnte dann das Fahrzeug selbst entscheiden, auf welchem Steuergerät die Berechnung durchgeführt werden soll. Alternativ könnte die URL (Uniform Resource Locator, Adresse), über die das Fahrzeug das Programm herunterlädt, auch steuergerätespezifisch sein, um die Ausführung auf unterschiedlichen Steuergeräten zu ermöglichen. Die Daten selbst können dagegen unabhängig davon sein, die Daten können beispielsweise so gespeichert werden, dass alle Steuergeräte im Fahrzeug darauf schnell zugreifen können.
Das Berechnungsmodul 14 kann beispielsweise zwei oder mehr Kerne oder Recheneinheiten umfassen. Beispielsweise kann das Berechnungsmodul einen Prozessor mit ein oder mehreren Kernen für allgemeine Berechnungen und einen Prozessor mit ein oder mehreren
Kernen/Recheneinheiten für spezialisierte Berechnungen (etwa Grafikberechnungen) umfassen. Beispielsweise kann das Berechnungsmodul eine Architektur mit einer Instruktion für mehrere Datensätze oder einen Stream-Prozessor umfassen, die die Recheneinheiten für spezialisierte Berechnungen umfassen. In zumindest manchen Ausführungsbeispielen kann das Berechnungsmodul 14 ausgebildet sein, das Berechnen des Ergebnisses der Teilaufgabe zumindest teilweise (oder ganz) auf den Recheneinheiten für spezialisierte Berechnungen durchzuführen. Beispielsweise kann das Berechnungsmodul 14 ausgebildet sein, um die Teilaufgabe basierend auf der Architektur mit einer Instruktion für mehrere Datensätze oder
basierend auf dem Stream-Prozessor zu berechnen. In zumindest manchen
Ausführungsbeispielen kann das Berechnungsmodul 14 ausgebildet sein, das Ergebnis der Teilaufgabe mit einer niedrigen Priorität (beispielsweise einer Leerlauf (auch engl. ldle)-Priorität zu berechnen. Da der Hauptzweck der Steuergeräte in Fahr- oder Komfortfunktionen liegt, kann die Berechnung des Programms in zumindest manchen Ausführungsbeispielen nicht diese Funktionalitäten einschränken. Deshalb kann die Berechnung mit einer Idle-Priorität laufen, sodass sie von regulären Berechnungen schnell verdrängt werden können.
In zumindest manchen Ausführungsbeispielen kann das Berechnungsmodul 14 ausgebildet sein, um eine Benachrichtigung über eine nicht-Verfügbarkeit des Fahrzeugs 100 zum
Berechnen der Teilaufgabe für die Zentralstelle 200 bereitzustellen, falls die Vorrichtung 10 deaktiviert wird, bevor die Teilaufgabe berechnet ist. Beispielsweise kann das
Berechnungsmodul 14 ausgebildet sein, eine Benachrichtigung über eine Verfügbarkeit des Fahrzeugs 100 zum Berechnen der Teilaufgabe für die Zentralstelle 200 bereitzustellen, und ein ausbleiben der Nachricht für über die Verfügbarkeit kann die (Benachrichtigung über die) nichtVerfügbarkeit des Fahrzeugs zum Berechnen indizieren. Alternativ kann das
Berechnungsmodul 14 ausgebildet sein, vor einem Deaktivieren der Vorrichtung 10 oder wenn ein Deaktivieren der Vorrichtung 10 vor Beendigung des Berechnens der Ergebnisses der Teilaufgabe absehbar ist die Benachrichtigung über die nicht-Verfügbarkeit des Fahrzeugs 100 der Zentralstelle bereitzustellen.
Beispielsweise kann ein Fahrzeug regelmäßig einen Heartbeat (Herzschlag) senden, um dem TSP zu verdeutlichen, dass es noch verfügbar ist. Dieser Heartbeat könnte auch ergänzt werden mit weiteren Informationen, wie z.B. bisher aufgewendete CPU-Zeit. Dies könnte es dem TSP dann ermöglichen, weitere Fahrzeuge auszuwählen, falls ein Fahrzeug nicht mehr verfügbar ist oder falls es aufgrund seiner regulären Funktionsweise keine Rechenleistung für die übertragene Aufgabe aufwenden kann. Die Zentralstelle kann beispielsweise ausgebildet sein zur Ressourcenallokation, d.h. Zuweisen von Berechnungen zu Fahrzeugen und der Neuplanung, wenn ausgewählte Fahrzeuge plötzlich nicht mehr verfügbar sind. Die
Zentralstelle kann ausgebildet sein, die Gesamtverfügbarkeit über die hohe Zahl der verfügbaren Fahrzeuge zu erreichen.
In zumindest manchen Ausführungsbeispielen kann das Berechnungsmodul 14 ferner ausgebildet sein, um über das Kommunikationsmodul 12 mit ein oder mehreren weiteren Fahrzeugen zu kommunizieren zum Austausch von Ergebnissen von Teilaufgaben mit den ein oder mehreren weiteren Fahrzeugen. Beispielsweise kann das Berechnungsmodul 14
ausgebildet sein, um über Nächste-Nachbarn-Kommunikation mit Fahrzeugen in einer Umgebung des Fahrzeugs zu kommunizieren, beispielsweise über direkte Fahrzeug-zuFahrzeug-Kommunikation (auch engl. Car-2-Car-Communication) oder über
Frequenzressourcen eines mobilen Kommunikationssystems, beispielsweise über eine Basisstation oder mit Zuweisung der Frequenzressourcen durch eine Basisstation. Das Kommunikationsmodul 12 kann beispielsweise ausgebildet sein, über zumindest ein mobiles Kommunikationssystem der Gruppe von Global System for Mobile telecommunications (GSM), General Packet Radio Service (GPRS), Enhanced Data rates for GSM Evolution (EDGE), Universal Mobile Telecommunication System (UMTS), Long Term Evolution, und ein
Mobilfunksystem der 5. Generation (5G) zu kommunizieren.
In einer beispielhaften Implementierung kann der Job im Fahrzeug (beispielsweise im
Berechnungsmodul 14) auslösen, über eine fahrzeugspezifische URL von einem TSP das abzuarbeitende Programm und die dafür benötigten Daten abzufragen und herunterzuladen. Idealerweise können dabei (nur) die Daten mitgeschickt werden, die für die Berechnung notwendig sind, um zu vermeiden, dass ein kompromittiertes Fahrzeug an vertrauliche oder geheime Daten kommt. Beispielsweise kann die Berechnung (etwa des Ergebnisses der Teilaufgabe durch das Berechnungsmodul 14) anschließend durchgeführt werden.
Das Kommunikationsmodul 12 (und/oder ein Kommunikationsmodul 22 aus Fig. 2) kann beispielsweise einem oder mehreren Eingängen und/oder einem oder mehreren Ausgängen zum Empfangen und/oder Übertragen von Informationen entsprechen, etwa in digitalen Bitwerten, basierend auf einem Code, innerhalb eines Moduls, zwischen Modulen, oder zwischen Modulen verschiedener Entitäten. Beispielsweise kann das Kommunikationsmodul 12 ausgebildet sein, über ein mobiles Kommunikationsnetzwerk mit der Zentralstelle zu kommunizieren, beispielsweise über eine interne Verbindung (Fahrzeugherstellerspezifische Verbindung, Intranet) oder über das Internet. Das Kommunikationsmodul 22 kann ausgebildet sein, über das mobile Kommunikationsnetzwerk mit dem Fahrzeug 100 zu kommunizieren, beispielsweise über die interne Verbindung oder über das Internet.
In Ausführungsbeispielen kann das Berechnungsmodul 14 einem beliebigen Controller oder Prozessor oder einer programmierbaren Hardwarekomponente entsprechen. Beispielsweise kann das Berechnungsmodul 14 auch als Software realisiert sein, die für eine entsprechende Hardwarekomponente programmiert ist. Insofern kann das Berechnungsmodul 14 als programmierbare Hardware mit entsprechend angepasster Software implementiert sein. Dabei können beliebige Prozessoren, wie Digitale Signalprozessoren (DSPs) zum Einsatz kommen.
Ausführungsbeispiele sind dabei nicht auf einen bestimmten Typ von Prozessor eingeschränkt. Es sind beliebige Prozessoren oder auch mehrere Prozessoren zur Implementierung des Berechnungsmoduls 14 denkbar.
Die Zentralstelle 200 kann beispielsweise einer Zentralstelle entsprechen, wie sie in
Zusammenhang mit Fig. 2 beschrieben wird. In zumindest manchen Ausführungsbeispielen könnte das Fahrzeug 100 beispielsweise einem Landfahrzeug, einem Wasserfahrzeug, einem Luftfahrzeug, einem Schienenfahrzeug, einem Straßenfahrzeug, einem Auto, einem
Geländefahrzeug, einem Kraftfahrzeug, oder einem Lastkraftfahrzeug entsprechen.
Fig. 2 zeigt ein Blockdiagramm einer Vorrichtung 20 für eine Zentralstelle 200. Die Vorrichtung 20 umfasst ein Kommunikationsmodul 22, ausgebildet zur Kommunikation mit einer Mehrzahl von Fahrzeugen 100a; 100b. Die Mehrzahl von Fahrzeugen kann beispielsweise ein oder mehrere Fahrzeuge umfassen, wie sie in Zusammenhang mit Fig. 1 eingeführt werden. Die Vorrichtung 20 umfasst ferner ein Kontrollmodul 24, ausgebildet zum Steuern des
Kommunikationsmoduls 22. Das Kontrollmodul 24 ist ferner ausgebildet zum Bereitstellen von Teilaufgaben einer verteilten Datenverarbeitung für die Mehrzahl von Fahrzeugen 100a; 100b für eine verteilte Berechnung der verteilten Datenverarbeitung, etwa über das
Kommunikationsmodul 22. Das Kontrollmodul 24 ist ferner ausgebildet zum Empfangen von Ergebnissen der Teilaufgaben der verteilten Datenverarbeitung von der Mehrzahl von
Fahrzeugen 100a; 100b, etwa über das Kommunikationsmodul 22. Das Kontrollmodul 24 ist ferner ausgebildet zum Zusammenstellen der Ergebnisse der verteilten Datenverarbeitung basierend auf den Ergebnissen der Teilaufgaben. Das Kommunikationsmodul 22 ist mit dem Kontrollmodul 24 gekoppelt. Ausführungsbeispiele schaffen ferner die Zentralstelle 200 umfassend die Vorrichtung 20 für die Zentralstelle. Fig. 2a zeigt ein entsprechendes Verfahren für die Zentralstelle 200. Das Verfahren umfasst Bereitstellen 210 der Teilaufgaben der verteilten Datenverarbeitung für die Mehrzahl von Fahrzeugen 100a; 100b für die verteilte Berechnung der verteilten Datenverarbeitung. Das Verfahren umfasst ferner Empfangen 220 von Ergebnissen der Teilaufgaben der verteilten Datenverarbeitung von der Mehrzahl von Fahrzeugen 100a; 100b. Das Verfahren umfasst ferner Zusammenstellen 230 der Ergebnisse der verteilten Datenverarbeitung basierend auf den Ergebnissen der Teilaufgaben.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, zum Bereitstellen der Teilaufgaben für die Mehrzahl von Fahrzeugen die Teilaufgaben der Mehrzahl von Fahrzeugen aktiv zu schicken (Push) oder die Teilaufgaben auf Abruf für die Mehrzahl von Fahrzeugen
bereitzustellen (Pull). Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um zum
Initiieren des Bereitstellens der Teilaufgaben für die Fahrzeuge der Mehrzahl von Fahrzeugen 100a; 100b die Fahrzeuge der Mehrzahl von Fahrzeugen zu kontaktieren. Alternativ oder zusätzlich kann das Kontrollmodul 24 ausgebildet sein, zum Initiieren des Bereitstellens einer Teilaufgabe für ein Fahrzeug der Mehrzahl von Fahrzeugen 100a; 100b eine Anfrage des Fahrzeugs zu empfangen. Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, eine adressbasierte Schnittstelle für die Mehrzahl von Fahrzeugen bereitzustellen. Beispielsweise kann die adressbasierte Schnittstelle auf einen Webserver oder auf einen Dateiserver der Vorrichtung 20 oder der Zentralstelle 200 verweisen, der die Teilaufgaben umfasst.
In einem beispielhaften Ausführungsbeispiel könnte jedes Fahrzeug Teil eines großen, verteilten Dateisystems (engl. Distributed File System, DFS) sein, in dem die zu verarbeitenden Daten sowie die Ergebnisse gespeichert sind.
In einem weiteren Ausführungsbeispiel könnte die zur Verteilung von Programmen, den Daten, zur Ressourcenallokation sowie zur Berechnung eingesetzte Software über das Hadoop- Ökosystem abgebildet werden. Alternativ kann ein schlankeres, ressourcenschonenderes verteiltes Softwaresystem zum Bereitstellen der Teilaufgaben und/oder Empfangen der Ergebnisse der Teilaufgaben genutzt werden.
In einem weiteren beispielhaften Ausführungsbeispiel könnte der TSP den Fahrzeugen nicht nur eine fahrzeugspezifische URL (Adresse der adressbasierte Schnittstelle) bereitstellen, unter der sie das Programm und die Daten herunterladen, sondern der TSP könnte das Programm und die Daten direkt ins Fahrzeug pushen (aktiv bereitstellen). Weiterhin kann in manchen Ausführungsbeispielen das Fahrzeug selbst entscheiden, wann es den Download durchführt, um zum Beispiel einen Streckenabschnitt mit guter Mobilfunkabdeckung abzuwarten.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, zum Empfangen der Ergebnisse der Teilaufgaben eine adressbasierte Schnittstelle für die Mehrzahl von Fahrzeugen
bereitzustellen. Beispielsweise kann die adressbasierte Schnittstelle auf einen Webserver oder auf einen Dateiserver der Vorrichtung 20 oder der Zentralstelle 200 verweisen mit Möglichkeit zum Ablegen der Ergebnisse der Teilaufgaben für die Mehrzahl von Fahrzeugen. Alternativ kann das Kontrollmodul 24 ausgebildet sein, um direkte Datenübertragungen mit den
Ergebnissen für die Teilaufgaben von der Mehrzahl von Fahrzeugen zu empfangen.
In zumindest manchen Ausführungsbeispielen kann das Kontrollmodul 24 ausgebildet sein, um die Mehrzahl von Fahrzeugen 100a; 100b aus einer Gruppe von Fahrzeugen auszuwählen.
Beispielsweise kann das Kontrollmodul 24 eine Datensammlung, beispielsweise eine
Datenbank oder eine sortierte oder unsortierte Gruppe, mit Information über die Gruppe von Fahrzeugen umfassen. Beispielsweise kann das Auswählen eines auszuwählenden Fahrzeugs für die Mehrzahl der Fahrzeuge auf zumindest einem Element der Gruppe von
Systemauslastung eines Berechnungsmoduls des auszuwählenden Fahrzeugs,
Energiekapazität des auszuwählenden Fahrzeugs, Leistungsfähigkeit des Berechnungsmoduls des auszuwählenden Fahrzeugs, Konnektivität des auszuwählenden Fahrzeugs, Position des auszuwählenden Fahrzeugs, voraussichtliche Verfügbarkeit des auszuwählenden Fahrzeugs für ein Berechnen einer Teilaufgabe, vorherige Verarbeitung einer Teilaufgabe durch das auszuwählende Fahrzeug und Priorisierung des auszuwählenden Fahrzeugs für Berechnungen basieren.
Beispielsweise kann die Datensammlung zumindest ein Element der Gruppe von Information über die Systemauslastung des Berechnungsmoduls des auszuwählenden Fahrzeugs, Information über die Energiekapazität des auszuwählenden Fahrzeugs, Information über die Leistungsfähigkeit des Berechnungsmoduls des auszuwählenden Fahrzeugs, Information über die Konnektivität des auszuwählenden Fahrzeugs (etwa zum Bevorzugen von auszuwählenden Fahrzeugen mit einer größeren Übertragungsgeschwindigkeit), Information über die Position des auszuwählenden Fahrzeugs (etwa für Nächste-Nachbarn-Kommunikation), Information über die voraussichtliche Verfügbarkeit des auszuwählenden Fahrzeugs für das Berechnen der Teilaufgabe, Information über die vorherige Verarbeitung einer Teilaufgabe durch das auszuwählende Fahrzeug und Information über die Priorisierung des auszuwählenden
Fahrzeugs für Berechnungen.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um zumindest ein Element der Gruppe von Information über die Systemauslastung des Berechnungsmoduls des
auszuwählenden Fahrzeugs, Information über die Energiekapazität des auszuwählenden Fahrzeugs, Information über die Leistungsfähigkeit des Berechnungsmoduls des
auszuwählenden Fahrzeugs, Information über die Konnektivität des auszuwählenden
Fahrzeugs, Information über die Position des auszuwählenden Fahrzeugs, Information über die voraussichtliche Verfügbarkeit des auszuwählenden Fahrzeugs für das Berechnen der Teilaufgabe, Information über die vorherige Verarbeitung einer Teilaufgabe durch das auszuwählende Fahrzeug und Information über die Priorisierung des auszuwählenden
Fahrzeugs für Berechnungen von der Mehrzahl von Fahrzeugen für die Datensammlung zu Empfangen und in der Datensammlung zu speichern.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um Information über eine
Aktivierung der Vorrichtung 10 für ein Fahrzeug von der Mehrzahl von Fahrzeugen zu erhalten. Die Information über die Aktivierung der Vorrichtung 10 für ein Fahrzeug kann beispielsweise Information über eine Einwilligung eines Halters des Fahrzeugs zum Berechnen von
Teilaufgaben umfassen. Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um das Auswählen des Fahrzeugs auf der Information über die Aktivierung des Fahrzeugs zu basieren. Das Berechnungsmodul 14 kann ausgebildet sein, die Information über die
Aktivierung bereitzustellen.
Für die Auswahl der Fahrzeuge, die eine Aufgabe abarbeiten sollen, können beispielsweise verschiedene Strategien genutzt werden. Wesentlich kann sein, dass (lediglich) Fahrzeuge ausgewählt werden, für die der Compute Unit Dienst aktiviert ist. Dafür kann der TSP in zumindest manchen Ausführungsbeispielen eine Datenbank (Datensammlung) mit nutzbaren Fahrzeugen umfassen, die auch weitere Zusatzinformationen umfassen kann.
Auswahlstrategien können beispielsweise sein:
■ Fahrzeugen können regelmäßig die aktuelle Systemauslastung ihrer relevanten
Steuergeräte melden, der TSP kann bevorzugt dann die Fahrzeuge, die zuletzt eine geringe Systemauslastung gemeldet haben, auswählen
■ Fahrzeuge können Informationen zu ihrer derzeitigen Energiekapazität schicken, sodass etwa Elektrofahrzeuge mit einer verbleibenden, geringen Reichweite nicht aufwendige Berechnungen durchführenden müssen
■ Die Auswahl kann beispielsweise anhand der verfügbaren Hardware, z.B. durch
Bevorzugung leistungsfähigerer Steuergeräte, erfolgen
■ Die Auswahl kann anhand der Konnektivität erfolgen, beispielsweise durch Bevorzugung von Fahrzeugen, die via WLAN (Wireless Local Area Network, Kabelloses lokales Netzwerk) angebunden sind oder eine gemessene, schnelle Verbindung mit geringer Latenz haben
■ Die Auswahl von Fahrzeugen kann anhand ihres per GPS bestimmten Standortes in Kombination mit einer digitalen Karte erfolgen, die die GPS-Position auf die
Mobilfunkabdeckung abbildet
■ Es können die Fahrzeuge ausgewählt werden, bei denen die Wahrscheinlichkeit hoch ist, dass sie noch einige Zeit online sind (z.B. weil sie gerade an der Steckdose geladen werden oder das Navigationssystem noch eine lange Restfahrzeit meldet)
■ Es können auch die Fahrzeuge bevorzugt werden, die aufgrund einer vorherigen
Aufgabe schon einen Teil der zu verarbeitenden Daten besitzen
■ Fahrzeuge könnten durch Flags (Markierungen) priorisiert werden, um etwa Versuchsträger oder im Rahmen von Boni bevorzugte Fahrzeuge häufiger zu wählen
■ Die Auswahl kann auch durch einen„Round Robin" Ansatz (Rundlauf-Verfahren)
erfolgen, d.h. jedes Fahrzeug wird irgendwann mal ausgewählt, um nicht immer dieselben Fahrzeuge auszuwählen
Beispielsweise kann auch eine Kombination mehrerer Strategien genutzt werden.
Beispielsweise kann die Aufgabe (Datenverarbeitung) selbst die Unterteilung des Programms (in Teilaufgaben) vorgeben, sodass sich der TSP nicht selbst darum kümmern muss, das Programm zu parallelisieren. In manchen Ausführungsbeispielen kann die Aufgabe
Anforderungen hinsichtlich der Anzahl der erforderlichen Compute Units stellen, der TSP kann die erforderliche Anzahl von Fahrzeugen auswählen. Da es sich bei den Fahrzeugen aber um Compute Units mit geringer Verfügbarkeit (z.B. aufgrund von instabiler Netzwerkverbindung, plötzlich höheren Lastanforderungen der Steuergeräte) handeln kann, kann beispielsweise eine größere Anzahl an Fahrzeugen ausgewählt werden, um den„Ausfall" von Compute Units (schneller) zu kompensieren. So könnte entweder jede einzelne Berechnungsaufgabe
(Teilaufgabe) und die zugehörigen Daten mehrfach verteilt werden oder es kann eine Logik eingesetzt werden, die die kritischen Berechnungsaufgaben auswählt (z.B. solche die besonders viele Daten verarbeiten), um diese redundant berechnen zu lassen. Weiterhin kann die Mehrfachverteilung auch bei stochastisch geprägten Berechnungen genutzt werden, um so parallel mehrere Variationen zu berechnen und gleichzeitig eine Redundanz durch mehrfache Berechnung durch unterschiedliche Fahrzeuge zu haben.
Sind die Fahrzeuge ausgewählt, kann der TSP einen Job an diese Fahrzeuge senden.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, das Bereitstellen der Teilaufgaben auf das Auswählen der Fahrzeuge für die Mehrzahl von Fahrzeugen zu basieren.
Weiterhin kann der TSP über den Job-Mechanismus auch das Abbrechen der Berechnung einer Aufgabe anstoßen. Das Kontrollmodul 24 kann ausgebildet sein, um Information über ein Abbrechen der Berechnung für die Mehrzahl von Fahrzeugen bereitzustellen.
In zumindest manchen Ausführungsbeispielen kann das Kontrollmodul 24 ausgebildet sein, um die Teilaufgaben mehrfach oder gegenseitig überlappend der Mehrzahl von Fahrzeugen 100a; 100b bereitzustellen. Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um eine Teilmenge von rechenintensiven oder besonders relevanten Teilaufgaben mehrfach der Mehrzahl von Fahrzeugen bereitzustellen. Alternativ oder zusätzlich kann das Kontrollmodul 24
ausgebildet sein, jedem Fahrzeug der Mehrzahl von Fahrzeugen mehrere Teilaufgaben bereitzustellen, und jede Teilaufgabe an mehr als ein Fahrzeug bereitzustellen.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um Teilaufgaben, die nicht innerhalb eines Zeitfensters von einem Fahrzeug der Mehrzahl von Fahrzeugen 100a; 100b berechnet werden, einem anderen Fahrzeug der Mehrzahl von Fahrzeugen 100a; 100b zum Berechnen bereitzustellen. Beispielsweise kann das Zeitfenster zumindest 20% länger (oder zumindest 50% länger, zumindest 100% länger) als eine durchschnittliche Berechnungsdauer der Teilaufgaben sein.
Alternativ oder zusätzlich kann das Kontrollmodul 24 ausgebildet sein, um eine Teilaufgabe, die einem Fahrzeug bereitgestellt wurde, das zumindest vorübergehend nicht verfügbar ist, einem anderen Fahrzeug der Mehrzahl von Fahrzeugen 100a; 100b zum Berechnen bereitzustellen, beispielsweise basierend auf einem Heartbeat oder basierend auf eine Benachrichtigung über eine Verfügbarkeit/nicht-Verfügbarkeit eines Fahrzeugs zum Berechnen. Das Kontrollmodul 24 kann ausgebildet sein, Information über den Heartbeat oder die Benachrichtigung über die Verfügbarkeit/nicht-Verfügbarkeit des Fahrzeugs zum Berechnen von Fahrzeugen der Mehrzahl von Fahrzeugen zu empfangen.
Nachdem ein Fahrzeug seine Berechnung abgeschlossen hat, kann es ausgebildet sein die Ergebnisse an die URL des Compute Unit Dienstes zu senden. Der TSP kann anhand der ebenfalls verfügbaren Fahrzeuginformationen wissen, welche Arbeitspakete abgearbeitet worden sind. Sobald für alle Arbeitspakete eine Rückmeldung vorliegt, kann er diese
zusammenstellen an das Computersystem zur Aufgabeneinspeisung weiter, das dann wiederum die Aggregation der Daten zu einem Gesamtergebnis vornimmt bzw. vornehmen lässt. In einem weiteren Ausführungsbeispiel könnte der TSP die Ergebnisse für das
Zusammenstellen selbst aggregieren bevor er diese an das Computersystem zur
Aufgabeneinspeisung weiterreicht.
Beispielsweise kann das Kontrollmodul 24 ausgebildet sein, um zum Zusammenstellen der Ergebnisse die Ergebnisse in eine Datenstruktur zu speichern und die Datenstruktur
bereitzustellen. Alternativ kann das Kontrollmodul 24 ausgebildet sein, um zum
Zusammenstellen der Ergebnisse einen Inhalt der Ergebnisse in ein vorgegebenen Format zu aggregieren. Beispielsweise können die zusammengestellten Ergebnisse nicht die
Empfangenen Ergebnisse umfassen.
Die Zentralstelle 200 kann beispielsweise einem Server, einer Rechnerarchitektur, einer Rechnerinfrastruktur, einer virtuellen Serverinstanz oder einem Rechenzentrum entsprechen.
In Ausführungsbeispielen kann die Kontrolleinrichtung bzw. das Kontrollmodul 24 einem beliebigen Controller oder Prozessor oder einer programmierbaren Hardwarekomponente entsprechen. Beispielsweise kann das Kontroll-Modul 24 auch als Software realisiert sein, die für eine entsprechende Hardwarekomponente programmiert ist. Insofern kann das
Kontrollmodul 24 als programmierbare Hardware mit entsprechend angepasster Software implementiert sein. Dabei können beliebige Prozessoren, wie Digitale Signalprozessoren (DSPs) zum Einsatz kommen. Ausführungsbeispiele sind dabei nicht auf einen bestimmten Typ von Prozessor eingeschränkt. Es sind beliebige Prozessoren oder auch mehrere Prozessoren zur Implementierung des Kontrollmoduls 24 denkbar.
Mehr Details und Aspekte der Vorrichtung 20 und des Verfahrens für die Zentralstelle werden in Verbindung mit dem Konzept oder Beispielen genannt, die vorher (z.B. Fig. 1 bis 1 a) beschrieben wurden. Das Verfahren und/oder die Vorrichtung 20 kann bzw. können ein oder mehrere zusätzliche optionale Merkmale umfassen, die ein oder mehreren Aspekten des vorgeschlagenen Konzepts oder der beschriebenen Beispiele entsprechen, wie sie vorher oder nachher beschrieben wurden.
Fig. 3 zeigt ein Flussdiagramm eines Verfahrens für eine Zentralstelle. Beispielsweise kann die Zentralstelle (TSP) einen Auftrag (auch engl. Job) zur Berechnung (einer Datenverarbeitung erhalten (310). Das TSP kann die zu nutzenden Fahrzeuge bestimmen und Daten und
Algorithmus verteilen (320). Ferner kann das TSP die Ergebnisse von den Fahrzeugen einsammeln und dem Anfragenden zurückgeben (330).
Mehr Details und Aspekte des Verfahrens werden in Verbindung mit dem Konzept oder Beispielen genannt, die vorher (z.B. Fig. 1 bis 2a) beschrieben wurden. Das Verfahren kann ein oder mehrere zusätzliche optionale Merkmale umfassen, die ein oder mehreren Aspekten des vorgeschlagenen Konzepts oder der beschriebenen Beispiele entsprechen, wie sie vorher oder nachher beschrieben wurden.
Fig. 4 zeigt ein Flussdiagramm eines Systems zum Berechnen einer Datenverarbeitung durch eine Mehrzahl von Fahrzeugen. Das System umfasst ein Fahrzeug 100 mit leistungsfähigen Steuergeräten und einer Internetanbindung. Das System umfasst ferner ein Backend
(Zentralstelle) 200, das mit einer Datenbank 420 mit Fahrzeuginformationen (Datensammlung) gekoppelt ist. Das System umfasst ferner ein Computersystem 410 zur Aufgaben-Einspeisung.
Über das Computersystem 410, etwa ein Portal, eine Datenbank, etc. können über eine
Schnittstelle (etwa das Kommunikationsmodul 22) Aufgaben (etwa Datenverarbeitungen) an den TSP geschickt werden (Aufgabeneinspeisung). Die Zentralstelle 200 kann ausgebildet sein, um Information über die Datenverarbeitung von dem Computersystem zu erhalten. Die
Aufgaben können parallelisierbar sein, etwa durch Nutzung des Map-Reduce- Programmierparadigmas (Abbilden-Reduzieren-Programmierparadigma) und rechenaufwendig, dazu aber relativ wenige Daten benötigen. Zwar kann auch mit einer größeren Datenmenge gearbeitet werden, jedoch kann die Übertragung aufgrund der Internetanbindung via Mobilfunk oder WLAN mehr Zeit benötigen, als es bei klassischen Computerclustern der Fall ist.
Zusätzlich kann die Aufgabe (etwa die Datenverarbeitung) auch weitere Informationen umfassen, z.B. eine Priorität oder die Anzahl benötigter Compute Units, wobei hierfür auch ein Quota-System genutzt werden kann. Der TSP kann diese Aufgabe unter einer ID
(Identifikationsnummer) speichern und kann Ressourcen allokieren.
In einem beispielhaften Ausführungsbeispiel stellt das Computersystem 410 dem Backend 200 das Programm und zu verarbeitende Daten (die Datenverarbeitung) bereit. Das Backend ruft mögliche Fahrzeuge (als Compute Unit) von der Daten 420 ab und stellt basierend darauf einer Mehrzahl von Fahrzeugen, beispielsweise dem Fahrzeug 100 einen Job zum Abruf von
Programm und Daten bereit. Das Fahrzeug 100 berechnet das Programm und stellt Ergebnisse des Programms (das Ergebnis der Teilaufgabe) dem Backend 200 bereit. Das Backend 200 stellt dem Computersystem 410 die Ergebnisse aller Fahrzeuge (Compute Units) bereit.
Mehr Details und Aspekte des Systems werden in Verbindung mit dem Konzept oder Beispielen genannt, die vorher (z.B. Fig. 1 bis 3) beschrieben wurden. Das System kann ein oder mehrere zusätzliche optionale Merkmale umfassen, die ein oder mehreren Aspekten des
vorgeschlagenen Konzepts oder der beschriebenen Beispiele entsprechen, wie sie vorher oder nachher beschrieben wurden.
Ein weiteres Ausführungsbeispiel ist ein Computerprogramm zur Durchführung zumindest eines der oben beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer, einem Prozessor oder einer programmierbaren Hardwarekomponente abläuft. Ein weiteres
Ausführungsbeispiele ist auch ein digitales Speichermedium, das maschinen- oder
computerlesbar ist, und das elektronisch lesbare Steuersignale aufweist, die mit einer
programmierbaren Hardwarekomponente so zusammenwirken können, dass eines der oben beschriebenen Verfahren ausgeführt wird.
Die in der vorstehenden Beschreibung, den nachfolgenden Ansprüchen und den beigefügten Figuren offenbarten Merkmale können sowohl einzeln wie auch in beliebiger Kombination für die Verwirklichung eines Ausführungsbeispiels in ihren verschiedenen Ausgestaltungen von Bedeutung sein und implementiert werden.
Obwohl manche Aspekte im Zusammenhang mit einer Vorrichtung beschrieben wurden, versteht es sich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, sodass ein Block oder ein Bauelement einer Vorrichtung auch als ein
entsprechender Verfahrensschritt oder als ein Merkmal eines Verfahrensschrittes zu verstehen ist. Analog dazu stellen Aspekte, die im Zusammenhang mit einem oder als ein
Verfahrensschritt beschrieben wurden, auch eine Beschreibung eines entsprechenden Blocks oder Details oder Merkmals einer entsprechenden Vorrichtung dar.
Je nach bestimmten Implementierungsanforderungen können Ausführungsbeispiele der Erfindung in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Floppy-Disk, einer DVD, einer Blu-Ray Disc, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers, einer Festplatte oder eines anderen magnetischen oder optischen Speichers durchgeführt werden, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einer programmierbaren Hardwarekomponente derart zusammenwirken können oder zusammenwirken, dass das jeweilige Verfahren durchgeführt wird.
Eine programmierbare Hardwarekomponente kann durch einen Prozessor, einen
Computerprozessor (CPU = Central Processing Unit), einen Grafikprozessor (GPU = Graphics Processing Unit), einen Computer, ein Computersystem, einen anwendungsspezifischen integrierten Schaltkreis (ASIC = Application-Specific Integrated Circuit), einen integrierten Schaltkreis (IC = Integrated Circuit), ein Ein-Chip-System (SOC = System on Chip), ein programmierbares Logikelement oder ein feldprogrammierbares Gatterarray mit einem Mikroprozessor (FPGA = Field Programmable Gate Array) gebildet sein.
Das digitale Speichermedium kann daher maschinen- oder computerlesbar sein. Manche Ausführungsbeispiele umfassen also einen Datenträger, der elektronisch lesbare Steuersignale aufweist, die in der Lage sind, mit einem programmierbaren Computersystem oder einer
programmierbare Hardwarekomponente derart zusammenzuwirken, dass eines der hierin beschriebenen Verfahren durchgeführt wird. Ein Ausführungsbeispiel ist somit ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), auf dem das
Programm zum Durchführen eines der hierin beschriebenen Verfahren aufgezeichnet ist.
Allgemein können Ausführungsbeispiele der vorliegenden Erfindung als Programm, Firmware, Computerprogramm oder Computerprogrammprodukt mit einem Programmcode oder als Daten implementiert sein, wobei der Programmcode oder die Daten dahin gehend wirksam ist bzw. sind, eines der Verfahren durchzuführen, wenn das Programm auf einem Prozessor oder einer programmierbaren Hardwarekomponente abläuft. Der Programmcode oder die Daten kann bzw. können beispielsweise auch auf einem maschinenlesbaren Träger oder Datenträger
gespeichert sein. Der Programmcode oder die Daten können unter anderem als Quellcode, Maschinencode oder Bytecode sowie als anderer Zwischencode vorliegen.
Ein weiteres Ausführungsbeispiel ist ferner ein Datenstrom, eine Signalfolge oder eine Sequenz von Signalen, der bzw. die das Programm zum Durchführen eines der hierin beschriebenen Verfahren darstellt bzw. darstellen. Der Datenstrom, die Signalfolge oder die Sequenz von Signalen kann bzw. können beispielsweise dahin gehend konfiguriert sein, um über eine Datenkommunikationsverbindung, beispielsweise über das Internet oder ein anderes Netzwerk, transferiert zu werden. Ausführungsbeispiele sind so auch Daten repräsentierende
Signalfolgen, die für eine Übersendung über ein Netzwerk oder eine
Datenkommunikationsverbindung geeignet sind, wobei die Daten das Programm darstellen.
Ein Programm gemäß einem Ausführungsbeispiel kann eines der Verfahren während seiner Durchführung beispielsweise dadurch umsetzen, dass dieses Speicherstellen ausliest oder in diese ein Datum oder mehrere Daten hinein schreibt, wodurch gegebenenfalls Schaltvorgänge oder andere Vorgänge in Transistorstrukturen, in Verstärkerstrukturen oder in anderen elektrischen, optischen, magnetischen oder nach einem anderen Funktionsprinzip arbeitenden Bauteile hervorgerufen werden. Entsprechend können durch ein Auslesen einer Speicherstelle Daten, Werte, Sensorwerte oder andere Informationen von einem Programm erfasst, bestimmt oder gemessen werden. Ein Programm kann daher durch ein Auslesen von einer oder mehreren Speicherstellen Größen, Werte, Messgrößen und andere Informationen erfassen, bestimmen oder messen, sowie durch ein Schreiben in eine oder mehrere Speicherstellen eine Aktion bewirken, veranlassen oder durchführen sowie andere Geräte, Maschinen und
Komponenten ansteuern.
Die oben beschriebenen Ausführungsbeispiele stellen lediglich eine Veranschaulichung der Prinzipien der vorliegenden Erfindung dar. Es versteht sich, dass Modifikationen und
Variationen der hierin beschriebenen Anordnungen und Einzelheiten anderen Fachleuten einleuchten werden. Deshalb ist beabsichtigt, dass die Erfindung lediglich durch den
Schutzumfang der nachstehenden Patentansprüche und nicht durch die spezifischen
Einzelheiten, die anhand der Beschreibung und der Erläuterung der Ausführungsbeispiele hierin präsentiert wurden, beschränkt sei.
Bezugszeichenliste
Vorrichtung für ein Fahrzeug
Kommunikationsmodul
Berechnungsmodul
Vorrichtung für eine Zentralstelle
Kommunikationsmodul
Kontrollmodul
Fahrzeug
Empfangen einer Teilaufgabe
Berechnen der Teilaufgabe
Bereitstellen eines Ergebnisses der Teilaufgabe
Zentralstelle
Bereitstellen von Teilaufgaben
Empfangen von Ergebnissen
Zusammenstellen der Ergebnisse
TSP erhält Job zur Berechnung
TSP bestimmt die zu nutzenden Fahrzeuge und verteilt Daten und Algorithmus
TSP sammelt die Ergebnisse von Fahrzeugen ein und gibt sie Anfragenden zurück
Computersystem
Datenbank