-
ALLGEMEINER STAND DER TECHNIK
-
Gewisse Rechenaufgaben können durch einen Hardware-Beschleuniger, wie ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder Grafikverarbeitungseinheit (GPU, Graphics Processing Unit), schneller durchgeführt werden als durch eine zentrale Verarbeitungseinheit. Rechenvorrichtungen verwenden in zunehmendem Maße Hardware-Beschleuniger zur rascheren Durchführung geeigneter Rechenaufgaben.
-
Ein Nachteil bei der Eingliederung eines Hardware-Beschleunigers in eine Rechenvorrichtung ist, dass der Hardware-Beschleuniger einen Großteil der Zeit unbenutzt sein kann. Abhängig von der besonderen Aufgabe, die durch die Rechenvorrichtung durchgeführt wird, kann der Hardware-Beschleuniger manchmal einen hohen Verwendungsgrad erfahren und zu anderen Zeiten eine geringe Nutzung haben oder im Ruhezustand sein, was eine ineffiziente Zuordnung von Ressourcen sein kann. Zusätzlich kann ziemlich oft eine Rekonfiguration eines Hardware-Beschleunigers erforderlich sein, die Zeit dauern kann und zu einer geringeren effektiven Nutzung des Hardware-Beschleunigers führen kann.
-
Figurenliste
-
Die hier beschriebenen Konzepte sind als ein Beispiel und nicht zur Einschränkung in den beiliegenden Figuren veranschaulicht. Zur Einfachheit und Klarheit einer Veranschaulichung sind Elemente, die in den Figuren veranschaulicht sind, nicht unbedingt im Maßstab gezeichnet. Wenn als angemessen erachtet, werden Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
- 1 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines Systems zum Verwalten von Ressourcen durch einen Cloud-Ressourcenmanager;
- 2 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform des Cloud-Ressourcenmanagers von 1;
- 3 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Knotenrechenvorrichtung von 1;
- 4 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Umgebung des Cloud-Ressourcenmanagers von 1 und 2;
- 5 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Umgebung der Knotenrechenvorrichtung von 1 und 3;
- 6 ist ein vereinfachtes Fließdiagramm mindestens einer Ausführungsform eines Verfahrens zum Zuweisen von Aufgaben auf dem Cloud-Ressourcenmanager von 1, 2 und 4;
- 7, 8 und 9 sind ein vereinfachtes Fließdiagramm mindestens einer Ausführungsform eines Verfahrens zum Verwalten von Beschleunigerressourcen durch die Knotenrechenvorrichtung von 1, 3 und 5;
- 10 veranschaulicht eine Domänentopologie gemäß einem Beispiel für entsprechende Internet-der-Dinge- (IoT, Internet-of-Things-) Netzwerke, die durch Links an entsprechende Gateways gekoppelt sind;
- 11 veranschaulicht ein Cloud-Rechennetzwerk gemäß einem Beispiel in Kommunikation mit einem Mesh-Netzwerk von IoT-Vorrichtungen, das als Fog-Vorrichtung am Rand des Cloud-Rechennetzwerks arbeitet;
- 12 veranschaulicht ein Blockdiagramm eines Netzwerks gemäß einem Beispiel, das Kommunikationen unter einer Anzahl von IoT-Vorrichtungen veranschaulicht; und
- 13 veranschaulicht ein Blockdiagramm für eine beispielhafte IoT-Verarbeitungssystemarchitektur gemäß einem Beispiel, auf der eine oder mehrere der hier besprochenen Techniken (z.B. Operationen, Prozesse, Verfahren und Methodologien) durchgeführt werden können.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Während Konzepte der vorliegenden Offenbarung verschiedenen Modifizierungen und alternativen Formen zuträglich sind, sind spezifische Ausführungsformen davon als Beispiel in den Zeichnungen gezeigt und werden hier im Detail beschrieben. Es sollte jedoch klar sein, dass keine Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die besonderen offenbarten Formen zu begrenzen, sondern im Gegenteil beabsichtigt ist, alle Modifizierungen, Äquivalente und Alternativen in Einklang mit der vorliegenden Offenbarung und den beiliegenden Ansprüchen abzudecken.
-
Bezugnahmen in der Spezifikation auf „eine bestimmte Ausführungsform“ „eine Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft aufweisen kann, aber jede Ausführungsform dieses besondere Merkmal, diese besondere Struktur oder Eigenschaft aufweisen kann oder nicht unbedingt aufweisen muss. Ferner nehmen solche Phrasen nicht unbedingt auf dieselbe Ausführungsform Bezug. Ferner, wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, wird davon ausgegangen, dass es einem Fachkundigen bekannt ist, ein solches Merkmal, eine solche Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen auszuführen, ob dies nun ausdrücklich beschrieben ist oder nicht. Zusätzlich sollte offensichtlich sein, dass Gegenstände, die in einer Liste in der Form von „mindestens ein A, B und C“ aufgewiesen sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten können. Ebenso können Gegenstände, die in der Form „mindestens eines von A, B, oder C“ aufgelistet sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten.
-
Die offenbarten Ausführungsformen können in manchen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können auch als Anweisungen implementiert sein, die auf einem transitorischen oder nicht transitorischen maschinenlesbaren (z.B. computerlesbaren) Speichermedium getragen werden oder gespeichert sind, die durch einen oder mehrere Prozessoren. gelesen und ausgeführt werden können. Ein maschinenlesbares Speichermedium kann als jede Speichervorrichtung, jeder Mechanismus oder jede andere physische Struktur zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z.B. einem flüchtigen oder nicht flüchtigen Speicher, einem Datenträger oder einer anderen Datenvorrichtung) lesbar ist, verkörpert sein.
-
In den Zeichnungen können einige Struktur- oder Verfahrensmerkmale in spezifischen Anordnungen und/oder Reihungen gezeigt sein. Es sollte jedoch klar sein, dass solche spezifischen Anordnungen und/oder Reihungen nicht erforderlich sein können. Vielmehr können in manchen Ausführungsformen solche Merkmale auf andere Weise und/oder in einer anderen Reihenfolge als in den veranschaulichende Figuren gezeigt angeordnet sein. Zusätzlich soll die Aufnahme eines Struktur- oder Verfahrensmerkmals in einer bestimmten Figur nicht bedeuten, dass ein solches Merkmal in allen Ausführungsformen erforderlich ist und in manchen Ausführungsformen nicht aufgewiesen sein kann oder mit anderen Merkmalen implementiert sein kann.
-
Unter Bezugnahme nun auf 1 weist bei Nutzung ein veranschaulichendes System 100 zum Verwalten von Beschleunigerressourcen einen Cloud-Ressourcenmanager 102 und eine oder mehrere Knotenrechenvorrichtungen 104 auf, die durch ein veranschaulichendes Netzwerk 106 kommunikativ miteinander verbunden sind. Der veranschaulichende Cloud-Ressourcenmanager 102 ist konfiguriert, Beschleunigervorrichtungen 308, wie feldprogrammierbare Gate-Arrays (FPGAs) auf einer oder mehreren Knotenrechenvorrichtungen 102 zu verwalten. Jede veranschaulichende Knotenrechenvorrichtung 104 überwacht Nutzung ihrer Beschleunigervorrichtung 308, wie durch Verfolgen, welche Beschleunigerbilder oder - programme auf den Beschleunigervorrichtungen 308 geladen sind, von freiem Raum auf der Beschleunigervorrichtung 308, Nutzungsfrequenz der geladenen Beschleunigerbilder und/oder dergleichen. Jede veranschaulichende Knotenrechenvorrichtung 104 sendet Nutzungsinformationen ihrer Beschleunigervorrichtungen 308 an den Cloud-Ressourcenmanager 102, der die Beschleunigernutzungsinformationen jeder Knotenrechenvorrichtung 104 speichert.
-
Der veranschaulichende Cloud-Ressourcenmanager 102 kann Aufgabenparameter von Aufgaben empfangen, die durch eine Beschleunigervorrichtung 308 einer der Knotenrechenvorrichtungen 104 durchgeführt werden sollen. Eine Aufgabe kann jede Aufgabe sein, die geeignet ist, auf einer Beschleunigervorrichtung 308 durchgeführt zu werden, wie Anlernen eines Deep Learning-Algorithmus, Durchführen einer Blockkettenrechnung, Durchführen von k-Mittelwert-Clustering usw. Aufgabenparameter können durch eine der Knotenrechenvorrichtungen 104 oder durch andere Rechenvorrichtungen, die in 1 nicht gezeigt sind, gesendet werden. Aufgabenparameter können eine Spezifikation des zu implementierenden Beschleunigerbilds oder Bitstreams, zu verarbeitender Aufgabendaten, spezifischer Hardwareanforderungen und/oder dergleichen aufweisen. Der Cloud-Ressourcenmanager 102 analysiert die Aufgabenparameter und bestimmt, welche Knotenrechenvorrichtung(en) 104 zum Durchführen der Aufgabe geeignet wäre(n). Der Cloud-Ressourcenmanager 102 kann Faktoren berücksichtigen wie welche Knotenrechenvorrichtung(en) 104 bereits das spezifizierte Beschleunigerbild oder den spezifizierten Bitstream in einer Beschleunigervorrichtung 308 geladen hat (haben), was zu einer effizienteren Zuordnung von Ressourcen führen könnte, da eine erneute Bildgebung bei der Beschleunigervorrichtungen 308 nicht erforderlich sein könnte. Bei Durchführung einer solchen Analyse kann der Cloud-Ressourcenmanager 102 eine Aufgabenverteilungsrichtlinie berücksichtigen, die gewisse Regeln oder Prioritäten spezifizieren kann, wie Aufgaben zugewiesen werden sollten. In der veranschaulichenden Ausführungsform weist der Cloud-Ressourcenmanager 102 eine Aufgabe einer oder mehreren Knotenrechenvorrichtungen 104 durch Senden einer Liste oder anderer Kennungsinformationen der einen oder mehreren Knotenrechenvorrichtungen 104 an die anfragende Vorrichtung zu, die die Aufgabenparameter an den Cloud-Ressourcenmanager 102 gesendet hat. Die anfragende Vorrichtung kann dann eine der Knotenrechenvorrichtungen 104 zur Durchführung der Aufgabe auswählen. Zusätzlich oder alternativ kann der Cloud-Ressourcenmanager 102 durch Senden von Aufgabenparametern und anderen relevanten Informationen direkt an eine Knotenrechenvorrichtung 104 eine Aufgabe direkt der Knotenrechenvorrichtung 104 zuweisen.
-
Wie in 1 gezeigt, weist das System 100 den Cloud-Ressourcenmanager 102, die Knotenrechenvorrichtung 104 und ein Netzwerk 106 auf. Das System 100 kann als ein Datenzentrum, ein Cloud-Rechensystem, ein Cluster von Computern und/oder dergleichen verkörpert sein. Es sollte offensichtlich sein, dass die verschiedenen Komponenten des Systems 100 nicht physisch an derselben Stelle liegen müssen, sondern vielmehr an mehreren verschiedenen Stellen verteilt sein können.
-
Der Cloud-Ressourcenmanager 102 kann als jede Art von Rechen- oder Computervorrichtung verkörpert sein, die zum Durchführen der hier beschriebenen Funktionen geeignet ist, aufweisend, ohne Einschränkung, einen Computer, einen Server, einen Rackmontierten Server, eine Workstation, einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen Tablet-Computer, eine mobile Rechenvorrichtung, eine am Körper tragbare Rechenvorrichtung, eine Netzwerkanwendung, eine Web-Anwendung, ein verteiltes Rechensystem, ein Prozessor-basiertes System und/oder eine Verbraucherelektronikvorrichtung. Es sollte offensichtlich sein, dass in manchen Ausführungsformen der Cloud-Ressourcenmanager 102 nicht ausschließlich dem Durchführen der hier beschriebenen Cloud-Ressourcenmanagementfunktionalität gewidmet sein kann. Zum Beispiel kann die hier beschriebene Cloud-Ressourcenmanagementfunktionalität durch eine virtuelle Maschine oder einen Container durchgeführt werden, die daneben andere Prozesse oder Software auf dem Cloud-Ressourcenmanager 102 laufen lassen.
-
Die Knotenrechenvorrichtung 104 kann als jede Art von Rechenvorrichtung implementiert sein, die zum Durchführen der hier beschriebenen Funktionen imstande ist. Zum Beispiel kann die Knotenrechenvorrichtung 104 als ein Blade Server, eine Rack-montierte Vorrichtung, ein Desktop-Computer, ein Mobiltelefon, Smartphone, Tablet-Computer, Netbook, Notebook, Ultrabook™, Laptop-Computer, Personal Digital Assistant, eine mobile Internet-Vorrichtung, Hybrid-Vorrichtung und/oder jede andere Rechen-/Kommunikationsvorrichtung verkörpert sein.
-
Das Netzwerk 106 kann als jede Art von Netzwerk verkörpert sein, das imstande ist, Kommunikationen zwischen dem Cloud-Ressourcenmanager 102 und den Knotenrechenvorrichtungen 104 und/oder anderen fernen Vorrichtungen zu erleichtern. Zum Beispiel kann das Netzwerk 106 als ein verdrahtetes oder drahtloses lokales Netzwerk (LAN, Local Area Network), ein verdrahtetes oder drahtloses Weitverkehrsnetzwerk (WAN, Wide Area Network), ein zellulares Netzwerk und/oder ein öffentlich zugängliches, globales Netzwerk wie das Internet verkörpert sein oder dieses aufweisen. Als solches kann das Netzwerk 106 eine beliebige Anzahl zusätzlicher Vorrichtungen, wie zusätzliche Computer, Router und Schalter aufweisen, um Kommunikationen zwischen diesen zu erleichtern.
-
Unter Bezugnahme nun auf 2 weist ein veranschaulichender Cloud-Ressourcenmanager 102 zum Verwalten von Beschleunigerressourcen einen Prozessor 202, einen Speicher 204, ein Eingabe/Ausgabe- („FO“, Input/Output) Teilsystem 206, einen Datenspeicher 208, und eine Netzwerkschnittstellensteuerung 210 auf. In manchen Ausführungsformen kann der Cloud-Ressourcenmanager 102 eine Anzeige 212 und periphere Vorrichtungen 214 aufweisen. Natürlich kann der Cloud-Ressourcenmanager 102 in anderen Ausführungsformen andere oder zusätzliche Komponenten wie jene aufweisen, die üblicherweise in einer typischen Rechenvorrichtung vorgefunden werden (z.B. verschiedene Eingabe/Ausgabe-Vorrichtungen). Zusätzlich können in manchen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in einer anderen Komponente eingegliedert sein oder aber einen Abschnitt derselben bilden. Zum Beispiel können in manchen Ausführungsformen der Speicher 204 oder Abschnitte davon in den Prozessor 202 eingegliedert sein.
-
Der Prozessor 202 kann als jede Art von Prozessor verkörpert sein, der imstande ist, die hier beschriebenen Funktionen durchzuführen. Zum Beispiel kann der Prozessor 202 als Einzel- oder Mehrfachkernprozessor(en), Digitalsignalprozessor, Mikrosteuerung oder anderer Prozessor oder Verarbeitungs-/Steuerschaltung verkörpert sein. Ebenso kann der Speicher 204 als jede Art von flüchtiger oder nicht flüchtiger Speicher oder Datenspeicher verkörpert sein, der imstande ist, die hier beschriebenen Funktionen durchzuführen. In Betrieb kann der Speicher 204 verschiedene Daten und Software speichern, die während des Betriebs des Cloud-Ressourcenmanagers 102 verwendet werden, wie Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der Speicher 204 ist kommunikativ über das I/O-Teilsystem 206, das als Schaltkreis und/oder Komponenten verkörpert sein kann, an den Prozessor 202 gekoppelt, um Eingabe/Ausgabe-Operationen mit dem Prozessor 202, dem Speicher 204 und anderen Komponenten des Cloud-Ressourcenmanagers 102 zu erleichtern. Zum Beispiel kann das I/O-Teilsystem 206 als Speichersteuerhubs, Eingabe/Ausgabe-Steuerhubs, Firmware-Vorrichtungen, Kommunikationslinks (d.h. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Lichtleiter, Leiterplattenbahnen usw.) und/oder andere Komponenten und Teilsysteme verkörpert sein oder aber diese aufweisen, um die Eingabe/Ausgabe-Operationen zu erleichtern. In manchen Ausführungsformen kann das I/O-Teilsystem 206 einen Abschnitt eines Systems-auf-einem-Chip (SoC, System-on-a-chip) bilden und gemeinsam mit dem Prozessor 202, dem Speicher 204 und anderen Komponenten des Cloud-Ressourcenmanagers 102 auf einem einzigen integrierten Schaltungschip eingefügt sein.
-
Der Datenspeicher 208 kann als jede Art von Vorrichtung oder Vorrichtungen verkörpert sein, die für kurzfristige oder langfristige Datenspeicherung konfiguriert sind, wie zum Beispiel Speichervorrichtungen und Schaltungen, Speicherkarten, Festplattenlaufwerke, Solid-State-Laufwerke oder andere Datenspeichervorrichtungen. Die Netzwerkschnittstellensteuerung 210 kann als jede Kommunikationsschaltung, -vorrichtung oder Sammlung davon verkörpert sein, die imstande ist, Kommunikationen zwischen dem Cloud-Ressourcenmanager 102 und anderen fernen Vorrichtungen über ein Netzwerk 106 zu ermöglichen. Zu diesem Zweck kann die Netzwerkschnittstellensteuerung 210 jede geeignete Kommunikationstechnologie (z.B. drahtlose oder verdrahtete Kommunikationen) und jedes zugehörige Protokoll (z.B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) verwenden, um eine solche Kommunikation zu erwirken, abhängig von zum Beispiel der Art von Netzwerk, das als jede Art von Kommunikationsnetzwerk verkörpert sein kann, das imstande ist, Kommunikation zwischen dem Cloud-Ressourcenmanager 102 und fernen Vorrichtungen zu erleichtern.
-
In manchen Ausführungsformen kann der Cloud-Ressourcenmanager 102 eine Anzeige 212 aufweisen, die als jede geeignete Anzeigetechnologie verkörpert sein kann oder diese auf andere Weise verwenden kann, aufweisend zum Beispiel eine Flüssigkristallanzeige (LCD, Liquid Crystal Display), eine Leuchtdioden- (LED, Light Emitting Display) Anzeige, eine Kathodenstrahlröhren- (CRT, Cathode Ray Tube) Anzeige, eine Plasmaanzeige und/oder andere Anzeigetechnologie. Die Anzeige 212 kann zum Beispiel zum Anzeigen von Informationen für einen Administrator verwendet werden. Obwohl in 2 als in den Cloud-Ressourcenmanager 102 integriert gezeigt, sollte offensichtlich sein, dass in anderen Ausführungsformen die Anzeige 212 fern dem Cloud-Ressourcenmanager 102, aber an diesen kommunikativ gekoppelt sein kann.
-
In manchen Ausführungsformen kann der Cloud-Ressourcenmanager 102 periphere Vorrichtungen 214 aufweisen, die eine beliebige Zahl von zusätzlichen Eingabe/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen und/oder anderen peripheren Vorrichtungen aufweisen können. Zum Beispiel können in manchen Ausführungsformen die peripheren Vorrichtungen 214 einen Berührungsbildschirm, einen Grafikschaltkreis, eine Grafikverarbeitungseinheit (GPU) und/oder Prozessorgrafik, eine Audiovorrichtung, ein Mikrofon, eine Kamera, eine Tastatur, eine Maus, eine Netzwerkschnittstelle und/oder andere Eingabe/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen und/oder periphere Vorrichtungen aufweisen. Die besonderen Vorrichtungen, die in den peripheren Vorrichtungen 214 aufgewiesen sind, können zum Beispiel von der Art und/oder beabsichtigten Verwendung des Cloud-Ressourcenmanagers 102 abhängig sein.
-
Unter Bezugnahme nun auf 3 weist eine veranschaulichende Knotenrechenvorrichtung 104 zum Verwalten von Beschleunigerressourcen einen Prozessor 302, einen Speicher 304, ein Eingabe/Ausgabe- („I/O“) Teilsystem 306, eine oder mehrere Beschleunigervorrichtungen 308 und eine Netzwerkschnittstellensteuerung 310 auf. In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 einen Datenspeicher 312, eine Anzeige 214 und periphere Vorrichtungen 316 aufweisen. Natürlich kann die Knotenrechenvorrichtung 104 in anderen Ausführungsformen andere oder zusätzliche Komponenten aufweisen, wie jene, die üblicherweise in einer typischen Rechenvorrichtung vorgefunden werden (z.B. verschiedene Eingabe/Ausgabe-Vorrichtungen). Zusätzlich können in manchen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in eine andere Komponente eingefügt sein oder auf andere Weise einen Abschnitt davon bilden. Zum Beispiel können in manchen Ausführungsformen der Speicher 304 oder Abschnitte davon in den Prozessor 302 eingefügt sein.
-
Der Prozessor 302 kann als jede Art von Prozessor verkörpert sein, der imstande ist, die hier beschriebenen Funktionen durchzuführen. Zum Beispiel kann der Prozessor 302 als Einzel- oder Mehrfachkern-Prozessor(en), Digitalsignalprozessor, Mikrosteuerung oder anderer Prozessor oder Verarbeitungs-/Steuerschaltung verkörpert sein. Ebenso kann der Speicher 304 als jede Art von flüchtiger oder nicht flüchtiger Speicher oder Datenspeicher verkörpert sein, der imstande ist, die hier beschriebenen Funktionen durchzuführen. In Betrieb kann der Speicher 304 verschiedene Daten und Software speichern, die während des Betriebs der Knotenrechenvorrichtung 104 verwendet werden, wie Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der Speicher 304 ist über das I/O-Teilsystem 306, das als Schaltkreis und/oder Komponenten verkörpert sein kann, um Eingabe/Ausgabe-Operationen mit dem Prozessor 302, dem Speicher 304 und anderen Komponenten der Knotenrechenvorrichtung 104 zu erleichtern, kommunikativ an den Prozessor 302 gekoppelt. Zum Beispiel kann das I/O-Teilsystem 306 als Speichersteuerhubs, Eingabe/Ausgabe-Steuerhubs, Firmware-Vorrichtungen, Kommunikations-Links (d.h. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Lichtleiter, Leiterplattenbahnen usw.) und/oder andere Komponenten und Teilsysteme verkörpert sein oder diese auf andere Weise aufweisen, um die Eingabe/Ausgabe-Operationen zu erleichtern. In manchen Ausführungsformen kann das I/O-Teilsystem 306 einen Abschnitt eines Systems-auf-einem-Chip (SoC) bilden und gemeinsam mit dem Prozessor 302, dem Speicher 304, und anderen Komponenten der Knotenrechenvorrichtung 104 auf einem einzigen integrierten Schaltungschip eingefügt sein.
-
Die eine oder mehreren Beschleunigervorrichtungen 308 können als jede Art von Vorrichtung verkörpert sein, die konfiguriert oder konfigurierbar ist, eine spezialisierte Rechenaufgabe durchzuführen. Zum Beispiel kann die Beschleunigervorrichtung 1312 besonders gut für Aufgaben wie Anlernen eines Deep Learning-Algorithmus, Durchführen einer Blockkettenrechnung, Durchführen von k-Mittelwert-Clustering, Verschlüsselung, Bildverarbeitung usw. geeignet sein. Die Beschleunigervorrichtungen 308 können zum Beispiel als ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), eine Grafikverarbeitungseinheit (GPU), ein konfigurierbares Array von Logikblöcken in Kommunikation über einen konfigurierbaren Datenaustausch usw. verkörpert sein. Eine Beschleunigervorrichtung 308, die rekonfigurierbar ist, kann ein Beschleunigerbild laden, das die Funktionalität und/oder Einstellungen der Beschleunigervorrichtung 308 definiert. Zum Beispiel kann ein Beschleunigerbild die Logik-Gates in einem FPGA konfigurieren. Ein Beschleunigerbild kann auch als ein Bitstream, ein Programm und/oder dergleichen bezeichnet werden. In manchen Ausführungsformen können die Beschleunigervorrichtungen 308 Arbeitslastzustand speichern, ohne das Beschleunigerbild zu ändern, in ähnlicher Weise wie ein Kontextumschalten in einem Prozessor. Jede der Beschleunigervorrichtungen 308 kann zahlreiche programmierbare Steckplätze aufweisen, die in Größe variieren können. Das heißt, die Beschleunigervorrichtungen 308 können in programmierbare Steckplätze unterteilt sein, die sich in Größe abhängig vom Beschleunigerbild unterscheiden. Jede der Beschleunigervorrichtungen 308 kann einen schnellen, nicht flüchtigen Speicher zum Ein-/Auslagern (Paging) von Beschleunigerbildern aufweisen, der als eine Haltezone für Bilder dient, die nicht aktiv verwendet werden. In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 einen schnellen nicht flüchtigen Speicher anstelle von oder zusätzlich zu der Beschleunigervorrichtung 308 aufweisen, aufweisend einen schnellen nicht flüchtigen Speicher. Die Beschleunigervorrichtungen 308 können über eine Hochgeschwindigkeitsverbindungsschnittstelle wie einen peripheren Bus (z.B. einen PCI Express Bus) oder eine Inter-Prozessorzwischenverbindung (z.B. eine In-Die Interconnect (IDI) oder QuickPath Interconnect (QPI)), über eine Fabric-Zwischenverbindung wie Intel® Omni-Path Architecture oder über jede andere geeignete Zwischenverbindung an den Prozessor 302 gekoppelt sein.
-
Die Netzwerkschnittstellensteuerung 310 kann als jede Kommunikationsschaltung, -vorrichtung oder Sammlung davon verkörpert sein, die imstande ist, Kommunikationen zwischen der Knotenrechenvorrichtung 104 und anderen fernen Vorrichtungen über ein Netzwerk 106 zu ermöglichen. Zu diesem Zweck kann die Netzwerkschnittstellensteuerung 310 jede geeignete Kommunikationstechnologie (z.B. drahtlose oder verdrahtete Kommunikationen) und zugehöriges Protokoll (z.B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) verwenden, um eine solche Kommunikation zu bewirken, abhängig zum Beispiel von der Art von Netzwerk, das als jede Art von Kommunikationsnetzwerk verkörpert sein kann, das imstande ist, Kommunikation zwischen der Knotenrechenvorrichtung 104 und fernen Vorrichtungen zu erleichtern.
-
In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 einen Datenspeicher 312 aufweisen, der als jede Art von Vorrichtung oder Vorrichtungen verkörpert sein kann, die für kurzfristige oder langfristige Datenspeicherung konfiguriert sind, wie zum Beispiel Speichervorrichtungen und Schaltungen, Speicherkarten, Festplattenlaufwerke, Solid-State-Laufwerke oder andere Datenspeichervorrichtungen.
-
In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 eine Anzeige 314 aufweisen, die als jede geeignete Anzeigetechnologie verkörpert sein kann oder diese auf andere Weise verwenden kann, aufweisend zum Beispiel eine Flüssigkristallanzeige (LCD), eine Leuchtdioden- (LED) Anzeige, eine Kathodenstrahlröhren- (CRT) Anzeige, eine Plasmaanzeige und/oder andere Anzeigetechnologie. Die Anzeige 314 kann zum Beispiel zum Anzeigen von Informationen für einen Administrator verwendet werden. Obwohl in 2 als mit der Knotenrechenvorrichtung 104 integriert gezeigt, sollte offensichtlich sein, dass in anderen Ausführungsformen die Anzeige 314 fern von der Knotenrechenvorrichtung 104, aber an diese kommunikativ gekoppelt sein kann.
-
In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 periphere Vorrichtungen 316 aufweisen, die eine beliebige Zahl von zusätzlichen Eingabe/AusgabeVorrichtungen, Schnittstellenvorrichtungen und/oder anderen peripheren Vorrichtungen aufweisen können. Zum Beispiel können in manchen Ausführungsformen die peripheren Vorrichtungen 316 einen Berührungsbildschirm, einen Grafikschaltkreis, eine Grafikverarbeitungseinheit (GPU) und/oder eine Prozessorgrafik, eine Audiovorrichtung, ein Mikrofon, eine Kamera, eine Tastatur, eine Maus, eine Netzwerkschnittstelle und/oder andere Eingabe/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen und/oder periphere Vorrichtungen aufweisen. Die besonderen Vorrichtungen, die in den peripheren Vorrichtungen 316 aufgewiesen sind, können zum Beispiel von der Art und/oder beabsichtigten Verwendung der Knotenrechenvorrichtung 104 abhängig sein.
-
Unter Bezugnahme nun auf 4 errichtet der Cloud-Ressourcenmanager 102 bei Nutzung eine Umgebung 400 zum Verwalten von Beschleunigerressourcen. Wie unten besprochen, bestimmt der Cloud-Ressourcenmanager 102 eine effiziente Möglichkeit, den Beschleunigervorrichtungen 308 Aufgaben zuzuweisen. In der veranschaulichenden Umgebung 400 weist der Cloud-Ressourcenmanager 102 einen Beschleunigermanager 402, einen Netzwerkschnittstellenmanager 404, Beschleunigernutzungsinformationen 406, Beschleunigerbilder 408 und Aufgabeverteilungsrichtlinien 410 auf. Zusätzlich weist der Beschleunigermanager 402 einen Beschleunigernutzungsinformationenaggregator 412 und einen Aufgabenverteiler 414 auf. Jedes von dem Beschleunigermanager 402, dem Netzwerkschnittstellenmanager 404, den Beschleunigernutzungsinformationen 406, den Beschleunigerbildern 408, den Aufgabeverteilungsrichtlinien 410, dem Beschleunigernutzungsinformationenaggregator 412 und dem Aufgabenverteiler 414 kann als Hardware, Software, Firmware, oder eine Kombination davon verkörpert sein. Zusätzlich kann in manchen Ausführungsformen eine der veranschaulichenden Komponenten einen Abschnitt einer anderen Komponente bilden.
-
Der Beschleunigermanager 402 kann in manchen Ausführungsformen als ein Daemon oder Treiber implementiert sein, der sich für Abfragen eignet, wie eine RESTful-Schnittstelle. Der Beschleunigermanager 402 verwaltet die Beschleunigerressourcen innerhalb des Systems 100 durch Zuweisen von Aufgaben zu Beschleunigervorrichtungen 308 der Knotenrechenvorrichtungen 104 oder Bereitstellen von Kennungsinformationen von Knotenrechenvorrichtungen 104 mit geeigneten Beschleunigervorrichtungen 308 für einen Anforderer. Zu diesem Zweck verfolgt der Beschleunigernutzungsinformationenaggregator 412 die Beschleunigernutzungsinformationen 406 im System 100. Die Beschleunigernutzungsinformationen 406 können Telemetriedaten aufweisen, die von den Knotenrechenvorrichtungen 104 empfangen werden, wie Einsatzeigenschaften von Beschleunigerbildern, wie, welche Beschleunigerbilder eingesetzt werden, welche Knotenrechenvorrichtung 104 ein bestimmtes Beschleunigerbild geladen hat, ob das Beschleunigerbild gemeinsam benutzt werden kann (verfügbar für jeden oder nur für den Benutzer oder die Rechenvorrichtung, der bzw. die die Aufgabe gesendet hat), den Bruchteil von Zeit, die jedes geladene Beschleunigerbild verwendet wird, das Ausmaß an freiem Raum in jeder Beschleunigervorrichtung 308, zugehörige Kosten einer Verwendung der Beschleunigerbilder, Hardware-Parameter (wie Geschwindigkeit, Größe, Speicher, erforderliche Leistung usw.), Priorität aktueller Aufgaben und wie oft gewisse Beschleunigerbilder verwendet werden oder wann die Beschleunigerbilder zuletzt verwendet wurden. Der Beschleunigernutzungsinformationenaggregator 412 aggregiert die Beschleunigernutzungsinformationen 406,um eine effiziente Möglichkeit zu bestimmen, Aufgaben zu Beschleunigervorrichtungen 308 von Knotenrechenvorrichtungen 104 zuzuweisen. Zum Beispiel kann der Beschleunigernutzungsinformationenaggregator 412 bestimmen, welche Beschleunigerbilder derzeit auf welche Beschleunigervorrichtungen 308 geladen sind, und einen Nutzungsgrad bestimmen um zu bestimmen, ob eine Aufgabe einer bestimmten Beschleunigervorrichtung 308 zugewiesen werden sollte, die das Beschleunigerbild enthält, um die Aufgabe durchzuführen. Die Beschleunigernutzungsinformationen 406 können durch den Cloud-Ressourcenmanager 102 von den Knotenrechenvorrichtungen 104 geholt werden oder durch die Knotenrechenvorrichtung 104 zum Cloud-Ressourcenmanager 102 geschoben werden.
-
Wie oben beschrieben, können die Beschleunigerbilder 408 als ein Bitstream, ein Programm usw. verkörpert sein. Die Beschleunigerbilder 408 können auf dem Cloud-Ressourcenmanager 102 oder den Knotenrechenvorrichtungen 104 gespeichert sein. Der Cloud-Ressourcenmanager 102 oder die Knotenrechenvorrichtungen 104 können ein Archiv oder eine Bibliothek allgemein verfügbarer oder populärer Beschleunigerbilder 408 haben. In manchen Ausführungsformen können die Beschleunigerbilder 408 gespeichert werden, falls sie in früheren Aufgabeanfragen verwendet wurden, und können nur mit einem Passwort usw. verfügbar sein. Der Cloud-Ressourcenmanager 102 kann Metadaten für die Beschleunigerbilder 408 speichern, die eine Größe, Leistungsnutzung und ob das entsprechende Beschleunigerbild gemeinsam benutzt werden darf, aufweisen.
-
In Verbindung mit Aggregieren der Beschleunigernutzungsinformationen 406 empfängt der Aufgabenverteiler 414 eingehende Aufgaben. Diese Aufgaben können von einem Benutzer, einer anderen Vorrichtung im selben Datencenter oder einer Rechenvorrichtung in Kommunikation mit dem System 100 empfangen werden. Empfang der Aufgaben weist Aufgabenparameter wie Aufgabendaten, welches Beschleunigerbild 408 zur Durchführung der Aufgabe verwendet werden sollte, Hardware-Ressourcenanforderungen, Ressourcen, die abgesehen von Beschleunigervorrichtungen 308 erforderlich sind, wie eine virtuelle Maschine, die während Ausführung der Beschleunigervorrichtungen 308 laufen soll, usw. auf. In manchen Fällen kann der Aufgabenverteiler 414 ein Beschleunigerbild 408 zum Durchführen der Aufgabe empfangen. In manchen Ausführungsformen können mehrere Beschleunigerbilder 408 auf den Knotenrechenvorrichtungen 104 gespeichert werden, um zur Durchführung der Aufgabe gewählt zu werden. Der Aufgabenverteiler 414 verteilt die eingehenden Aufgaben an geeignete Knotenrechenvorrichtungen 104 basierend auf Aufgabenparametern und Aufgabeverteilungsrichtlinien 410, die von einem Administrator oder zum Beispiel eine Service-Level-Vereinbarung bestimmt werden können. Die Aufgabeverteilungsrichtlinien 410 können Richtlinien zur Spezifizierung bestimmter Ziele unter Verwendung von Metriken und Techniken ähnlich Cache-Verwaltungsrichtlinien aufweisen, wie am längsten nicht verwendet (LRU, Least Recently Used), zuletzt verwendet (MRU, Most Recently Used), am seltensten verwendet (LFU, Least Frequently Used) und Prozesspriorität. Die Zielsetzungen könnten z.B. geringster verbleibender Raum in einer Beschleunigervorrichtung 308, größter verbleibender Raum in einer Beschleunigervorrichtung 308, Übereinstimmung mit Leistungsbudgets sein, wo eine gegebene Knotenrechenvorrichtung 104 oder Beschleunigervorrichtung 308 ein bestimmtes Leistungsbudget haben kann. In manchen Ausführungsformen können Planungsentscheidungen durch den Cloud-Ressourcenmanager 102, durch die Knotenrechenvorrichtungen 104 oder gemeinsam zwischen Cloud-Ressourcenmanager 102 und den Knotenrechenvorrichtungen 104 ausgeführt werden. Zusätzlich oder alternativ kann ein Drittparteien-Planungsentscheidungssystem Schwellenwerte haben um zu bestimmen, wann eine andere Instanz eines bestimmten Algorithmus (z.B. angefragte Nutzung über 90% der verfügbaren) zu starten ist. Eine beispielhafte Verteilung einer Aufgabe kann den Aufgabenverteiler 414 aufweisen, der ermittelt, welche Knotenrechenvorrichtungen 104 derzeit das angefragte Beschleunigerbild 408 haben, um die Aufgabe durchzuführen, und verfügbare Zeit für eine Aufgabe haben, die auf dem Beschleunigerbild 408 laufen soll. Mehrere Faktoren, die der Aufgabenverteiler 414 berücksichtigen kann, weisen auf, welche Knotenrechenvorrichtungen 104 das angefragte Beschleunigerbild 408 haben, die Ressourcenverfügbarkeit des angefragten Beschleunigerbilds 408 (falls es eine Warteschlange gibt), wie lange die Warteschlange ist, ob das angefragte Beschleunigerbild 408 wahrscheinlich bald ausgelagert (swapped out) wird, und Verfügbarkeit freier Ressourcen und ob das Beschleunigerbild 408 in die freie Ressource passen kann. Falls jedoch keine freien Ressourcen verfügbar sind, kann der Aufgabenverteiler 414 bestimmen, welche Knotenrechenvorrichtungen 104 die kürzeste Warteschlange haben oder Aufgaben mit einer niedrigeren Priorität als die aktuelle Aufgabe haben. Wenn eine Arbeitslast oder Aufgabe des Beschleunigers empfangen wird, die nicht in einen der verfügbaren freien Blöcke passt, kann der Aufgabenverteiler 414 bestimmen, ob ein Host einen angemessenen gesamten freien Raum hat und dann das Beschleunigerbild 408 zu defragmentieren und zu hosten, oder, falls es einen angrenzenden Block angemessener Größe gibt, der derzeit durch ein Beschleunigerbild 408 besetzt ist, das nicht häufig verwendet wird, kann der Aufgabenverteiler 414 das Beschleunigerbild 408, das nicht häufig verwendet wird, auslagern und die neue Aufgabe starten und wieder in das vorherige Beschleunigerbild 408 einlagern, sobald notwendig. In manchen Ausführungsformen kann der Aufgabenverteiler 414 Zuweisungen/Empfehlungen basierend auf Nutzungsdetails hoher Ebene machen und Details den Knotenrechenvorrichtungen 104 überlassen, wie, welche spezifischen Beschleunigervorrichtungen 308 die Aufgabe implementieren sollten und wie Beschleunigervorrichtungen 308 wieder zu bebildern oder zu defragmentieren sind. Alternativ kann der Aufgabenverteiler 414 mehr oder vollständige Steuerung ausüben, wie und wann Aufgaben an Knotenrechenvorrichtungen 104 durchgeführt werden.
-
Der Netzwerkschnittstellenmanager 404 verwaltet die Kommunikation zwischen dem Cloud-Ressourcenmanager 102 und den Knotenrechenvorrichtungen 104 und den anderen Vorrichtungen auf dem Netzwerk 106. Zu diesem Zweck kann der Netzwerkschnittstellenmanager 404 die NIC 210 zur Kommunikation mit den anderen Vorrichtungen des Systems 100 verwenden. Der Netzwerkschnittstellenmanager 404 kann angemessene Daten senden und empfangen, um die hier beschriebenen Funktionen durchzuführen.
-
Unter Bezugnahme nun auf 5 errichtet die Knotenrechenvorrichtung 104 bei Nutzung eine Umgebung 500 zum Verwalten von Beschleunigerressourcen. Wie unten besprochen, bestimmt die Knotenrechenvorrichtung 104 eine effiziente Möglichkeit zum Zuweisen von Aufgaben an die Beschleunigervorrichtungen 308. In der veranschaulichenden Umgebung 500 weist die Knotenrechenvorrichtung 104 einen Beschleunigermanager 502, einen Netzwerkschnittstellenmanager 504, Beschleunigerbilder 506 und Aufgabenplanungsrichtlinien 508 auf. Zusätzlich weist der Beschleunigermanager 502 einen Beschleunigernutzungsmonitor 510, einen Aufgabenplaner 512 und einen Aufgabenmanager 514 auf. Jedes von dem Beschleunigermanager 502, dem Netzwerkschnittstellenmanager 504, den Beschleunigerbildern 506, den Aufgabenplanungsrichtlinien 508, dem Beschleunigernutzungsmonitor 510, dem Aufgabenplaner 512 und dem Aufgabenmanager 514 kann als Hardware, Software, Firmware oder eine Kombination davon verkörpert sein. Zusätzlich kann in manchen Ausführungsformen eine der veranschaulichenden Komponenten einen Abschnitt einer anderen Komponente bilden.
-
Der Beschleunigermanager 402 verwaltet die Beschleunigerressourcen innerhalb der Knotenrechenvorrichtung 104 durch Zuweisen von Aufgaben zu Beschleunigervorrichtungen 308 oder Bereitstellen von Informationen von Beschleunigervorrichtungen 308 der Knotenrechenvorrichtungen 104 an einen Anfragenden. Der Beschleunigernutzungsmonitor 510 kann Nutzung, Fragmentierung, welche Beschleunigerbilder wo eingesetzt werden, Leistungsnutzungsgrade usw. für Beschleunigervorrichtungen 308 überwachen und berichten. Falls die Knotenrechenvorrichtung 104 über einem Leistungsbudget ist, kann der Beschleunigernutzungsmonitor 510 einen Alarm auslösen, Operationen löschen oder andere geeignete Maßnahmen ergreifen. Der Beschleunigernutzungsmonitor 510 kann auch die Ressourcenverfügbarkeit und Nutzung zur Planung von Entscheidungen, Verrechnungszwecken, Inventarmanagement usw. überwachen und berichten. Die Knotenrechenvorrichtung 104 kann Änderungen zum Cloud-Ressourcenmanager 102 schieben oder der Cloud-Ressourcenmanager 102 kann die Änderungen von der Knotenrechenvorrichtung 104 holen.
-
Der Aufgabenplaner 512 kann Aufgaben empfangen, die durch den Cloud-Ressourcenmanager 102 zugewiesen werden. Der Aufgabenplaner 512 kann Aufgabenparameter wie Aufgabendaten, welches der Beschleunigerbilder 506 zur Durchführung der Aufgabe verwendet werden sollte, Hardware-Ressourcenanforderungen, Ressourcen, die abgesehen von Beschleunigervorrichtungen 308 erforderlich sind, wie eine virtuelle Maschine, die während Ausführung der Beschleunigervorrichtungen 308 laufen soll usw. empfangen. In manchen Fällen kann der Aufgabenplaner 512 ein Beschleunigerbild 506 zum Durchführen der Aufgabe empfangen. Wie oben beschrieben, können die Beschleunigerbilder 506 als ein Bitstream, ein Programm usw. verkörpert sein. In manchen Ausführungsformen können ein oder mehrere Beschleunigerbilder 506 auf den Knotenrechenvorrichtungen 104 gespeichert sein, um zur Durchführung der Aufgabe gewählt zu werden. Die Knotenrechenvorrichtung 104 kann ein Archiv oder eine Bibliothek allgemein verfügbarer oder populärer Beschleunigerbilder 506 und/oder lokal gecachter Beschleunigerbilder 506 haben, die kürzlich verwendet wurden oder häufig verwendet werden. In manchen Ausführungsformen können die Beschleunigerbilder 506 gespeichert werden, falls sie in vorherigen Aufgabeanforderungen verwendet wurden, und können erst nach einem Authentifizierungs- und Autorisierungsprozess usw. verfügbar sein. Die Knotenrechenvorrichtung 104 kann Metadaten für die Beschleunigerbilder 506 speichern, die Größe, Leistungsnutzung und ob das entsprechende Beschleunigerbild gemeinsam benutzt werden darf, aufweisen. Der Aufgabenplaner 512 kann Aufgaben basierend auf Priorität, Aufgabenplanungsrichtlinien 508, Verrechnung, Nutzung aktueller Jobs usw. planen und kann Aufgaben in eine Warteschlange stellen, einen bestimmten Steckplatz auswählen usw. Die Aufgabenplanungsrichtlinien 508 können Techniken ähnlich Cache-Managementrichtlinien verwenden, wie am längsten nicht verwendet (LRU), zuletzt verwendet (MRU), am seltensten verwendet (LFU) und Prozesspriorität. In manchen Ausführungsformen kann der Aufgabenplaner 512 den Cloud-Ressourcenmanager 102 in die Aufgabenplanung einbeziehen.
-
Der Aufgabenmanager 514 kann Aufgaben durch die Beschleunigervorrichtungen 308 einrichten und durchführen. Zum Einrichten der Aufgaben kann der Aufgabenmanager 514 Beschleunigerbilder 506 laden, die ein Defragmentieren einer Beschleunigervorrichtung 308 benötigen könnten. In manchen Ausführungsformen können ausgelagerte Bilder mit oder ohne Zustands- und Kontextdaten bei einem schnellen, nicht flüchtigen Speicher für ein schnelles Ein-/Auslagern der Beschleunigerbilder 506 gespeichert werden. Das Einrichten der Aufgaben kann auch ein Laden einer virtuellen Maschine (VM) oder eines Containers aufweisen, um mit der Beschleunigervorrichtung 308 zu interagieren. Einrichten kann Ausschalten derzeit laufender Aufgaben auf demselben Beschleunigerbild 506 aufweisen, ähnlich einem Kontextumschalten in Prozessoren. Der Aufgabenmanager 514 kann die resultierenden Daten an die anfragende Rechenvorrichtung senden.
-
Der Netzwerkschnittstellenmanager 504 verwaltet die Kommunikation zwischen der Knotenrechenvorrichtung 104 und dem Cloud-Ressourcenmanager 102 und den anderen Vorrichtungen auf dem Netzwerk 106. Zu diesem Zweck kann der Netzwerkschnittstellenmanager 504 die NIC 310 zur Kommunikation mit den anderen Vorrichtungen des Systems 100 verwenden. Der Netzwerkschnittstellenmanager 504 kann geeignete Daten senden und empfangen, um die hier beschriebenen Funktionen durchzuführen.
-
Unter Bezugnahme nun auf 6 kann, bei Nutzung, der Cloud-Ressourcenmanager 102 ein Verfahren 600 zum Verwalten von Beschleunigerressourcen durchführen. Das veranschaulichende Verfahren 600 beginnt mit Block 602 von 6, in dem der Cloud-Ressourcenmanager 102 Beschleunigernutzungsinformationen von Knotenrechenvorrichtungen 104 empfängt. Zu diesem Zweck können die Knotenrechenvorrichtungen 104 die Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager 102 senden oder der Cloud-Ressourcenmanager 102 kann Beschleunigernutzungsinformationen von den Knotenrechenvorrichtungen 104 holen. Die Beschleunigernutzungsinformationen können Eigenschaften eines Einsatzes von Beschleunigerbildern aufweisen, wie, welche Beschleunigerbilder eingesetzt werden, welche Knotenrechenvorrichtung 104 welche Beschleunigerbilder durchführt, ob die Beschleunigerbilder gemeinsam benutzt werden können (für jeden zur Benutzung verfügbar oder nur für die Rechenvorrichtung verfügbar, die die Aufgabe gesendet hat), die Host-Plattformnutzung der Funktion, einen Nutzungsgrad und wie viel freier Raum für jede Beschleunigervorrichtung vorhanden ist, damit verbundene Kosten der Funktionen, Hardwareparameter (wie Geschwindigkeit, Größe, Speicher, erforderliche Leistung usw.), Priorität der durchgeführten Aufgaben und wie häufig gewisse Beschleunigerbilder verwendet werden oder wann die Beschleunigerbilder das letzte Mal verwendet wurden.
-
In Block 604 kann der Cloud-Ressourcenmanager 102 Aufgabenparameter für durchzuführende Aufgaben empfangen. Empfang der Aufgabenparameter weist Empfangen von Aufgabendaten wie eines allgemeinen Algorithmus zur Anwendung, einer spezifischen Instanz zur Ausführung auf dieser, einer gewünschten Plattform, welches Beschleunigerbild zur Durchführung der Aufgabe verwendet werden sollte, Hardware-Ressourcenanforderungen, Ressourcen, die außer Beschleunigervorrichtungen erforderlich sind, wie für eine virtuelle Maschine, die während Ausführung der Beschleunigervorrichtungen laufen soll, usw. auf. Der Cloud-Ressourcenmanager 102 kann entweder die Aufgaben verwalten oder einfach auf eine Anfrage für eine Empfehlung antworten. In manchen Ausführungsformen kann in Block 606 der Cloud-Ressourcenmanager 102 ein Beschleunigerbild empfangen, das für die empfangene Aufgabe zu verwenden ist.
-
In Block 608 greift der Cloud-Ressourcenmanager 102 auf eine Aufgabenverteilungsrichtlinie zu. Die Aufgabenverteilungsrichtlinie, die z.B. durch einen Administrator oder eine Service-Level-Vereinbarung bestimmt werden kann, kann Richtlinien aufweisen, die bestimmte Zielsetzungen unter Verwendung von Metriken und Techniken spezifizieren, ähnlich Cache-Managementrichtlinien, wie am längsten nicht verwendet (LRU), zuletzt verwendet (MRU), am seltensten verwendet (LFU) und Prozesspriorität. Die Zielsetzungen könnten z.B. geringster verbliebener Raum in einer Beschleunigervorrichtung, größter verbliebener Raum in einer Beschleunigervorrichtung oder Übereinstimmung mit Leistungsbudgets sein, wo eine gegebene Knotenrechenvorrichtung 104 oder Beschleunigervorrichtung ein bestimmtes Leistungsbudget haben kann, wenn neue Instanzen hinzuzufügen sind, was zu tun ist, wenn eine Instanz nicht in die aktuelle Konfiguration eingefügt werden kann, wie Defragmentieren einer Beschleunigervorrichtung 308 zu oder Auslagern eines Beschleunigerbilds.
-
In Block 610 bestimmt der Cloud-Ressourcenmanager 102 mögliche Zielort-Knotenrechenvorrichtung(en) 104. Zu diesem Zweck bestimmt der Cloud-Ressourcenmanager 102 die Knotenrechenvorrichtung(en) 104, die kompatible Hardware haben, in Block 612. Ein Ziel des Cloud-Ressourcenmanagers 102, das in Betracht gezogen werden kann, ist der kleinste verbliebene Raum oder größte verbliebene Raum und Leistungsüberlegungen. In Block 614 analysiert der Cloud-Ressourcenmanager 102 die aktuelle Verwendung von Beschleunigervorrichtungen 308 in Knotenrechenvorrichtungen 104. In Block 616 analysiert der Cloud-Ressourcenmanager 102 den aktuellen Einsatz des zu verwendenden Beschleunigerbilds. Der Cloud-Ressourcenmanager 102 kann bestimmen, wie damit umgegangen wird, über keinen ausreichend großen Block für das Beschleunigerbild zu verfügen, der zur Durchführung der Aufgabe notwendig ist, entweder durch Defragmentieren oder Auslagern eines Beschleunigerbilds, falls das zu verwendende Beschleunigerbild derzeit nicht im Einsatz ist. Der Cloud-Ressourcenmanager 102 kann bestimmen, dass neue Instanzen hinzugefügt werden sollten und nicht gemeinsam benutzbare Instanzen des Beschleunigerbilds ignoriert werden sollten. Zum Beispiel kann der Cloud-Ressourcenmanager 102 in Block 610 bestimmen, dass eine Instanz des angefragten Beschleunigerbilds bereits geladen ist und derzeit nicht verwendet und gemeinsam genutzt werden kann, und dann kann der Cloud-Ressourcenmanager 102 bestimmen, dass die entsprechende Knotenrechenvorrichtung 104 ein geeigneter Zielort wäre. In einem anderen Beispiel kann der Cloud-Ressourcenmanager 102 in Block 610 bestimmen, dass eine Instanz des angefragten Beschleunigerbilds bereits geladen ist und derzeit von einer Aufgabe mit geringerer Priorität als die eingehende Aufgabe verwendet wird, und der Cloud-Ressourcenmanager 102 kann dann bestimmen, dass die entsprechende Knotenrechenvorrichtung 104 ein geeigneter Zielort wäre. In einem zusätzlichen Beispiel kann der Cloud-Ressourcenmanager 102 in Block 610 bestimmen, dass eine Instanz des angefragten Beschleunigerbilds in einer bestimmten Beschleunigervorrichtung 308 nicht geladen ist, sondern dass ein freier Raum auf der Beschleunigervorrichtung 308 für das Beschleunigerbild vorliegt, und der Cloud-Ressourcenmanager 102 kann dann bestimmen, dass die entsprechende Knotenrechenvorrichtung 104 ein geeigneter Zielort wäre. In einem weiteren Beispiel kann der Cloud-Ressourcenmanager 102 in Block 610 bestimmen, dass freier Raum in einer bestimmten Beschleunigervorrichtung 308 vorläge, wäre die Beschleunigervorrichtung defragmentiert, und der Cloud-Ressourcenmanager 102 kann dann bestimmen, dass die entsprechende Knotenrechenvorrichtung 104 ein geeigneter Zielort wäre.
-
In Block 618 weist der Cloud-Ressourcenmanager 102 die Aufgabe einer Knotenrechenvorrichtung 104 zu. In der veranschaulichenden Ausführungsform sendet zu diesem Zweck der Cloud-Ressourcenmanager 102 in Block 620 eine Liste von Zielort-Knotenrechenvorrichtung(en) 104 an eine anfragende Vorrichtung, die dann direkt mit der (den) Knotenrechenvorrichtung(en) 104 kommunizieren kann. Zusätzlich oder alternativ kann in manchen Ausführungsformen der Cloud-Ressourcenmanager 102 Aufgabenparameter direkt an eine Knotenrechenvorrichtung 104 senden, um die Aufgabe mit einer Beschleunigervorrichtung in Block 622 durchzuführen.
-
Unter Bezugnahme nun auf 7, kann bei Nutzung die Knotenrechenvorrichtung 104 ein Verfahren 700 zum Verwalten von Beschleunigerressourcen ausführen. Das veranschaulichende Verfahren 700 beginnt mit Block 702, wo die Knotenrechenvorrichtung 104 Beschleunigernutzungsinformationen bestimmt. Die Beschleunigernutzungsinformationen können Einsatzeigenschaften von Beschleunigerbildern aufweisen, wie welche Beschleunigungsbilder eingesetzt werden, welche Knotenrechenvorrichtung 104 das Beschleunigerbild durchführt, ob das Beschleunigerbild gemeinsam benutzbar ist (für jeden Benutzer verfügbar oder nur für die Rechenvorrichtung verfügbar, die die Aufgabe gesendet hat), die Nutzung des Beschleunigerbilds, einen Nutzungsgrad oder wie viel freier Raum für jede Beschleunigervorrichtung vorhanden ist, damit verbundene Kosten der Funktionen, Hardwareparameter (wie Geschwindigkeit, Größe, Speicher, erforderliche Leistung usw.), Priorität der derzeit durchgeführten Aufgaben und wie häufig gewisse Beschleunigerbilder verwendet werden oder wann die Beschleunigerbilder zuletzt verwendet wurden.
-
In Block 704 sendet die Knotenrechenvorrichtung 104 die Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager 102. Die Überführung von Beschleunigernutzungsinformationen kann durch den Cloud-Ressourcenmanager 102 oder durch die Knotenrechenvorrichtung 104 initialisiert werden.
-
In Block 706 empfängt die Knotenrechenvorrichtung 104 Aufgabenparameter für durchzuführende Aufgaben. In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 die Aufgabe vom Cloud-Ressourcenmanager 102 empfangen. Alternativ kann die Knotenrechenvorrichtung 104 die Aufgabe direkt von der (den) anfragenden Rechenvorrichtung(en) empfangen. Beispielhafte Aufgaben können Deep Learning-Algorithmen, Blockkettenrechnung, Berechnen von k-Mittelwerten usw. aufweisen. In manchen Ausführungsformen können die Knotenrechenvorrichtungen 104 in Block 708 ein Beschleunigerbild empfangen, das für die Aufgabe zu verwenden ist.
-
In Block 710 greift die Knotenrechenvorrichtung 104 auf eine Aufgabenplanungsrichtlinie zu. Die Aufgabenplanungsrichtlinien können Techniken ähnlich Cache-Managementrichtlinien verwenden, wie am längsten nicht verwendet (LRU), zuletzt verwendet (MRU), am seltensten verwendet (LFU) und Prozesspriorität. Die Aufgabenplanungsrichtlinie kann gewisse Zielsetzungen spezifizieren, wie z.B. geringster verbliebener Raum in einer Beschleunigervorrichtung 308, größter verbliebener Raum in einer Beschleunigervorrichtung 308, Übereinstimmung mit Leistungsbudgets, wo eine gegebene Knotenrechenvorrichtung 104 oder Beschleunigervorrichtung 308 ein bestimmtes Leistungsbudget haben kann, usw.
-
In Block 712 plant die Knotenrechenvorrichtung 104 die angefragte Aufgabe. In Block 714 bestimmt die Knotenrechenvorrichtung 104, ob eine Instanz des zu verwendenden Beschleunigerbilds verfügbar ist. In Block 716 bestimmt die Knotenrechenvorrichtung 104, ob eine neue Instanz des Beschleunigerbilds gestartet werden sollte. Die Knotenrechenvorrichtung 104 kann bestimmen, dass eine neue Instanz des Beschleunigerbilds gestartet werden sollte, wenn die Anfragen für eine gegebene Instanz eines Beschleunigerbilds die Kapazität des Beschleunigerbilds übersteigen. In Block 718 bestimmt die Knotenrechenvorrichtung 104, ob eine Defragmentierung erfolgen sollte, um das Beschleunigerbild einzurichten.
-
In Block 720 bestimmt die Knotenrechenvorrichtung 104, ob es Zeit ist, die Aufgabe durchzuführen (z.B. ob zuvor geplante Aufgaben beendet sind, ob die geplante Zeit eingetreten ist, oder ob ein Satz von Bedingungen, der in der Planung bestimmt ist, auf andere Weise erfüllt ist). Falls die Knotenrechenvorrichtung 104 bestimmt, dass es Zeit ist, die angefragte Aufgabe durchzuführen, fährt das Verfahren 700 mit Block 722 von 8 fort. Falls die Knotenrechenvorrichtung 104 jedoch bestimmt, dass es nicht Zeit ist, die Aufgabe durchzuführen, geht das Verfahren 700 zum Start von Block 720 zurück, um ständig zu prüfen, wann es Zeit für die Durchführung der Aufgabe ist.
-
In Block 722 in 8 bestimmt die Knotenrechenvorrichtung 104 ob aktuelle Aufgaben auszulagern sind. Falls die Knotenrechenvorrichtung 104 bestimmt, dass ein Auslagern erforderlich ist, lagert die Knotenrechenvorrichtung 104 die aktuellen Aufgaben in Block 724 aus. Zu diesem Zweck kann die Knotenrechenvorrichtung 104 die Kontextdaten der derzeit auf der Beschleunigervorrichtung 308 durchgeführten Aufgabe auslagern. In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 bestimmen, dass die derzeit durchgeführte Aufgabe zu einer zweiten Knotenrechenvorrichtung 104 bewegt werden sollte. In solchen Ausführungsformen kann die Knotenrechenvorrichtung 104 die Kontextdaten zur zweiten Rechenvorrichtung 104 senden, die dann mit der Durchführung der Aufgabe fortfahren kann. Falls die Knotenrechenvorrichtung 104 jedoch bestimmt, dass kein Auslagern notwendig ist, fährt das Verfahren 700 mit Block 726 fort.
-
In Block 726 bestimmt die Knotenrechenvorrichtung 104, ob die Beschleunigervorrichtung defragmentiert werden soll. Falls die Knotenrechenvorrichtung 104 bestimmt, die Beschleunigervorrichtung zu defragmentieren, defragmentiert die Knotenrechenvorrichtung die Beschleunigervorrichtung in Block 728. Die Knotenrechenvorrichtung 104 kann bestimmen, dass Defragmentierung erfolgen sollte, falls eine Beschleunigervorrichtung 308 etwas freien Raum hat, aber der freie Raum zwischen Lücken anderer Beschleunigerbilder verteilt ist, die auf der Beschleunigervorrichtung 308 geladen sind. Durch Bewegen von Beschleunigerbildern, so dass sie näher beieinander sind, kann der freie Raum der Beschleunigervorrichtung 308 gruppiert werden, wodurch ein neues Beschleunigerbild geladen werden kann. Falls die Knotenrechenvorrichtung 104 jedoch bestimmt, dass keine Notwendigkeit zum Defragmentieren der Beschleunigervorrichtung besteht, fährt das Verfahren 700 mit Block 730 fort.
-
In Block 730 bestimmt die Knotenrechenvorrichtung 104, ob aktuelle Beschleunigerbilder auszulagern sind. Falls die Knotenrechenvorrichtung 104 bestimmt, aktuelle Beschleunigerbilder auszulagern, lagert die Knotenrechenvorrichtung aktuelle Beschleunigerbilder in Block 732 aus. Die Knotenrechenvorrichtung 104 kann die aktuellen Beschleunigerbilder zu einem nicht flüchtigen Flash-Speicher auslagern. Falls die Knotenrechenvorrichtung 104 bestimmt, dass keine Notwendigkeit besteht, die aktuellen Beschleunigerbilder auszulagern, fährt die Knotenrechenvorrichtung 104 mit Block 734 fort.
-
In Block 734 bestimmt die Knotenrechenvorrichtung 104, ob bereits ein Beschleunigerbild dort geladen wurde, wo die Aufgabe durchzuführen ist. Falls die Knotenrechenvorrichtung 104 bestimmt, dass nicht bereits ein Beschleunigerbild dort geladen wurde, wo die Aufgabe durchzuführen ist, lädt die Knotenrechenvorrichtung 104 das Beschleunigerbild in Block 736. Falls die Knotenrechenvorrichtung 104 bestimmt, dass das Beschleunigerbild bereits geladen wurde, fährt das Verfahren 700 mit Block 738 von 9 fort.
-
In Block 738 in 9 bereitet sich die Knotenrechenvorrichtung 104 für die durchzuführende Aufgabe vor. Zu diesem Zweck kann die Knotenrechenvorrichtung 104 Aufgabenparameter laden. Zusätzlich kann die Knotenrechenvorrichtung 104 eine virtuelle Maschine (VM) oder einen Container laden, um mit der Beschleunigervorrichtung zu interagieren.
-
In Block 740 führt die Knotenrechenvorrichtung 104 die Aufgabe an der Beschleunigervorrichtung durch. In manchen Ausführungsformen kann die Knotenrechenvorrichtung 104 eine Meldung an den Cloud-Ressourcenmanager 102 und/oder die anfragende Vorrichtung senden, dass die Aufgabe gestartet wurde. Während der Durchführung er Aufgabe an der Beschleunigervorrichtung kann die Knotenrechenvorrichtung 104 die Leistungsnutzung in Block 742 überwachen.
-
In Block 744 bestimmt die Knotenrechenvorrichtung 104, ob die Leistungsnutzung über einem Schwellenwert ist. Falls die Knotenrechenvorrichtung 104 bestimmt, dass die Leistungsnutzung über einem Schwellenwert ist, löst die Knotenrechenvorrichtung einen Leistungsalarm in Block 746 aus. In Antwort auf den Leistungsalarm kann die Knotenrechenvorrichtung 104 die Aufgabe stoppen, die Aufgabe pausieren oder eine andere angemessene Maßnahme ergreifen. Obwohl in Block 746 als stattfindend dargestellt, sollte offensichtlich sein, dass Leistungsüberwachung in manchen Ausführungsformen kontinuierlich, beständig oder periodisch durchgeführt werden kann. Falls die Knotenrechenvorrichtung 104 bestimmt, dass die Leistungsnutzung nicht über einem Schwellenwert ist, fährt die Knotenrechenvorrichtung 104 mit Durchführung der Aufgabe fort und sendet die Ergebnisdaten an die anfragende Vorrichtung in Block 748. Die Ergebnisdaten können an den Cloud-Ressourcenmanager 102 gesendet werden oder die Ergebnisdaten können direkt an die anfragende Vorrichtung gesendet werden. Natürlich sollte offensichtlich sein, dass die Aufgabe nicht unbedingt auf einmal durchgeführt werden kann, sondern durch andere Aufgaben unterbrochen sein kann und ausgelagert und zu einem späteren Zeitpunkt wieder eingelagert werden kann. In manchen Ausführungsformen können Ergebnisdaten zu zahlreichen verschiedenen Zeitpunkten erzeugt werden und ein Senden von Ergebnisdaten kann nicht unbedingt nur bei Beendigung der Aufgabe erfolgen.
-
Unter Bezugnahme nun auf 10-13 kann in manchen Ausführungsformen ein Teil oder die Gesamtheit der oben beschriebenen Technologie als eine oder mehrere Internet-der-Dinge-Vorrichtungen verkörpert sein oder mit dieser (diesen) interagieren. 10 veranschaulicht eine beispielhafte Domänentopologie für entsprechende Internet-der-Dinge- (IoT) Netzwerke, die durch Links an entsprechende Gateways gekoppelt sind. Das Internet-der-Dinge (IoT) ist ein Konzept, in dem eine große Anzahl von Rechenvorrichtungen miteinander und mit dem Internet verbunden ist, um Funktionalität und Datenbeschaffung bei sehr niederen Stufen bereitzustellen. Daher, wie hier verwendet, kann eine IoT-Vorrichtung eine semiautonome Vorrichtung aufweisen, die eine Funktion wie Erfassen oder Steuern, unter anderen, in Kommunikation mit anderen IoT-Vorrichtungen und einem weiteren Netzwerk, wie dem Internet, durchführt.
-
Häufig sind IoT-Vorrichtungen in Speicher, Größe oder Funktionalität begrenzt, wodurch ein Einsatz größerer Anzahlen für ähnliche Kosten bei geringeren Anzahlen größerer Vorrichtungen möglich ist. Eine IoT-Vorrichtung kann jedoch ein Smartphone, Laptop, Tablet oder PC oder eine andere größere Vorrichtung sein. Ferner kann eine IoT-Vorrichtung eine virtuelle Vorrichtung, wie eine Anwendung auf einem Smartphone oder einer anderen Rechenvorrichtung sein. IoT-Vorrichtungen können IoT-Gateways aufweisen, die verwendet werden, um IoT-Vorrichtungen an andere IoT-Vorrichtungen und an Cloud-Anwendungen zur Datenspeicherung, Prozesssteuerung und dergleichen zu koppeln.
-
Netzwerke von IoT-Vorrichtungen können kommerzielle und Heimautomatisierungsvorrichtungen aufweisen, wie Wasserverteilungssysteme, Stromverteilungssysteme, Pipelinesteuersysteme, Anlagensteuersysteme, Lichtschalter, Thermostate, Sperren, Kameras, Alarme, Bewegungssensoren und dergleichen. Die IoT-Vorrichtungen können durch ferne Computer, Server und andere Systeme zugänglich sein, zum Beispiel um Systeme zu steuern oder auf Daten zuzugreifen.
-
Das zukünftige Wachstum des Internets und ähnlicher Netzwerke kann eine sehr große Zahl von IoT-Vorrichtungen beinhalten. Daher richtet sich im Zusammenhang mit den hier besprochenen Techniken eine Reihe von Innovationen für ein solches zukünftiges Netzwerken auf den Bedarf für alle diese Schichten, ungehindert zu wachsen, verbundene Ressourcen zu entdecken und diese zugänglich zu machen und die Fähigkeit zu unterstützen, verbundene Ressourcen zu verbergen und abzuschotten. Es kann eine beliebige Anzahl von Netzwerkprotokollen und Kommunikationsstandards verwendet werden, wobei jedes Protokoll und jeder Standard gestaltet ist, bestimmte Zielsetzungen zu behandeln. Ferner sind die Protokolle Teil des Fabrics, das für Menschen zugängliche Dienste unterstützt, die unabhängig von Ort, Zeit oder Raum arbeiten. Die Innovationen weisen Dienstzustellung und zugehörige Infrastruktur, wie Hardware und Software, Sicherheitsverbesserungen; und das Bereitstellen von Diensten, die auf Dienstgüte- (QoS, Quality of Service) Bedingungen beruhen, die in Dienstgüte- und Dienstzustellungsvereinbarungen spezifiziert sind, auf. Wie klar ist, stellt die Verwendung von IoT-Vorrichtungen und Netzwerken, wie jenen, die in 10 und 11 vorgestellt sind, eine Reihe neuer Herausforderungen in einem heterogenen Konnektivitätsnetzwerk dar, das eine Kombination verdrahteter und drahtloser Technologien aufweist.
-
10 stellt insbesondere eine vereinfachte Zeichnung einer Domänentopologie bereit, die für eine Reihe von Internet-der-Dinge- (IoT) Netzwerke verwendet werden kann, die IoT-Vorrichtungen 1004 aufweisen, mit den IoT-Netzwerken 1056, 1058, 1060, 1062, die durch Rückgrat-Links 1002 an entsprechende Gateways 1054 gekoppelt sind. Zum Beispiel kann eine Reihe von IoT-Vorrichtungen 1004 mit einem Gateway 1054 und miteinander durch das Gateway 1054 kommunizieren. Zur Vereinfachung der Zeichnung ist nicht jede IoT-Vorrichtung 1004 oder jeder Kommunikationslink (z.B. Link 1016, 1022, 1028 oder 1032) gekennzeichnet. Die Rückgratlinks 1002 können eine beliebige Zahl von verdrahteten oder drahtlosen Technologie aufweisen, aufweisend optische Netzwerke, und können Teil eines örtlichen Netzwerks (LAN), eines Weitverkehrsnetzwerks (WAN) oder des Internets sein. Zusätzlich erleichtern solche Kommunikationslinks optische Signalpfade unter sowohl IoT-Vorrichtungen 1004 als auch Gateways 1054, aufweisend die Verwendung von MUXing/deMUXing-Komponenten, die eine Zwischenverbindung der verschiedenen Vorrichtungen erleichtern.
-
Die Netzwerktopologie kann eine beliebige Zahl von Arten von IoT-Netzwerken aufweisen, wie ein Mesh-Netzwerk, das mit dem Netzwerk 1056 unter Verwendung von energiearmen Bluetooth- (BLE, Bluetooth Low Energy) Links 1022 bereitgestellt ist. Andere Arten von IoT-Netzwerken, die vorhanden sein können weisen ein drahtloses örtliches Netzwerk (WLAN, Wireless Local Area Network) Netzwerk 1058 auf, das zur Kommunikation mit IoT-Vorrichtungen 1004 durch IEEE 802.11 (Wi-Fi®) Links 1028 verwendet wird, ein zellulares Netzwerk 1060, das zur Kommunikation mit IoT-Vorrichtungen 1004 durch ein LTE/LTE-A (4G) oder 5G zellulares Netzwerk verwendet wird, und eine energiearmes Weitverkehrs-(LPWA, Low Power Wide Area) Netzwerk 1062, zum Beispiel ein LPWA-Netzwerk, das mit der LoRaWan-Spezifikation kompatibel ist, die von der LoRa-Allianz veröffentlicht wurde, oder ein IPv6 über energiearmes Weitverkehrsnetzwerke- (LPWAN) Netzwerk, das mit einer Spezifikation kompatibel ist, die von der Internet Engineering Task Force (IETF) veröffentlicht wurde, auf. Ferner können die entsprechenden IoT-Netzwerke mit einem außenseitigen Netzwerkbetreiber (z.B. einem Betreiber von Tier 2 oder Tier 3) unter Verwendung einer beliebigen Zahl von Kommunikationslinks kommunizieren, wie einem zellularen LTE-Link, einem LPWA-Link oder einem Link basierend auf dem IEEE 802.15.4 Standard, wie Zigbee®. Die entsprechenden IoT-Netzwerke können auch unter Verwendung einer Reihe von Netzwerk- und Internetanwendungsprotokollen wie Constrained Application Protocol (CoAP) arbeiten. Die entsprechenden IoT-Netzwerke können auch mit Koordinator-Vorrichtungen integriert sein, die eine Kette von Links bereitstellen, die einen Clusterbaum verbundener Vorrichtungen und Netzwerke bilden.
-
Jedes dieser IoT-Netzwerke kann Möglichkeiten für neue technische Merkmale wie die hier beschriebenen bieten. Die verbesserten Technologien und Netzwerke können das exponentielle Wachstum von Vorrichtungen und Netzwerken ermöglichen, aufweisend die Verwendung von IoT-Netzwerken bis zu Fog-Vorrichtungen oder -Systeme. Da die Verwendung solcher verbesserten Technologien zunimmt, können die IoT-Netzwerke für ein Selbstmanagement, funktionelle Entwicklung und Zusammenarbeit entwickelt werden, ohne direkten Eingriff durch Menschen zu erfordern. Die verbesserten Technologien können sogar IoT-Netzwerken ermöglichen, ohne zentralisierte gesteuerte Systeme zu funktionieren. Daher können die hier beschriebenen verbesserten Technologien zum Automatisieren und Verbessern von Netzwerkmanagement und Betriebsfunktionen verwendet werden, die weit über aktuelle Implementierungen hinaus gehen.
-
In einem Beispiel können Kommunikationen zwischen IoT-Vorrichtungen 1004, wie über die Rückgrat-Links 1002, durch ein dezentralisiertes System zur Authentifizierung, Autorisierung und Abrechnung) (AAA) geschützt sein. In einem dezentralisierten AAA-System können verteilte Zahlungs-, Kredit-, Prüfungs-, Autorisierungs- und Authentifizierungssysteme über miteinander verbundene Netzwerkinfrastruktur implementiert sein. Dies erlaubt Systemen und Netzwerken, sich in Richtung autonomer Operationen zu entwickeln. Bei diesen Arten von autonomen Operationen können Maschinen sogar Verträge für humane Ressourcen abschließen und Partnerschaften mit anderen Maschinennetzwerken verhandeln. Dies kann ein Erreichen wechselseitiger Zielsetzungen und einer ausgewogenen Dienstzustellung gegenüber entworfenen, geplanten Service-Level-Vereinbarungen ermöglichen, wie auch Lösungen erreichen, die Zählungen, Messungen, Rück- und Nachverfolgbarkeit bereitstellen. Die Schaffung neuer Versorgungskettenstrukturen und -verfahren kann ermöglichen, dass eine Vielzahl von Diensten geschaffen, auf ihren Wert untersucht und ohne Zutun von Menschen reduziert wird.
-
Solche IoT-Netzwerke können durch die Integration erfassender Technologien, wie Ton, Licht, elektronischer Verkehr, Gesichts- und Mustererkennung, Geruch, Vibration, in die autonomen Organisationen unter den IoT-Vorrichtungen verbessert werden. Die Integration sensorischer Systeme kann systematische und autonome Kommunikation und Koordination von Dienstzustellen erlauben, gegenüber einem Ausweiten und einer Fusion von Ressourcen, die auf vertraglichen Dienstzielsetzungen und Dienstgüte (QoS) beruhen. Einige der einzelnen Beispiele für netzwerkbasierte Ressourcenverarbeitung weisen die folgenden auf.
-
Das Mesh-Netzwerk 1056 kann beispielsweise durch Systeme verbessert werden, die inline Daten-zu-Informationen-Umformungen durchführen. Zum Beispiel können selbstbildende Ketten von Verarbeitungsressourcen, die ein Multi-Link-Netzwerk aufweisen, die Transformation von Rohdaten zu Informationen auf effiziente Weise verteilen und die Fähigkeit aufweisen, zwischen Anlagen und Ressourcen zu unterscheiden und die zugehörige Verwaltung für jede durchzuführen. Ferner können die richtigen Vertrauens- und Dienstindizes, die auf Komponenten von Infrastruktur und Ressource beruhen, eingefügt werden, um die Integrität, Qualität, Sicherheit von Daten und Lieferung einer Datenvertrauensmetrik zu verbessern.
-
Das WLAN-Netzwerk 1058 kann beispielsweise Systeme verwenden, die Umwandlung von Standards durchführen, um eine Multi-Standardkonnektivität bereitzustellen, die IoT-Vorrichtungen 1004 ermöglicht, verschiedene Protokolle zur Kommunikation zu verwenden. Weitere Systeme können nahtlose Interkonnektivität über eine Multi-Standard-Infrastruktur bereitstellen, umfassend sichtbare Internet-Ressourcen und verborgene Internet-Ressourcen.
-
Kommunikation in dem zellularen Netzwerk 1060 können beispielsweise durch Systeme verbessert werden, die Daten abladen, Kommunikationen auf fernere Vorrichtungen erweitern, oder beides. Das LPWA-Netzwerk 1062 kann Systeme aufweisen, die Nicht-Internetprotokoll (IP) zu IP-Zwischenverbindungen, Adressierung und Routing durchführen. Ferner kann jede der IoT-Vorrichtungen 1004 den richtigen Sendeempfänger für Weitverkehrskommunikationen mit dieser Vorrichtung aufweisen. Ferner kann jede IoT-Vorrichtung 1004 andere Sendeempfänger zur Kommunikation unter Verwendung zusätzlicher Protokolle und Frequenzen aufweisen. Dies ist unter Bezugnahme auf die Kommunikationsumgebung und Hardware einer IoT-Verarbeitungsvorrichtung näher besprochen, die in 12 und 13 gezeigt ist.
-
Schließlich können Cluster von IoT-Vorrichtungen ausgestattet sein, mit anderen IoT-Vorrichtungen wie auch mit einem Cloud-Netzwerk zu kommunizieren. Dies kann den IoT-Vorrichtungen erlauben, ein Ad-hoc-Netzwerk zwischen den Vorrichtungen zu bilden, was ihnen erlaubt, als eine einzelne Vorrichtung zu fungieren, die als Fog-Vorrichtung bezeichnet werden kann. Diese Konfiguration ist in Bezug auf folgende 11 näher besprochen.
-
11 veranschaulicht ein Cloud-Rechennetzwerk in Kommunikation mit einem Mesh-Netzwerk von IoT-Vorrichtungen (Vorrichtungen 1102), das als eine Fog-Vorrichtung am Rand des Cloud-Rechennetzwerks arbeitet. Das Mesh-Netzwerk von IoT-Vorrichtungen kann als Fog 1120 bezeichnet werden, das am Rand der Cloud 1100 arbeitet. Zur Vereinfachung des Diagramms ist nicht jede IoT-Vorrichtung 1102 gekennzeichnet.
-
Das Fog 1120 kann als ein massiv zwischenverbundenes Netzwerk angesehen werden, wobei eine Reihe von IoT-Vorrichtungen 1102 miteinander in Kommunikation steht, zum Beispiel durch Funklinks 1122. Als ein Beispiel kann dieses zwischenverbundene Netzwerk unter Verwendung einer Zwischenverbindungsspezifikation erleichtert werden, die von der Open Connectivity Foundation™ (OCF) veröffentlicht ist. Dieser Standard erlaubt Vorrichtungen, einander zu entdecken und Kommunikationen für Zwischenverbindungen einzurichten. Andere Zwischenverbindungsprotokolle können verwendet werden, die zum Beispiel das Optimized Link State Routing (OLSR) Protokoll, das Better Approach To Mobile Adhoc Networking (B.A.T.M.A.N.) Routingprotokoll oder das OMA Lightweight M2M (LWM2M) Protokoll, unter anderen, aufweisen.
-
Drei Arten von IoT-Vorrichtungen 1102 sind in diesem Beispiel gezeigt, Gateways 1104, Datenaggregatoren 1126 und Sensoren 1128, obwohl sämtliche Kombinationen von IoT-Vorrichtungen 1102 und Funktionalität verwendet werden können. Die Gateways 1104 können Randvorrichtungen sein, die Kommunikationen zwischen der Cloud 1100 und dem Fog 1120 bereitstellen und auch die Backend-Prozessfunktion für Daten bereitstellen können, die von Sensoren 1128 erhalten werden, wie Bewegungsdaten, Flussdaten, Temperaturdaten und dergleichen. Die Datenaggregatoren 1126 können Daten von einer beliebigen Zahl der Sensoren 1128 sammeln und führen die Backend-Verarbeitungsfunktion für die Analyse durch. Die Ergebnisse, Rohdaten oder beide können entlang der Cloud 1100 durch die Gateways 1104 geleitet werden. Die Sensoren 1128 können volle IoT-Vorrichtungen 1102 sein, die zum Beispiel imstande sind, sowohl Daten zu sammeln als auch die Daten zu verarbeiten. In manchen Fällen können die Sensoren 1128 in Funktionalität beschränkter sein, zum Beispiel die Daten sammeln und den Datenaggregatoren 1126 oder Gateways 1104 erlauben, die Daten zu verarbeiten.
-
Kommunikationen von einer IoT-Vorrichtung 1102 können entlang eines geeigneten Pfads (z.B. eines geeignetsten Pfads) zwischen einer der IoT-Vorrichtungen 1102 geleitet werden, um die Gateways 1104 zu erreichen. In diesen Netzwerken stellt die Anzahl von Zwischenverbindungen wesentliche Redundanz bereit, wodurch Kommunikationen aufrechterhalten werden können, selbst bei Verlust einer Reihe von IoT-Vorrichtungen 1102. Ferner kann die Verwendung eines Mesh-Netzwerks IoT-Vorrichtungen 1102, die eine sehr geringe Leistung aufweisen oder mit Abstand zur Infrastruktur liegen, erlauben, verwendet zu werden, da die Reichweite zur Verbindung mit einer anderen IoT-Vorrichtung 1102 viel kleiner sein kann als die Reichweite zur Verbindung mit den Gateways 1104.
-
Das Fog 1120, das von diesen IoT-Vorrichtungen 1102 bereitgestellt wird, kann Vorrichtungen in der Cloud 1100, wie einem Server 1106, als eine einzelne Vorrichtung präsentiert werden, die sich am Rand der Cloud 1100 befindet, z.B. eine Fog-Vorrichtung. In diesem Beispiel können die Alarme, die von der Fog-Vorrichtung kommen, gesendet werden, ohne dahingehend identifiziert zu sein, dass sie von einer spezifischen IoT-Vorrichtung 1102 innerhalb des Fog 1120 kommen. Auf diese Weise kann das Fog 1120 als eine verteilte Plattform angesehen werden, die Rechen- und Speicherressourcen zur Durchführung verarbeitungs- oder datenintensiver Aufgaben wie Datenanalytik, Datenaggregation und Maschinenlernen, unter anderen, bereitstellt.
-
In manchen Beispielen können die IoT-Vorrichtungen 1102 unter Verwendung eines imperativen Programmierungsstils konfiguriert sein, wobei z.B. jede IoT-Vorrichtung 1102 spezifische Funktion und Kommunikationspartner hat. Die IoT-Vorrichtungen 1102, die die Fog-Vorrichtung bilden, können in einem deklarativen Programmierungsstil konfiguriert sein, der den IoT-Vorrichtungen 1102 erlaubt, ihre Operationen und Kommunikationen zu rekonfigurieren, wie notwendige Ressourcen in Reaktion auf Bedingungen, Abfragen und Vorrichtungsausfällen zu bestimmen. Als ein Beispiel kann ein Abfrage von einem Benutzer, der sich bei einem Server 1106 befindet, bezüglich der Operationen eines Teilsatzes von Geräten, die durch die IoT-Vorrichtungen 1102 überwacht werden, dazu führen, dass die Fog-Vorrichtung 1120 die IoT-Vorrichtungen 1102, wie bestimmte Sensoren 1128, auswählt, die zur Beantwortung der Abfrage notwendig sind. Die Daten von diesen Sensoren 1128 können dann durch jede Kombination der Sensoren 1128, Datenaggregatoren 1126 oder Gateways 1104 aggregiert und analysiert werden, bevor sie von der Fog-Vorrichtung 1120 in Antwort auf die Abfrage zum Server 1106 gesendet werden. In diesem Beispiel können IoT-Vorrichtungen 1102 im Fog 1120 die verwendeten Sensoren 1128 basierend auf der Abfrage auswählen, wie Hinzufügen von Daten von Flusssensoren oder Temperatursensoren. Ferner, falls einige der IoT-Vorrichtungen 1102 nicht betriebsbereit sind, können andere IoT-Vorrichtungen 1102 in der Fog-Vorrichtung 1120 analoge Daten, falls verfügbar, bereitstellen.
-
In anderen Beispiele können die oben beschriebenen Operationen und Funktionalität durch eine IoT-Vorrichtungsmaschine in der beispielhaften Form eines elektronischen Verarbeitungssystems verkörpert sein, in dem ein Satz oder eine Abfolge von Anweisungen ausgeführt werden kann, um das elektronische Verarbeitungssystem zu veranlassen, eine der hier besprochenen Methodologien gemäß einer beispielhaften Ausführungsform auszuführen. Die Maschine kann eine IoT-Vorrichtung oder ein IoT-Gateway sein, aufweisend eine Maschine, die durch Aspekte eines Personal Computers (PC), eines Tablet-PC, eines Personal Digital Assistant (PDA), eines Mobiltelefons oder Smartphones oder jeder Maschine verkörpert ist, die imstande ist, Anweisungen (der Reihe nach oder auf andere Weise) auszuführen, die durch diese Maschine zu ergreifende Maßnahmen spezifizieren. Ferner, während nur eine einzige Maschine in dem obigen Beispiel gezeigt und angesprochen sein kann, soll eine solche Maschine so verstanden werden, dass sie jede Sammlung von Maschinen aufweist, die einzeln oder gemeinsam einen Satz (oder zahlreiche Sätze) von Anweisungen ausführen, um eine oder mehrere der hier besprochenen Methodologien durchzuführen. Ferner sollten diese und ähnliche Beispiele für ein Prozessor-basiertes System so verstanden werden, dass sie einen Satz einer oder mehrerer Maschinen aufweisen, die durch einen Prozessor (z.B. einen Computer) gesteuert oder betrieben werden, um einzeln oder gemeinsam Anweisungen zur Durchführung einer oder mehrerer der hier besprochenen Methodologien auszuführen.
-
12 veranschaulicht eine Zeichnung eines Cloud-Rechennetzwerks, oder einer Cloud 1200, in Kommunikation mit einer Reihe von Internet der Dinge- (IoT) Vorrichtungen. Die Cloud 1200 kann das Internet darstellen oder kann ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), wie ein firmeneigenes Netzwerk für eine Firma, sein. Die IoT-Vorrichtungen können eine beliebige Zahl verschiedener Arten von Vorrichtungen aufweisen, die in verschiedenen Kombinationen gruppiert sind. Zum Beispiel kann eine Verkehrssteuerungsgruppe 1206 IoT-Vorrichtungen entlang Straßen in einer Stadt aufweisen. Diese IoT-Vorrichtungen können Ampeln, Verkehrsflussmonitore, Kameras, Wettersensoren und dergleichen aufweisen. Die Verkehrssteuerungsgruppe 1206, oder andere Teilgruppen, kann (können) mit der Cloud 1200 durch verdrahtete oder drahtlose Links 1208, wie LPWA-Links, optische Links und dergleichen in Kommunikation sein. Ferner kann ein verdrahtetes oder drahtloses Sub-Netzwerk 1212 den IoT-Vorrichtungen erlauben, miteinander zu kommunizieren, wie durch ein lokales Netzwerk, ein drahtloses lokales Netzwerk und dergleichen. Die IoT-Vorrichtungen können eine andere Vorrichtung verwenden, wie ein Gateway 1310 oder 1328, um mit fernen Stellen wie der Cloud 1300 zu kommunizieren; die IoT-Vorrichtungen können auch einen oder mehrere Server 1330 verwenden, um Kommunikation mit der Cloud 1300 oder mit dem Gateway 1310 zu erleichtern. Zum Beispiel können der eine oder die mehreren Server 1330 als ein Zwischennetzwerkknoten arbeiten, um eine lokale Rand-Cloud- oder Fog-Implementierung unter einem lokalen Netzwerk zu unterstützen. Ferner kann das dargestellte Gateway 1328 in einer Cloud-zu-Gateway-zu vielen Randvorrichtungen-Konfiguration arbeiten, wie mit den verschiedenen IoT-Vorrichtungen 1314, 1320, 1324, die für eine Zuweisung und Verwendung von Ressourcen in der Cloud 1300 beschränkt oder dynamisch sind.
-
Andere beispielhafte Gruppen von IoT-Vorrichtungen können ferne Wetterstationen 1214, lokale Informationsterminals 1216, Alarmsysteme 1218, Geldautomaten 1220, Alarmtafeln 1222 oder sich bewegende Fahrzeuge, wie Einsatzfahrzeuge 1224 oder andere Fahrzeuge 1226, unter vielen anderen aufweisen. Jede dieser IoT-Vorrichtungen kann mit anderen IoT-Vorrichtungen, mit Servern 1204, mit einer anderen IoT-Fog-Vorrichtung oder einem solchen System (nicht gezeigt, aber in 11 dargestellt) oder einer Kombination davon in Kommunikation sein. Die Gruppen von IoT-Vorrichtungen können in verschiedenen Wohn-, Gewerbe- und Industrieumgebungen (aufweisend in privaten oder öffentlichen Umgebungen) eingesetzt werden.
-
Wie in 12 erkennbar ist, kann eine große Anzahl von IoT-Vorrichtungen durch die Cloud 1200 kommunizieren. Dies kann verschiedenen IoT-Vorrichtungen erlauben, Informationen autonom von anderen Vorrichtungen anzufragen oder diese bereitzustellen. Zum Beispiel kann eine Gruppe von IoT-Vorrichtungen (z.B. die Verkehrssteuerungsgruppe 1206) eine aktuelle Wettervorhersage von einer Gruppe ferner Wetterstationen 1214 anfragen, die die Vorhersage ohne Intervention von Menschen bereitstellen kann. Ferner kann ein Einsatzfahrzeug 1224 durch einen Geldautomaten 1220 gewarnt werden, dass ein Diebstahl im Gange ist. Während sich das Einsatzfahrzeug 1224 dem Geldautomaten 1220 nähert, kann es auf die Verkehrssteuerungsgruppe 1206 zugreifen, um eine Räumung zu der Stelle anzufragen, indem zum Beispiel Ampeln auf Rot gestellt werden, um querenden Verkehr an einer Kreuzung in ausreichender Zeit zu blockieren, damit das Einsatzfahrzeug 1224 ungehinderte Zufahrt zu der Kreuzung hat.
-
Cluster von IoT-Vorrichtungen, wie den fernen Wetterstationen 1214 oder der Verkehrssteuerungsgruppe 1206, können ausgestattet sein, um mit anderen IoT-Vorrichtungen wie auch mit der Cloud 1200 zu kommunizieren. Dies kann den IoT-Vorrichtungen erlauben, ein Ad-hoc-Netzwerk zwischen den Vorrichtungen zu bilden, wodurch sie als eine einzelne Vorrichtung fungieren können, die als Fog-Vorrichtung oder Fog-System bezeichnet werden kann (z.B. wie oben unter Bezugnahme auf 11 beschrieben).
-
13 ist ein Blockdiagramm eines Beispiels von Komponenten, die in einer IoT-Vorrichtung 1350 zum Implementieren der hier beschriebenen Techniken vorhanden sein können. Die IoT-Vorrichtung 1350 kann sämtliche Kombinationen der Komponenten aufweisen, die in dem Beispiel gezeigt sind, oder auf die in der oben stehenden Offenbarung Bezug genommen wurde. Die Komponenten können als ICs, Abschnitte davon, einzelne elektronische Vorrichtungen oder andere Module, Logik, Hardware, Software, Firmware oder eine Kombination davon implementiert sein, angepasst in der IoT-Vorrichtung 1350, oder als Komponenten, die auf andere Weise in einem Gehäuse eines größeren Systems eingegliedert sind. Zusätzlich soll das Blockdiagramm von 13 eine hochwertige Ansicht von Komponenten der IoT-Vorrichtung 1350 darstellen. Einige der gezeigten Komponenten können jedoch weggelassen werden, zusätzliche Komponenten können vorhanden sein und es kann eine andere Anordnung der gezeigten Komponenten in anderen Implementierungen vorliegen.
-
Die IoT-Vorrichtung 1350 kann einen Prozessor 1352 aufweisen, der ein Mikroprozessor, ein Mehrfachkernprozessor, ein Multithread-Prozessor, ein Ultra-Niederspannungsprozessor, ein eingebetteter Prozessor oder ein anderes bekanntes Verarbeitungselement sein kann. Der Prozessor 1352 kann ein Teil eines Systems-auf-einem-Chip (SoC) sein, in dem der Prozessor 1352 und andere Komponenten zu einer einzelnen integrierten Schaltung oder einem einzelnen Package gebildet sind, wie die Edison™ oder Galileo™ SoC-Platinen von Intel. Als ein Beispiel kann der Prozessor 1352 einen Intel® Architecture Core™ basierten Prozessor, wie einen Quark™, einen Atom™, einen i3, einen i5, einen i7 oder einen MCU-Klasse-Prozessor oder einen anderen solchen Prozessor aufweisen, der von Intel® Corporation, Santa Clara, Kalifornien, erhältlich ist. Es kann jedoch eine Reihe von anderen Prozessoren verwendet werden, wie von Advanced Micro Devices, Inc. (AMD) Sunnyvale, Kalifornien, erhältlich, ein MIPS-basiertes Design von MIPS Technologies, Inc., Sunnyvale, Kalifornien, ein ARM-basiertes Design. lizensiert von ARM Holdings, Ltd. oder Kunden davon oder deren Lizenznehmer oder Anwender. Die Prozessoren können Einheiten, wie einen A5-A10 Prozessor von Apple® Inc., einen Snapdragon™ Prozessor von Qualcomm® Technologies, Inc., oder einen OMAP™ Prozessor von Texas Instruments, Inc. aufweisen.
-
Der Prozessor 1352 kann mit einem Systemspeicher 1354 über eine Zwischenverbindung 1356 (z.B. einen Bus) kommunizieren. Es kann eine beliebige Anzahl von Speichervorrichtungen verwendet werden, um eine gegebene Menge an Systemspeicher bereitzustellen. Als Beispiel kann der Speicher ein Direktzugriffsspeicher (RAM, Random Access Memory) gemäß einem Joint Electron Devices Engineering Council (JEDEC) Design sein, wie die DDR- oder mobilen DDR-Standards (z.B. LPDDR, LPDDR2, LPDDR3 oder LPDDR4). In verschiedenen Implementierungen können die individuellen Speichervorrichtungen eine beliebige Zahl verschiedener Package-Arten sein, wie Einzel-Die-Package (SDP), Dual-Die-Package (DDP) oder Quad-Die-Package (Q17P). Diese Vorrichtungen können in manchen Beispielen direkt auf eine Hauptplatine gelötet werden, um eine Lösung geringeren Profils bereitzustellen, während in anderen Beispielen die Vorrichtungen als ein oder mehrere Speichermodule konfiguriert sind, die ihrerseits durch einen bestimmten Verbinder an die Hauptplatine gekoppelt sind. Es kann eine beliebige Anzahl anderer Speicherimplementierungen verwendet werden, wie andere Arten von Speichermodulen, z.B. Dual-Inline Speichermodule (DIMMs) verschiedener Varietäten, aufweisend, ohne aber darauf beschränkt zu sein, MikroDIMMs oder MiniDIMMs.
-
Zur Bereitstellung einer anhaltenden Speicherung von Informationen wie Daten, Anwendungen, Betriebssysteme und so weiter, kann ein Datenspeicher 1358 auch über die Zwischenverbindung 1356 an den Prozessor 1352 gekoppelt sein. In einem Beispiel kann der Datenspeicher 1358 über eine Solid State-Festplatte (SSDD, Solid State Disk Drive) implementiert sein. Andere Vorrichtungen, die für den Datenspeicher 1358 verwendet werden können, weisen Flash-Speicherkarten, wie SD-Karten, MikroSD-Karten, xD-Bildkarten und dergleichen und USB-Sticks auf. In Niederleistungsimplementierungen kann der Datenspeicher 1358 ein On-Die-Speicher oder Register sein, der bzw. das mit dem Prozessor 1352 assoziiert ist. In manchen Beispielen jedoch kann der Datenspeicher 1358 unter Verwendung einer Mikro-Festplatte (HDD, Hard Disk Drive) implementiert sein. Ferner kann eine beliebige Zahl von neuen Technologien für den Datenspeicher 1358 zusätzlich zu oder anstelle von den beschriebenen Technologien verwendet werden, wie, unter anderen, Widerstandsänderungsspeicher, Phasenänderungsspeicher, holografische Speicher oder chemische Speicher.
-
Die Komponenten können über die Zwischenverbindung 1356 kommunizieren. Die Zwischenverbindung 1356 kann eine beliebige Zahl von Technologien aufweisen, aufweisend Industriestandardarchitektur (ISA), erweiterte ISA (EISA), periphere Komponentenzwischenverbindung (PCI, Peripheral Component Interconnect), erweiterte periphere Komponentenzwischenverbindung (PCIx), PCI Express (PCIe) oder eine beliebige Zahl von anderen Technologie. Die Zwischenverbindung 1356 kann eine firmeneigener Bus sein, der zum Beispiel in einem SoC-basierten System verwendet wird. Andere Bussysteme können aufgewiesen sein, wie, unter anderen, eine I2C-Schnittstelle, eine SPI-Schnittstelle, Punkt-zu-Punkt-Schnittstellen und ein Leistungsbus.
-
Die Zwischenverbindung 1356 kann den Prozessor 1352 an einen Mesh-Sendeempfänger 1362 zur Kommunikation mit anderen Mesh-Vorrichtungen 1364 koppeln. Der Mesh-Sendeempfänger 1362 kann eine beliebige Zahl von Frequenzen und Protokollen verwenden, wie 2,4 Gigahertz (GHz) Übertragungen unter dem IEEE 802.15.4 Standard, unter Verwendung, unter anderen, des Bluetooth® Niederenergie- (BLE) Standards, wie von der Bluetooth® Special Interest Gruppe definiert, oder des ZigBee® Standards. Es kann eine beliebige Zahl von Funkgeräten, die für ein bestimmtes drahtloses Kommunikationsprotokoll spezifiziert sind, für die Verbindungen mit den Mesh-Vorrichtungen 1364 verwendet werden. Zum Beispiel kann eine WLAN-Einheit zum Implementieren von Wi-Fi™ Kommunikationen gemäß dem Institute of Electrical and Electronics Engineers (IEEE) 802.11 Standard verwendet werden. Zusätzlich können drahtlose Weitverkehrskommunikationen, z.B. gemäß einem zellularen oder anderen drahtlosen Weitverkehrsprotokoll, über eine WWAN-Einheit erfolgen.
-
Der Mesh-Sendeempfänger 1362 kann unter Verwendung zahlreicher Standards oder Funkeinheiten für Kommunikationen bei unterschiedlicher Reichweite kommunizieren. Zum Beispiel kann die IoT-Vorrichtung 1350 mit nahen Vorrichtungen, z.B. innerhalb von etwa 10 Metern, unter Verwendung eines lokalen Sendeempfängers basierend auf BLE oder einem anderen Niederleistungsfunk kommunizieren, um Leistung zu sparen. Weiter entfernte Mesh-Vorrichtungen 1364, z.B. innerhalb von etwa 50 Metern, können über ZigBee oder andere Funkeinrichtungen mittlerer Leistung erreicht werden. Beide Kommunikationstechniken können über eine einzelne Funkeinrichtung bei unterschiedlichen Leistungsstufen erfolgen oder können über separate Sendeempfänger erfolgen, zum Beispiel einen lokalen Sendeempfänger unter Verwendung von BLE und einen separaten Mesh-Sendeempfänger unter Verwendung von ZigBee.
-
Ein drahtloser Netzwerk-Sendeempfänger 1366 kann aufgewiesen sein, um mit Vorrichtungen oder Diensten in der Cloud 1300 über lokale oder Weitverkehrsnetzwerkprotokolle zu kommunizieren. Der drahtlose Netzwerk-Sendeempfänger 1366 kann ein LPWA-Sendeempfänger sein, der, unter anderen, den IEEE 802.15.4 oder IEEE 802.15.4g Standards folgt. Die IoT-Vorrichtung 1350 kann über Weitverkehr unter Verwendung von LoRaWAN™ (Long Range Wide Area Network) kommunizieren, das von Semtech und der LoRa Alliance entwickelt wurde. Die hier beschriebenen Techniken sind nicht auf diese Technologien beschränkt, sondern können mit einer beliebigen Zahl von anderen Cloud-Sendeempfängern verwendet werden, die Kommunikationen langer Reichweite, niedriger Bandbreite implementieren, wie Sigfox und andere Technologien. Ferner können andere Kommunikationstechniken, wie zeitgefenstertes Kanal-Hopping, beschrieben in der IEEE 802.15.4e Spezifikation, verwendet werden.
-
Es kann eine beliebige Anzahl von anderen Funkkommunikationen und Protokollen zusätzlich zu den Systemen verwendet werden, die für den Mesh-Sendeempfänger 1362 und drahtlosen Netzwerk-Sendeempfänger 1366, wie hier beschrieben, erwähnt sind. Zum Beispiel können die Funksendeempfänger 1362 und 1366 einen LTE- oder anderen zellularen Sendeempfänger aufweisen, der Streuspektrum- (SPA/SAS) Kommunikationen zur Implementierung von Hochgeschwindigkeitskommunikationen verwendet. Ferner kann eine beliebige Zahl anderer Protokolle verwendet werden, wie Wi-Fi® Netzwerke für Kommunikation bei mittlerer Geschwindigkeit und Bereitstellen von Netzwerkkommunikationen.
-
Die Funksendeempfänger 1362 und 1366 können Funkeinrichtungen aufweisen, die mit einer beliebigen Zahl von 3GPP (Third Generation Partnership Project) Spezifikationen kompatibel sind, vor allem Long Term Evolution (LTE), Long Term Evolution-Advanced (LTE-A), und Long Term Evolution-Advanced Pro (LTE-A Pro). Es kann festgehalten werden, dass Funkeinrichtungen, die mit einer beliebigen Zahl von anderen feststehenden, mobilen oder Satellitenkommunikationstechnologien und -standards kompatibel sind, gewählt werden können. Diese können zum Beispiel jede Cellular Wide Area Funkkommunikationstechnologie, die z.B. ein Kommunikationssystem der fünften Generation (5G) aufweisen kann, eine Global System for Mobile Communications (GSM) Funkkommunikationstechnologie, eine General Packet Radio Service (GPRS) Funkkommunikationstechnologie oder eine Enhanced Data Rates for GSM Evolution (EDGE) Funkkommunikationstechnologie, eine UMTS (Universal Mobile Telecommunications System) Kommunikationstechnologie aufweisen. Zusätzlich zu den oben angeführten Standards kann eine beliebige Zahl von Satelliten-Uplink-Technologien für den drahtlosen Netzwerk-Sendeempfänger 1366 verwendet werden, aufweisend zum Beispiel Funkeinrichtungen, die Standards entsprechen, die, unter anderen, von der ITU (International Telecommunications Union) oder dem ETSI (Europäisches Institut für Telekommunikationsnormen) herausgegeben wurden. Die hier bereitgestellten Beispiele sind als auf verschiedene andere Kommunikationstechnologien, sowohl bestehende als auch noch zu formulierende, anwendbar zu verstehen.
-
Eine Netzwerkschnittstellensteuerung (NIC) 1368 kann aufgewiesen sein, um eine verdrahtete Kommunikation zu der Cloud 1300 oder zu anderen Vorrichtungen, wie den Mesh-Vorrichtungen 1364 bereitzustellen. Die verdrahtete Kommunikation kann eine Ethernet-Verbindung bereitstellen oder kann auf anderen Arten von Netzwerken basieren, wie Controller Area Netzwerk (CAN), Local Interconnect Network (LIN), DeviceNet, ControlNet, Data Highway+, PROFIBUS oder PROFINET, unter vielen anderen. Ein zusätzliches NIC 1368 kann aufgewiesen sein, um eine Verbindung mit einem zweiten Netzwerk zu erlauben, zum Beispiel eine NIC 1368, die Kommunikation zu der Cloud über Ethernet bereitstellt, und eine zweite NIC 1368, die Kommunikation zu anderen Vorrichtungen über eine andere Art von Netzwerk bereitstellt.
-
Die Zwischenverbindung 1356 kann den Prozessor 1352 an eine externe Schnittstelle 1370 koppeln, die zur Verbindung mit externen Vorrichtungen oder Teilsystemen verwendet wird. Die externen Vorrichtungen können Sensoren 1372, wie Beschleunigungsmesser, Pegelsensoren, Flusssensoren, optische Lichtsensoren, Kamerasensoren, Temperatursensoren, Global Positioning System (GPS) Sensoren, Drucksensoren, barometrische Drucksensoren und dergleichen aufweisen. Die externe Schnittstelle 1370 kann ferner zur Verbindung der IoT-Vorrichtung 1350 mit Stellgliedern 1374, wie Leistungsschaltern, Ventilstellgliedern, einem hörbaren Tongenerator, einer visuellen Warnvorrichtung und dergleichen verwendet werden.
-
In manchen optionalen Beispielen können verschiedene Eingabe/Ausgabe- (I/O) Vorrichtungen in der IoT-Vorrichtung 1350 vorhanden oder mit dieser verbunden sein. Zum Beispiel kann eine Anzeige oder andere Ausgabevorrichtung 1384 aufgewiesen sein, um Informationen, wie Sensorablesungen oder Stellgliedposition zu zeigen. Eine Eingabevorrichtung 1386, wie ein Berührungsbildschirm oder ein Tastenfeld, kann aufgewiesen sein, um Eingabe anzunehmen. Eine Ausgabevorrichtung 1384 kann eine beliebige Zahl von Formen von Audio- oder visueller Anzeige aufweisen, aufweisend einfache visuelle Ausgaben, wie Binärstatusindikatoren (z.B. LEDs) und visuelle Mehrfachzeichenausgabe, oder komplexere Ausgaben, wie Anzeigeschirme (z.B. LCD-Schirme), wobei die Ausgabe von Zeichen, Grafiken, Multimediaobjekten und dergleichen aus dem Betrieb der IoT-Vorrichtung 1350 erzeugt oder produziert wird.
-
Eine Batterie 1376 kann die IoT-Vorrichtung 1350 speisen, obwohl in Beispielen, in welchen die IoT-Vorrichtung 1350 an einer festen Stelle montiert ist, sie eine Stromversorgung haben kann, die an ein Stromnetz gekoppelt ist. Die Batterie 1376 kann eine Lithiumionenbatterie oder eine Metall-Luft-Batterie, wie eine Zink-Luft-Batterie, ein Aluminium-Luft-Batterie, eine Lithium-Luft-Batterie und dergleichen sein.
-
Ein Batteriemonitor/Ladegerät 1378 kann in der IoT-Vorrichtung 1350 aufgewiesen sein, um den Ladezustand (SoCh, State of Charge) der Batterie 1376 zu überwachen. Das Batteriemonitor/Ladegerät 1378 kann zum Überwachen anderer Parameter der Batterie 1376 verwendet werden, um Ausfallsvorhersagen bereitzustellen, wie den Gesundheitszustand (SoH, State of Health) und den Funktionszustand (SoF, State of Function) der Batterie 1376. Das Batteriemonitor/Ladegerät 1378 kann eine integrierte Batterieüberwachungsschaltung aufweisen, wie eine LTC4020 oder eine LTC2990 von Linear Technologies, eine ADT7488A von ON Semiconductor von Phoenix Arizona oder eine IC von der UCD90xxx Familie von Texas Instruments, Dallas, TX. Das Batteriemonitor/Ladegerät 1378 kann Informationen auf der Batterie 1376 über die Zwischenverbindung 1356 an den Prozessor 1352 kommunizieren. Das Batteriemonitor/Ladegerät 1378 kann auch einen Analog/DigitalWandler (ADC, Analog-to-Digital Converter) aufweisen, der dem Prozessor 1352 erlaubt, die Spannung der Batterie 1376 oder den aktuellen Fluss aus der Batterie 1376 direkt zu überwachen. Die Batterieparameter können zum Bestimmen von Maßnahmen verwendet werden, die die IoT-Vorrichtung 1350 durchführen kann, wie Übertragungsfrequenz, Mesh-Netzwerkbetrieb, Erfassungsfrequenz und dergleichen.
-
Ein Leistungsblock 1380, oder eine andere Leistungsversorgung, die an ein Netz gekoppelt ist, kann mit dem Batteriemonitor/Ladegerät 1378 gekoppelt sein, um die Batterie 1376 zu laden. In manchen Beispielen kann der Leistungsblock 1380 durch einen drahtlosen Leistungsempfänger ersetzt sein, um die Leistung drahtlos, zum Beispiel durch eine Schleifenantenne in der IoT-Vorrichtung 1350, zu empfangen. Eine drahtlose Batterieladungsschaltung, wie ein LTC4020 Chip von Linear Technologies, Milpitas, Kalifornien, unter anderen, kann im Batteriemonitor/Ladegerät 1378 aufgewiesen sein. Die spezifischen gewählten Ladungsschaltungen hängen von der Größe der Batterie 1376 und somit dem erforderlichen Strom ab. Die Ladung kann, unter anderen, unter Verwendung des Airfuel-Standards durchgeführt werden, der von der Airfuel Alliance veröffentlicht wurde, dem Qi Drahtlosladungsstandard, der von dem Wireless Power Consortium veröffentlicht wurde, oder dem Rezence Ladungsstandard, der von der Alliance for Wireless Power veröffentlicht wurde.
-
Der Datenspeicher 1358 kann Anweisungen 1382 in der Form von Software-, Firmware- oder Hardwarebefehlen aufweisen, um die hier beschriebenen Techniken zu implementieren. Obwohl solche Anweisungen 1382 als Codeblöcke gezeigt sind, die in dem Speicher 1354 und dem Datenspeicher 1358 aufgewiesen sind, ist klar, dass jeder der Codeblöcke durch hartverdrahtete Schaltungen ersetzt werden kann, zum Beispiel in eine anwendungsspezifische integrierte Schaltung (ASIC) eingebaut sein kann.
-
In einem Beispiel können die Anweisungen 1382, die über den Speicher 1354, den Datenspeicher 1358 oder den Prozessor 1352 bereitgestellt werden, als ein nicht transitorisches, maschinenlesbares Medium 1360 bereitgestellt sein, das einen Code zum Lenken des Prozessors 1352 aufweist, um elektronische Operationen in der IoT-Vorrichtung 1350 durchzuführen. Der Prozessor 1352 kann auf das nicht transitorische, maschinenlesbare Medium 1360 über die Zwischenverbindung 1356 zugreifen. Beispielsweise kann das nicht transitorische, maschinenlesbare Medium 1360 durch Vorrichtungen verkörpert sein, die für den Datenspeicher 1358 von 13 beschrieben sind, oder kann spezifische Datenspeichereinheiten wie optische Speicherplatten, Flash-Laufwerke oder eine beliebige Zahl von anderen Hardwarevorrichtungen aufweisen. Das nicht transitorische, maschinenlesbare Medium 1360 kann Anweisungen aufweisen, um den Prozessor 1352 zu lenken, eine spezifische Abfolge oder einen Ablauf von Maßnahmen durchzuführen, wie zum Beispiel in Bezug auf das Flussdiagramm (die Flussdiagramme) und das Blockdiagramm (die Blockdiagramme) von Operationen und Funktionalität beschrieben, die oben dargestellt sind.
-
In weiteren Beispielen weist ein maschinenlesbares Medium auch ein greifbares Medium auf, das imstande ist, Anweisungen zur Ausführung durch eine Maschine zu speichern, zu codieren oder zu tragen, und die die Maschine veranlassen, eine oder mehrere der Methodologien der vorliegenden Offenbarung durchzuführen, oder das imstande ist, Datenstrukturen zu speichern, zu codieren oder zu tragen, die von solchen Anweisungen verwendet werden oder diesen zugehörig sind. Ein „maschinenlesbares Medium“ kann somit Solid-State-Speicher und optische und magnetische Medien aufweisen, ohne aber darauf beschränkt zu sein. Spezifische Beispiele für maschinenlesbare Medien weisen nicht flüchtigen Speicher auf, aufweisend, ohne aber darauf beschränkt zu sein, beispielsweise Halbleiterspeichervorrichtungen (z.B. elektrisch programmierbarer Nur-Lese-Speicher (EPROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM)) und Flash-Speichervorrichtungen; magnetische Platten wie interne Festplatten und entfernbare Platten; magneto-optische Platten; und CD-ROM und DVD-ROM Disks. Die Anweisungen, die durch ein maschinenlesbares Medium verkörpert sind, können ferner über ein Kommunikationsnetzwerk unter Verwendung eines Übertragungsmediums über eine Netzwerkschnittstellenvorrichtung unter Verwendung eines einer Anzahl von Transferprotokollen (z.B. HTTP) gesendet oder empfangen werden.
-
Es sollte klar sein, dass die funktionellen Einheiten oder Kapazitäten, die in dieser Beschreibung beschrieben sind, sich auf Komponenten oder Module beziehen können oder als solche bezeichnet sind, um insbesondere ihre Implementierungsunabhängigkeit zu betonen. Solche Komponenten können durch eine beliebige Zahl von Software- oder Hardwareformen implementiert sein. Zum Beispiel kann eine Komponente oder Modul als eine Hardwareschaltung implementiert sein, die maßgeschneiderte Very-Large-Scale Integration (VLSI) Schaltungen oder Gate-Arrays, serienmäßig produzierte Halbleiter wie Logikchips, Transistoren oder andere diskrete Komponenten aufweist. Eine Komponente oder ein Modul kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein. Komponenten oder Module können auch in Software zur Ausführung durch verschiedene Arten von Prozessoren implementiert sein. Eine identifizierte Komponente oder ein Modul eines ausführbaren Codes kann beispielsweise einen oder mehrere physische oder logische Blöcke von Computeranweisungen aufweisen, die beispielsweise als ein Objekt, eine Prozedur oder Funktion organisiert sein können. Dennoch müssen die ausführbaren Einheiten einer identifizierten Komponente oder eines Moduls nicht in physischer Nähe sein, sondern können verteilte Anweisungen aufweisen, die an verschiedenen Stellen gespeichert sind, die, wenn logisch miteinander verbunden, die Komponente oder das Modul aufweisen und den genannten Zweck für die Komponente oder das Modul erreichen.
-
Tatsächlich kann eine Komponente oder ein Modul eines ausführbaren Codes eine einzelne Anweisung, oder viele Anweisungen, sein und kann sogar über mehrere verschiedene Codesegmente, unter verschiedenen Programmen und über mehrere Speichervorrichtungen oder Verarbeitungssysteme verteilt sein. Insbesondere können einige Aspekte des beschriebenen Prozesses (wie Umschreiben von Code und Codeanalyse) auf einem anderen Verarbeitungssystem (z.B. in einem Computer in einem Datencenter) stattfinden als in jenem, in dem der Code eingesetzt ist (z.B. in einen Computer, der in einem Sensor oder Roboter eingebettet ist). Ebenso können Betriebsdaten identifiziert und hier innerhalb von Komponenten oder Modulen veranschaulicht sein und können in jeder geeigneten Form verkörpert und innerhalb einer geeigneten Art von Datenstruktur organisiert sein. Die Betriebsdaten können als einzelner Datensatz gesammelt sein oder können über verschiedene Stellen verteilt sein, aufweisend über verschiedene Speichervorrichtungen, und können mindestens teilweise, nur als elektronische Signale auf einem System oder Netzwerk existieren. Die Komponenten oder Module können passiv oder aktiv sein, aufweisend Agenten, die betreibbar sind, um gewünschte Funktionen durchzuführen.
-
BEISPIELE
-
Veranschaulichende Beispiele der hier offenbarten Technologien sind in der Folge bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere und eine beliebige Kombination der unten beschriebenen Beispiele aufweisen.
-
Beispiel 1 weist einen Cloud-Ressourcenmanager zur Verwaltung von Beschleunigerressourcen auf, der Cloud-Ressourcenmanager aufweisend eine Netzwerkschnittstellensteuerung zum Empfangen von Beschleunigernutzungsinformationen von jeder von mehreren Knotenrechenvorrichtungen; und einen Beschleunigermanager zum Empfangen von Aufgabenparameter einer durchzuführenden Aufgabe; Zugreifen auf eine Aufgabenverteilungsrichtlinie; Bestimmen einer Zielort-Knotenrechenvorrichtung der mehreren Knotenrechenvorrichtungen basierend auf den Aufgabenparametern und der Aufgabenverteilungsrichtlinie; und Zuweisen der Aufgabe zu der Zielort-Knotenrechenvorrichtung.
-
Beispiel 2 weist den Gegenstand von Beispiel 1 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Instanz des Beschleunigerbilds in der Zielort-Knotenrechenvorrichtung verfügbar ist, wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf der Angabe aufweist, dass die Instanz des Beschleunigerbilds in der Zielort-Knotenrechenvorrichtung verfügbar ist.
-
Beispiel 3 weist den Gegenstand von einem beliebigen von Beispielen 1 und 2 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Beschleunigervorrichtung der Zielort-Knotenrechenvorrichtung verfügbaren Raum für das Beschleunigerbild hat, und wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf dem verfügbaren Raum für das Beschleunigerbild in der Zielort-Knotenrechenvorrichtung aufweist.
-
Beispiel 4 weist den Gegenstand von einem beliebigen von Beispielen 1-3 auf und wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass die Zielort-Knotenrechenvorrichtung die Hardware-Fähigkeit und Kapazität für eine virtuelle Maschine oder einen Container aufweist, die bzw. der der durchzuführenden Aufgabe zugehörig ist, und wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf der Zielort-Knotenrechenvorrichtung mit der Hardware-Fähigkeit und Kapazität für die virtuelle Maschine oder den Container, die bzw. der der durchzuführenden Aufgabe zugehörig ist, aufweist.
-
Beispiel 5 weist den Gegenstand von einem beliebigen von Beispielen 1-4 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Beschleunigervorrichtung der Zielort-Knotenrechenvorrichtung verfügbaren Raum für das Beschleunigerbild auf einer Beschleunigervorrichtung nach einem Defragmentieren der Beschleunigervorrichtung hätte; wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf dem verfügbaren Raum für das Beschleunigerbild in der Zielort-Knotenrechenvorrichtung nach Defragmentieren der Beschleunigervorrichtung aufweist.
-
Beispiel 6 weist den Gegenstand von einem beliebigen von Beispielen 1-5 auf und wobei Zuweisen der Aufgabe zu der Zielort-Knotenrechenvorrichtung Senden der Aufgabenparameter an die Zielort-Knotenrechenvorrichtung aufweist.
-
Beispiel 7 weist den Gegenstand von einem beliebigen von Beispielen 1-6 auf und wobei Empfangen der Aufgabenparameter Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, wobei Zuweisen der Aufgabe zu der Zielort-Knotenrechenvorrichtung Senden einer Identifizierung der Zielort-Knotenrechenvorrichtung an die anfragende Rechenvorrichtung aufweist.
-
Beispiel 8 weist den Gegenstand von einem beliebigen von Beispielen 1-7 auf und wobei Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen aufweist, ohne eine Anfrage, die für die Beschleunigernutzungsinformationen gesendet wurde.
-
Beispiel 9 weist den Gegenstand von einem beliebigen von Beispielen 1-8 auf und wobei die Netzwerkschnittstellensteuerung ferner eine Anfrage an jede der mehreren Knotenrechenvorrichtungen nach den entsprechenden Beschleunigernutzungsinformationen sendet, wobei Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen in Antwort auf die Anfrage nach den entsprechenden Beschleunigernutzungsinformationen aufweist.
-
Beispiel 10 weist den Gegenstand von einem beliebigen von Beispielen 1-9 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei der Beschleunigermanager ferner mehrere Beschleunigerbilder speichert, wobei die mehreren Beschleunigerbilder das Beschleunigerbild aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, und wobei die Netzwerkschnittstellensteuerung ferner das Beschleunigerbild an die Zielort-Knotenrechenvorrichtung in Antwort auf Empfangen der Angabe des in der Durchführung der Aufgabe zu verwendenden Beschleunigerbilds sendet.
-
Beispiel 11 weist den Gegenstand von einem beliebigen von Beispielen 1-10 auf und wobei Speichern der mehreren Beschleunigerbilder Speichern, für jedes der mehreren Beschleunigerbilder, einer Größe, einer Leistungsnutzung und ob das entsprechende Beschleunigerbild gemeinsam benutzt werden darf, aufweist.
-
Beispiel 12 weist den Gegenstand von einem beliebigen von Beispielen 1-11 auf und wobei die Beschleunigernutzungsinformationen mindestens eines aufweisen von (i) Beschleunigerbildern, die an jeder der mehreren Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an jeder der mehreren Knotenrechenvorrichtungen eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen vorhanden ist, (iv) einer Nutzungsfrequenz eines Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen, (v) einer Leistungsnutzung jeder der mehreren Knotenrechenvorrichtungen und (vi) einer Angabe einer letzten Nutzungszeit eines Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen.
-
Beispiel 13 weist den Gegenstand von einem beliebigen von Beispielen 1-12 auf und wobei Bestimmen der Zielort-Knotenrechenvorrichtung der mehreren Knotenrechenvorrichtungen Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf mindestens einem von (i) den Beschleunigerbildern, die an jeder der mehreren Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an jeder der mehreren Knotenrechenvorrichtungen eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in der mindestens einen Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen vorhanden ist, (iv) der Nutzungsfrequenz des Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen, (v) der Leistungsnutzung jeder der mehreren Knotenrechenvorrichtungen, und (v) der Angabe der letzten Benutzungszeit des Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen aufweist.
-
Beispiel 14 enthält eine Knotenrechenvorrichtung zur Verwaltung von Beschleunigerressourcen der Knotenrechenvorrichtung, die Knotenrechenvorrichtung aufweisend eine Netzwerkschnittstellensteuerung zum Empfangen von Aufgabenparametern einer durch die Knotenrechenvorrichtung durchzuführenden Aufgabe; und einen Beschleunigermanager zum Zugreifen auf eine Aufgabenplanungsrichtlinie; Planen der Aufgabe basierend auf den Aufgabenparametern und der Aufgabenplanungsrichtlinie; und Durchführen der Aufgabe auf einer Beschleunigervorrichtung der Knotenrechenvorrichtung in Antwort auf die geplante Aufgabe.
-
Beispiel 15 weist den Gegenstand von Beispiel 14 auf und wobei die Netzwerkschnittstellensteuerung ferner zum Senden von Beschleunigernutzungsinformationen an einen Cloud-Ressourcenmanager dient.
-
Beispiel 16 weist den Gegenstand von einem beliebigen von Beispielen 14 und 15 auf und wobei die Beschleunigernutzungsinformationen mindestens eines aufweisen von (i) Beschleunigerbildern, die an den Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an der Knotenrechenvorrichtung eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in der Beschleunigervorrichtung von vorhanden ist, (iv) der Nutzungsfrequenz eines Beschleunigerbilds der Beschleunigervorrichtung, (v) der Leistungsnutzung der Beschleunigervorrichtung und (vi) einer Angabe einer letzten Nutzungszeit eines Beschleunigerbilds der Beschleunigervorrichtung.
-
Beispiel 17 weist den Gegenstand von einem beliebigen von Beispielen 14-16 auf und wobei Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager ohne Empfang einer Anfrage zum Senden der Beschleunigernutzungsinformationen aufweist.
-
Beispiel 18 weist den Gegenstand von einem beliebigen von Beispielen 14-17 auf und wobei die Netzwerkschnittstellensteuerung ferner zum Empfangen einer Anfrage nach den Beschleunigernutzungsinformationen von einem Cloud-Ressourcenmanager dient, wobei Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager in Antwort auf Empfang der Anfrage zum Senden der Beschleunigernutzungsinformationen aufweist.
-
Beispiel 19 weist den Gegenstand von einem beliebigen von Beispielen 14-18 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei der Beschleunigermanager ferner zum Laden einer Instanz des Beschleunigerbilds auf der Beschleunigervorrichtung vor Empfang der Aufgabenparameter dient; und Bestimmen, in Antwort auf Empfang der Aufgabenparameter, dass die Instanz des Beschleunigerbilds vor Empfang der Aufgabenparameter auf die Beschleunigervorrichtung geladen wurde, wobei Planen der Aufgabe Planen der Aufgabe aufweist, um die Instanz des Beschleunigerbilds in Antwort auf eine Bestimmung laufen zu lassen, dass die Instanz des Beschleunigerbilds vor Empfang der Aufgabenparameter auf die Beschleunigervorrichtung geladen wurde.
-
Beispiel 20 weist den Gegenstand von einem beliebigen von Beispielen 14-19 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei der Beschleunigermanager ferner zum Bestimmen dient, dass derzeit kein verfügbarer Raum für das Beschleunigerbild auf der Beschleunigervorrichtung vorhanden ist; Bestimmen, dass verfügbarer Raum für das Beschleunigerbild auf der Beschleunigervorrichtung nach Defragmentieren der Beschleunigervorrichtung vorhanden wäre; Defragmentieren der Beschleunigervorrichtung in Antwort auf eine Bestimmung, dass Raum für das Beschleunigerbild nach Defragmentieren der Beschleunigervorrichtung vorhanden wäre; und Laden des Beschleunigerbilds auf der Beschleunigervorrichtung in Antwort auf Defragmentieren der Beschleunigervorrichtung.
-
Beispiel 21 weist den Gegenstand von einem beliebigen von Beispielen 14-20 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei der Beschleunigermanager ferner zum Laden einer Instanz des Beschleunigerbilds auf der Beschleunigervorrichtung vor Empfang der Aufgabenparameter dient; Durchführen mindestens eines Teils einer zweiten Aufgabe an dem Beschleunigerbild vor Empfang der Aufgabenparameter; Bestimmen, in Antwort auf Empfang der Aufgabenparameter, dass die zweite Aufgabe zugunsten der Aufgabe ausgelagert werden sollte; und Auslagern der zweiten Aufgabe aus der Beschleunigervorrichtung, wobei Auslagern der zweiten Aufgabe Speichern von Kontextdaten der zweiten Aufgabe aufweist.
-
Beispiel 22 weist den Gegenstand von einem beliebigen von Beispielen 14-21 auf und wobei der Beschleunigermanager ferner zum Senden der Kontextdaten der zweiten Aufgabe an eine zweite Knotenrechenvorrichtung dient, damit die zweite Aufgabe auf der zweiten Knotenrechenvorrichtung eingelagert wird.
-
Beispiel 23 weist den Gegenstand von einem beliebigen von Beispielen 14-22 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei der Beschleunigermanager ferner zum Durchführen mindestens eines Teils einer zweiten Aufgabe an einem zweiten Beschleunigerbild in der Beschleunigervorrichtung vor Empfang der Aufgabenparameter dient; Bestimmen, in Antwort auf Empfang der Aufgabenparameter, dass die zweite Aufgabe zugunsten der Aufgabe ausgelagert werden sollte; und Auslagern der zweiten Aufgabe aus der Beschleunigervorrichtung, wobei Auslagern der zweiten Aufgabe Speichern des zweiten Beschleunigerbilds bei einem Speicher der Knotenrechenvorrichtung aufweist.
-
Beispiel 24 weist den Gegenstand von einem beliebigen von Beispielen 14-23 auf und wobei Empfangen der Aufgabenparameter Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, wobei der Beschleunigermanager ferner zum Senden einer Meldung des Aufgabestarts an die anfragende Rechenvorrichtung dient.
-
Beispiel 25 weist den Gegenstand von einem beliebigen von Beispielen 14-24 auf und wobei Empfangen der Aufgabenparameter Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, wobei der Beschleunigermanager ferner zum Senden eines Ergebnisses der Aufgabe an die anfragende Rechenvorrichtung dient.
-
Beispiel 26 weist Verfahren zum Verwalten von Beschleunigerressourcen durch einen Cloud-Ressourcenmanager auf, das Verfahren aufweisend Empfangen, durch den Cloud-Ressourcenmanager, von Beschleunigernutzungsinformationen von jeder von mehreren Knotenrechenvorrichtungen; Empfangen, durch den Cloud-Ressourcenmanager, von Aufgabenparametern einer durchzuführenden Aufgabe; Zugreifen, durch den Cloud-Ressourcenmanager, auf eine Aufgabenverteilungsrichtlinie; Bestimmen, durch den Cloud-Ressourcenmanager, einer Zielort-Knotenrechenvorrichtung der mehreren Knotenrechenvorrichtungen basierend auf den Aufgabenparametern und der Aufgabenverteilungsrichtlinie; und Zuweisen, durch den Cloud-Ressourcenmanager, der Aufgabe zu der Zielort-Knotenrechenvorrichtung.
-
Beispiel 27 weist den Gegenstand von Beispiel 26 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Instanz des Beschleunigerbilds in der Zielort-Knotenrechenvorrichtung verfügbar ist, wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf der Angabe umfasst, dass die Instanz des Beschleunigerbilds in der Zielort-Knotenrechenvorrichtung verfügbar ist.
-
Beispiel 28 weist den Gegenstand von einem beliebigen von Beispielen 26 und 27 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Beschleunigervorrichtung der Zielort-Knotenrechenvorrichtung verfügbaren Raum für das Beschleunigerbild hat; wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf dem verfügbaren Raum für das Beschleunigerbild in der Zielort-Knotenrechenvorrichtung aufweist.
-
Beispiel 29 weist den Gegenstand von einem beliebigen von Beispielen 26-28 auf und wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass die Zielort-Knotenrechenvorrichtung die Hardware-Fähigkeit und Kapazität für eine virtuelle Maschine oder einen Container aufweist, die bzw. der der durchzuführenden Aufgabe zugehörig ist, und wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf der Zielort-Knotenrechenvorrichtung mit der Hardware-Fähigkeit und Kapazität für die virtuelle Maschine oder den Container aufweist, die bzw. der der durchzuführenden Aufgabe zugehörig ist.
-
Beispiel 30 weist den Gegenstand von einem beliebigen von Beispielen 26-29 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Beschleunigervorrichtung der Zielort-Knotenrechenvorrichtung verfügbaren Raum für das Beschleunigerbild auf einer Beschleunigervorrichtung nach einem Defragmentieren der Beschleunigervorrichtung hätte; wobei Bestimmen der Zielort-Knotenrechenvorrichtung Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf dem verfügbaren Raum für das Beschleunigerbild in der Zielort-Knotenrechenvorrichtung nach Defragmentieren der Beschleunigervorrichtung aufweist.
-
Beispiel 31 weist den Gegenstand von einem beliebigen von Beispielen 26-30 auf und wobei Zuweisen der Aufgabe zur Zielort-Knotenrechenvorrichtung Senden der Aufgabenparameter an die Zielort-Knotenrechenvorrichtung aufweist.
-
Beispiel 32 weist den Gegenstand von einem beliebigen von Beispielen 26-31 auf und wobei Empfangen der Aufgabenparameter Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, wobei Zuweisen der Aufgabe zur Zielort-Knotenrechenvorrichtung Senden einer Kennung der Zielort-Knotenrechenvorrichtung an die anfragende Rechenvorrichtung aufweist.
-
Beispiel 33 weist den Gegenstand von einem beliebigen von Beispielen 26-32 auf und wobei Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen ohne Senden einer Anfrage nach den Beschleunigernutzungsinformationen aufweist.
-
Beispiel 34 weist den Gegenstand von einem beliebigen von Beispielen 26-33 auf und weist ferner enden einer Anfrage an jede der mehreren Knotenrechenvorrichtungen nach den entsprechenden Beschleunigernutzungsinformationen auf, wobei Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen in Antwort auf Senden der Anfrage nach den entsprechenden Beschleunigernutzungsinformationen aufweist.
-
Beispiel 35 weist den Gegenstand von einem beliebigen von Beispielen 26-34 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Speichern, durch den Cloud-Ressourcenmanager, mehrerer Beschleunigerbilder, wobei die mehreren Beschleunigerbilder das Beschleunigerbild aufweisen, das in der Durchführung der Aufgabe zu verwenden ist; Senden, durch den Cloud-Ressourcenmanager, des Beschleunigerbilds an die Zielort-Knotenrechenvorrichtung in Antwort auf Empfangen der Angabe des in der Durchführung der Aufgabe zu verwendenden Beschleunigerbilds.
-
Beispiel 36 weist den Gegenstand von einem beliebigen von Beispielen 26-35 auf und wobei Speichern der mehreren Beschleunigerbilder Speichern, für jedes der mehreren Beschleunigerbilder, einer Größe, einer Leistungsnutzung und ob das entsprechende Beschleunigerbild gemeinsam benutzt werden darf, aufweist.
-
Beispiel 37 weist den Gegenstand von einem beliebigen von Beispielen 26-36 auf und wobei die Beschleunigernutzungsinformationen mindestens eines aufweisen von (i) Beschleunigerbildern, die an jeder der mehreren Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an jeder der mehreren Knotenrechenvorrichtungen eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen vorhanden ist, (iv) einer Nutzungsfrequenz eines Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen, (v) einer Leistungsnutzung jeder der mehreren Knotenrechenvorrichtungen und (vi) einer Angabe einer letzten Nutzungszeit eines Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen.
-
Beispiel 38 weist den Gegenstand von einem beliebigen von Beispielen 26-37 auf und wobei Bestimmen der Zielort-Knotenrechenvorrichtung der mehreren Knotenrechenvorrichtungen Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf mindestens einem von (i) den Beschleunigerbildern, die an jeder der mehreren Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an jeder der mehreren Knotenrechenvorrichtungen eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in der mindestens einen Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen vorhanden ist, (iv) der Nutzungsfrequenz des Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen, (v) der Leistungsnutzung jeder der mehreren Knotenrechenvorrichtungen und (vi) der Angabe der letzten Benutzungszeit des Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen aufweist.
-
Beispiel 39 enthält eine Verfahren zum Verwalten von Beschleunigerressourcen durch eine Knotenrechenvorrichtung, das Verfahren aufweisend Empfangen, durch die Knotenrechenvorrichtung, von Aufgabenparametern einer durch die Knotenrechenvorrichtung durchzuführenden Aufgabe; Zugreifen, durch die Knotenrechenvorrichtung, auf eine Aufgabenplanungsrichtlinie; Planen, durch die Knotenrechenvorrichtung, der Aufgabe basierend auf den Aufgabenparametern und der Aufgabenplanungsrichtlinie; und Durchführen, durch die Knotenrechenvorrichtung, der Aufgabe an einer Beschleunigervorrichtung der Knotenrechenvorrichtung in Antwort auf Planen der Aufgabe.
-
Beispiel 40 weist den Gegenstand von Beispiel 39 auf und weist ferner Senden von Beschleunigernutzungsinformationen an einen Cloud-Ressourcenmanager auf.
-
Beispiel 41 weist den Gegenstand von einem beliebigen von Beispielen 39 und 40 auf und wobei die Beschleunigernutzungsinformationen mindestens eines aufweisen von (i) Beschleunigerbildern, die an den Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an der Knotenrechenvorrichtung eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in der Beschleunigervorrichtung von vorhanden ist, (iv) der Nutzungsfrequenz eines Beschleunigerbilds der Beschleunigervorrichtung, (v) der Leistungsnutzung der Beschleunigervorrichtung und (v) einer Angabe einer letzten Nutzungszeit eines Beschleunigerbilds der Beschleunigervorrichtung.
-
Beispiel 42 weist den Gegenstand von einem beliebigen von Beispielen 39-41 auf und wobei Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager ohne Empfangen einer Anfrage zum Senden der Beschleunigernutzungsinformationen aufweist.
-
Beispiel 43 weist den Gegenstand von einem beliebigen von Beispielen 39-42 auf und weist ferner Empfangen einer Anfrage nach den Beschleunigernutzungsinformationen von einem Cloud-Ressourcenmanager auf, wobei Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager in Antwort auf Empfang der Anfrage zum Senden der Beschleunigernutzungsinformationen aufweist.
-
Beispiel 44 weist den Gegenstand von einem beliebigen von Beispielen 39-43 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Laden, durch die Knotenrechenvorrichtung, einer Instanz des Beschleunigerbilds auf der Beschleunigervorrichtung vor Empfang der Aufgabenparameter; und Bestimmen, durch die Knotenrechenvorrichtung und in Antwort auf Empfang der Aufgabenparameter, dass die Instanz des Beschleunigerbilds vor Empfang der Aufgabenparameter auf die Beschleunigervorrichtung geladen wurde, wobei Planen der Aufgabe Planen der Aufgabe aufweist, um auf der Instanz des Beschleunigerbilds in Antwort auf eine Bestimmung zu laufen, dass die Instanz des Beschleunigerbilds vor Empfang der Aufgabenparameter auf die Beschleunigervorrichtung geladen wurde.
-
Beispiel 45 weist den Gegenstand von einem beliebigen von Beispielen 39-44 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Bestimmen, durch die Knotenrechenvorrichtung, dass derzeit kein verfügbarer Raum für das Beschleunigerbild auf der Beschleunigervorrichtung vorhanden ist; Bestimmen, durch die Knotenrechenvorrichtung, dass verfügbarer Raum für das Beschleunigerbild auf der Beschleunigervorrichtung nach Defragmentieren der Beschleunigervorrichtung vorhanden wäre; Defragmentieren, durch die Knotenrechenvorrichtung, der Beschleunigervorrichtung in Antwort auf eine Bestimmung, dass Raum für das Beschleunigerbild nach Defragmentieren der Beschleunigervorrichtung vorhanden wäre; und Laden, durch die Knotenrechenvorrichtung, des Beschleunigerbilds auf der Beschleunigervorrichtung in Antwort auf Defragmentieren der Beschleunigervorrichtung.
-
Beispiel 46 weist den Gegenstand von einem beliebigen von Beispielen 39-45 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Laden, durch die Knotenrechenvorrichtung, einer Instanz des Beschleunigerbilds auf der Beschleunigervorrichtung vor Empfang der Aufgabenparameter; Durchführen, durch die Knotenrechenvorrichtung, mindestens eines Teils einer zweiten Aufgabe an dem Beschleunigerbild vor Empfang der Aufgabenparameter; Bestimmen, durch die Knotenrechenvorrichtung und in Antwort auf Empfang der Aufgabenparameter, dass die zweite Aufgabe zugunsten der Aufgabe ausgelagert werden sollte; und Auslagern, durch die Knotenrechenvorrichtung, der zweiten Aufgabe aus der Beschleunigervorrichtung, wobei Auslagern der zweiten Aufgabe Speichern von Kontextdaten der zweiten Aufgabe aufweist.
-
Beispiel 47 weist den Gegenstand von einem beliebigen von Beispielen 39-46 auf und weist ferner Senden der Kontextdaten der zweiten Aufgabe an eine zweite Knotenrechenvorrichtung auf, damit die zweite Aufgabe auf der zweiten Knotenrechenvorrichtung eingelagert wird.
-
Beispiel 48 weist den Gegenstand von einem beliebigen von Beispielen 39-47 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Durchführen, durch die Knotenrechenvorrichtung, mindestens eines Teils einer zweiten Aufgabe an einem zweiten Beschleunigerbild in der Beschleunigervorrichtung vor Empfang der Aufgabenparameter; Bestimmen, durch die Knotenrechenvorrichtung und in Antwort auf Empfang der Aufgabenparameter, dass die zweite Aufgabe zugunsten der Aufgabe ausgelagert werden sollte; und Auslagern, durch die Knotenrechenvorrichtung, der zweiten Aufgabe aus der Beschleunigervorrichtung, wobei Auslagern der zweiten Aufgabe Speichern des zweiten Beschleunigerbilds bei einem Speicher der Knotenrechenvorrichtung aufweist.
-
Beispiel 49 weist den Gegenstand von einem beliebigen von Beispielen 39-48 auf und wobei Empfangen der Aufgabenparameter Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, das Verfahren ferner aufweisend Senden, durch die Knotenrechenvorrichtung, einer Meldung des Aufgabenstarts an die anfragende Rechenvorrichtung.
-
Beispiel 50 weist den Gegenstand von einem beliebigen von Beispielen 39-49 auf und wobei Empfangen der Aufgabenparameter Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, das Verfahren ferner aufweisend Senden, durch die Knotenrechenvorrichtung, eines Ergebnisses der Aufgabe an die anfragende Rechenvorrichtung.
-
Beispiel 51 enthält ein oder mehrere computerlesbaren Medien, aufweisend mehrere darauf gespeicherte Anweisungen, die, wenn ausgeführt, eine Knotenrechenvorrichtung veranlassen, das Verfahren nach einem von Beispielen 26-49 durchzuführen.
-
Beispiel 52 weist einen Cloud-Ressourcenmanager zur Verwaltung von Beschleunigerressourcen auf, der Cloud-Ressourcenmanager aufweisend Mittel zum Empfangen von Beschleunigernutzungsinformationen von jeder von mehreren Knotenrechenvorrichtungen; Mittel zum Empfangen von Aufgabenparameter einer durchzuführenden Aufgabe; Mittel zum Zugreifen auf eine Aufgabenverteilungsrichtlinie; Mittel zum Bestimmen einer Zielort-Knotenrechenvorrichtung der mehreren Knotenrechenvorrichtungen basierend auf den Aufgabenparametern und der Aufgabenverteilungsrichtlinie; und Mittel zum Zuweisen der Aufgabe zur Zielort-Knotenrechenvorrichtung.
-
Beispiel 53 weist den Gegenstand von Beispiel 52 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Instanz des Beschleunigerbilds in der Zielort-Knotenrechenvorrichtung verfügbar ist, wobei das Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf der Angabe, dass die Instanz des Beschleunigerbilds in der Zielort-Knotenrechenvorrichtung verfügbar ist, aufweist.
-
Beispiel 54 weist den Gegenstand von einem beliebigen von Beispielen 52 und 53 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Beschleunigervorrichtung der Zielort-Knotenrechenvorrichtung verfügbaren Raum für das Beschleunigerbild hat; wobei das Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf dem verfügbaren Raum für das Beschleunigerbild in der Zielort-Knotenrechenvorrichtung aufweist.
-
Beispiel 55 weist den Gegenstand von einem beliebigen von Beispielen 52-54 auf und wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass die Zielort-Knotenrechenvorrichtung die Hardware-Fähigkeit und Kapazität für eine virtuelle Maschine oder einen Container aufweist, die bzw. der der durchzuführenden Aufgabe zugehörig ist, und wobei das Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf der Zielort-Knotenrechenvorrichtung mit der Hardware-Fähigkeit und Kapazität für die virtuelle Maschine oder den Container, die bzw. der der durchzuführenden Aufgabe zugehörig ist, aufweist.
-
Beispiel 56 weist den Gegenstand von einem beliebigen von Beispielen 52-55 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, wobei die Beschleunigernutzungsinformationen eine Angabe aufweisen, dass eine Beschleunigervorrichtung der Zielort-Knotenrechenvorrichtung verfügbaren Raum für das Beschleunigerbild auf einer Beschleunigervorrichtung nach einem Defragmentieren der Beschleunigervorrichtung hätte; wobei das Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf dem verfügbaren Raum für das Beschleunigerbild in der Zielort-Knotenrechenvorrichtung nach Defragmentieren der Beschleunigervorrichtung aufweist.
-
Beispiel 57 weist den Gegenstand von einem beliebigen von Beispielen 52-56 auf und wobei das Mittel zum Zuweisen der Aufgabe zur Zielort-Knotenrechenvorrichtung Mittel zum Senden der Aufgabenparameter an die Zielort-Knotenrechenvorrichtung aufweist.
-
Beispiel 58 weist den Gegenstand von einem beliebigen von Beispielen 52-57 auf und wobei das Mittel zum Empfangen der Aufgabenparameter Mittel zum Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, wobei das Mittel zum Zuweisen der Aufgabe zur Zielort-Knotenrechenvorrichtung Mittel zum Senden einer Kennung der Zielort-Knotenrechenvorrichtung an die anfragende Rechenvorrichtung aufweist.
-
Beispiel 59 weist den Gegenstand von einem beliebigen von Beispielen 52-58 auf und wobei das Mittel zum Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen Mittel zum Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen ohne Senden einer Anfrage nach den Beschleunigernutzungsinformationen aufweist.
-
Beispiel 60 weist den Gegenstand von einem beliebigen von Beispielen 52-59 auf und weist ferner Mittel zum Senden einer Anfrage an jede der mehreren Knotenrechenvorrichtungen nach den entsprechenden Beschleunigernutzungsinformationen auf, wobei das Mittel zum Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen Mittel zum Empfangen der Beschleunigernutzungsinformationen von jeder der mehreren Knotenrechenvorrichtungen in Antwort auf Senden der Anfrage nach den entsprechenden Beschleunigernutzungsinformationen aufweist.
-
Beispiel 61 weist den Gegenstand von einem beliebigen von Beispielen 52-60 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Mittel zum Speichern mehrere Beschleunigerbilder, wobei die mehreren Beschleunigerbilder das Beschleunigerbild aufweisen, das in der Durchführung der Aufgabe zu verwenden ist; Mittel zum Senden der Beschleunigerbild an die Zielort-Knotenrechenvorrichtung in Antwort auf Empfangen der Angabe des in der Durchführung der Aufgabe zu verwendenden Beschleunigerbilds.
-
Beispiel 62 weist den Gegenstand von einem beliebigen von Beispielen 52-61 auf und wobei das Mittel zum Speichern der mehreren Beschleunigerbilder Mittel zum Speichern, für jedes der mehreren Beschleunigerbilder, einer Größe, einer Leistungsnutzung und ob das entsprechende Beschleunigerbild gemeinsam benutzt werden darf, aufweist.
-
Beispiel 63 weist den Gegenstand von einem beliebigen von Beispielen 52-62 auf und wobei die Beschleunigernutzungsinformationen mindestens eines aufweisen von (i) Beschleunigerbildern, die an jeder der mehreren Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an jeder der mehreren Knotenrechenvorrichtungen eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen vorhanden ist, (iv) einer Nutzungsfrequenz eines Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen, (v) einer Leistungsnutzung jeder der mehreren Knotenrechenvorrichtungen und (vi) einer Angabe einer letzten Nutzungszeit eines Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen.
-
Beispiel 64 weist den Gegenstand von einem beliebigen von Beispielen 52-63 auf und wobei das Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung der mehreren Knotenrechenvorrichtungen Mittel zum Bestimmen der Zielort-Knotenrechenvorrichtung basierend auf mindestens einem von (i) den Beschleunigerbildern, die an jeder der mehreren Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an jeder der mehreren Knotenrechenvorrichtungen eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in der mindestens einen Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen vorhanden ist, (iv) der Nutzungsfrequenz des Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen, (v) der Leistungsnutzung jeder der mehreren Knotenrechenvorrichtungen und (vi) der Angabe der letzten Benutzungszeit des Beschleunigerbilds von mindestens einer Beschleunigervorrichtung jeder der mehreren Knotenrechenvorrichtungen aufweist.
-
Beispiel 65 enthält eine Knotenrechenvorrichtung zur Verwaltung von Beschleunigerressourcen der Knotenrechenvorrichtung, die Knotenrechenvorrichtung aufweisend Mittel zum Empfangen, durch die Knotenrechenvorrichtung, von Aufgabenparameter einer durch die Knotenrechenvorrichtung durchzuführenden Aufgabe; Mittel zum Zugreifen, durch die Knotenrechenvorrichtung, auf eine Aufgabenplanungsrichtlinie; Mittel zum Planen, durch die Knotenrechenvorrichtung, der Aufgabe basierend auf den Aufgabenparametern und der Aufgabenplanungsrichtlinie; und Mittel zum Durchführen, durch die Knotenrechenvorrichtung, der Aufgabe an einer Beschleunigervorrichtung der Knotenrechenvorrichtung in Antwort auf Planen der Aufgabe.
-
Beispiel 66 weist den Gegenstand von Beispiel 65 auf und weist ferner Mittel zum Senden von Beschleunigernutzungsinformationen an einen Cloud-Ressourcenmanager auf.
-
Beispiel 67 weist den Gegenstand von einem beliebigen von Beispielen 65 und 66 auf und wobei die Beschleunigernutzungsinformationen mindestens eines aufweisen von (i) Beschleunigerbildern, die an den Knotenrechenvorrichtungen eingesetzt werden, (ii) ob jedes Beschleunigerbild, das an der Knotenrechenvorrichtung eingesetzt wird, gemeinsam benutzt werden darf, (iii) wie viel freier Raum in der Beschleunigervorrichtung von vorhanden ist, (iv) der Nutzungsfrequenz eines Beschleunigerbilds der Beschleunigervorrichtung, (v) der Leistungsnutzung der Beschleunigervorrichtung und (v) einer Angabe einer letzten Nutzungszeit eines Beschleunigerbilds der Beschleunigervorrichtung.
-
Beispiel 68 weist den Gegenstand von einem beliebigen von Beispielen 65-67 auf und wobei das Mittel zum Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager Mittel zum Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager ohne Empfangen einer Anfrage zum Senden der Beschleunigernutzungsinformationen aufweist.
-
Beispiel 69 weist den Gegenstand von einem beliebigen von Beispielen 65-68 auf und weist ferner Mittel zum Empfangen einer Anfrage nach den Beschleunigernutzungsinformationen von einem Cloud-Ressourcenmanager auf, wobei das Mittel zum Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager Mittel zum Senden der Beschleunigernutzungsinformationen an den Cloud-Ressourcenmanager in Antwort auf Empfang der Anfrage zum Senden der Beschleunigernutzungsinformationen aufweist.
-
Beispiel 70 weist den Gegenstand von einem beliebigen von Beispielen 65-69 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Mittel zum Laden, durch die Knotenrechenvorrichtung, einer Instanz des Beschleunigerbilds auf der Beschleunigervorrichtung vor Empfang der Aufgabenparameter; und Mittel zum Bestimmen, durch die Knotenrechenvorrichtung und in Antwort auf Empfang der Aufgabenparameter, dass die Instanz des Beschleunigerbilds vor Empfang der Aufgabenparameter auf die Beschleunigervorrichtung geladen wurde, wobei das Mittel zum Planen der Aufgabe Mittel zum Planen der Aufgabe aufweist, um auf der Instanz des Beschleunigerbilds in Antwort auf eine Bestimmung zu laufen, dass die Instanz des Beschleunigerbilds vor Empfang der Aufgabenparameter auf die Beschleunigervorrichtung geladen wurde.
-
Beispiel 71 weist den Gegenstand von einem beliebigen von Beispielen 65-70 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Mittel zum Bestimmen, durch die Knotenrechenvorrichtung, dass derzeit kein verfügbarer Raum für das Beschleunigerbild auf der Beschleunigervorrichtung vorhanden ist; Mittel zum Bestimmen, durch die Knotenrechenvorrichtung, dass verfügbarer Raum für das Beschleunigerbild auf der Beschleunigervorrichtung nach Defragmentieren der Beschleunigervorrichtung vorhanden wäre; Mittel zum Defragmentieren, durch die Knotenrechenvorrichtung, der Beschleunigervorrichtung in Antwort auf eine Bestimmung, dass Raum für das Beschleunigerbild nach Defragmentieren der Beschleunigervorrichtung vorhanden wäre; und Mittel zum Laden, durch die Knotenrechenvorrichtung, des Beschleunigerbilds auf der Beschleunigervorrichtung in Antwort auf Defragmentieren der Beschleunigervorrichtung.
-
Beispiel 72 weist den Gegenstand von einem beliebigen von Beispielen 65-71 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Mittel zum Laden, durch die Knotenrechenvorrichtung, einer Instanz des Beschleunigerbilds auf der Beschleunigervorrichtung vor Empfang der Aufgabenparameter; Mittel zum Durchführen, durch die Knotenrechenvorrichtung, mindestens eines Teils einer zweiten Aufgabe an dem Beschleunigerbild vor Empfang der Aufgabenparameter; Mittel zum Bestimmen, durch die Knotenrechenvorrichtung und in Antwort auf Empfang der Aufgabenparameter, dass die zweite Aufgabe zugunsten der Aufgabe ausgelagert werden sollte; und Mittel zum Auslagern, durch die Knotenrechenvorrichtung, der zweiten Aufgabe aus der Beschleunigervorrichtung, wobei das Mittel zum Auslagern der zweiten Aufgabe Mittel zum Speichern von Kontextdaten der zweiten Aufgabe aufweist.
-
Beispiel 73 weist den Gegenstand von einem beliebigen von Beispielen 65-72 auf und ferner aufweisend Mittel zum Senden der Kontextdaten der zweiten Aufgabe an eine zweite Knotenrechenvorrichtung, damit die zweite Aufgabe auf der zweiten Knotenrechenvorrichtung eingelagert wird.
-
Beispiel 74 weist den Gegenstand von einem beliebigen von Beispielen 65-73 auf und wobei die Aufgabenparameter eine Angabe eines Beschleunigerbilds aufweisen, das in der Durchführung der Aufgabe zu verwenden ist, das Verfahren ferner aufweisend Mittel zum Durchführen, durch die Knotenrechenvorrichtung, mindestens eines Teils einer zweiten Aufgabe an einem zweiten Beschleunigerbild in der Beschleunigervorrichtung vor Empfang der Aufgabenparameter; Mittel zum Bestimmen, durch die Knotenrechenvorrichtung und in Antwort auf Empfang der Aufgabenparameter, dass die zweite Aufgabe zugunsten der Aufgabe ausgelagert werden sollte; und Mittel zum Auslagern, durch die Knotenrechenvorrichtung, der zweiten Aufgabe aus der Beschleunigervorrichtung, wobei das Mittel zum Auslagern der zweiten Aufgabe Mittel zum Speicher des zweiten Beschleunigerbilds bei einem Speicher der Knotenrechenvorrichtung aufweist.
-
Beispiel 75 weist den Gegenstand von einem beliebigen von Beispielen 65-74 auf und wobei das Mittel zum Empfangen der Aufgabenparameter Mittel zum Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, das Verfahren ferner aufweisend Mittel zum Senden, durch die Knotenrechenvorrichtung, einer Meldung des Aufgabenstarts an die anfragende Rechenvorrichtung.
-
Beispiel 76 weist den Gegenstand von einem beliebigen von Beispielen 65-75 auf und wobei das Mittel zum Empfangen der Aufgabenparameter Mittel zum Empfangen der Aufgabenparameter von einer anfragenden Rechenvorrichtung aufweist, das Verfahren ferner aufweisend Mittel zum Senden, durch die Knotenrechenvorrichtung, eines Ergebnisses der Aufgabe an die anfragende Rechenvorrichtung.