DE102020119621A1 - Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen - Google Patents
Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen Download PDFInfo
- Publication number
- DE102020119621A1 DE102020119621A1 DE102020119621.0A DE102020119621A DE102020119621A1 DE 102020119621 A1 DE102020119621 A1 DE 102020119621A1 DE 102020119621 A DE102020119621 A DE 102020119621A DE 102020119621 A1 DE102020119621 A1 DE 102020119621A1
- Authority
- DE
- Germany
- Prior art keywords
- power
- performance
- workload
- memory
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Power Sources (AREA)
Abstract
Es werden Vorrichtungen, Systeme, Verfahren und Herstellungsartikel zur Verwaltung der Leistungsversorgung von Deep-Learning-Beschleunigersystemen offenbart. Eine beispielhafte Vorrichtung weist einen Leistungsmanager und eine Leistungssteuereinrichtung auf. Der Leistungsmanager soll eine Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage eines Verhältnisses zwischen Rechenaufgaben und Bandbreitenaufgaben in einer ersten Arbeitslast erzeugen, die Leistungstabelle auf der Grundlage einer Anforderung zu wenigstens einem vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast aktualisieren und einen Index in der Leistungstabelle bestimmen. Die Leistungssteuereinrichtung soll einen Leistungsverbrauch auf der Grundlage der Leistungstabelle bestimmen, feststellen, ob der Index auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs zu aktualisieren ist, und dem Beschleuniger und dem Speicher entsprechend der Leistungstabelle Leistung zuordnen.
Description
- GEBIET DER OFFENBARUNG
- Diese Offenbarung betrifft allgemein die Leistungsverwaltung und insbesondere das Verwalten der Leistungsversorgung von Deep-Learning-Beschleunigersystemen.
- HINTERGRUND
- Computerhardwarehersteller entwickeln Hardwarekomponenten zur Verwendung in verschiedenen Komponenten einer Computerplattform. Computerhardwarehersteller entwickeln beispielsweise Hauptplatinen, Chipsätze für Hauptplatinen, Zentralverarbeitungseinheiten (CPUs), Festplattenlaufwerke (HDDs), Halbleiterlaufwerke (SSDs) und andere Computerkomponenten. Zusätzlich entwickeln Computerhardwarehersteller als Beschleuniger bekannte Verarbeitungsschaltungsanordnungen zur Beschleunigung der Verarbeitung einer Arbeitslast. Ein Beschleuniger kann beispielsweise durch eine dedizierte Schaltungsanordnung, eine integrierte Schaltung, eine CPU, eine Graphikverarbeitungseinheit (GPU), eine Sichtverarbeitungseinheit (VPU), eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder ein feldprogrammierbares Gate-Array (FPGA) implementiert werden.
- Figurenliste
- Es zeigen:
-
1 ein Blockdiagramm einer beispielhaften Vorrichtung zur konfigurierbaren Arbeitslastausführung, - die
2A -2B Blockdiagramme beispielhafter Implementationen der Vorrichtung aus1 gemäß Lehren der vorliegenden Offenbarung, -
3 eine beispielhafte Arbeitslast gemäß den Lehren der vorliegenden Offenbarung zur Implementation von Faltungsfiltern für ein neuronales Deep-Learning-Netz, -
4 einen beispielhaften Steuerfluss der beispielhaften Vorrichtung aus1 , - die
5 -8 Flussdiagramme, die beispielhafte maschinenlesbare Befehle repräsentieren, die ausgeführt werden können, um die beispielhafte Vorrichtung aus1 zu implementieren, -
9 ein Blockdiagramm einer beispielhaften Verarbeitungsplattform zur Ausführung der Befehle aus den5 -8 , um die beispielhafte Vorrichtung aus1 zu implementieren, und -
10 ein Blockdiagramm einer beispielhaften Verarbeitungsplattform zur Ausführung der Befehle aus den5 -8 , um den beispielhaften Compiler aus1 zu implementieren. - Die Figuren sind nicht maßstabsgerecht. Im Allgemeinen werden in den Zeichnungen und der anliegenden Beschreibung die gleichen Bezugszahlen verwendet, um gleiche oder vergleichbare Teile zu bezeichnen. In den verschiedenen präsentierten Figuren dargestellte Verbindungsleitungen oder Verbinder sollen beispielhafte Funktionsbeziehungen und/oder physikalische oder logische Kopplungen zwischen den verschiedenen Elementen repräsentieren.
- Die Deskriptoren „erster“, „zweiter“, „dritter“ usw. werden hier verwendet, wenn mehrere Elemente oder Komponenten identifiziert werden, auf die getrennt Bezug genommen werden kann. Sofern nicht anderes spezifiziert wird oder auf der Grundlage ihres Verwendungszusammenhangs verständlich ist, sollen solche Deskriptoren keine Bedeutung einer Priorität oder zeitlichen Reihenfolge unterstellen, sondern lediglich im Interesse eines einfachen Verständnisses der offenbarten Beispiele als Bezeichner für die getrennte Bezugnahme auf mehrere Elemente oder Komponenten dienen. Bei einigen Beispielen kann der Deskriptor „erster“ verwendet werden, um ein Element in der detaillierten Beschreibung zu bezeichnen, während das gleiche Element in einem Anspruch mit einem anderen Deskriptor in der Art von „zweiter“ oder „dritter“ bezeichnet werden kann. In solchen Fällen ist zu verstehen, dass diese Deskriptoren lediglich zur einfachen Bezugnahme auf mehrere Elemente oder Komponenten verwendet werden.
- DETAILLIERTE BESCHREIBUNG
- Hier werden Systeme, Vorrichtungen, Verfahren und Herstellungsartikel zur dynamischen Verwaltung der Leistungszuordnung zu Komponenten in einer Rechenvorrichtung in der Art eines Beschleunigers usw. erörtert.
- Viele Computerhardwarehersteller entwickeln als Beschleuniger bekannte Verarbeitungsschaltungsanordnungen zur Beschleunigung der Verarbeitung einer Arbeitslast. Ein Beschleuniger kann beispielsweise durch eine dedizierte Schaltungsanordnung, eine integrierte Schaltung, eine Zentralverarbeitungseinheit (CPU), eine Graphikverarbeitungseinheit (GPU), eine Sichtverarbeitungseinheit (VPU), eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder ein feldprogrammierbares Gate-Array (FPGA) implementiert werden. Überdies sind Beschleuniger, wenngleich sie in der Lage sind, jeglichen Arbeitslasttyp zu verarbeiten, dafür ausgelegt, die Ausführung eines oder mehrerer bestimmter Arbeitslasttypen zu verbessern (beispielsweise zu optimieren usw.). Wenngleich CPUs und FPGAs beispielsweise dafür ausgelegt sind, eine allgemeinere Verarbeitung so behandeln, sind GPUs dafür ausgelegt, die Verarbeitung von Video, Spielen und/oder anderer Berechnungen auf physikalischer und mathematischer Basis zu verbessern, und sind VPUs dafür ausgelegt, die Verarbeitung von Maschinensichtaufgaben zu verbessern.
- Zusätzlich sind einige Beschleuniger spezifisch dafür ausgelegt, die Verarbeitung von Anwendungen der künstlichen Intelligenz (AI) zu verbessern. Wenngleich eine VPU ein spezifischer Typ eines AI-Beschleunigers ist, sind viele verschiedene AI-Beschleuniger verfügbar. Beispielsweise können viele AI-Beschleuniger durch anwendungsspezifische integrierte Schaltungen (ASICs) implementiert werden. Solche ASIC-basierten AI-Beschleuniger können dafür ausgelegt werden, die Verarbeitung von Aufgaben in Bezug auf einen bestimmten AI-Typ in der Art des Maschinenlernens (ML), Deep-Learnings (DL) und/oder andere künstliche maschinengetriebene Logik einschließlich Support-Vector-Maschines (SVMs), neuronaler Netze (NNs), rekurrenter neuronaler Netze (RNNs), faltender neuronaler Netze (CNNs), Long-Short-Term-Memory (LSTM), Gate-rekurrenter Einheiten (GRUs) usw. zu verbessern.
- Computerhardwarehersteller entwickeln auch heterogene Systeme, die mehr als einen Typ von Verarbeitungsschaltung aufweisen. Beispielsweise können Computerhardwarehersteller sowohl eine Verarbeitungsschaltung für allgemeine Zwecke in der Art von CPUs entweder mit Beschleunigern für allgemeine Zwecke in der Art von FPGAs und/oder stärker spezialisierten Beschleunigern in der Art von GPUs, VPUs, ASICs, dedizierter Schaltungsanordnungen und/oder anderer AI-Beschleuniger kombinieren. Solche heterogenen Systeme können als Systems-on-a-Chip (SoCs) implementiert werden.
- Hier wird eine Arbeitslast als eine Kapazität oder Funktion definiert, die einem Beschleuniger und/oder einer anderen Verarbeitungsschaltungsanordnung für die Ausführung zugewiesen oder zugeordnet wird. Beispielsweise sind das Implementieren eines neuronalen Netzes, das Bereitstellen einer virtuellen Maschine, das Einrichten einer Datenbank, das Konfigurieren einer Anwendung usw. Arbeitslasten zur Ausführung durch einen Beschleuniger und/oder eine andere Verarbeitungsschaltungsanordnung. Wenn ein Entwickler eine Funktion, einen Algorithmus, ein Programm, eine Anwendung und/oder einen anderen ausführbaren Befehl auf einem heterogenen System ausführen möchte, erzeugt der Entwickler und/oder Software einen Plan (beispielsweise einen Graphen) für die Funktion, den Algorithmus, das Programm, die Anwendung und/oder einen anderen ausführbaren Befehl zur Kompilierzeit. Sobald ein Plan erzeugt wurde, wird er mit Aspekten der Funktion, des Algorithmus, des Programms, der Anwendung und/oder des anderen ausführbaren Befehls kombiniert, um eine ausführbare Datei zu erzeugen (entweder für Ahead-of-Time- oder Just-in-Time-Paradigmen). Überdies kann der mit der Spezifikation für die Funktion, den Algorithmus, das Programm, die Anwendung und/oder den anderen ausführbaren Befehl kombinierte Plan als ein Knoten aufweisender Graph repräsentiert werden, wobei der Graph eine Arbeitslast repräsentiert und jeder Knoten (beispielsweise ein Arbeitslastknoten) eine bestimmte Aufgabe dieser Arbeitslast repräsentiert. Ferner repräsentieren die Verbindungen zwischen den verschiedenen Knoten im Graphen die Dateneingänge und/oder -ausgänge, die für die Ausführung eines bestimmten Arbeitslastknotens benötigt werden, und repräsentieren die Vertices des Graphs Datenabhängigkeiten zwischen Arbeitslastknoten des Graphs.
- Bei bestimmten Beispielen werden Hardwarebeschleuniger als spezialisierte Hardwareschaltungsanordnung implementiert, die für Deep-Learning- und/oder Künstliche-Intelligenz-Anwendungen verwendet werden kann. Es können Beschleuniger verwendet werden, um Aufgaben des Deep-Learnings und/oder Arbeitslasten der künstlichen Intelligenz zu beschleunigen. Beispielsweise können die Beschleuniger die Geschwindigkeit des Trainings des künstlichen neuronalen Netzes erhöhen. Wenn eine oder mehrere Arbeitslasten durch einen oder mehrere Beschleuniger ausgeführt werden, wird die den Beschleunigern zugeführte Leistung verwaltet, um die Leistungsfähigkeit zu verbessern. Zusätzlich muss die zusätzlichen Verarbeitungsschaltungsanordnungen und/oder Speicher innerhalb des Systems (hier als Beschleunigersystem oder Deep-Leaming-Beschleunigersystem bezeichnet) zugeordnete Leistung für die Ausführung von Arbeitslasten verwaltet werden.
- AI-Anwendungen und zugeordnete Topologien weisen eine Vielzahl von Repräsentationen der numerischen Genauigkeit, verschiedene Datentypen und -größen und hochentwickelte Latenz- und Leistungsanforderungen auf. Die Arbeitslasten, Topologien und Algorithmen in Bezug auf AI-Technologien ändern sich häufig. Zusätzlich weisen einige AI-Arbeitslasteigenschaften eine innere Schicht-zu-Schicht-Variation in Bezug auf die Rechen- und/oder Bandbreitenverwendung von Rechenvorrichtungen auf.
- Hier werden Fortschritte bei der Feinabstimmung verschiedener Leistungsanforderungen von Komponenten einer Rechenvorrichtung (beispielsweise eines Beschleunigers) während der Ausführung einer Arbeitslast in der Art einer AI-Arbeitslast usw. erörtert. Traditionelle Leistungsverbesserungs(beispielsweise Optimierungs)-Verfahren berücksichtigen nicht Unterschiede im AI-Arbeitslastverhalten. Zusätzlich weisen bei einigen Beispielen AI-Arbeitslasten domänenspezifische Verbesserungs(beispielsweise Optimierungs)-Gelegenheiten auf, weil solche AI-Arbeitslasten ein regelmäßigeres (beispielsweise vordefiniertes, erwartetes usw.) Verhalten aufweisen als gewöhnliche Client-Anwendungen. Bei einigen hier offenbarten Beispielen können frühere oder fortschrittliche Kenntnisse Leistungsverbesserungs(beispielsweise Optimierungs)-Hinweise und/oder Anweisungen bereitstellen, die in hardwareunterstützten Leistungsverwaltungsschaltungen besser verwendet werden können.
- Hier offenbarte Beispiele weisen einen Hardware/Software-Coentwurf auf, der Compilerkenntnisse einer AI-Arbeitslast ausnutzt, um die Leistungsverwaltung einer Leistungssteuerschaltung(hier auch als Leistungssteuereinheit oder p-Einheit bezeichnet)-Treiberkonfiguration und die Ausführung eines Beschleunigers und/oder einer anderen Rechenvorrichtung zu treiben. Komponenten der Rechenvorrichtung, einschließlich beispielsweise eines AI-Beschleunigers (oder eines Teils davon) und/oder anderer Leistungsverbrauchsschaltungen, verhandeln mit der Leistungssteuerschaltung Leistungs- und Leistungsfähigkeitsverbesserungen (beispielsweise Optimierung). Die Kenntnis der Arbeitslast-Leistungsfähigkeit, die vom Compiler analysiert, verarbeitet und geteilt wird, umfasst bei einigen Beispielen Daten in Bezug auf den Betrieb der Leistungsverbrauchseinheiten in Form einer konfigurierbaren Tabelle oder eines konfigurierbaren Graphs von Leistungspegeln, die entsprechend verschiedenen Arbeitslastszenarien der Leistungsverbrauchseinheiten abgestimmt sind. Ein Leistungsmanager konsolidiert Anforderungen von Leistung durch die Leistungsverbrauchsschaltungen und bestimmt eine Tabelle von Frequenzwerten (beispielsweise Taktfrequenzen usw.) zum Treiben der Leistungssteuerschaltung, um den Leistungsverbrauchsschaltungen unter Verwendung der vom Compiler geteilten Kenntnisse Leistung zuzuführen. Ein Index oder Pegel in der Leistungstabelle von Frequenzwerten gibt den Pegel der Leistung an, die den Leistungsverbrauchsschaltungen beispielsweise während eines Zeitraums bereitzustellen ist.
- Hier offenbarte Beispiele sehen ein einzigartiges und flexibles Verfahren von Leistungs- und Leistungsfähigkeitsverbesserungen (beispielsweise Optimierung) für AI-Trainings- und Inference-Arbeitslasten vor, wodurch eine on-the-Fly und/oder auf andere Weise dynamisch erfolgende schnelle und wirksame Verbesserung (beispielsweise Optimierung) der Leistungszuordnung ermöglicht wird. Die Verwendung der vom Compiler analysierten und entwickelten hochentwickelten Kenntnisse ist für AI-Arbeitslasten und -Graphen einzigartig. Ferner kann die Compiler-Aktivität offline statt während einer Laufzeit oder Ausführungsphase der Rechenvorrichtung geschehen. Zusätzlich verwendet eine leistungsbewusste Kompilierung oder eine vom Compiler angeleitete Leistungszuordnung die hochentwickelten Kenntnisse oder Daten beim Kompilierprozess und ermöglicht es der Leistungsverwaltungshardware in der Art des Leistungsmanagers, der Leistungssteuerschaltung usw., genaue Leistungsbestimmungen vorzunehmen, die Leistungsrichtlinie dynamisch und feinkörnig zu steuern, die Notwendigkeit von Leistungsschutzbändern zu verringern und den verschiedenen Schaltungsanordnungen, die in der Rechenvorrichtung arbeiten, welche jeweils ihre eigenen Leistungsverwendungseigenschaften aufweisen, bessere Dienstqualitäten bereitzustellen.
- Bestimmte Beispiele sehen eine dynamische Leistungssteuereinrichtung oder einen dynamischen Leistungsmanager zum Bestimmen von Frequenzänderungen auf der Grundlage kombinierter Anforderungen von Arbeitslasten, die auf einem Beschleuniger laufen, und zur Regelung des Leistungsbudgets auf der Grundlage der bestimmten Frequenzänderungen vor. Die kombinierten Anforderungen sind vorab bekannt.
- Frühere Leistungsverbesserungs(beispielsweise Optimierungs)- und -verwaltungslösungen beruhten nur auf einer Vorgeschichte ausgeführter Arbeitslasten. Auf der Grundlage dieser Vorgeschichte von Heuristiken und der tatsächlichen Leistungsfähigkeit versuchten sie, Leistungsentscheidungen im Laufe der Zeit zu verbessern. Diese früheren Ansätze wiesen jedoch keine Vorabkenntnisse (beispielsweise durch die Analyse von Befehlen usw. bestimmte Metadaten) der Natur der ausgeführten Arbeitslasten auf. Demgemäß sind diese früheren Ansätze nicht in der Lage, Ausführungsmuster zu erkennen. Dabei können statische Heuristiken, die in der Leistungssteuereinrichtung existieren, in manchen Fällen vorteilhaft sein, sie können jedoch in anderen Fällen eine Verschlechterung der Leistungsfähigkeit hervorrufen. Bei diesen früheren Ansätzen gibt es keine Möglichkeit, das Verhalten dynamisch zu modifizieren.
- Dagegen adressieren bestimmte hier offenbarte Beispiele diese Mängel durch Bereitstellen einer Vorrichtung und eines zugeordneten Verfahrens für eine Software-/Hardwareschnittstelle, wodurch die Leistungsverwaltungsrichtlinie zur Verringerung oder Erhöhung des Leistungsbudgets bestimmt wird. Die Schnittstelle offenbart eine Leistungstabelle, die durch Softwareleistungsverwaltung aktualisiert werden kann, wobei sowohl vorkompilierte Anforderungen von verschiedenen auf der Rechenvorrichtung laufenden Arbeitslasten als auch Verwaltungsschnittstellenanforderungen, die während der Ausführung auftreten können, einbezogen werden.
- Bestimmte Beispiele sehen eine dynamische Leistungsverbesserung (beispielsweise Optimierung) oder Verwaltungsheuristiken unter Einschluss von Leistungsheuristiken, die durch Aktualisieren einer Leistungstabelle dynamisch modifiziert werden können, die Ausführung von Leistungsfähigkeitsexperimenten und die Feinabstimmung von Leistungspegeln oder -indizes und die Pegel-/Indexauswahl innerhalb der Leistungstabelle vor. Ferner bestimmt der Compiler während des Kompilierens einer Arbeitslast ein gewünschtes Frequenzverhältnis zwischen Rechen- und Bandbreitenressourcen für verschiedene Teile oder Abschnitte der Arbeitslastausführung. Der Compiler kann Frequenzverhältnisanforderungen für verschiedene Abschnitte der Arbeitslastausführung aggregieren, um Pegel oder Indizes der Frequenzverteilung in der Leistungstabelle zu bilden, die sich im Laufe der Zeit ändern können. Laufzeitsoftware an der Rechenvorrichtung kann ausgeführte Arbeitslasten verwalten und beispielsweise Heuristiken zur Bedienung laufender Arbeitslasten bereitstellen.
- Bei Deep-Learning-Beschleunigern wird beispielsweise ein im Wesentlichen endlicher Satz von Operationen für das Bilden von Arbeitslasten verwendet. Diese Arbeitslasten werden unter Verwendung eines dedizierten Compilers kompiliert und auf dem Beschleuniger ausgeführt. Diese Arbeitslastoperationen weisen Rechen- und Bandbreiteneigenschaften auf, die sich erheblich beispielsweise auf der Grundlage davon ändern können, welche Schicht des Netzmodells durch den Beschleuniger implementiert wird (sei es beispielsweise eine rechenintensive Schicht, die viele Rechenoperationen aufweist, eine speicherzugriffsintensive Schicht, die viele Datenübertragungs-/Lade-/Speicheroperationen aufweist, usw.), und sie weisen demgemäß unterschiedliche Frequenzverhältnisanforderungen auf.
- Zur Verbesserung der Leistungsfähigkeit muss eine Leistungssteuereinrichtung an der Rechenvorrichtung eine holistische Sicht der Frequenzanforderungen der insgesamt am Beschleuniger ausgeführten Arbeitslasten haben. Die Leistungssteuereinrichtung berücksichtigt externe Leistungsanforderungen (beispielsweise thermische Randbedingungen usw.) und Arbeitslastanforderungen zur Bestimmung von Frequenzen für die Leistungszuordnung zu Systemkomponenten (beispielsweise Speicherressourcen, Rechenressourcen usw.).
- Bestimmte Beispiele sehen einen Leistungsmanager oder eine Leistungssteuereinrichtung zum Erzeugen, Aktualisieren und/oder anderweitigen Behandeln einer Leistungstabelle vor, welche Leistungspegel und Frequenzverhältnisse zwischen Rechenstrukturen (beispielsweise Beschleunigern usw.) und Speicherstrukturen des Rechensystems (beispielsweise des Deep-Learning-Beschleunigersystems usw.) speichert. Frequenzanforderungen (beispielsweise ein auch als Arbeitsverhältnis bezeichnetes Frequenzverhältnis usw.) für Komponenten des Systems sind beispielsweise Teil der Kompilierung von Deep-Learning-Anwendungen für die Ausführung auf dem System.
- AI-Beschleuniger weisen einen endlichen Satz zu einer gegebenen Zeit auf dem Beschleuniger ausgeführter Arbeitslasten auf. Der Compiler kann die Arbeitslastausführung verbessern (beispielsweise optimieren) und verschiedenen Teilen des die eine oder die mehreren kompilierten Arbeitslasten repräsentierenden Graphs unterschiedliche Frequenzverhältnisse bereitstellen (beispielsweise Cache gegenüber Rechenschaltung, Speicher gegenüber Beschleuniger usw.). Ein Laufzeitstapel kann diese Hinweise entgegennehmen und eine dynamische Leistungstabelle bilden und Leistungsheuristiken ausführen, die auf Compilerleistungshinweisen zusammen mit Echtzeitüberlegungen mehrerer auf der Rechenvorrichtung laufender Arbeitslasten beruhen.
- Der Compiler kann einen Satz dynamischer Spannungs- und Frequenzskalier(DVFS)-Punkte erzeugen, der beispielsweise auf einer Ganzgraphebene und/oder innerhalb des Graphs aufgelöst werden kann. Auf der Graphebene kann beispielsweise ein DVFS-Verhältnis für den gesamten Graph (beispielsweise Speicher zu Cache zu Beschleuniger usw.) erzeugt werden. Bei einigen Beispielen kann die Rechenschaltungsfrequenz innerhalb eines Graphs geändert werden. Demgemäß arbeitet der Compiler mit einem Leistungsmanager zusammen, um mehrere Leistungslösungen in Zusammenhang mit der Kompilierung von Arbeitslastfunktionen zu erzeugen, und kann der Leistungsmanager der Rechenvorrichtung (beispielsweise des Beschleunigersystems usw.) aus den Leistungslösungen für den Betrieb auswählen.
- Der Leistungsmanager weist Laufzeitsoftware zur Bildung einer dynamischen Leistungstabelle, die von der Leistungssteuereinrichtung verwendet wird, wenn eine Leistungsänderung vorzunehmen ist, auf und/oder besteht daraus. Dabei beruht eine Entscheidung zur Leistungsänderung statt nur auf Heuristik zusätzlich oder alternativ beispielsweise auf echten Arbeitslastinformationen. Die Leistungstabelle kann beispielsweise auf der Grundlage von Anforderungen zum Hinzufügen einer oder mehrerer Arbeitslasten zur Ausführung durch die Rechenvorrichtung und/oder zum Entfernen der Arbeitslasten aus der Ausführung durch die Rechenvorrichtung aktualisiert werden. Der Leistungsmanager kann Frequenzverhältnisse für jede Arbeitslast und eine zugeordnete relative Frequenzänderung von Komponenten auf der Grundlage beispielsweise des Hinzufügens von Arbeitslasten zur Ausführung durch das Beschleunigersystem und/oder eine andere Rechenvorrichtung und/oder des Entfernens der Arbeitslasten davon dynamisch bestimmen und aktualisieren. Der Leistungsmanager soll einen Index oder Pegel bestimmen, der beispielsweise jedem Frequenz-/Arbeitsverhältnis in der Leistungstabelle entspricht. Die Leistungssteuereinrichtung kann den Leistungsverbrauch des Systems auf der Grundlage des Index/Pegels in der Leistungstabelle bestimmen und beispielsweise auf der Grundlage des Leistungsbudgets und des Leistungsverbrauchs feststellen, ob der Index/Pegel aktualisiert werden soll.
-
1 ist ein Blockdiagramm einer beispielhaften Vorrichtung100 für eine konfigurierbare Arbeitslastausführung. Die beispielhafte Vorrichtung100 weist ein Prozessorsystem110 , einen Speicher120 und einen Compiler130 auf. Die beispielhafte Vorrichtung100 kann ein AI-Beschleuniger zur Ausführung mehrerer AI-Arbeitslasten usw. sein. Die beispielhafte Vorrichtung100 kann mehrere Implementationen aufweisen. Beispielsweise kann die Vorrichtung100 als System-on-a-Chip (SoC) implementiert werden. Die Vorrichtung100 kann beispielsweise als mehrere getrennte Schaltungen implementiert werden. Bei einigen Beispielen werden das Prozessorsystem110 und der Speicher120 als eine erste Vorrichtung implementiert, wobei sich der Compiler130 auf einer zweiten Vorrichtung befindet, die in Kommunikation mit der ersten Vorrichtung steht. Bei bestimmten Beispielen stehen das Prozessorsystem110 und/oder der Speicher120 durch einen Kompilier-Blob und/oder andere Drahtloskommunikation ohne eine direkte Hardwareverbindung in Kommunikation mit dem Compiler130 . Bei anderen Beispielen weisen das Prozessorsystem110 , der Speicher120 und der Compiler eine festverdrahtete Kommunikationsstrecke auf. - Der Betrieb der Vorrichtung
100 wird nachstehend in Zusammenhang mit bestimmten Beispielen beschrieben. Kurz gesagt, bestimmt das beispielhafte Prozessorsystem110 eine Konfiguration seiner Prozessorschaltungsanordnung und/oder seines Speichers120 , die darin aufgenommen sind, zur Ausführung einer oder mehrerer Arbeitslasten auf der Grundlage vom beispielhaften Compiler130 erhaltener Daten, und/oder es führt Deep-Learning- und/oder andere AI-Arbeitslasten unter Verwendung der bestimmten Konfiguration aus. Bei bestimmten Beispielen weist das Prozessorsystem110 einen oder mehrere Beschleuniger auf. Andere Rechenschaltungsanordnungen in der Art von Prozessoren, andere Schaltungsanordnungen usw. können auch in das Prozessorsystem110 aufgenommen sein. Das Prozessorsystem110 weist auch eine Leistungsverwaltung in der Art eines Leistungsmanagers oder Leistungstreibers, einer Leistungssteuereinrichtung usw. auf. Bei einigen Beispielen kann das Prozessorsystem110 auch einen vom Speicher120 getrennten On-Board-Speicher zum Cachen von Befehlen, einer Leistungstabelle, anderer Konfigurationsinformationen usw. aufweisen. - Der beispielhafte Speicher
120 speichert Daten in der Art ausführbarer Anwendungsinformationen, Konfigurationsinformationen, Leistungstabelleninformationen usw. Der beispielhafte Speicher120 kann als Direktzugriffsspeicher (RAM) in der Art eines synchronen dynamischen RAMs (SDRAMs) mit doppelter Datenrate (DDR), eines Last-Level-Caches (LLC) usw. implementiert sein. - Der beispielhafte Compiler
130 kompiliert wenigstens eine Arbeitslast wenigstens einer Deep-Learning- und/oder anderen AI-Anwendung. Ansprechend auf die Kompilierung wenigstens einer Arbeitslast bestimmt das beispielhafte Compilersystem140 von Systemkomponenten verwendete Daten in der Art von Arbeitsverhältnissen für jede Arbeitslast und/oder der relativen Frequenzänderung wenigstens eines Beschleunigers usw. Das beispielhafte Compilersystem140 bietet wenigstens einer Deep-Learning-Anwendung Zugriff auf das beispielhafte Prozessorsystem110 durch Kompilieren der Anwendung für die Ausführung unter Verwendung des Prozessorsystems110 und durch Versehen des Prozessorsystems110 mit Eigenschaften und/oder anderen Ausführungsinformationen, um es dem Prozessorsystem110 zu ermöglichen, beispielsweise Frequenzverhältnisse zur Leistungszuordnung zu Schaltungsanordnungen des Prozessorsystems110 zu bestimmen. - Dabei weist die beispielhafte Vorrichtung
100 einen oder mehrere AI-Beschleuniger zur Ausführung von AI-Arbeitslasten auf. Beispielsweise kann die Vorrichtung100 dafür ausgelegt sein, Deep-Learning-Inference-Arbeitslasten auszuführen. Der Compiler130 empfängt beispielsweise eine Neuronales-Netz-Repräsentation und gibt beispielsweise Informationen aus, die mit spezifischen Inferences ausgeführt werden können, die für eine Deep-Learning-Arbeitslast optimiert oder auf andere Weise darauf zugeschnitten sind. Eine beispielhafte Arbeitslast weist Rechenaufgaben und Speicherbandbreitenaufgaben auf. Jede Arbeitslast weist ein anderes Verhältnis von Rechen- zu Speicheraufgaben auf. Der Compiler130 erzeugt Befehle zur Ausführung durch einen oder mehrere Beschleuniger des Prozessorsystems110 und kann auch Informationen für den Compiler130 und/oder das Prozessorsystem110 erzeugen, um ein Verhältnis von Frequenzen (hier auch als Leistungsfrequenzen in der Art von Taktfrequenzen usw. bezeichnet) zwischen Rechenressourcen und Speicherressourcen im Prozessorsystem110 , das an der Ausführung der Arbeitslast beteiligt ist, zu bestimmen. Informationen vom Compiler130 können zur Erzeugung zugeschnittener, dynamischer und genauerer Bestimmungen der Leistungszuordnung und -erzeugung für die Arbeitslastausführung durch das Prozessorsystem110 verwendet werden. - Bei bestimmten Beispielen können ein oder mehrere Beschleuniger zur Ausführung einer oder mehrerer Arbeitslasten verwendet werden. Es können beispielsweise mehrere Beschleuniger integriert werden. Zusätzlich oder alternativ können mehrere Beschleuniger die Kohärenz durch den geteilten Speicher
120 , ein konvergiertes Kohärenz-Fabric (CCF) usw. aufrechterhalten. Ein spezifisches Frequenzverhältnis kann erzeugt werden, um Leistung zwischen Rechen- und Speicherressourcen zuzuordnen, um zu ermöglichen, dass die eine oder die mehreren Arbeitslasten unter Verwendung des Prozessorsystems110 und des Speichers120 ausgeführt werden. Dementsprechend können, statt sich auf vorab festgelegte Heuristiken zur Zuordnung von Leistung zu verlassen, Eigenschaften gegenwärtig ausgeführter Arbeitslasten ausgenutzt werden, um die Leistungszuordnung on-the-fly zu erzeugen und zu aktualisieren. Wenn sich eine oder mehrere Arbeitslasten ändern, können sich das Prozessorsystem110 und der Speicher120 anpassen. Informationen in Bezug auf ein Verhältnis von Rechenaufgaben und Speicherbandbreitenaufgaben können durch den Compiler130 in einer Kompilierphase bestimmt werden und vom Prozessorsystem110 (beispielsweise durch einen Leistungsmanager, auch als Leistungstreiber bezeichnet, im Prozessorsystem110 ) verwendet werden, um zur Arbeitslastlaufzeit die Frequenzzuordnung zur Bereitstellung von Leistung zur Schaltungsanordnungen des Prozessorsystems110 und des Speichers120 dynamisch festzulegen. Eigenschaften in der Art von Rechenbefehlen (beispielsweise arithmetischen Befehlen, Logikbefehlen usw.), Speicherbefehlen (beispielsweise Ladebefehl, Speicherbefehlen, Verschiebungsbefehlen, anderen Datenübertragungsbefehlen usw.) jeder ausgeführten Arbeitslast werden bei der Zuordnung berücksichtigt, und das Verhältnis (beispielsweise ein Verhältnis von Rechenbefehlen zu Speicherbefehlen (beispielsweise 3:2, 2:3, 1:5, 5:1 usw.) für eine Arbeitslast oder einen Teil davon usw.) bleibt bestehen, bis beispielsweise eine Arbeitslast zur Ausführung hinzugefügt oder aus dieser entfernt wird. -
2A ist ein Blockdiagramm einer beispielhaften Implementation der beispielhaften Vorrichtung100 aus1 . Bei der Implementation aus2A weist die beispielhafte Vorrichtung100 das beispielhafte Prozessorsystem110 und den Speicher120 auf, die als System-on-a-Chip200 implementiert sind, das in Kommunikation mit dem beispielhaften Compiler130 steht. Wie beim Beispiel aus2A dargestellt ist, stellt der Compiler130 Arbeitslastinformationen210 , einschließlich eines oder mehrerer ausführbarer Deep-Learning-Arbeitslastprogramme und zugeordneter Eigenschaften (beispielsweise Rechen- und Speicheranforderungen/Verhältnis usw.) für die Ausführung der Arbeitslast bereit. Beispielsweise kann der Compiler130 Arbeitslastinformationen210 in der Art von Deep-Learning-Inference-Arbeitslastinformationen unter Einschluss einer Modellkonfiguration eines trainierten neuronalen Netzes zum Ableiten oder Vorhersagen von Testproben und zugeordneter Eigenschaften in Bezug auf die Rechen- und Speicherbandbreitenverwendung für Inference-Phasen bereitstellen. Beispielsweise kann der Compiler130 den Quellcode, der ausführbare Befehle für die Arbeitslast repräsentiert, analysieren, um den Befehlstyp, die Befehlsfunktion usw. zu extrahieren, um den Befehl als einen rechenbezogenen Befehl (beispielsweise eine arithmetische Aktion, eine logische Aktion usw.) oder einen auf den Speicherzugriff bezogenen Befehl (beispielsweise eine Speicher- oder andere Datenübertragungsaktion usw.) zu klassifizieren. - Das in
2A dargestellte beispielhafte Prozessorsystem110 weist das Prozessorsystem110 , den Speicher120 , einen Leistungsmanager220 , einen Leistungstabellenspeicher240 und eine Leistungssteuereinrichtung260 auf. Der beispielhafte Leistungsmanager220 weist einen Leistungsverwaltungsprozessor222 , einen Tabellengenerator224 und einen Indexbestimmer226 auf. Das beispielhafte Prozessorsystem110 aus2A weist mehrere Beschleuniger232 - 236 sowie einen Arbeitslastverwaltungsprozessor238 auf. Wenngleich im Beispiel aus2A drei Beschleuniger232 - 236 und ein Arbeitslastverwaltungsprozessor238 dargestellt sind, kann im Prozessorsystem110 eine beliebige Anzahl von Beschleunigern232 - 236 und Arbeitslastverwaltungsprozessoren238 implementiert werden. Der beispielhafte Leistungstabellenspeicher240 , der vom Speicher120 getrennt sein kann und/oder diesen aufweisen kann, die Leistungssteuereinrichtung260 usw. speichern einen oder mehrere Indizes241 , die jeder von mehreren Komponenten einen Frequenzbereich242 - 245 zuordnen. Der beispielhafte Speicher120 aus2A weist einen geteilten Cache252 (beispielsweise einen LLC usw.) und eine Speicherbaugruppe254 in der Art von DDR-DRAM, DDR-SDRAM usw. auf. - Der Leistungsverwaltungsprozessor
222 des Leistungsmanagers220 verarbeitet die Arbeitslastinformationen210 vom Compiler130 , um das Verhältnis von Rechenressourcen zu Speicherbandbreitenressourcen für die Ausführung der Arbeitslast zu bestimmen. Beispielsweise weist der Compiler130 , wie in2A dargestellt ist, einen Empfänger211 zum Empfangen von Programmquellcode zur Kompilierung, einen Analysator213 zum Analysieren des Codes, einen Codegenerator215 zum Kompilieren oder Erzeugen eines ausführbaren Programms anhand des empfangenen Quellcodes und einen Ausgang217 zur Bereitstellung des durch das SoC200 auszuführenden ausführbaren Programms auf. Der Code kann Befehle zur Konfiguration und Ausführung einer Arbeitslast in der Art eines Inferencings eines Deep-Learningneuronalen Netzes usw. aufweisen. Der Codegenerator215 bildet das ausführbare Programm anhand des Quellcodes, und der Analysator213 verarbeitet den Code zur Bestimmung eines Vergleichs oder Verhältnisses zwischen Rechenaufgaben und Speicherzugriffsaufgaben im ausführbaren Programm. Beispielsweise kann der Analysator213 dynamische Spannungs- und Frequenzskalierungs (DVFS)-Übergangs-/Optimierungspunkte und zugeordnete Frequenz- oder Arbeitsverhältnisse anhand der Codeanalyse bestimmen. Beispielsweise kann der Analysator213 durch Analysieren von Maschinenbefehlen feststellen, welche Operationen Berechnungen aufweisen und welche Operationen einen Speicherzugriff oder eine Speicherübertragung aufweisen (beispielsweise durch Feststellen, welche Befehle Datenübertragungsbefehle sind (beispielsweise Verschieben, Laden, Eingeben, Ausgeben) und welche Befehle arithmetische Befehle (beispielsweise Addieren, Subtrahieren, Inkrementieren, Dekrementieren, Umwandeln, Vergleichen usw.) oder Logikbefehle (beispielsweise UND, ODER, Exklusiv-ODER, Verschieben, Drehen, Testen usw.) sind). Der Analysator213 kann dann feststellen, an welchem Punkt oder welchen Punkten die Ausführung der Arbeitslast rechenintensiv, speicherbandbreitenintensiv usw. sein soll. - Bei bestimmten Beispielen führt der Analysator
213 zwei Durchgänge von Code- und Leistungsoptionen aus, um einen oder mehrere DVFS-Übergangs-(beispielsweise Optimierungs)-Punkte zu erzeugen. Beispielsweise führt der Analysator213 einen anfänglichen Durchgang zur Bestimmung einer DVFS-Lösung als genähertes Inference pro Sekunde ohne Leistungsänderungen aus. Auf der Grundlage der Leistungbudgetinformationen kann ein zweiter Durchgang ein nach dem ersten Durchgang verbleibendes Leistungsbudget verwenden, um eine Teilmenge von Frequenzen für die Ausführung der Arbeitslast hinzuzufügen. Es kann eine Leistungskonfguration bestimmt werden, welche beispielsweise die geringste Ausführungszeit unter Verwendung eines gültigen Leistungsbudgets bereitstellt. - Der Ausgang
217 erzeugt Arbeitslastinformationen210 , einschließlich beispielsweise des ausführbaren Programms und des zugeordneten Verhältnisses, den DVFS-Punkt, andere Codeinformationen usw. vom Analysator213 und vom Codegenerator215 . Bei einigen Beispielen können mehrere Arbeitslastübergangspunkte (beispielsweise die obersten drei, fünf usw.) für die Verwendung durch den Leistungsmanager220 ausgegeben werden. - Der Leistungsverwaltungsprozessor
222 empfängt eine neue zur Ausführung auf dem Satz von Beschleunigern232 - 236 eingeplante Arbeitslast. Die Arbeitslastinformationen210 vom Compiler130 können (beispielsweise als Metadaten repräsentierte) Arbeitslastleistungseigenschaften in der Art einer Liste von Frequenzen und/oder eines Satzes eines oder mehrerer Optimierungspunkte, bei denen die Arbeitslast laufen sollte, aufweisen. Beispielsweise kann ein anfänglicher Teil der Arbeitslast bandbreitenintensiv sein und viel Speicherzugriff aufweisen, während ein späterer Teil der Arbeitslast rechenintensiv sein kann und einen oder mehrere Beschleuniger232 - 236 und/oder einen anderen Prozessor238 im Prozessorsystem110 aufweisen kann. Der Leistungsverwaltungsprozessor222 konsolidiert Leistungsinformationen für eine oder mehrere laufende Arbeitslasten auf der Grundlage der Arbeitslastinformationen210 und veranlasst den Leistungstabellengenerator224 , die Leistungstabelle240 zu erzeugen und/oder zu aktualisieren, wenn sich beispielsweise eine oder mehrere auf dem SoC200 ausgeführte Arbeitslasten ändern. Der Leistungsverwaltungsprozessor222 liest einen aktuellen Leistungspegel von der Leistungssteuereinrichtung260 und bestimmt neue Leistungspegel durch Konsolidieren von Arbeitslastanforderungen und zugeordneten Leistungseigenschaften. - Der beispielhafte Leistungstabellengenerator
224 erzeugt und/oder aktualisiert die Leistungstabelle im Leistungstabellenspeicher240 auf der Grundlage des Verhältnisses zwischen der Rechenleistung und der Speicherleistung und eines oder mehrerer Frequenzverhältnisse (auch als Arbeitsverhältnisse bezeichnet), die durch den Leistungsverwaltungsprozessor222 bestimmt wurden. Der beispielhafte Tabellengenerator224 speichert jedes integrierte Arbeitsverhältnis in einer Zeile oder einem Eintrag der Leistungstabelle innerhalb des beispielhaften Leistungstabellenspeichers240 . Jede Zeile der Leistungstabelle entspricht einer Arbeitsverhältnisoption (beispielsweise Arbeitsfrequenzen für das Prozessorsystem110 gegenüber Arbeitsfrequenzen für den Speicher120 usw.) für das beispielhafte Prozessorsystem110 und den Speicher120 , um wenigstens eine Arbeitslast auszuführen. Wie beim Beispiel aus2A dargestellt ist, speichert der Leistungstabellenspeicher240 einen Index241 , der eine Leistungsfrequenzzuordnung (und in manchen Fällen eine akzeptable Variation) für jede der verfügbaren Komponenten festlegt, beispielsweise die Arbeitslastverwaltungsprozessor-Zuordnung242 , die Cache-Zuordnung243 , die Beschleunigerzuordnung244 , die Speicherzuordnung245 usw. Der Tabellengenerator224 veranlasst den Indexbestimmer126 , einen Index in der Leistungstabelle zu aktualisieren, wenn die Leistungstabelle im Leistungstabellenspeicher240 erzeugt und/oder aktualisiert wurde. - Beispielsweise zeigt die nachstehende Tabelle 1 eine im Leistungstabellenspeicher
240 gespeicherte beispielhafte Leistungstabelle, die Pegel oder Indizes241 von Frequenzinformationen für die Leistungssteuereinrichtung260 definiert. Für jeden Pegel/Index 241 weisen das Prozessorsystem110 und der Speicher120 eine zugeordnete Frequenz und/oder einen zugeordneten Leistungspegel auf, die durch die Leistungssteuereinrichtung260 (auch als Leistungssteuereinheit oder „p-Einheit“ bezeichnet) zuzuordnen/zuzuweisen sind. Jeder Index 241 repräsentiert einen Schritt oder ein Inkrement der Änderung für die zugeordnete Schaltung (beispielsweise 25 MHz, 100 MHz usw.). Beispielsweise gibt hoch hohe Speicherzugriffe an, gibt mittel einige Speicherzugriffsanforderungen an und gibt niedrig keine Verwendung des Speichers während des Inferencings an. Bei einigen Beispielen werden niedrig, mittel und hoch bei der Herstellung der Schaltung festgelegt und entsprechen einer bestimmten Einstellung oder einem bestimmten Bereich (beispielsweise niedrig = 700 MHz, mittel = 1700 MHz, hoch = 3000 MHz usw.). Tabelle 1. Beispielhafte Leistungstabellenschnittstelle zwischen Compiler und Laufzeit- Leistungsverwaltung.Index PROZ CACHE ACC1 ACC2 ACC3 MEM 0 1000 500/+20 500 Niedrig 1 1000 600/+30 500 500 Niedrig 2 1500 600/+30 600 500 Mittel 3 500 1500 600/+20 600 Mittel ... ... ... ... ... ... ... N 2000 600/-20 600 500 Hoch - Bei bestimmten Beispielen kann ein Verhältnis als ein Übergangs- oder Verbesserungs(beispielsweise Optimierungs)-Punkt ausgedrückt werden, bei dem sich ein Gleichgewicht zwischen Rechenressourcen und Speicherressourcen entsprechend der Arbeitslastausführung ändert. Wie beim Beispiel aus Tabelle 1 dargestellt ist, ändert sich ein DVFS-Übergangs-/Verbesserungspunkt entsprechend dem Index oder Pegel in der Leistungstabelle. Bei bestimmten Beispielen kann eine akzeptable Änderung oder ein akzeptabler Änderungsbetrag spezifiziert werden, um die Leistungssteuereinrichtung
260 bei der Einstellung und Zuordnung von Leistungsfrequenzen zum SoC200 zu unterstützen. Beispielsweise kann der erste Beschleuniger ACC1 am Index 2 beim Beispiel der Leistungstabelle 1 bei 600 MHz zugeordnet werden. Die Leistungssteuereinrichtung260 kann diesen Wert jedoch bis auf 630 MHz einstellen, bevor ein anderer Index in der Tabelle erforderlich wird. Beim Index N kann der Beschleuniger 1 noch immer bei 600 MHz zugeordnet werden, eine vermindernde Einstellung auf 580 MHz ist jedoch beim Index N erlaubt, bevor eine Auswahl eines anderen Index ausgelöst wird. - Der beispielhafte Indexbestimmer
226 bestimmt einen Index entsprechend einer Zeile oder einem Pegel der beispielhaften Leistungstabelle (beispielsweise Tabelle 1 usw.) im Speicher240 . Bei bestimmten Beispielen kann ein Standardindex in der Art des Index 0 für die automatische Auswahl durch die Leistungssteuereinrichtung260 spezifiziert werden, um die Leistungszuordnung/-verwendung des SoCs200 zu konfigurieren. Der Indexbestimmer226 kann jedoch beispielsweise die Leistungstabelle für Ressourceninformationen des Speichers240 und des SoCs200 analysieren, um an Stelle eines Standardindex0 einen anderen Index (beispielsweise Index 2, Index N usw.) zu bestimmen und der Leistungssteuereinrichtung260 zu empfehlen. Beispielsweise kann der Indexbestimmer226 auf der Grundlage eines aktuellen Index für die Leistungstabelle einen aktualisierten Index für die Leistungstabelle im Leistungstabellenspeicher240 berechnen und den aktualisierten Index zur Leistungssteuereinrichtung260 übertragen. - Die Leistungssteuereinrichtung
260 kann entsprechend einer Leistungskonfiguration arbeiten, die an einem ausgewählten Index in der im Speicher240 gespeicherten Leistungstabelle spezifiziert ist. Bei bestimmten Beispielen berechnet die Leistungssteuereinrichtung260 den Leistungsverbrauch für das SoC200 , um festzustellen, ob sich die Systeme des SOCs200 innerhalb eines zugeordneten Leistungsbudgets befinden. Die Leistungssteuereinrichtung260 kann den Leistungsverbrauch durch entsprechendes Erhöhen oder Verringern der Zuordnung durch Aufwärts- oder Abwärtsbewegen zwischen Indizes in der Leistungstabelle einstellen. Dementsprechend kann, wenn mehr Leistung für die Zuordnung verfügbar ist, ein Index in der Leistungstabelle mehr Leistung zuordnen, und kann, wenn weniger Leistung für die Zuordnung verfügbar ist, ein anderer Index in der Leistungstabelle weniger Leistung zuordnen. Ferner kann, wenn die eine oder die mehreren ausgeführten Arbeitslasten mehr Rechenressourcen fordern, ein Index in der Leistungstabelle dem einen oder den mehreren Beschleunigern232 - 236 , dem Arbeitslastverwaltungsprozessor238 usw. an Stelle des Speichers120 mehr Leistung zuordnen. Wenn die eine oder die mehreren ausgeführten Arbeitslasten einen größeren Speicherbandbreitenbedarf aufweisen, kann ein anderer Index in der Leistungstabelle dem Speicher120 jedoch beispielsweise an Stelle des Prozessorsystems110 mehr Leistung zuordnen. - Wie beim Beispiel aus
2A dargestellt, weist die beispielhafte Leistungssteuereinrichtung260 einen Verbrauchsberechner262 , einen Vergleicher264 und einen Wähler266 auf. Wie vorstehend erörtert wurde, wird die Leistungssteuereinrichtung260 durch den Leistungsmanager220 über eine Aktualisierung des Leistungstabellenspeichers240 benachrichtigt. Der Verbrauchsberechner262 berechnet den Leistungsverbrauch infolge der Ausführung einer oder mehrerer Arbeitslasten auf dem SoC200 und Informationen vom Leistungsmanager220 . Dabei kann der Verbrauchsberechner262 einen aktuellen Leistungspegel für das SoC200 bestimmen. Der Vergleicher264 kann den aktuellen Leistungspegel mit einer Schwelle (beispielsweise dem maximalen Leistungspegel, einer Grenze usw.) vergleichen. Wenn der aktuelle Leistungspegel unterhalb der Schwelle liegt, kann der Vergleicher264 eine Neuauswahl eines Index oder Pegels im Leistungstabellenspeicher240 auslösen. Der Wähler266 wählt einen Index oder Pegel im Leistungstabellenspeicher240 für eine Frequenzkonfiguration und Leistungszuordnung im SoC200 . - Beim Beispiel aus
2A implementieren der Leistungsmanager220 und sein Leistungsverwaltungsprozessor222 und der Leistungstabellengenerator224 Mittel zur Erzeugung einer Leistungstabelle und Mittel zur Aktualisierung der Leistungstabelle. Beispielsweise verarbeitet der Leistungsverwaltungsprozessor222 Arbeitslast-Metadaten zur Bestimmung der Frequenzzuordnung und bildet und aktualisiert der Leistungstabellengenerator224 die Leistungstabelle unter Verwendung der Frequenzzuordnung. Der beispielhafte Indexbestimmer226 des Leistungsmanagers220 implementiert Mittel zur Bestimmung eines Index in der Leistungstabelle. Die beispielhafte Leistungssteuereinrichtung260 implementiert Mittel zur Zuordnung von Leistung zwischen einem oder mehreren Beschleunigern232 - 236 und dem Speicher120 unter Verwendung der Leistungstabelle. Beispielsweise bestimmt der Verbrauchsberechner262 der Leistungssteuereinrichtung260 einen Leistungsverbrauch. Der beispielhafte Vergleicher264 stellt fest, ob der Index auf der Grundlage des Leistungsbudgets und des Leistungsverbrauchs zu aktualisieren ist. Der beispielhafte Wähler266 ordnet dem Beschleuniger232 - 236 und dem Speicher120 entsprechend den Leistungsfrequenzen am Index der Leistungstabelle Leistung zu. -
2B zeigt eine alternative Anordnung der beispielhaften Vorrichtung100 . Beim Beispiel aus2B befinden sich der Leistungsmanager220 und die Speicherbaugruppe254 zusammen mit dem Compiler130 außerhalb des SoCs200 . Zusätzlich erzeugt die Leistungssteuereinrichtung260 Leistungs- und Frequenzsteuerungen271 - 279 in Zusammenhang mit den Beschleunigern232 - 236 , der geteilten Rechenressource (beispielsweise dem Arbeitslastverwaltungsprozessor)238 , dem geteilten Cache252 usw. Der Speicher254 , in dem Programmcode, ausführbare Programme usw. gespeichert sind, befindet sich außerhalb des SoCs200 und getrennt davon oder in Zusammenhang mit dem Compiler130 . Ein geteilter Bus280 verbindet die Komponenten des SoCs200 zur Ausführung von Arbeitslastaufgaben in der Art des Inferencings für ein neuronales Netz, faltende Schichten usw. Wie vorstehend mit Bezug auf2A beschrieben, erzeugt und/oder aktualisiert der Leistungsmanager220 eine Leistungstabelle von Einstellungen für die Beschleuniger232 - 236 , den Speicher252 ,254 usw. - Beim Beispiel aus
2B sendet der Leistungsmanager220 die Leistungstabelle zur Leistungssteuereinrichtung260 , welche Leistungs- und Frequenzsteuerungen271 - 279 für das SoC200 auf der Grundlage eines ausgewählten Index der Leistungstabelle (beispielsweise eines Standardindex, eines durch den Leistungsmanager220 spezifizierten Index, eines durch die Leistungssteuereinrichtung260 bestimmten Index usw.) erzeugt. Dabei wird jeweiligen Komponenten des SoCs200 zur Ausführung/Implementation einer oder mehrerer Arbeitslasten eine Frequenz zugewiesen. Beispielsweise kann während der Arbeitslastausführung die Frequenz eines Beschleunigers232 - 236 entsprechend ausgeführten Operationen eingestellt werden. Optimierungspunkte für die Einstellung der Beschleunigerfrequenz werden durch den Compiler130 bestimmt, und diese Frequenzen werden durch den Leistungsmanager220 zugewiesen. Bei bestimmten Beispielen kann eine relative Frequenzänderung innerhalb eines Leistungspegels der Leistungstabelle für einen Beschleuniger232 - 236 addiert oder subtrahiert werden. Die relative Frequenzänderung ist für den bestimmten Beschleuniger232 - 236 lokal und beeinflusst die Frequenz des Speichers252 ,254 (beispielsweise LLC, DDR usw.) nicht. - Beim Beispiel aus
2B implementiert der Leistungsmanager220 Mittel zur Erzeugung einer Leistungstabelle, Mittel zur Aktualisierung der Leistungstabelle und Mittel zur Bestimmung eines Index in der Leistungstabelle. Die beispielhafte Leistungssteuereinrichtung260 implementiert Mittel zur Zuordnung von Leistung zwischen einem oder mehreren Beschleunigern232 - 236 und dem Speicher120 unter Verwendung der Leistungstabelle durch Bestimmen des Leistungsverbrauchs, Feststellen, ob der Index auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs zu aktualisieren ist, und Zuordnen von Leistung zum Beschleuniger232 - 236 und zum Speicher120 entsprechend den Leistungsfrequenzen am Index der Leistungstabelle. -
3 zeigt eine beispielhafte Arbeitslast300 zur Implementation von Faltungsfiltern für ein neuronales Deep-Learning-Netz. Während der Arbeitslast ändert sich das Verhalten zwischen einer rechenintensiven Ausführung zu einer bandbreitenintensiven Ausführung. Beispielsweise ist bei der Arbeitslast300 eine erste Hälfte310 rechenbegrenzt und ist eine zweite Hälfte330 bandbreitenbegrenzt, wobei sich zwischen den Phasen oder Stufen310 ,330 der Arbeitslast300 ein Optimierungspunkt320 für die DVFS-Frequenzänderung befindet. Bei bestimmten Beispielen berechnet der Leistungsmanager220 eine gewichtete Summe von Frequenzanforderungen für aktuell ausgeführte Arbeitslasten und sendet eine aggregierte Anforderung zur Leistungssteuereinrichtung260 . Der Leistungsmanager220 kann beispielsweise Optionen für die Flexibilität der Leistungssteuereinrichtung260 über mehrere Pegel und zugeordnete Indizes für die Leistungsfrequenzzuordnung im SoC200 bereitstellen. -
4 ist ein beispielhaftes Datenflussdiagramm400 , das einen Befehlsfluss zwischen dem Leistungsmanager220 , der Leistungssteuereinrichtung260 und einem Beschleuniger232 - 236 zur Ausführung von zwei Deep-Learning-Inference-Arbeitslasten auf der beispielhaften Vorrichtung100 aus2A zeigt. Bei405 sendet der beispielhafte Leistungsmanager220 eine Anforderung von DVFS-Frequenz (wodurch beispielsweise ein Verhältnis des Beschleunigers zum geteilten Speicher zu einem anderen Speicher zu einem geteilten Rechenprozessor usw. spezifiziert wird), die auch als Arbeitsverhältnis bezeichnet wird, zur beispielhaften Leistungssteuereinrichtung260 , die Frequenzen zur Bereitstellung von Leistung zur Schaltungsanordnung des SoCs200 zuordnet. Bei410 sendet der beispielhafte Leistungsmanager220 einen Befehl zur Ausführung der Inference-Anforderung zu wenigstens einem der beispielhaften Beschleuniger232 - 236 , welcher die Arbeitslast der Inference-Anforderung ausführt. Bei415 sendet während der Ausführung der Inference-Anforderung wenigstens einer der beispielhaften Beschleuniger232 - 236 eine Anforderung einer relativen Frequenzänderung zur beispielhaften Leistungssteuereinrichtung260 und stellt die Leistungssteuereinrichtung260 auf der Grundlage des Leistungsverbrauchs und der Verfügbarkeit entsprechend dem Leistungstabellenspeicher240 fest, ob die relative Frequenzänderung dem einen oder den mehreren Beschleunigern232 - 236 zu gewähren ist. Bei420 wird ein Ergebnis oder eine Statusaktualisierung durch den Beschleuniger232 - 236 dem Leistungsmanager220 zurückgegeben. - Bei
425 sendet der beispielhafte Leistungsmanager220 eine DVFS-Frequenzanforderung für ein zweites Inferencing zur beispielhaften Leistungssteuereinrichtung260 . Bei430 sendet der beispielhafte Leistungsmanager220 einen Befehl zur Ausführung der zweiten Inference-Anforderung zu wenigstens einem der beispielhaften Beschleuniger232 - 236 . Bei435 sendet der beispielhafte Leistungsmanager220 einen Befehl zur Ausführung der ersten Inference-Anforderung zu wenigstens einem der beispielhaften Beschleuniger232 - 236 . Bei440 sendet wenigstens einer der beispielhaften Beschleuniger272 - 276 ansprechend auf die erste und die zweite Inference-Anforderung eine Anforderung zu einer relativen Frequenzänderung zur beispielhaften Leistungssteuereinrichtung260 , die auf der Grundlage des Leistungsverbrauchs und der Verfügbarkeit entsprechend dem Leistungstabellenspeicher240 feststellt, ob die relative Frequenzänderung dem einen oder den mehreren Beschleunigern232 - 236 zu gewähren oder zu verweigern ist. Bei445 stellen der eine oder die mehreren beispielhaften Beschleuniger232 - 236 dem beispielhaften Leistungsmanager220 eine Statusaktualisierung nach der Ausführung der ersten Inference-Anforderung bereit. Bei450 stellen der eine oder die mehreren beispielhaften Beschleuniger232 - 236 dem beispielhaften Leistungsmanager220 eine Statusaktualisierung nach der Ausführung der zweiten Inference-Anforderung bereit. - Dabei kann der Leistungsmanager
220 die Ausführung der Inference-Anforderungen durch den einen oder die mehreren Beschleuniger232 - 236 koordinieren und kann die Leistungssteuereinrichtung260 die Leistungsfrequenz entsprechend zuordnen. Der Leistungsmanager220 empfängt eine vom Compiler130 erzeugte DVFS-Anforderung, die ein relatives Verhältnis der Arbeitsfrequenzen zwischen Komponenten des SoCs200 aufweist, und ein durch den Leistungsmanager220 erteilter Befehl zum Laden des Inferencings in den Beschleuniger232 - 236 löst eine Anforderung zur DVFS-Zuordnung durch die Leistungssteuereinrichtung260 aus. Der Compiler130 kann DVFS-Verhältnisse auf der Grundlage empirischer gemessener Daten, die entsprechend einem Modell oder einer Formel des Arbeitslastschichtverhaltens berechnet wurden, der Gesamtsystem-Arbeitslastanforderungen usw. bestimmen. Während einer Inference-Anforderung kann ein Beschleuniger232 - 236 eine Anforderung zur Leistungssteuereinrichtung260 senden, die zugeordnete Frequenz zu erhöhen oder zu verringern, und kann die Leistungssteuereinrichtung260 beispielsweise entsprechend der Leistungstabelle einstellen. - Wenngleich in den
1 -2B beispielhafte Implementationen der beispielhaften Vorrichtung100 dargestellt sind, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in den1 -2B dargestellt sind, kombiniert, unterteilt, umgeordnet, fortgelassen, beseitigt und/oder in anderer Weise implementiert werden. Ferner können das beispielhafte Prozessorsystem110 , der beispielhafte Speicher120 , der beispielhafte Compiler130 , das beispielhafte SoC200 , der beispielhafte Empfänger211 , der beispielhafte Analysator213 , der beispielhafte Codegenerator215 , der beispielhafte Ausgang217 , der beispielhafte Leistungsmanager220 , der beispielhafte Leistungsverwaltungsprozessor222 , der beispielhafte Leistungstabellengenerator224 , der beispielhafte Indexbestimmer226 , der beispielhafte Beschleuniger232 - 236 , der beispielhafte Arbeitslastverwaltungsprozessor238 , der beispielhafte Leistungstabellenspeicher240 , der beispielhafte geteilte Cache252 , die beispielhafte Speicherbaugruppe254 , die beispielhafte Leistungssteuereinrichtung260 , der beispielhafte Verbrauchsberechner262 , der beispielhafte Vergleicher264 , der beispielhafte Wähler266 , die beispielhafte Leistungs- und Frequenzsteuerung271 - 279 , der beispielhafte Bus280 und/oder allgemeiner die beispielhafte Vorrichtung100 durch eine oder mehrere Analog- oder Digitalschaltungen, Logikschaltungen, programmierbare Prozessoren, programmierbare Steuereinrichtungen, Graphikverarbeitungseinheiten (GPU(s)), digitale Signalprozessoren (DSP(s)), anwendungsspezifische integrierte Schaltungen (ASIC(s)), programmierbare Logikvorrichtungen (PLD(s)) und/oder feldprogrammierbare Logikvorrichtungen (FPLD(s)) implementiert werden. Wenn in jeglichen der Vorrichtungs- oder Systemansprüche dieses Patents gelesen wird, dass sie eine reine Software- und/oder Firmwareimplementation abdecken, wird hierdurch ausdrücklich definiert, dass wenigstens eines vom beispielhaften Prozessorsystem110 , vom beispielhaften Speicher120 , vom beispielhaften Compiler130 , vom beispielhaften SoC200 , vom beispielhaften Empfänger211 , vom beispielhaften Analysator213 , vom beispielhaften Codegenerator215 , vom beispielhaften Ausgang217 , vom beispielhaften Leistungsmanager220 , vom beispielhaften Leistungsverwaltungsprozessor222 , vom beispielhaften Leistungstabellengenerator224 , vom beispielhaften Indexbestimmer226 , vom beispielhaften Beschleuniger232 - 236 , vom beispielhaften Arbeitslastverwaltungsprozessor238 , vom beispielhaften Leistungstabellenspeicher240 , vom beispielhaften geteilten Cache252 , von der beispielhaften Speicherbaugruppe254 , von der beispielhaften Leistungssteuereinrichtung260 , vom beispielhaften Verbrauchsberechner262 , vom beispielhaften Vergleicher264 , vom beispielhaften Wähler266 , von der beispielhaften Leistungs- und Frequenzsteuerung271 - 279 , vom beispielhaften Bus280 und/oder allgemeiner von der beispielhaften Vorrichtung100 eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherplatte in der Art eines Speichers, einer Digital Versatile Disk (DVD), einer Compact Disk (CD), einer Bluray-Disk usw., worin die Software und/oder Firmware enthalten ist, einschließt. Überdies können das beispielhafte Prozessorsystem110 , der beispielhafte Speicher120 , der beispielhafte Compiler130 , das beispielhafte SoC200 , der beispielhafte Empfänger211 , der beispielhafte Analysator213 , der beispielhafte Codegenerator215 , der beispielhafte Ausgang217 , der beispielhafte Leistungsmanager220 , der beispielhafte Leistungsverwaltungsprozessor222 , der beispielhafte Leistungstabellengenerator224 , der beispielhafte Indexbestimmer226 , der beispielhafte Beschleuniger232 - 236 , der beispielhafte Arbeitslastverwaltungsprozessor238 , der beispielhafte Leistungstabellenspeicher240 , der beispielhafte geteilte Cache252 , die beispielhafte Speicherbaugruppe254 , die beispielhafte Leistungssteuereinrichtung260 , der beispielhafte Verbrauchsberechner262 , der beispielhafte Vergleicher264 , der beispielhafte Wähler266 , die beispielhafte Leistungs- und Frequenzsteuerung271 - 279 , der beispielhafte Bus280 und/oder allgemeiner die beispielhafte Vorrichtung100 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich oder an Stelle der in den1 -2B dargestellten aufweisen und/oder mehr als eines von jeglichen oder allen der dargestellten Elemente, Prozesse und Vorrichtungen aufweisen. Hier umfasst der Ausdruck „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (beispielsweise drahtgestützte) Kommunikation und/oder konstante Kommunikation, sondern schließt vielmehr zusätzlich eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmaligen Ereignissen ein. - Ein Flussdiagramm, das beispielhafte Hardwarelogik, maschinenlesbare Befehle, hardwareimplementierte Zustandsmaschinen und/oder eine Kombination davon zur Implementation der beispielhaften Vorrichtung
100 aus1 repräsentiert, ist in5 dargestellt. Die maschinenlesbaren Befehle können ein oder mehrere ausführbare Programme oder Teile eines ausführbaren Programms zur Ausführung durch einen Computerprozessor in der Art des Prozessors912 sein, der in der nachstehend in Zusammenhang mit9 erörterten beispielhaften Prozessorplattform900 dargestellt ist. Das Programm kann in Software verwirklicht sein, die auf einem nichtflüchtigen computerlesbaren Speichermedium in der Art einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Bluray-Disk oder eines Speichers in Zusammenhang mit dem Prozessor912 gespeichert ist, das gesamte Programm und/oder Teile davon könnten jedoch alternativ durch eine andere Vorrichtung als den Prozessor912 ausgeführt und/oder in Firmware oder dedizierter Hardware verwirklicht werden. - Ferner können, wenngleich das beispielhafte Programm mit Bezug auf die in die
5 -8 dargestellten Flussdiagramme beschrieben wird, alternativ viele andere Verfahren zur Implementation der beispielhaften Vorrichtung100 verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden und/oder können einige der beschriebenen Blöcke geändert, fortgelassen oder kombiniert werden. Zusätzlich oder alternativ können einige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (beispielsweise eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, einen FPGA, einen ASIC, einen Vergleicher, einen Operationsverstärker (op-amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführung von Software oder Firmware durchzuführen. - Die hier beschriebenen maschinenlesbaren Befehle können in einem oder mehreren von einem komprimierten Format, einem verschlüsselten Format, einem fragmentierten Format, einem kompilierten Format, einem ausführbaren Format, einem paketierten Format usw. gespeichert werden. Hier beschriebene maschinenlesbare Befehle können als Daten (beispielsweise Abschnitte von Befehlen, Code, Repräsentationen von Code usw.) gespeichert werden, die für die Erzeugung, Herstellung und/oder Produktion maschinenausführbarer Befehle verwendet werden können. Beispielsweise können die maschinenlesbaren Befehle fragmentiert und auf einer oder mehreren Speichervorrichtungen und/oder Rechenvorrichtungen (beispielsweise Servern) gespeichert werden. Die maschinenlesbaren Befehle können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfigurierung, Entschlüsselung, Dekompression, Entpackung, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie von einer Rechenvorrichtung und/oder einer anderen Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Beispielsweise können die maschinenlesbaren Befehle in mehreren Teilen gespeichert werden, die einzeln komprimiert, verschlüsselt und auf getrennten Rechenvorrichtungen gespeichert werden, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert werden, einen Satz ausführbarer Befehle bilden, die ein Programm in der Art des hier beschriebenen implementieren.
- Bei einem anderen Beispiel können die maschinenlesbaren Befehle in einem Zustand gespeichert werden, in dem sie von einem Computer gelesen werden können, jedoch zusätzlich eine Bibliothek (beispielsweise eine Dynamic Link Library (DLL)), einen Softwareentwicklungskit (SDK), eine Anwendungsprogrammierschnittstelle (API) usw. erfordern, um die Befehle auf einer bestimmten Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. Bei einem anderen Beispiel können die maschinenlesbaren Befehle konfiguriert werden müssen (beispielsweise Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.), bevor die maschinenlesbaren Befehle und/oder das eine oder die mehreren entsprechenden Programme ganz oder teilweise ausgeführt werden können. Demgemäß sollen die offenbarten maschinenlesbaren Befehle und/oder das eine oder die mehreren entsprechenden Programme solche maschinenlesbaren Befehle und/oder Programme unabhängig vom bestimmten Format oder Zustand der maschinenlesbaren Befehle und/oder Programme, wenn gespeichert oder auf andere Weise in Ruhe oder in Übertragung, umfassen.
- Die hier beschriebenen maschinenlesbaren Befehle können durch eine frühere, gegenwärtige oder künftige Befehlssprache, Skriptsprache, Programmiersprache usw. repräsentiert werden. Beispielsweise können die maschinenlesbaren Befehle unter Verwendung jeglicher der folgenden Sprachen repräsentiert werden: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
- Wie vorstehend erwähnt, können die beispielhaften Prozesse aus den
5 -8 unter Verwendung ausführbarer Befehle (beispielsweise computer- und/oder maschinenlesbarer Befehle) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium in der Art eines Festplattenlaufwerks, eines Flash-Speichers, eines Nurlesespeichers, einer Compact Disk, einer Digital Versatile Disk, eines Caches, eines Direktzugriffsspeichers und/oder einer anderen Speichervorrichtung oder Speicherplatte, worin Informationen für eine Zeitdauer gespeichert werden (beispielsweise während längerer Zeiträume, permanent, für kurze Momente, für ein Zwischenpuffern und/oder für das Caching der Informationen), gespeichert werden. Wie hier verwendet, wird der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich so definiert, dass er einen beliebigen Typ einer computerlesbaren Speichervorrichtung und/oder Speicherplatte einschließt und sich ausbreitende Signale und Übertragungsmedien ausschließt. - „Aufweisend‟ und „umfassend“ (und alle Formen und Tempi davon) werden hier als einschließende Begriffe verwendet. Wenn ein Anspruch demgemäß eine Form von „aufweisen“ oder „umfassen“ als Oberbegriff oder innerhalb eines Anspruchszitats irgendeiner Art verwendet (beispielsweise umfasst, weist auf, umfassend, aufweisend, habend usw.), ist zu verstehen, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne den Schutzumfang des entsprechenden Anspruchs oder Zitats zu verlassen. Wenn hier der Ausdruck „wenigstens“ als Übergangsbegriff beispielsweise in einem Oberbegriff eines Anspruchs verwendet wird, ist er in der gleichen Weise wie die Begriffe „umfassend“ und „aufweisend“ einschließend. Wenn der Begriff „und/oder“ beispielsweise in einer Form in der Art von A, B und/oder C verwendet wird, bezieht er sich auf eine Kombination oder Teilmenge von A, B, C in der Art von (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Wenn er hier in Zusammenhang mit beschreibenden Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet wird, soll sich der Ausdruck „wenigstens einer von A und B“ auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen. Ähnlich soll sich der Ausdruck „wenigstens einer von A oder B“, wenn er hier in Zusammenhang mit beschreibenden Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet wird, auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen. Wenn er hier in Zusammenhang mit der Beschreibung der Funktionsweise oder Ausführung von Prozessen, Befehlen, Aktionen, Aktivitäten und/oder Schritten verwendet wird, soll sich der Ausdruck „wenigstens einer von A und B“ auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen. Ähnlich soll sich der Ausdruck „wenigstens einer von A oder B“, wenn er hier in Zusammenhang mit der Beschreibung der Funktionsweise oder Ausführung von Prozessen, Befehlen, Aktionen, Aktivitäten und/oder Schritten verwendet wird, auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen.
- Hier schließen Singularreferenzen (beispielsweise „ein/eine/eines“, „erster/erste/erstes“, „zweiter/zweite/zweites“ usw.) den Plural nicht aus. Der Begriff „eine“ Entität bezieht sich hier auf eine oder mehrere dieser Entitäten. Die Begriffe „ein/eine/eines“, „ein/eine/eines oder mehrere“ und „wenigstens ein/eine/eines“ können hier austauschbar verwendet werden. Ferner können, wenngleich sie individuell aufgelistet werden, mehrere Mittel, Elemente oder Verfahrensschritte beispielsweise durch eine einzige Einheit oder einen einzigen Prozessor implementiert werden. Zusätzlich können, wenngleich individuelle Merkmale in verschiedenen Beispielen oder Ansprüchen aufgenommen sein können, diese möglicherweise kombiniert werden, und impliziert die Aufnahme in verschiedenen Beispielen oder Ansprüchen nicht, dass eine Kombination von Merkmalen nicht möglich und/oder vorteilhaft ist.
-
5 zeigt einen Prozess oder ein Verfahren500 , der oder das durch Ausführen von Programmbefehlen zum Veranlassen der beispielhaften Vorrichtung100 , die Leistungszuordnung für auf der Beschleunigervorrichtung100 ausgeführte Arbeitslasten dynamisch zu konfigurieren, implementiert wird. In Block510 präpariert das beispielhafte Programm500 durch den Compiler130 eine Arbeitslast zur Ausführung durch die Vorrichtung100 (beispielsweise durch das Prozessorsystem110 und den Speicher120 der beispielhaften Vorrichtung100 ). Beispielsweise kompiliert der Codegenerator215 eine oder mehrere Arbeitslasten zur Ausführung durch das Prozessorsystem110 und den Speicher120 der Vorrichtung100 . Der Analysator213 analysiert den Code für die eine oder die mehreren Arbeitslasten, um Speicherzugriffe zu identifizieren, Befehlsausführungen zu berechnen usw., um ein DVFS-Verhältnis von Rechen- zu Speicherlasten für jede Arbeitslast zu bestimmen. - Beispielsweise analysiert der Analysator
213 die Zusammensetzung einer Arbeitslast, um einen Übergangs- oder Verbesserungs(beispielsweise Optimierungs)-Punkt zu bestimmen. Für jede Zuordnung einer Arbeitslast zu Ausführungsbefehlen für die Vorrichtung100 kann der Analysator213 jede Schicht (beispielsweise jede Schicht eines durch die Arbeitslast zu implementierenden neuronalen Deep-Learning-Netzes usw.) analysieren. Für jede Schicht kann der Analysator213 eine Ausführungszeit pro Schicht berechnen. Zusätzlich kann der Analysator213 eine wünschenswerte (beispielsweise optimale) Frequenz des Beschleunigers232 - 236 für eine gegebene Frequenz des Speichers120 , die auf die Arbeitslast angewendet werden soll, bestimmen. Die Ausführungszeit kann dann aktualisiert werden. Der beispielhafte Analysator213 kann ein DVFS-Intervall bilden, um eine Schichtsequenz zu bestimmen. Wenn eine frühere Ausführungszeit minus einer neuen Ausführungszeit größer oder gleich einer Schwelle ist (beispielsweise Alte Ausführungszeit - Neue_Ausführungszeit >= Schwelle), wurde ein DVFS-Änderungs-/Übergangspunkt innerhalb der Arbeitslast identifiziert. Dieser Änderungspunkt kann als ein Verbesserungs(beispielsweise Optimierungs)-Punkt festgehalten werden. Alternativ oder zusätzlich kann ein Berechnung-zu-Bandbreite-Verhältnis für jede Schicht berechnet werden und kann ein absolutes Verhältnis durch eine gewichtete Summe bestimmt werden, wobei die Gewichte eine genäherte Ausführungszeit pro Schicht sind. Eine DVFS-Anforderung kann auf der Grundlage des Übergangspunkts für den Leistungsmanager220 formuliert werden. Beispielsweise kann die DVFS-Anforderung folgendermaßen formuliert werden:
Dvfs_Anforderung { Spezifiziere IA_Pegel-ia_Anforderung; Spezifiziere DDR-B/W ddr_bw; uint32 LLC BESCHLEUNIGUNGSVERHÄLTNIS }11c_Beschleunigungsverhältnis;
Der Ausgang 217 erzeugt beispielsweise Arbeitslastinformationen 210 einschließlich der ausführbaren Arbeitslast und zugeordneter Metadaten (beispielsweise Verhältnis, Übergangs-/Verbesserungspunkt, andere Codeinformationen usw.) vom Analysator 213 und vom Codegenerator 215 . Bei einigen Beispielen können mehrere Arbeitslastübergangspunkte (beispielsweise die obersten drei, fünf usw.) für die Verwendung durch den Leistungsmanager 220 ausgegeben werden.
In Block 520 ordnet das beispielhafte Programm 500 Leistung in der Vorrichtung 100 zur Ausführung der Arbeitslast zu. Beispielsweise empfängt der Leistungsmanager 220 das ausführbare Programm der Arbeitslast und zugeordnete Metadaten vom Compiler 130 und bestimmt die Leistungstabelle zur Speicherung im Leistungstabellenspeicher 240 unter Verwendung der Metadaten, die der auszuführenden Arbeitslast zugeordnet sind.
Beispielsweise empfängt der Leistungsverwaltungsprozessor 222 eine für die Ausführung auf dem Satz von Beschleunigern 232 - 236 eingeplante neue Arbeitslast sowie zugeordnete Metadaten in der Art einer Liste von Frequenzen und/oder eines Satzes eines oder mehrerer Optimierungspunkte, bei denen die Arbeitslast laufen sollte. Beispielsweise kann ein anfänglicher Teil der Arbeitslast bandbreitenintensiv sein und viel Zugriff auf den Speicher 120 aufweisen, während ein späterer Teil der Arbeitslast, der nach einem DVFS-Optimierungspunkt auftritt, rechenintensiv sein kann und einen oder mehrere Beschleuniger 232 - 236 und/oder einen anderen Prozessor 238 im Prozessorsystem 110 betreffen kann. Der Leistungsverwaltungsprozessor 222 konsolidiert Leistungsinformationen für eine oder mehrere laufende Arbeitslasten auf der Grundlage der Arbeitslastinformationen 210 und veranlasst den Leistungstabellengenerator 224 , die Leistungstabelle 240 zu erzeugen und/oder zu aktualisieren, wenn sich beispielsweise eine oder mehrere auf dem SoC 200 ausgeführte Arbeitslasten ändern. Der Leistungsverwaltungsprozessor 222 liest einen aktuellen Leistungspegel von der Leistungssteuereinrichtung 260 und bestimmt neue Leistungspegel durch Konsolidieren von Arbeitslastanforderungen und zugeordneten Leistungseigenschaften.
Der beispielhafte Leistungstabellengenerator 224 erzeugt und/oder aktualisiert die Leistungstabelle im Leistungstabellenspeicher 240 auf der Grundlage des Verhältnisses zwischen der Rechenleistung und der Speicherleistung und eines oder mehrerer Frequenzverhältnisse (auch als Arbeitsverhältnisse bezeichnet), die durch den Leistungsverwaltungsprozessor 222 bestimmt wurden. Der beispielhafte Tabellengenerator 224 speichert jedes integrierte Arbeitsverhältnis in einer Zeile oder einem Eintrag der Leistungstabelle innerhalb des beispielhaften Leistungstabellenspeichers 240 . Jede Zeile der Leistungstabelle entspricht einer Arbeitsverhältnisoption (beispielsweise Arbeitsfrequenzen für das Prozessorsystem 110 gegenüber Arbeitsfrequenzen für den Speicher 120 usw.) für die Schaltungsanordnung des beispielhaften Prozessorsystems 110 und des Speichers 120 , um wenigstens eine Arbeitslast auszuführen. Der Leistungstabellenspeicher 240 speichert einen Index 241 , der eine Leistungsfrequenzzuordnung (und in manchen Fällen eine akzeptable Variation) für jede der verfügbaren Komponenten festlegt, beispielsweise die Arbeitslastverwaltungsprozessor-Zuordnung 242 , die Cache-Zuordnung 243 , die Beschleunigerzuordnung 244 , die Speicherzuordnung 245 usw. Der Tabellengenerator 224 veranlasst den Indexbestimmer 126 , einen Index in der Leistungstabelle zu aktualisieren, wenn die Leistungstabelle im Leistungstabellenspeicher 240 erzeugt und/oder aktualisiert wurde.
Der beispielhafte Indexbestimmer 226 bestimmt einen Index entsprechend einer Zeile oder einem Pegel der beispielhaften Leistungstabelle (beispielsweise Tabelle 1 usw.) im Speicher 240 . Bei bestimmten Beispielen kann ein Standardindex in der Art des Index 0 für die automatische Auswahl durch die Leistungssteuereinrichtung 260 spezifiziert werden, um die Leistungszuordnung/-verwendung des SoCs 200 zu konfigurieren. Der Indexbestimmer 226 kann jedoch beispielsweise die Leistungstabelle für Ressourceninformationen des Speichers 240 und des SoCs 200 analysieren, um an Stelle eines Standardindex 0 einen anderen Index (beispielsweise Index 2, Index N usw.) zu bestimmen und der Leistungssteuereinrichtung 260 zu empfehlen. Beispielsweise kann der Indexbestimmer 226 auf der Grundlage eines aktuellen Index für die Leistungstabelle einen aktualisierten Index für die Leistungstabelle im Leistungstabellenspeicher 240 berechnen und den aktualisierten Index zur Leistungssteuereinrichtung 260 übertragen.
Die Leistungssteuereinrichtung 260 kann entsprechend einer Leistungskonfiguration arbeiten, die an einem ausgewählten Index in der im Speicher 240 gespeicherten Leistungstabelle spezifiziert ist. Dabei kann die Leistungssteuereinrichtung 260 das SoC 200 mit einer Leistungszuordnung auf der Grundlage zugeordneter Frequenzen für den ausgewählten Index konfigurieren.
In Block 530 überwacht das beispielhafte Programm 500 die Leistungszuordnung während der Ausführung der Arbeitslast durch die Vorrichtung 100 und stellt diese ein. Beispielsweise führen Ressourcen des Prozessorsystems 110 und des Speichers 120 die Arbeitslast entsprechend vom Wähler 266 der Leistungssteuereinrichtung 260 zugeordneten Leistungsfrequenzen gemäß dem ausgewählten Index der Leistungstabelle aus. Bei bestimmten Beispielen berechnet die Leistungssteuereinrichtung 260 den Leistungsverbrauch für das SoC 200 , um festzustellen, ob sich die Systeme des SOCs 200 innerhalb eines zugeordneten Leistungsbudgets befinden. Die Leistungssteuereinrichtung 260 kann den Leistungsverbrauch durch entsprechendes Erhöhen oder Verringern der Zuordnung durch Aufwärts- oder Abwärtsbewegen zwischen Indizes in der Leistungstabelle einstellen. Dementsprechend kann, wenn mehr Leistung für die Zuordnung verfügbar ist, ein Index in der Leistungstabelle mehr Leistung zuordnen, und kann, wenn weniger Leistung für die Zuordnung verfügbar ist, ein anderer Index in der Leistungstabelle weniger Leistung zuordnen. Ferner kann, wenn die eine oder die mehreren ausgeführten Arbeitslasten mehr Rechenressourcen fordern, ein Index in der Leistungstabelle dem einen oder den mehreren Beschleunigern 232 - 236 , dem Arbeitslastverwaltungsprozessor 238 usw. an Stelle des Speichers 120 mehr Leistung zuordnen. Wenn die eine oder die mehreren ausgeführten Arbeitslasten einen größeren Speicherbandbreitenbedarf aufweisen, kann ein anderer Index in der Leistungstabelle dem Speicher 120 jedoch beispielsweise an Stelle des Prozessorsystems 110 mehr Leistung zuordnen.
Beispielsweise bestimmt der Verbrauchsberechner 262 der Leistungssteuereinrichtung 260 einen aktuellen Leistungspegel für das SoC 200 . Der Vergleicher 264 vergleicht den aktuellen Leistungspegel mit einem maximalen Leistungspegel, einer Schwelle, einer Grenze usw. Wenn der aktuelle Leistungspegel kleiner oder größer als der maximale Leistungspegel ist, kann der Vergleicher 264 eine Neuauswahl eines Index oder Pegels im Leistungstabellenspeicher 240 auslösen. Der Wähler 266 wählt einen Index oder Pegel im Leistungstabellenspeicher 240 für eine Frequenzkonfiguration und Leistungszuordnung im SoC 200 .
In Block 620 wird die Leistung für jede Schicht der Arbeitslast beurteilt. In Block 630 wird ein Bandbreiten-/Berechnungsverhältnis für eine gegebene Schicht der Arbeitslast geschätzt. Beispielsweise wird Quellcode, der an der Arbeitslast beteiligte Befehle zur Implementation einer Schicht eines AI-Netzmodells (beispielsweise einer Inferencing-Schicht eines faltenden neuronalen Netzes usw.) repräsentiert, analysiert, um das Verhältnis zwischen Rechenbefehlen und Speicherzugriffsbefehlen in der Arbeitslast zu bestimmen. Ein Übergangs- oder Verbesserungs(beispielsweise Optimierungs)-Punkt, bei dem Ausführungsaufgaben von speicherintensiv zu rechenintensiv wechseln, kann für die Schicht bestimmt werden. Beispielsweise analysiert der Analysator 213 die Zusammensetzung der Arbeitslastschicht, um einen Übergangspunkt zu bestimmen. Der Analysator 213 kann eine Ausführungszeit für die Schicht berechnen. Wenn eine frühere Ausführungszeit minus einer neuen Ausführungszeit größer oder gleich einer Schwelle ist (beispielsweise Alte Ausführungszeit - Neue_Ausführungszeit >= Schwelle), wurde ein DVFS-Übergangs-/Änderungspunkt innerhalb der Arbeitslastschicht identifiziert. Dieser Änderungspunkt kann als Optimierungspunkt bezeichnet werden. Zusätzlich kann der Analysator 213 eine verbesserte (beispielsweise optimale oder andere wünschenswerte) Frequenz des Beschleunigers 232 - 236 für eine gegebene Frequenz des Speichers 120 , die in der Arbeitslastschicht zu verwenden ist, bestimmen.
Dieser Prozess wird in Block 620 für jede Schicht in der Arbeitslast wiederholt. In Block 640 wird, wenn alle Schichten beurteilt wurden, eine DVFS-Anforderung für die Arbeitslast bestimmt. Beispielsweise können Ausführungszeiten, Übergangspunkte und andere Verhältnisinformationen durch den Analysator 213 über die Schichten der Arbeitslast beurteilt werden. Der beispielhafte Analysator 213 kann ein DVFS-Intervall unter Verwendung individueller Ausführungszeiten und zugeordneter Verhältnisse bilden, um beispielsweise eine Sequenz von Schichten zu bestimmen. Alternativ oder zusätzlich kann ein Berechnung-zu-Bandbreite-Verhältnis für jede Schicht berechnet werden und kann ein absolutes Verhältnis durch eine gewichtete Summe bestimmt werden, wobei die Gewichte eine genäherte Ausführungszeit pro Schicht sind. Demgemäß kann beispielsweise ein DVFS-Anforderungsverhältnis für die Arbeitslast berechnet und als Metadaten in Zusammenhang mit der ausführbaren Arbeitslast zur Übermittlung zum Leistungsmanager 220 gespeichert werden.
In Block 720 wird eine Leistungstabelle erzeugt und/oder im Leistungstabellenspeicher 240 aktualisiert. Beispielsweise empfängt der Leistungsverwaltungsprozessor 222 eine für die Ausführung auf dem Satz von Beschleunigern 232 - 236 eingeplante neue Arbeitslast sowie zugeordnete Metadaten in der Art einer Liste von Frequenzen und/oder eines Satzes eines oder mehrerer DVFS-Übergangspunkte, bei denen die Arbeitslast laufen sollte. Beispielsweise kann ein anfänglicher Teil der Arbeitslast bandbreitenintensiv sein und viel Zugriff auf den Speicher 120 aufweisen, während ein späterer Teil der Arbeitslast, der nach einem DVFS-Übergangspunkt auftritt, rechenintensiv sein kann und einen oder mehrere Beschleuniger 232 - 236 und/oder einen anderen Prozessor 238 im Prozessorsystem 110 betreffen kann. Der Leistungsverwaltungsprozessor 222 konsolidiert Leistungsinformationen für eine oder mehrere laufende Arbeitslasten auf der Grundlage der Arbeitslastinformationen 210 und veranlasst den Leistungstabellengenerator 224 , die Leistungstabelle 240 zu erzeugen und/oder zu aktualisieren, wenn sich beispielsweise eine oder mehrere auf dem SoC 200 ausgeführte Arbeitslasten ändern (beispielsweise hinzugefügt werden, entfernt werden usw.).
Der beispielhafte Leistungstabellengenerator 224 erzeugt und/oder aktualisiert die Leistungstabelle im Leistungstabellenspeicher 240 auf der Grundlage des Verhältnisses zwischen der Rechenleistung und der Speicherleistung und eines oder mehrerer Frequenzverhältnisse (auch als Arbeitsverhältnisse bezeichnet), die durch den Leistungsverwaltungsprozessor 222 bestimmt wurden. Der beispielhafte Tabellengenerator 224 speichert jedes integrierte Arbeitsverhältnis in einer Zeile oder einem Eintrag der Leistungstabelle innerhalb des beispielhaften Leistungstabellenspeichers 240 . Jede Zeile der Leistungstabelle entspricht einer Arbeitsverhältnisoption (beispielsweise Arbeitsfrequenzen für das Prozessorsystem 110 gegenüber Arbeitsfrequenzen für den Speicher 120 usw.) für die Schaltungsanordnung des beispielhaften Prozessorsystems 110 und des Speichers 120 , um wenigstens eine Arbeitslast auszuführen. Der Leistungstabellenspeicher 240 speichert einen Index 241 , der eine Leistungsfrequenzzuordnung (und in manchen Fällen eine akzeptable Variation) für jede der verfügbaren Komponenten festlegt, beispielsweise die Arbeitslastverwaltungsprozessor-Zuordnung 242 , die Cache-Zuordnung 243 , die Beschleunigerzuordnung 244 , die Speicherzuordnung 245 usw. Der Tabellengenerator 224 veranlasst den Indexbestimmer 126 , einen Index in der Leistungstabelle zu aktualisieren, wenn die Leistungstabelle im Leistungstabellenspeicher 240 erzeugt und/oder aktualisiert wurde.
In Block 730 wird ein Index für die Leistungstabelle bestimmt. Beispielsweise bestimmt der beispielhafte Indexbestimmer 226 einen Index entsprechend einer Zeile oder einem Pegel der beispielhaften Leistungstabelle (beispielsweise Tabelle 1 usw.) im Speicher 240 . Bei bestimmten Beispielen kann ein Standardindex in der Art des Index 0 für die automatische Auswahl durch die Leistungssteuereinrichtung 260 spezifiziert werden, um die Leistungszuordnung/-verwendung des SoCs 200 zu konfigurieren. Der Indexbestimmer 226 kann jedoch beispielsweise die Leistungstabelle für Ressourceninformationen des Speichers 240 und des SoCs 200 analysieren, um an Stelle eines Standardindex 0 einen anderen Index (beispielsweise Index 2, Index N usw.) zu bestimmen und der Leistungssteuereinrichtung 260 zu empfehlen. Beispielsweise kann der Indexbestimmer 226 auf der Grundlage eines aktuellen Index für die Leistungstabelle einen aktualisierten Index für die Leistungstabelle im Leistungstabellenspeicher 240 berechnen und den aktualisierten Index zur Leistungssteuereinrichtung 260 übertragen.
In Block 740 wird die Leistungszuordnung ausgelöst. Beispielsweise übermittelt der Indexbestimmer 226 einen Index für die Leistungstabelle zur Leistungssteuereinrichtung 260 . Die Leistungssteuereinrichtung 260 kann dann Komponenten des Prozessorsystems 110 und des Speichers 120 entsprechend einer an einem ausgewählten Index in der im Speicher 240 gespeicherten Leistungstabelle spezifizierten Leistungskonfiguration Leistung zuordnen. Dabei kann die Leistungssteuereinrichtung 260 Komponenten des SoCs 200 mit einer Leistungszuordnung auf der Grundlage zugeordneter Frequenzen für den ausgewählten Index konfigurieren.
In Block 820 wird der Leistungsverbrauch auf der Grundlage des Arbeitsverhältnisses und/oder anderer Frequenzinformationen in der Leistungstabelle berechnet. Beispielsweise berechnet der Verbrauchsberechner 262 der Leistungssteuereinrichtung 260 den Leistungsverbrauch für das SoC 200 unter Verwendung des tatsächlichen Verbrauchs und/oder Informationen am Index 241 der Leistungstabelle 240 , um einen Leistungspegel des SoCs 200 zu bestimmen. Der Leistungspegel kann ein aktueller Leistungspegel und/oder ein projizierter Leistungspegel sein, der beispielsweise der neuen Arbeitslast Rechnung trägt. Der Vergleicher 264 kann den Leistungspegel mit einem maximalen Leistungspegel, einer Schwelle, einer Grenze usw. vergleichen. Die Leistungsgrenze/-schwelle kann auf der Grundlage physikalischer Eigenschaften des SoCs 200 festgelegt werden, beispielsweise Wärmetoleranz, Leistungsfähigkeitsverschlechterung, anderer Materialrandbedingungen usw., um beispielsweise eine Beschädigung des SoCs 200 und/oder einen anderen Einfluss auf das System zu vermeiden. Die Leistungsgrenze/-schwelle kann beispielsweise einen Fehlerspielraum oder einen anderen Wertebereich aufweisen, um einen Puffer oder eine Gelegenheit für einen Fehler oder eine Varianz in Bezug auf eine wahre, beschädigende Leistungsgrenze bereitzustellen.
In Block 825 stellt die Leistungssteuereinrichtung 260 auf der Grundlage des Vergleichs fest, ob das SoC 200 sein Leistungsbudget erfüllt, diesem genügt oder dieses verwendet. Beispielsweise kann der zugeordnete Leistungspegel unterhalb einer Leistungsbudgetgrenze oder -schwelle liegen, kann der zugeordnete Leistungspegel an der Leistungsbudgetgrenze oder -schwelle liegen oder diese überschreiten, kann der zugeordnete Leistungspegel an einem spezifizierten Toleranzbereich unterhalb des Leistungsbudgets oder innerhalb von diesem liegen usw. Beispielsweise kann der Leistungspegel durch Hinzufügen oder Fortnehmen einer Arbeitslast über oder unter die Leistungsgrenze/-schwelle gebracht werden. Falls das SoC 200 sein Leistungsbudget erfüllt, wird in Block 835 dem SoC 200 und/oder einem anderen Teil der Vorrichtung 100 Leistung zugeordnet.
Wenn das SoC 200 sein Leistungsbudget jedoch nicht erfüllt, wird der Leistungspegel des SoCs 200 weiter analysiert. Beispielsweise stellt der Vergleicher 264 der Leistungssteuereinrichtung 260 in Block 840 fest, ob der Leistungspegel des SoCs 200 oberhalb oder unterhalb seiner Leistungsbudgetgrenze/-schwelle liegt. Falls der Leistungspegel des SoCs 200 nicht oberhalb seiner Schwelle oder Grenze liegt (beispielsweise nicht größer als ein spezifizierter maximaler Leistungspegel und/oder zugeordneter Bereich usw. ist), kann der Wähler 266 der Leistungssteuereinrichtung 260 in Block 845 zu einem höheren Index 241 der Leistungstabelle erhöhen. Beispielsweise kann ein höherer Index einer größeren Gesamtleistungszuordnung und/oder einer anderen Leistungsverteilung innerhalb des SoCs 200 entsprechen und kann die Leistungssteuereinrichtung 260 , wenn zusätzliche Leistung verfügbar ist und zugeordnet werden kann, einen höheren Index für die Leistungszuordnung aus der Leistungstabelle wählen. Falls das SoC 200 seine maximale Leistungszuordnung überschreitet, wird jedoch in Block 850 ein niedrigerer Index 241 aus der Leistungstabelle ausgewählt. Beispielsweise kann ein niedrigerer Index 241 , der einer geringeren und/oder anderen Leistungsverteilung entspricht, vom Wähler 266 aus dem Leistungstabellenspeicher 240 ausgewählt werden. In Block 855 wird der Index 241 aktualisiert, um eine neue Leistungszuordnung von der Leistungstabelle widerzuspiegeln, und die Steuerung kehrt zu Block 830 zurück, um eine aktualisierte Übereinstimmung der Leistungszuordnung mit dem Leistungsbudget für das SoC 200 zu bestimmen. Wenn das Leistungsbudget erfüllt wird, wird in Block 835 Leistung zugeordnet. Dabei kann die Leistungssteuereinrichtung 260 auf Änderungen in der Arbeitslast reagieren, um die Leistungszuordnung entsprechend der Leistungstabelle anzupassen, wobei sie durch den Leistungsmanager 220 aktualisiert werden kann, wenn eine oder mehrere Arbeitslasten zum SoC 200 hinzugefügt und/oder davon entfernt werden.
Die Prozessorplattform 900 des erläuterten Beispiels weist einen Prozessor 912 auf. Der Prozessor 912 des erläuterten Beispiels ist Hardware. Beispielsweise kann der Prozessor 912 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs (einschließlich GPU-Hardware), DSPs oder Steuereinrichtungen aus einer gewünschten Familie oder von einem gewünschten Hersteller implementiert werden. Der Hardwareprozessor kann eine halbleiterbasierte (beispielsweise siliciumbasierte) Vorrichtung sein. Bei diesem Beispiel implementiert der Prozessor 912 das beispielhafte SoC 200 , welches das beispielhafte Prozessorsystem 110 , den beispielhaften Speicher 120 , den beispielhaften Leistungsmanager 220 , den beispielhaften Leistungstabellenspeicher 240 und/oder die beispielhafte Leistungssteuereinrichtung 260 aufweist.
Der Prozessor 912 des erläuterten Beispiels weist einen lokalen Speicher 913 (beispielsweise Speicher 120 usw.) auf. Der Prozessor 912 aus dem erläuterten Beispiel steht über einen Bus 918 in Kommunikation mit einem Hauptspeicher einschließlich eines flüchtigen Speichers 914 und eines nichtflüchtigen Speichers 916 . Der flüchtige Speicher 914 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), einen dynamischen Direktzugriffsspeicher (DRAM), einen dynamischen RAMBUS®-Direktzugriffsspeicher (RDRAM®) und/oder einen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert sein. Der nichtflüchtige Speicher 916 kann durch einen Flash-Speicher und/oder einen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 914 , 916 , der auch zur Implementation des Speichers 120 verwendet werden kann, wird durch eine Speichersteuereinrichtung gesteuert.
Die Prozessorplattform 900 aus dem erläuterten Beispiel weist auch eine Schnittstellenschaltung 920 auf. Die Schnittstellenschaltung 920 kann durch einen beliebigen Schnittstellenstandardtyp in der Art einer Ethernetschnittstelle, einer USB-Schnittstelle, einer Bluetooth®-Schnittstelle, einer Nahfeldkommunikations(NFC)-Schnittstelle und/oder einer PCI-Expressschnittstelle implementiert sein.
Beim erläuterten Beispiel sind eine oder mehrere Eingabevorrichtungen 922 mit der Schnittstellenschaltung 920 verbunden. Die eine oder die mehreren Eingabevorrichtungen 922 ermöglichen es einem Benutzer, Daten und/oder Befehle in den Prozessor 912 einzugeben. Die eine oder die mehreren Eingabevorrichtungen können beispielsweise durch einen Audiosensor, ein Mikrofon, eine Kamera (Fotokamera oder Videokamera), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
Eine oder mehrere Ausgabevorrichtungen 924 sind auch mit der Schnittstellenschaltung 920 des erläuterten Beispiels verbunden. Die Ausgabevorrichtungen 924 können beispielsweise durch Anzeigevorrichtungen (beispielsweise eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhren(CRT)-Anzeige, eine In-Place-Switching-(IPS)-Anzeige, einen Touchscreen usw.), eine Berührungsausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert sein. Die Schnittstellenschaltung 920 des erläuterten Beispiels weist demgemäß typischerweise eine Graphiktreiberkarte, einen Graphiktreiberchip und/oder einen Graphiktreiberprozessor auf.
Die Schnittstellenschaltung 920 des erläuterten Beispiels weist auch eine Kommunikationsvorrichtung in der Art eines Senders, eines Empfängers, eines Sendeempfängers, eines Modems, eines Heim-Gateways, eines Drahtloszugangspunkts und/oder einer Netzschnittstelle zur Erleichterung des Datenaustausches mit externen Maschinen (beispielsweise Rechenvorrichtungen irgendeiner Art) über ein Netz 926 auf. Die Kommunikation kann beispielsweise über eine Ethernetverbindung, eine Digitale-Teilnehmerleitung(DSL)-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein Sichtlinien-Drahtlossystem, ein Mobiltelefonsystem usw. erfolgen.
Die Prozessorplattform 900 aus dem erläuterten Beispiel weist auch eine oder mehrere Massenspeichervorrichtungen 928 zum Speichern von Software und/oder Daten auf. Beispiele solcher Massenspeichervorrichtungen 928 umfassen Diskettenlaufwerke, Festplattenlaufwerke, CD-Laufwerke, Bluray-Laufwerke, Redundant-Arrayof-Independent-Disk(RAID)-Systeme und Digital-Versatile-Disk(DVD)-Laufwerke.
Die maschinenausführbaren Befehle 932 aus den 5 - 8 können in der Massenspeichervorrichtung 928 , im flüchtigen Speicher 914 , im nichtflüchtigen Speicher 916 und/oder in einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium in der Art einer CD oder DVD gespeichert werden.
Die Prozessorplattform 1000 des erläuterten Beispiels weist einen Prozessor 1012 auf. Der Prozessor 1012 des erläuterten Beispiels ist Hardware. Beispielsweise kann der Prozessor 1012 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPU, DSP oder Steuereinrichtungen aus einer gewünschten Familie oder von einem gewünschten Hersteller implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (beispielsweise siliciumbasierte) Vorrichtung sein. Bei diesem Beispiel implementiert der Prozessor 1012 den Compiler 130 , der den beispielhaften Empfänger 11 , den beispielhaften Analysator 231 , den beispielhaften Codegenerator 215 und den beispielhaften Ausgang 217 aufweist.
Der Prozessor 1012 aus dem erläuterten Beispiel weist einen lokalen Speicher 1013 (beispielsweise einen Cache) auf. Der Prozessor 1012 aus dem erläuterten Beispiel steht über einen Bus 1018 in Kommunikation mit einem Hauptspeicher einschließlich eines flüchtigen Speichers 1014 und eines nichtflüchtigen Speichers 1016 . Der flüchtige Speicher 1014 kann durch SDRAM, DRAM, RDRAM® und/oder einen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert werden. Der nichtflüchtige Speicher 1016 kann durch einen Flash-Speicher und/oder einen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 1014 , 1016 wird durch eine Speichersteuereinrichtung gesteuert.
Die Prozessorplattform 1000 aus dem erläuterten Beispiel weist auch eine Schnittstellenschaltung 1020 auf. Die Schnittstellenschaltung 1020 kann durch einen beliebigen Schnittstellenstandardtyp in der Art einer Ethernetschnittstelle, einer USB-Schnittstelle, einer Bluetooth®-Schnittstelle, einer NFC-Schnittstelle und/oder einer PCI-Expressschnittstelle implementiert sein.
Beim erläuterten Beispiel sind eine oder mehrere Eingabevorrichtungen 1022 mit der Schnittstellenschaltung 1020 verbunden. Die eine oder die mehreren Eingabevorrichtungen 1022 ermöglichen es einem Benutzer, Daten und/oder Befehle in den Prozessor 1012 einzugeben. Die eine oder die mehreren Eingabevorrichtungen können beispielsweise durch einen Audiosensor, ein Mikrofon, eine Kamera (Fotokamera oder Videokamera), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
Eine oder mehrere Ausgabevorrichtungen 1024 sind auch mit der Schnittstellenschaltung 1020 des erläuterten Beispiels verbunden. Die Ausgabevorrichtungen 1024 können beispielsweise durch Anzeigevorrichtungen (beispielsweise eine LED-, OLED-, LCD-, CRT-Anzeige, IPS-Anzeige, einen Touchscreen usw.), eine Berührungsausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert werden. Die Schnittstellenschaltung 1020 des erläuterten Beispiels weist demgemäß typischerweise eine Graphiktreiberkarte, einen Graphiktreiberchip und/oder einen Graphiktreiberprozessor auf.
Die Schnittstellenschaltung 1020 des erläuterten Beispiels weist auch eine Kommunikationsvorrichtung in der Art eines Senders, eines Empfängers, eines Sendeempfängers, eines Modems, eines Heim-Gateways, eines Drahtloszugangspunkts und/oder einer Netzschnittstelle zur Erleichterung des Datenaustausches mit externen Maschinen (beispielsweise Rechenvorrichtungen irgendeiner Art) über ein Netz 1026 auf. Die Kommunikation kann beispielsweise über eine Ethernetverbindung, eine DSL-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein Sichtlinien-Drahtlossystem, ein Mobiltelefonsystem usw. erfolgen.
Die Prozessorplattform 1000 aus dem erläuterten Beispiel weist auch eine oder mehrere Massenspeichervorrichtungen 1028 zum Speichern von Software und/oder Daten auf. Beispiele dieser Massenspeichervorrichtungen 1028 umfassen Diskettenlaufwerke, Festplattenlaufwerke, Compact-Disk-Laufwerke, Bluray-Disk-Laufwerke, RAID-Systeme und DVD-Laufwerke.
Die maschinenausführbaren Befehle 1032 aus den 5 - 8 können in der Massenspeichervorrichtung 1028 , im flüchtigen Speicher 1014 , im nichtflüchtigen Speicher 1016 und/oder in einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium in der Art einer CD oder DVD gespeichert werden.
Anhand des Vorstehenden wird verständlich geworden sein, dass beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel offenbart wurden, welche die dynamische Leistungszuordnung zu einem Prozessorsystem und einem Speicher verbessern. Die offenbarten Vorrichtungen, Systeme, Verfahren und Herstellungsartikel verbessern die Effizienz des Prozessorsystems, des Speichers und anderer zugeordneter Schaltungsanordnungen in der Art einer System-on-a-Chip-Schaltungsanordnung durch Ausnutzen von Compiler-Metadaten zum dynamischen Extrahieren, Aktualisieren und Zuschneiden der Leistungszuordnung für einen oder mehrere Beschleuniger, Speicher und/oder andere Schaltungsanordnungen für eine bestimmte auszuführende Arbeitslast oder einen bestimmten Satz auszuführender Arbeitslasten. Bei bestimmten Beispielen wird eine Deep-Learning-Hardwarebeschleunigervorrichtung durch Modifikation des Compilers und Hinzufügen eines Leistungsmanagers zum Bilden und Aktualisieren einer Leistungstabelle von Frequenzen für die Leistungszuordnung, die von einer Leistungssteuereinrichtung für das dynamische Zuordnen und Aktualisieren der Zuordnung von Leistungsfrequenzen zu Schaltungsanordnungen auszunutzen ist, wenn eine Arbeitslast zur Vorrichtung hinzugefügt und/oder aus dieser entfernt wird, wenn sich das Verhältnis von Rechen- zu Speicheraufgaben innerhalb einer gegebenen Arbeitslast ändert, usw., verbessert. Bestimmte Beispiele verbessern eine Beschleunigervorrichtung und ihren zugeordneten Compiler durch Bereitstellen einer Fähigkeit zum Analysieren einer Arbeitslast und Änderungen oder Übergängen des Arbeitsverhältnisses innerhalb der Arbeitslast, um der Arbeitslast Leistung zuzuordnen und die Zuordnung von Leistung während der Arbeitslast in einer zuvor nicht verfügbaren Weise zu ändern. Die offenbarten Verfahren, Vorrichtungen und Herstellungsartikel betreffen demgemäß eine oder mehrere Verbesserungen der Funktionsweise eines Computers und/oder anderen Prozessors.
Hier werden beispielhafte Vorrichtungen, Systeme, Verfahren und Herstellungsartikel zur Verwaltung der Leistungsversorgung von Deep-Learning-Beschleunigersystemen offenbart. Weitere Beispiele und Kombinationen davon schließen die Folgenden ein.
Beispiel 1 weist eine Vorrichtung auf, die einen Leistungsmanager und eine Leistungssteuereinrichtung aufweist. Der Leistungsmanager soll Folgendes ausführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, und Bestimmen eines Index in der Leistungstabelle. Die Leistungssteuereinrichtung soll Folgendes ausführen: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Beispiel 2 weist die Vorrichtung von Beispiel 1 auf, und sie weist ferner den Speicher und den Beschleuniger auf.
Beispiel 3 weist die Vorrichtung von Beispiel 2 auf, wobei der Beschleuniger einer von mehreren Beschleunigern ist, wobei der Speicher und die mehreren Beschleuniger mehrere Arbeitslasten ausführen sollen.
Beispiel 4 weist die Vorrichtung von Beispiel 3 auf, und sie weist ferner einen Arbeitslastverwaltungsprozessor auf.
Beispiel 5 weist die Vorrichtung von Beispiel 1 auf, wobei die Vorrichtung als System-on-a-Chip implementiert ist.
Beispiel 6 weist die Vorrichtung von Beispiel 1 auf, und sie weist ferner einen Compiler auf.
Beispiel 7 weist die Vorrichtung von Beispiel 1 auf, wobei das Verhältnis einen dynamischen Spannungs- und Frequenzskalier-Übergangspunkt definiert.
Beispiel 8 weist die Vorrichtung von Beispiel 1 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist.
Beispiel 9 weist die Vorrichtung von Beispiel 8 auf, wobei die Künstliche-Intelligenz-Arbeitslast eine oder mehrere Inference-Schichten eines neuronalen Deep-Learning-Netzes implementieren soll.
Beispiel 10 weist die Vorrichtung von Beispiel 1 auf, wobei die Leistungssteuereinrichtung die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einstellen soll.
Beispiel 11 weist die Vorrichtung von Beispiel 1 auf, wobei die Leistungssteuereinrichtung Folgendes ausführen soll: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
Beispiel 12 weist die Vorrichtung von Beispiel 1 auf, welche ferner einen Leistungstabellenspeicher zum Speichern der Leistungstabelle aufweist.
Beispiel 13 weist die Vorrichtung von Beispiel 1 auf, wobei der Leistungsmanager Folgendes aufweist: einen Leistungsverwaltungsprozessor zum Verarbeiten der Metadaten, einen Leistungstabellengenerator, um wenigstens eines vom Erzeugen oder Aktualisieren der Leistungstabelle unter Verwendung der verarbeiteten Metadaten auszuführen, und einen Indexbestimmer zur Bestimmung des Index, welcher der Leistungssteuereinrichtung bereitzustellen ist.
Beispiel 14 weist die Vorrichtung von Beispiel 1 auf, wobei die Leistungssteuereinrichtung Folgendes aufweist: einen Verbrauchsberechner zum Bestimmen eines Leistungsverbrauchs der Vorrichtung auf der Grundlage der Leistungstabelle, einen Vergleicher zum Vergleichen des Leistungsverbrauchs mit einem Leistungsbudget und einen Wähler zum Auswählen eines Pegels in der Leistungstabelle auf der Grundlage des Index und des Vergleichs des Leistungsverbrauchs mit dem Leistungsbudget, um dem Beschleuniger und dem Speicher entsprechend den Leistungsfrequenzen am ausgewählten Pegel der Leistungstabelle Leistung zuzuordnen.
Beispiel 15 weist wenigstens ein nichtflüchtiges computerlesbares Speichermedium auf, das computerlesbare Befehle aufweist, die, wenn sie ausgeführt werden, wenigstens einen Prozessor veranlassen, wenigstens Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Beispiel 16 weist das wenigstens eine nichtflüchtige computerlesbare Speichermedium von Beispiel 15 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist und wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einzustellen.
Beispiel 17 weist das wenigstens eine nichtflüchtige computerlesbare Speichermedium von Beispiel 15 auf, wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, Folgendes auszuführen: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
Beispiel 18 weist ein Verfahren auf, welches Folgendes aufweist: Erzeugen einer Leistungstabelle, die Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten zuordnet, durch Ausführen eines Befehls mit wenigstens einem Prozessor, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, durch Ausführen eines Befehls mit dem wenigstens einen Prozessor, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Beispiel 19 weist das Verfahren von Beispiel 18 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist und ferner die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger eingestellt wird.
Beispiel 20 weist das Verfahren von Beispiel 18 auf, und es weist ferner Folgendes auf: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
Beispiel 21 weist eine Vorrichtung auf, welche Folgendes aufweist: einen Speicher, der maschinenlesbare Befehle aufweist, und wenigstens einen Prozessor zur Ausführung der Befehle, um Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Beispiel 22 weist die Vorrichtung von Beispiel 21 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist und wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einzustellen.
Beispiel 23 weist die Vorrichtung von Beispiel 21 auf, wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, Folgendes auszuführen: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
Beispiel 24 weist ein System-on-a-Chip auf, welches Folgendes aufweist: einen Leistungsmanager, um Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, und Bestimmen eines Index in der Leistungstabelle und eine Leistungssteuereinrichtung, um Folgendes auszuführen: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Beispiel 25 weist das System-on-a-Chip von Beispiel 24 auf, welches ferner den Speicher und den Beschleuniger aufweist.
Beispiel 26 weist eine Vorrichtung auf, welche Folgendes aufweist: Mittel zum Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Mittel zum Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Mittel zum Bestimmen eines Index in der Leistungstabelle und Mittel zum Zuordnen von Leistung zwischen dem Beschleuniger und dem Speicher unter Verwendung der Leistungstabelle, um die erste Arbeitslast auszuführen, durch Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und Mittel zum Zuordnen von Leistung zwischen dem Beschleuniger und dem Speicher unter Verwendung der Leistungstabelle, um die erste Arbeitslast auszuführen, durch Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Wenngleich hier bestimmte beispielhafte Verfahren, Vorrichtungen, Systeme und Herstellungsartikel offenbart wurden, ist der Abdeckungsbereich dieses Patents nicht darauf beschränkt. Im Gegenteil deckt dieses Patent alle Verfahren, Vorrichtungen, Systeme und Herstellungsartikel ab, die in etwa in den Schutzumfang der Ansprüche dieses Patents fallen.
Claims (15)
- Vorrichtung, welche Folgendes umfasst: einen Leistungsmanager, um Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, und Bestimmen eines Index in der Leistungstabelle und eine Leistungssteuereinrichtung, um Folgendes auszuführen: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
- Vorrichtung nach
Anspruch 1 , wobei der Beschleuniger einer von mehreren Beschleunigern ist, wobei der Speicher und die mehreren Beschleuniger mehrere Arbeitslasten ausführen sollen. - Vorrichtung nach
Anspruch 2 , welche ferner einen Arbeitslastverwaltungsprozessor aufweist. - Vorrichtung nach
Anspruch 1 , wobei die Vorrichtung als System-on-a-Chip implementiert ist. - Vorrichtung nach
Anspruch 1 , wobei das Verhältnis einen dynamischen Spannungs- und Frequenzskalier-Übergangspunkt definiert. - Vorrichtung nach
Anspruch 1 , wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast zur Implementation einer oder mehrerer Inference-Schichten eines neuronalen Deep-Learning-Netzes aufweist. - Vorrichtung nach
Anspruch 1 , wobei die Leistungssteuereinrichtung die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einstellen soll. - Vorrichtung nach
Anspruch 1 , wobei die Leistungssteuereinrichtung Folgendes ausführen soll: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt. - Vorrichtung nach
Anspruch 1 , welche ferner einen Leistungstabellenspeicher zum Speichern der Leistungstabelle aufweist. - Vorrichtung nach
Anspruch 1 , wobei der Leistungsmanager Folgendes aufweist: einen Leistungsverwaltungsprozessor zum Verarbeiten der Metadaten, einen Leistungstabellengenerator, um wenigstens eines vom Erzeugen oder Aktualisieren der Leistungstabelle unter Verwendung der verarbeiteten Metadaten auszuführen, und einen Indexbestimmer zur Bestimmung des Index, welcher der Leistungssteuereinrichtung bereitzustellen ist, und wobei die Leistungssteuereinrichtung Folgendes aufweist: einen Verbrauchsberechner zum Bestimmen eines Leistungsverbrauchs der Vorrichtung auf der Grundlage der Leistungstabelle, einen Vergleicher zum Vergleichen des Leistungsverbrauchs mit einem Leistungsbudget und einen Wähler zum Auswählen eines Pegels in der Leistungstabelle auf der Grundlage des Index und des Vergleichs des Leistungsverbrauchs mit dem Leistungsbudget, um dem Beschleuniger und dem Speicher entsprechend den Leistungsfrequenzen am ausgewählten Pegel der Leistungstabelle Leistung zuzuordnen. - Verfahren, welches Folgendes umfasst: Erzeugen einer Leistungstabelle, die Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten zuordnet, durch Ausführen eines Befehls mit wenigstens einem Prozessor, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, durch Ausführen eines Befehls mit dem wenigstens einen Prozessor, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
- Verfahren nach
Anspruch 11 , wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist, und wobei ferner die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger eingestellt wird. - Verfahren nach
Anspruch 11 , welches ferner Folgendes aufweist: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt. - Computerlesbares Medium, das Befehle aufweist, die, wenn sie ausgeführt werden, das Verfahren nach einem der
Ansprüche 11 -13 implementieren. - Vorrichtung, welche Folgendes umfasst: Mittel zum Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Mittel zum Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Mittel zum Bestimmen eines Index in der Leistungstabelle und Mittel zum Zuordnen von Leistung zwischen dem Beschleuniger und dem Speicher unter Verwendung der Leistungstabelle, um die erste Arbeitslast auszuführen, durch: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/541,557 US11334399B2 (en) | 2019-08-15 | 2019-08-15 | Methods and apparatus to manage power of deep learning accelerator systems |
US16/541,557 | 2019-08-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102020119621A1 true DE102020119621A1 (de) | 2021-02-18 |
Family
ID=68693855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102020119621.0A Pending DE102020119621A1 (de) | 2019-08-15 | 2020-07-24 | Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen |
Country Status (3)
Country | Link |
---|---|
US (1) | US11334399B2 (de) |
CN (1) | CN112396172A (de) |
DE (1) | DE102020119621A1 (de) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055139B2 (en) * | 2018-06-12 | 2021-07-06 | International Business Machines Corporation | Smart accelerator allocation and reclamation for deep learning jobs in a computing cluster |
US11194377B2 (en) * | 2020-01-21 | 2021-12-07 | Dell Products L.P. | System and method for optimizing hardware resources for optimal workload performance |
US11461662B1 (en) * | 2020-03-25 | 2022-10-04 | Amazon Technologies, Inc. | Compilation time reduction for memory and compute bound neural networks |
US11887647B2 (en) | 2020-04-09 | 2024-01-30 | Micron Technology, Inc. | Deep learning accelerator and random access memory with separate memory access connections |
US11461651B2 (en) | 2020-04-09 | 2022-10-04 | Micron Technology, Inc. | System on a chip with deep learning accelerator and random access memory |
US11874897B2 (en) * | 2020-04-09 | 2024-01-16 | Micron Technology, Inc. | Integrated circuit device with deep learning accelerator and random access memory |
US11726784B2 (en) | 2020-04-09 | 2023-08-15 | Micron Technology, Inc. | Patient monitoring using edge servers having deep learning accelerator and random access memory |
US11355175B2 (en) | 2020-04-09 | 2022-06-07 | Micron Technology, Inc. | Deep learning accelerator and random access memory with a camera interface |
KR20210143611A (ko) * | 2020-05-20 | 2021-11-29 | 삼성전자주식회사 | 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법 |
CN111970718B (zh) * | 2020-07-22 | 2022-03-11 | 西北工业大学 | 能量收集不可信中继网络中基于深度学习的功率分配方法 |
US11371679B1 (en) | 2020-12-24 | 2022-06-28 | Elemental LED, Inc. | LED linear luminaire |
US11248779B1 (en) * | 2020-12-24 | 2022-02-15 | Elemental LED, Inc. | LED linear luminaire |
CN112764932B (zh) * | 2021-01-27 | 2022-12-02 | 西安电子科技大学 | 基于深度强化学习的计算密集型工作负载高能效分配方法 |
CN116868168A (zh) * | 2021-02-24 | 2023-10-10 | 华为技术有限公司 | 一种加速器的运行方法及装置 |
CN113115355B (zh) * | 2021-04-29 | 2022-04-22 | 电子科技大学 | 一种d2d系统中基于深度强化学习的功率分配方法 |
EP4137913A1 (de) | 2021-08-17 | 2023-02-22 | Axis AB | Leistungsverwaltung in einer verarbeitungsschaltung, die ein neuronales netzwerk implementiert |
US20230079975A1 (en) * | 2021-09-10 | 2023-03-16 | Arm Limited | Power management for system-on-chip |
KR20230049468A (ko) * | 2021-10-06 | 2023-04-13 | 삼성전자주식회사 | 복수의 서브 그래프들에 대한 인공 신경망 연산을 수행하는 인공 신경망 모듈 및 이의 동작 방법 |
US11822976B2 (en) | 2021-11-30 | 2023-11-21 | Cisco Technology, Inc. | Extending machine learning workloads |
US20230236655A1 (en) * | 2022-01-21 | 2023-07-27 | Dell Products L.P. | Method and system for optimizing power for a computer vision environment |
KR20240003619A (ko) * | 2022-07-01 | 2024-01-09 | 삼성전자주식회사 | 신경망 연산 시스템 및 신경망 모델 실행 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008026948A (ja) * | 2006-07-18 | 2008-02-07 | Renesas Technology Corp | 半導体集積回路 |
US9104498B2 (en) * | 2012-07-31 | 2015-08-11 | Hewlett-Packard Development Company, L.P. | Maximizing server utilization within a datacenter |
US9383797B2 (en) * | 2014-01-09 | 2016-07-05 | Wisconsin Alumni Research Foundation | Electronic computer providing power/performance management |
US10263838B2 (en) * | 2016-08-23 | 2019-04-16 | International Business Machines Corporation | Assigning resources to a workload that utilizes embedded computing entities |
US10521271B2 (en) * | 2017-04-01 | 2019-12-31 | Intel Corporation | Hybrid low power homogenous grapics processing units |
CN111480336B (zh) * | 2018-03-26 | 2021-08-13 | 华为技术有限公司 | 一种帧率调整方法及终端 |
US10921876B2 (en) * | 2018-04-26 | 2021-02-16 | Mediatek Inc. | Runtime power table index adjustment for performance and power management |
US11079825B2 (en) * | 2019-08-13 | 2021-08-03 | Intel Corporation | Compiler guided power allocation in computing devices |
-
2019
- 2019-08-15 US US16/541,557 patent/US11334399B2/en active Active
-
2020
- 2020-06-23 CN CN202010581073.XA patent/CN112396172A/zh active Pending
- 2020-07-24 DE DE102020119621.0A patent/DE102020119621A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US11334399B2 (en) | 2022-05-17 |
US20190370086A1 (en) | 2019-12-05 |
CN112396172A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102020119621A1 (de) | Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen | |
DE102020114218A1 (de) | Verfahren und Vorrichtungen zum Verbessern der Laufzeitleistung auf einem heterogenen System ausgeführter Software | |
CN111626430B (zh) | 一种数据处理方法及相关产品 | |
DE112012002905B4 (de) | Technik zum Kompilieren und Ausführen von Programmen in höheren Programmiersprachen auf heterogenen Computern | |
DE102020118004A1 (de) | Verfahren und vorrichtungen zum kachelförmigen durchlaufen eines tensors für faltungsoperationen | |
DE102013104328B4 (de) | Aufgabenzuteilung in großen und kleinen Kernen | |
DE102016118210A1 (de) | Granulare Dienstqualität für Computer-Ressourcen | |
DE112017003688T5 (de) | Technologien zur Durchführung einer Orchestrierung mit Online-Analyse von Telemetriedaten | |
DE102018132781A1 (de) | Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern | |
DE112011100143T5 (de) | Optimieren der elektrischen Leistungsaufnahme in einem Rechenzentrum | |
KR20240005113A (ko) | 총체적 글로벌 성능 및 전력 관리 | |
DE102020110655A1 (de) | Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt | |
DE112012000628T5 (de) | Systeme und Verfahren zur Verarbeitung von maschinellen Lernalgorithmen in einer Mapreduce-Umgebung | |
DE112010004420T5 (de) | Verfahren und System zur Verbesserung der Ausführungszeit von Software durch Optimierung elnes Leistungsmodells | |
DE112018002572T5 (de) | Verfahren, systeme und vorrichtungen zur optimierung der pipeline-ausführung | |
DE112018004660T5 (de) | Verwenden von kommentaren zum bereitstellen von optimierungen | |
DE112013001735T5 (de) | Optimieren des Verbindens von Anweisungen | |
CN110430444A (zh) | 一种视频流处理方法及系统 | |
DE112018005268T5 (de) | Priorisieren von anwendungen für eine diagonale skalierung in einer verteilten datenverarbeitungsumgebung | |
DE102022105725A1 (de) | Verfahren und einrichtungen zur durchführung von gewichtungs- und aktivierungskomprimierung und -dekomprimierung | |
DE102022129946A1 (de) | Verfahren und vorrichtungen zum bestimmen eines verfeinerten kontexts für softwarefehlererkennung und - korrektur | |
DE112021003294T5 (de) | Systemverwaltung auf grundlage von leistung und leistungsfähigkeit | |
DE102020118005A1 (de) | Verfahren und einrichtung zum dynamischen drosseln von rechenengines | |
DE102018208267A1 (de) | Technologie zum verwenden von steuerabhängigkeitsgraphen für das konvertieren von steuerflussprogrammen in datenflussprogramme | |
DE102020108281A1 (de) | Verfahren und einrichtungen zum empfehlen von anweisungsanpassungen zum verbessern der rechenleistung |