-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft ein Aufgabenmanagement und eine Zuordnung in prozessorbasierten Umgebungen.
-
HINTERGRUND
-
Heterogene Systeme nutzen zentrale Verarbeitungseinheiten (Central Processing Units, CPUs) und Beschleuniger, wie grafische Verarbeitungseinheiten (Graphical Processing Units, GPUs), feldprogrammierbare Gate-Arrays (FPGAs). Heterogene Systeme können auch Co-Prozessoren benutzen, wie den Xeon™ Phi, hergestellt von Intel, Corp. (Santa Clara, CA). Solche heterogenen Systeme werden im Bereich einer Hochleistungsrechnung immer beliebter. Solche Beschleuniger können CPUs signifikante zusätzliche Rechenleistung und/oder erhöhte Funktionalität bereitstellen. Eine Entwicklung von Software, die imstande ist, die volle Leistung solcher Beschleuniger wirksam einzusetzen, kann jedoch für Programmierer eine Herausforderung sein. Die Herausforderungen, welchen Programmierer gegenüberstehen, enthalten ein Erstellen eines hocheffizienten Codes wie auch eine Spezifizierung, wie Aufgaben zwischen der CPU und einem oder mehreren Beschleunigern zu verteilen sind, um die Verwendung von Systemressourcen zu optimieren und Systemleistung zu maximieren.
-
Als weitere Komplikation kann die optimale Verteilung von Aufgaben unter der zentralen Verarbeitungseinheit und einem oder mehr Beschleunigern von den Eigenschaften der Aufgabe und häufig den Eigenschaften der Eingangsdaten, die durch die Aufgabe verwendet werden, abhängen. Zusätzlich ist eine Datenübertragung zwischen der zentralen Verarbeitungseinheit und den Beschleunigern üblicherweise sowohl hinsichtlich Quantität als auch Zeit signifikant und daher muss auch einer Reduzierung von Systemlatenz durch Etablieren von Arbeitslastverteilungen Beachtung geschenkt werden, die gemeinsame Daten in einer gemeinsamen Vorrichtung warten.
-
Figurenliste
-
Merkmale und Vorteile verschiedener Ausführungsformen des beanspruchten Gegenstands werden im Zuge der ausführlichen Beschreibung und mit Bezugnahme auf die Zeichnungen offensichtlich werden, in welchen gleiche Bezugszeichen gleiche Teile bezeichnen und in welchen:
- 1 eine schematische Darstellung ist, die einen beispielhaften Aufgabenmanagerschaltkreis gemäß mindestens einer hier beschriebenen Ausführungsform zeigt, der ein Aufgabenmanagementsystem bereitstellt, in dem Aufgaben, die durch einen Prozessor und mindestens einen Beschleuniger ausgeführt werden, autonom unter den Prozessor/Prozessorkernen und den Beschleunigern in einer Weise verteilt werden, die Aufgabenparallelität maximiert und Laufzeitmehraufwand minimiert;
- 2 eine schematische Darstellung ist, die ein beispielhaftes System gemäß mindestens einer hier beschriebenen Ausführungsform zeigt, in dem ein Aufgabenmanagementschaltkreis autonom eine neue Aufgabe in eine Vielzahl neuer Teilaufgaben unterteilt, sodass eine 1:1 Entsprechung zwischen dem Ausgang einer bestehenden Aufgabe und dem Eingang in eine neue Teilaufgabe besteht;
- 3 ein Blockdiagramm ist, das eine beispielhafte prozessorbasierte Vorrichtung gemäß mindestens einer hier beschriebenen Ausführungsform zeigt, die eine oder mehrere Logikvorrichtungen, Logiksysteme, Logikelemente und/oder Schaltkreise beinhaltet, die fähig sind, einen Aufgabenmanagerschaltkreis zum Verteilen von Aufgaben unter einem oder mehreren Prozessoren/Kernen und/oder einem oder mehr Beschleunigem bereitzustellen, um Systemleistung durch Erhöhen von Aufgabenparallelität und Reduzieren von Systemlatenz, die Datentransfers zwischen dem einen oder mehreren Prozessoren/Kernen und einem oder mehreren Beschleunigern zuzuschreiben ist, zu verbessern;
- 4 ein Ablaufdiagramm auf hoher Ebene eines beispielhaften Verfahrens zum Unterteilen einer Aufgabe in Teilaufgaben gemäß mindestens einer hier beschriebenen Ausführungsform ist, sodass die Eingabe/Ausgabe einer Teilaufgabe eine 1:1 Entsprechung mit der Eingabe/Ausgabe einer anderen Aufgabe aufrechterhält;
- 5 ein Ablaufdiagramm auf hoher Ebene eines beispielhaften Verfahrens zum Unterteilen einer Aufgabe in Teilaufgaben gemäß mindestens einer hier beschriebenen Ausführungsform ist, sodass die Eingabe/Ausgabe einer Teilaufgabe eine 1:1 Entsprechung mit der Eingabe/Ausgabe einer anderen Aufgabe aufrechterhält; und
- 6A ein Ablaufdiagramm auf hoher Ebene eines beispielhaften Verfahrens zum Unterteilen einer Aufgabe in Teilaufgaben gemäß mindestens einer hier beschriebenen Ausführungsform ist, sodass die Eingabe/Ausgabe einer Teilaufgabe eine 1:1 Entsprechung mit der Eingabe/Ausgabe einer anderen Aufgabe aufrechterhält; und
- 6B ein Ablaufdiagramm auf hoher Ebene gemäß mindestens einer hier beschriebenen Ausführungsform ist, das das beispielhafte Verfahren zum Unterteilen einer Aufgabe in Teilaufgaben fortsetzt, das in 6A beginnt.
-
Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf beispielhafte Ausführungsformen erfolgt, werden viele Alternativen, Modifizierungen und Variationen davon für Fachleute auf dem Gebiet offensichtlich sein.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Zum Managen der Nutzung von zentralen Verarbeitungseinheiten und Beschleunigern wurden verschiedene Automatisierungsverfahren vorgeschlagen. Ein solches Verfahren beinhaltet die Verwendung dynamischer Planungslaufzeiten. Eine dynamische Planungslaufzeit automatisiert den Verteilungsprozess einer Arbeitslast unter einer oder mehreren zentralen Verarbeitungseinheiten und einer Anzahl kommunikationsfähig gekoppelter Hardware-Beschleuniger. Die Arbeitslast wird in Aufgaben unterteilt. Ein Planer oder Aufgabenmanager nimmt als Eingang einen Satz von Aufgaben und plant während einer Programmausführung diese Aufgaben bei verschiedenen Systemvorrichtungen, während Abhängigkeiten zwischen den Aufgaben beibehalten werden. Idealerweise entdeckt der Planer oder Aufgabenmanager eine Parallelität unter Aufgaben und plant die Aufgaben, um Systemleistung zu optimieren und/oder Systemlatenz zu minimieren. In einer solchen Anordnung müssen Programmierer eine Arbeitslastverteilung unter Systemkomponenten nicht berücksichtigen.
-
In mindestens einigen Implementierungen können Abhängigkeiten zwischen Aufgaben unter Verwendung eines Aufgabengraphen oder einer ähnlichen Struktur beibehalten werden, die das Verhältnis zwischen Aufgaben zeigt oder auf andere Weise angibt. Ein Aufgabengraph ist ein gerichteter Graph, der Knoten, die Aufgaben darstellen, und gerichtete Ränder, die die Verhältnisse und Datenabhängigkeiten zwischen verschiedenen Aufgaben darstellen, enthält. Datenabhängigkeiten zwischen Aufgaben werden durch den Planer oder Aufgabenmanager zu Laufzeit bestimmt und werden verarbeitet, wenn der Planer oder Aufgabenmanager eine Aufgabe in den Aufgabengraphen einfügt. Eine Aufgabe, die keine Vorläufer hat, ist zur Ausführung durch eine zentrale Verarbeitungseinheit und/oder einen Beschleuniger bereit. Nach Ausführung wird eine fertiggestellte Aufgabe aus dem Aufgabengraphen entfernt, wodurch eine Ausführung zusätzlicher Aufgaben mit einer Abhängigkeit von der zuletzt fertiggestellten Aufgabe möglich ist. Falls mehr als eine Aufgabe zur Ausführung bereit sind, können die Aufgaben gleichzeitig auf unterschiedlichen Rechenvorrichtungen geplant werden, um eine Parallelität auf Aufgabenebene zu erreichen.
-
Die Granularität spezifischer Aufgaben kann eine signifikante Auswirkung auf die Leistung der angewendeten dynamischen Planungslaufzeit haben. Aufgabengranularität kann eine Parallelität und Planungsflexibilität künstlich begrenzen. Falls eine Aufgabengranularität zu grob ist, können Aufgaben unteilbar sein und können die Fähigkeit des Planers oder Aufgabenmanagers beeinträchtigen, effektiv und/oder effizient Teilaufgaben zwischen der zentralen Verarbeitungseinheit und einem oder mehreren Beschleunigern zu verteilen und zuzuordnen. Andererseits, falls eine Aufgabengranularität zu fein eingestellt ist, kann eine große Anzahl von Aufgabenknoten und Abhängigkeitsrändern generiert werden, die zu einem höheren Mehraufwand für den Planer oder Aufgabenmanager führt, der für eine Aufgabenzuordnung unter der zentralen Verarbeitungseinheit und dem Beschleuniger verantwortlich ist. Anstatt sich darauf zu verlassen, dass der Programmierer die passende Ebene an Granularität für eine Anwendung wählt, stellen die hier beschriebenen Systeme und Verfahren stattdessen eine Aufgabengranularität in einem Versuch, Aufgabenparallelität zu maximieren, während Laufzeitmehraufwand einer Aufgabengraph-Abhängigkeitsanalyse, Planung und Wartung minimiert werden, automatisch ein.
-
Es wird ein System bereitgestellt, das eine Vielzahl kommunikationsfähig gekoppelter Prozessoren enthält. Das System kann einen Systemspeicher enthalten, der kommunikationsfähig an die Vielzahl kommunikationsfähig gekoppelter Prozessoren gekoppelt ist; und einen Aufgabenmanagerschaltkreis zum dynamischen Zuordnen von Aufgaben unter der Vielzahl kommunikationsfähig gekoppelter Prozessoren, wobei der Aufgabenmanagerschaltkreis dient zum:
-
Vergleichen einer Vielzahl von Argumenten, die mit einer neuen Aufgabe verknüpft sind, mit einer Vielzahl von Argumenten, die mit mindestens einer bestehenden Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Argumenten, die mit der neuen Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Argumenten, die mit der bestehenden Aufgabe verknüpft sind, besteht; und in Antwort auf ein Bestimmen, dass mindestens einige einer Vielzahl von Eingangsargumenten, die mit der neuen Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen einer Vielzahl von Ausgangsargumenten haben, die mit einer bestehenden Aufgabe verknüpft sind: Unterteilen der bestehenden Aufgabe in eine Vielzahl bestehender Teilaufgaben, sodass jedes der Ausgangsargumente, das mit einer ersten bestehenden Teilaufgabe verknüpft ist, eine 1:1 Entsprechung mit jedem der Eingangsargumente hat, das mit der neuen Aufgabe verknüpft ist.
-
Gemäß Beispiel 1 ist ein System bereitgestellt, das eine Vielzahl kommunikationsfähig gekoppelter Prozessoren; einen Systemspeicher, der kommunikationsfähig an die Vielzahl kommunikationsfähig gekoppelter Prozessoren gekoppelt ist; und einen Aufgabenmanagerschaltkreis zum dynamischen Zuordnen von Aufgaben unter der Vielzahl kommunikationsfähig gekoppelter Prozessoren, enthält, wobei der Aufgabenmanagerschaltkreis dient zum: Vergleichen einer Vielzahl von Argumenten, die mit einer neuen Aufgabe verknüpft sind, mit einer Vielzahl von Argumenten, die mit mindestens einer bestehenden Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Argumenten, die mit der neuen Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Argumenten, die mit der bestehenden Aufgabe verknüpft sind, besteht; und in Antwort auf ein Bestimmen, dass mindestens einige einer Vielzahl von Eingangsargumenten, die mit der neuen Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen einer Vielzahl von Ausgangsargumenten haben, die mit einer bestehenden Aufgabe verknüpft sind: Unterteilen der bestehenden Aufgabe in eine Vielzahl bestehender Teilaufgaben, sodass jedes der Ausgangsargumente, das mit einer ersten bestehenden Teilaufgabe verknüpft ist, eine 1:1 Entsprechung mit jedem der Eingangsargumente hat, das mit der neuen Aufgabe verknüpft ist.
-
Es wird ein Verfahren zum dynamischen Zuordnen von Aufgaben unter einer Vielzahl kommunikationsfähig gekoppelter Prozessoren bereitgestellt. Das Verfahren kann enthalten: Vergleichen, durch einen Aufgabenmanager, einer Vielzahl von Argumenten, die mit einer neuen Aufgabe verknüpft sind, mit einer Vielzahl von Argumenten, die mit mindestens einer bestehenden Aufgabe verknüpft sind; Bestimmen, durch den Aufgabenmanager, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Argumenten, die mit der neuen Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Argumenten, die mit der bestehenden Aufgabe verknüpft sind, besteht; und Unterteilen, durch den Aufgabenmanager, der bestehenden Aufgabe in eine Vielzahl bestehender Teilaufgaben, sodass jedes der Ausgangsargumente, das mit einer ersten bestehenden Teilaufgabe verknüpft ist, eine 1:1 Entsprechung mit jedem der Eingangsargumente hat, das mit der neuen Aufgabe verknüpft ist, in Antwort auf ein Bestimmen, dass mindestens einige einer Vielzahl von Eingangsargumenten, die mit der neuen Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen einer Vielzahl von Ausgangsargumenten haben, die mit einer bestehenden Aufgabe verknüpft sind.
-
Eine Vorrichtung, enthaltend einen Aufgabenmanagerschaltkreis, der dynamisch Aufgaben unter der Vielzahl kommunikationsfähig gekoppelter Prozessoren zuordnet. Die Vorrichtung kann einen Aufgabenmanagerschaltkreis enthalten zum: Vergleichen einer Vielzahl von Argumenten, die mit einer neuen Aufgabe verknüpft sind, mit einer Vielzahl von Argumenten, die mit mindestens einer bestehenden Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Argumenten, die mit der neuen Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Argumenten, die mit der bestehenden Aufgabe verknüpft sind, besteht; in Antwort auf ein Bestimmen, dass mindestens einige einer Vielzahl von Eingangsargumenten, die mit der neuen Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen einer Vielzahl von Ausgangsargumenten haben, die mit einer bestehenden Aufgabe verknüpft sind: Unterteilen der bestehenden Aufgabe in eine Vielzahl bestehender Teilaufgaben, sodass jedes der Ausgangsargumente, das mit einer ersten bestehenden Teilaufgabe verknüpft ist, eine 1:1 Entsprechung mit jedem der Eingangsargumente hat, das mit der neuen Aufgabe verknüpft ist; in Antwort auf ein Bestimmen, dass mindestens einige einer Vielzahl von Ausgangsargumenten, die mit der neuen Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen einer Vielzahl von Eingangsargumenten haben, die mit einer bestehenden Aufgabe verknüpft sind: Unterteilen der neuen Aufgabe in eine Vielzahl neuer Teilaufgaben, sodass jedes der Ausgangsargumente, das mit einer ersten neuen Teilaufgabe verknüpft ist, eine 1:1 Entsprechung mit jedem der Eingangsargumente hat, das mit der bestehenden Aufgabe verknüpft ist.
-
Es wird ein nicht transitorisches, computerlesbares Medium bereitgestellt. Das nicht transitorische, computerlesbare Medium kann Anweisungen enthalten, die, wenn sie durch einen Schaltkreis ausgeführt werden, den Schaltkreis zu einem dedizierten Aufgabenmanagerschaltkreis umformen, wobei der Aufgabenmanagerschaltkreis dient zum: Vergleichen einer Vielzahl von Argumenten, die mit einer neuen Aufgabe verknüpft sind, mit einer Vielzahl von Argumenten, die mit mindestens einer bestehenden Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Argumenten, die mit der neuen Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Argumenten, die mit der bestehenden Aufgabe verknüpft sind, besteht; und Unterteilen der bestehenden Aufgabe in eine Vielzahl bestehender Teilaufgaben, sodass jedes der Ausgangsargumente, das mit einer ersten bestehenden Teilaufgabe verknüpft ist, eine 1:1 Entsprechung mit jedem der Eingangsargumente hat, das mit der neuen Aufgabe verknüpft ist, in Antwort auf ein Bestimmen, dass mindestens einige einer Vielzahl von Eingangsargumenten, die mit der neuen Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen einer Vielzahl von Ausgangsargumenten haben, die mit einer bestehenden Aufgabe verknüpft sind.
-
Wie hier verwendet, sollen die Begriffe „Oberseite“, „Unterseite“, „unterste“ und „oberste“, wenn sie in Bezug auf ein oder mehrere Elemente verwendet werden, eine relative und nicht eine absolute physische Konfiguration vermitteln. Daher kann ein Element, das als ein „oberstes Element“ oder ein „Oberseitenelement“ in einer Vorrichtung beschrieben ist, stattdessen das „unterste Element“ oder „Unterseitenelement“ in der Vorrichtung bilden, wenn die Vorrichtung umgedreht wird. Ebenso kann ein Element, das als das „unterste Element“ oder „Unterseitenelement“ in der Vorrichtung beschrieben ist, stattdessen das „oberste Element“ oder „Oberseitenelement in der Vorrichtung bilden, wenn die Vorrichtung umgedreht wird.
-
1 zeigt ein beispielhaftes Aufgabenmanagementsystem 100 gemäß mindestens einer hier beschriebenen Ausführungsform, in dem Aufgaben, die durch einen Prozessor 110 mit mindestens einem Kern 1141 -114n (einzeln: „Kern 114“ und kollektiv: „Kerne 114“) und mindestens einem Beschleuniger 1121 -112n (einzeln: „Beschleuniger 112“ und kollektiv: „Beschleuniger 112“) ausgeführt werden, automatisch durch einen Aufgabenmanagerschaltkreis 140 gemanagt werden, sodass Aufgaben unter dem Prozessor 110 und dem Beschleuniger 112 in einer Weise verteilt werden, die Aufgabenparallelität maximiert und Laufzeitmehraufwand innerhalb des Aufgabenmanagerschaltkreises 140 minimiert. Während eine oder mehrere Anwendung(en) durch den Prozessor 110 und/oder die Beschleuniger 112 ausgeführt werden, empfängt der Aufgabenmanagerschaltkreis 140 die verschiedenen Aufgaben, die mit den Anwendung(en) verknüpft sind, und ordnet sie unter dem Prozessor 110 und den Beschleunigern 112 zu.
-
In Betrieb vergleicht der Aufgabenmanagerschaltkreis 140 die Ausgänge jeder bestehenden Aufgabe mit den Eingängen jener neuen Aufgaben, die über einen gerichteten Rand mit der entsprechenden bestehenden Aufgabe verbunden sind, um zu bestimmen, ob irgendwelche der bestehenden Aufgabenausgänge mit einem der bestehenden Aufgabeneingänge eine Gemeinsamkeit haben. In einigen Implementierungen können alle der bestehenden Aufgabenausgänge eine 1:1 Entsprechung mit mindestens einem Abschnitt der neuen Aufgabeneingänge haben - in einem solchen Fall kann der Aufgabenmanagerschaltkreis die neue Aufgabe in eine Vielzahl neuer Teilaufgaben teilen, unterteilen oder auf andere Weise trennen. Die Eingänge zu mindestens einer der neuen Teilaufgaben, die in der Vielzahl neuer Teilaufgaben enthalten sind, können eine 1:1 Entsprechung mit einigen oder allen der bestehenden Aufgabenausgänge haben. In einigen Implementierungen kann mindestens ein Abschnitt der bestehenden Aufgabenausgänge eine 1:1 Entsprechung mit allen der neuen Aufgabeneingänge haben - in einem solchen Fall kann der Aufgabenmanagerschaltkreis die bestehende Aufgabe in eine Vielzahl bestehender Teilaufgaben teilen, unterteilen oder auf andere Weise trennen. Der Ausgang von mindestens einer der bestehenden Teilaufgaben, die in der Vielzahl bestehenden Teilaufgaben enthalten ist, kann eine 1:1 Entsprechung mit einigen oder allen der neuen Aufgabeneingänge haben.
-
1 enthält zwei beispielhafte Aufgaben, eine erste Aufgabe („Aufgabe A“) 150 und eine zweite Aufgabe („Aufgabe B“) 152. Ein Abhängigkeitsrand 154 zeigt ein Verhältnis zwischen der ersten Aufgabe 150 und der zweiten Aufgabe 152. Die erste Aufgabe 150 liest 1000 Werte aus Stelle „A“ und schreibt die 1000 Werte in Stelle „B.“ Die zweite Aufgabe 152 liest die ersten 500 Werte aus Stelle „B“ und schreibt die Werte in Stelle „C.“ Wie in 1 dargestellt, wird ein Abschnitt (d.h. die ersten 500 Werte, die aus Stelle „A“ gelesen und in Stelle „B“ geschrieben sind) des Ausgangs von der ersten Aufgabe 150 durch die zweite Aufgabe 152 verwendet. Der Aufgabenmanagerschaltkreis 140 bestimmt, dass eine 1:1 Entsprechung zwischen einem Abschnitt der Ausgänge, die durch die erste Aufgabe 150 bereitgestellt werden (d.h. die 500 Werte, die in Stelle „B“ geschrieben sind) und den Eingängen, die durch die zweite Aufgabe 152 verwendet werden (d.h. die 500 Werte, die aus Stelle „B“ gelesen werden) besteht. In Antwort auf ein Detektieren der 1:1 Entsprechung zwischen einem Abschnitt des Ausgangs von der ersten Aufgabe 150 und dem Eingang in die zweite Aufgabe 152 bestimmt der Aufgabenmanagerschaltkreis 140 ferner, dass die erste Aufgabe 150 in zwei neue Teilaufgaben 1501 und 1502 geteilt, verteilt oder diesen zugeordnet werden kann.
-
Die neue Teilaufgabe 1501 enthält die Ausgänge von der ersten Aufgabe 150, die eine 1:1 Entsprechung mit den Eingängen der zweiten Aufgabe 152 haben. Der Aufgabenmanagerschaltkreis 140 kann die Abhängigkeit neuer Teilaufgabe 1501 und der zweiten Aufgabe 152 unter Verwendung einer oder mehrerer logischer Strukturen 156 gruppieren, angeben oder auf andere Weise bezeichnen. Die neue Teilaufgabe 1502 enthält die Ausgänge von der ersten Aufgabe 150, die keine Entsprechung mit den Eingängen der zweiten Aufgabe 152 teilen. Der Aufgabenmanagerschaltkreis 140 kann eine neue Teilaufgabe 1501 und die zweite Aufgabe 152 einem einzelnen Prozessor 110 oder Beschleuniger 112 zuordnen oder auf andere Weise zuweisen, um vorteilhaft die Latenz zu vermeiden, die durch Übertragen des Ausgangs zwischen Vorrichtungen eingeführt wird. Der Aufgabenmanagerschaltkreis 140 kann eine neue Teilaufgabe 1502 einem anderen Prozessor 110 oder Beschleuniger 112 zuordnen oder auf andere Weise zuweisen, um eine neue Teilaufgabe 1502 vorteilhaft parallel mit (d.h. zeitglich oder gleichzeitig mit) der neuen Teilaufgabe 1501 auszuführen.
-
In Ausführungsformen kann der Aufgabenmanagerschaltkreis 140 vollständig oder teilweise in eine oder mehrere Logikvorrichtungen, Elemente, Module oder Teilsysteme integriert sein, die extern vom Prozessor 110 und/oder Beschleunigern 112 angeordnet sind. In einigen Implementierungen kann der Aufgabenmanagerschaltkreis 140 einen oder mehrere dedizierte Schaltkreise, Module oder Teilsysteme innerhalb einer Hostprozessor-basierten Vorrichtung enthalten. In mindestens einigen Implementierungen enthält der Aufgabenmanagerschaltkreis 140 einen oder mehrere konfigurierbare Schaltkreise, Logikvorrichtungen, Logikelemente oder Kombinationen davon, die unter Verwendung einer oder mehrerer maschinenlesbarer Anweisungssätze, Logiksätze, Anwendungen oder ähnlichen autonom konfiguriert sind. Darüber hinaus, obwohl in 1 extern vom Prozessor 110 dargestellt, können in einigen Implementierungen der Prozessor 110, eine oder mehrere Kerne 114 und/oder die Beschleuniger 112 den gesamten oder einen Abschnitt des Aufgabenmanagerschaltkreises 140 enthalten.
-
In Ausführungsformen kann ein Hypervisorschaltkreis oder ein virtueller Maschinenmanager-, (VMM), Schaltkreis, der sich in einer Hostmaschine befindet, den gesamten oder einen Abschnitt des Aufgabenmanagerschaltkreises 140 enthalten. In solchen Implementierungen können eine oder mehrere Gast- oder virtuelle Maschinen im Hostsystem den Prozessor 110 zur Gänze oder abschnittsweise, einen oder mehrere Kerne 114 zur Gänze oder abschnittsweise und/oder die Beschleunigers 112 zur Gänze oder abschnittsweise bereitstellen. In einigen Implementierungen kann der Aufgabenmanagerschaltkreis Daten enthalten oder auf diese Zugriff haben, die eine maximale Aufgabengröße und/oder minimale Aufgabengröße (z.B. eine definierte Anzahl von Bytes) für jede der bestehenden Teilaufgaben 1501 -150" und/oder jede der neuen Teilaufgaben 1521 -152n angeben.
-
Ein oder mehrere Kommunikationslinks 132 können den Aufgabenmanagerschaltkreis 140 mit dem Prozessor 110 und/oder den Beschleunigern 112 kommunikationsfähig koppeln. Der eine oder die mehreren Kommunikationslinks 132 können eine oder mehrere serielle oder parallele Busstrukturen enthalten. Der eine oder die mehreren Kommunikationslinks 132 können eine oder mehrere drahtlosen Nahbereichs- oder Nahfeldkommunikationsschnittstellen enthalten. Der eine oder die mehreren Kommunikationslinks 132 können eine oder mehrere Spuren oder ähnliche Strukturen enthalten, die innerhalb eines Halbleiterpackages gebildet sind, das einige oder alle des Prozessors 110 und/oder der Beschleuniger 112 beinhaltet.
-
Der Speicher 120 kann sämtliche Vorrichtungen, Systeme oder Kombinationen von Systemen und Vorrichtungen enthalten, die imstande sind, Daten und/oder Informationen in einem digitalen Format zu speichern, zu halten oder auf andere Weise zu bewahren. Der Speicher 120 kann feststehende oder entfernbare Datenspeichermedien enthalten. Der Speicher 120 kann magnetische Datenspeichermedien, elektromagnetische Datenspeichermedien, elektroresistive Datenspeichermedien, optische Datenspeichermedien, molekulare Datenspeichermedien, atomare Datenspeichermedien, Quantendatenspeichermedien oder Kombinationen davon enthalten.
-
Wie in 1 gezeigt, hält der Speicher 120 die Ausgangsdaten aus bestehenden Aufgaben 150 und die Eingangsdaten, die durch neue Aufgaben 152 empfangen werden. Ein oder mehrere Kommunikationslinks 122 koppeln den Speicher 120 kommunikationsfähig mit einigen oder allen des Prozessors 110 und/oder der Beschleuniger 112. Innerhalb des Speichers 120 können die Argumente (z.B. der Ausgang) von bestehenden Aufgaben 150 in der Form einer mehrdimensionalen Anordnung gespeichert werden. Zum Beispiel kann Stelle „A“ Argumente enthalten, die in einer Anordnung 124 mit einer oder mehreren Hauptachsen 125 angeordnet sind, entlang welchen die mehrdimensionale Anordnung trennbar, unterteilbar, teilbar oder auf andere Weise partitionierbar ist, und eine oder mehrere Nebenachsen 126, entlang welchen die mehrdimensionale Anordnung nicht sauber trennbar, unterteilbar, teilbar oder auf andere Weise partitionierbar ist. Ähnlich kann Stelle „B“ Argumente enthalten, die in einer Anordnung 128 mit einer oder mehreren Hauptachsen 129 und einer oder mehreren Nebenachsen 130 angeordnet sind, und Stelle „C“ kann Argumente enthalten, die in einer Anordnung 132 mit einer oder mehreren Hauptachsen 133 und einer oder mehreren Nebenachsen 133 angeordnet sind. In einigen Implementierungen kann der Speicher 120 Daten oder Informationen enthalten, die einen minimalen Teilaufgabengrößenschwellenwert angeben. Ein solcher minimaler Teilaufgabengrößenschwellenwert kann verhindern, dass der Aufgabenmanagerschaltkreis bestehende Aufgaben 150 und/oder neue Aufgaben 152 mit einer zu feinen Ebene an Granularität unterteilt. Ein solcher minimaler Teilaufgabengrößenschwellenwert kann Aufgaben enthalten, die 4 Kilobytes (kB) oder kleiner; 8 kB oder kleiner; 16 kB oder kleiner; 128 kB oder kleiner; 256 kB oder kleiner; oder 512 kB oder kleiner sind.
-
Der Prozessor 110 kann jede Vorrichtung, jedes System und/oder jede Kombination von Systemen und Vorrichtungen enthalten, die imstande sind, maschinenlesbare Anweisungen auszuführen. Jeder Prozessor 110 kann mindestens einen Kern 114 enthalten. In einigen Implementierungen können einige oder alle der Prozessoren 110 dieselben oder unterschiedlichen Anzahlen von mehreren Kernen 1141 -114n enthalten. In einigen Implementierungen kann der Prozessor 110 eine beliebige Anzahl von Schaltungen enthalten, die eine beliebige Anzahl von Logikelementen enthalten, die konfiguriert sind, eine oder mehrere besondere Maschinen bereitzustellen. In einigen Implementierungen kann der Prozessor 110 einen oder mehrere Einzelkern- oder Mehrfachkern-Mikroprozessoren, wie einen oder mehrere Xeon® Prozessoren, einen oder mehrere Celeron® Prozessoren, einen oder mehrere Pentium® Prozessoren, einen oder mehrere Itanium® Prozessoren, einen oder mehrere Core™ i3, i5, oder i7 Prozessoren (Intel® Corp., SANTA CLARA, CA) enthalten, ohne aber darauf beschränkt zu sein. In einigen Implementierungen kann der Prozessor 110 einen oder mehrere Digitalsignalprozessoren (DSPs), einen oder mehrere programmierbare Gate-Arrays (PGAs), einen oder mehrere anwendungsspezifische integrierte Schaltkreise (ASICs), eine oder mehrere Reduced Instruction Set Computing (RISC) Prozessoren und ähnliche enthalten.
-
Jeder der Beschleuniger 112 kann einen dedizierten oder Allzweckprozessor enthalten, der jede Vorrichtung, jedes System oder jede Kombination von Systemen und Vorrichtungen enthält, die imstande sind, maschinenlesbare Anweisungen auszuführen. Jeder der Beschleuniger 112 kann den Prozessor 110 um mindestens einen Teil der Rechenlast entlasten. Beispielhafte Beschleuniger 112 enthalten, ohne aber darauf beschränkt zu sein: einen oder mehrere Coprozessoren, eine oder mehrere grafische Verarbeitungseinheiten (GPUs), eine oder mehrere Grafikmedienbeschleuniger (Graphics Media Accelerators, GMAs), einen oder mehrere kryptografische Beschleuniger, eine oder mehrere Videoverarbeitungseinheiten, einen oder mehrere künstliche Intelligenzbeschleuniger, einen oder mehrere Digitalsignalprozessoren, und ein oder mehrere feldprogrammierbare Gate-Arrays (FPGAs). In einigen Implementierungen können die Beschleuniger 112 einen oder mehrere Xeon Phi™ Coprozessoren (Intel® Corp., SANTA CLARA, CA) enthalten. In einigen Implementierungen können die Beschleuniger 112 einen oder mehrere Intel HD Graphics, Intel Iris Graphics oder Intel Iris Pro Graphics (Intel® Corp., SANTA CLARA, CA) enthalten, die integrierte Grafikprozessoren sind, die in, auf oder um dasselbe Package oder denselben Die wie der Prozessor 110 angeordnet sein können. In einigen Implementierungen können der Prozessor 110 und einige oder alle der Beschleuniger 112 vollständig oder teilweise innerhalb eines einzelnen Halbleiterpackages angeordnet sein, zum Beispiel in einem System-aufeinem-Chip (SoC).
-
2 zeigt ein beispielhaftes System 200 gemäß mindestens einer hier beschriebenen Ausführungsform, in dem ein Aufgabenmanagementschaltkreis 140 autonom eine zweite Aufgabe 212 in eine Vielzahl neuer Teilaufgaben 2121 -212n (kollektiv „neue Teilaufgaben 212x “) unterteilt, sodass eine 1:1 Entsprechung zwischen dem Ausgang einer ersten Aufgabe 210 und dem Eingang zu einer neuen Teilaufgabe 212 besteht. Durch Unterteilen der zweiten Aufgabe 212 in eine Vielzahl neuer Teilaufgaben 212x verbessert der Aufgabenmanagerschaltkreis die Funktionalität von Anwendungen, die auf dem System 200 ausgeführt werden, durch Optimieren der Nutzung einer Verarbeitungsbandbreite durch Maximieren einer Aufgabenparallelität, wodurch ein höheres Ansprechvermögen des Systems durch verringerte Betriebslatenz bereitgestellt wird. Durch Optimieren der Aufgabenparallelität werden Systemressourcen bewahrt und verfügbare Rechenbandbreite freigemacht, ohne zusätzliche Hardware zu benötigen.
-
Das System 200, das in 2 gezeigt ist, enthält zwei beispielhafte Aufgaben, eine erste Aufgabe „A“ 210 und eine zweite Aufgabe „B“ 212. Ein Abhängigkeitsrand 214 zeigt ein Verhältnis, in dem die zweite Aufgabe 212 einen Ausgang von der ersten Aufgabe 210 empfängt. Wie in 2 dargestellt, liest die erste Aufgabe 210 die ersten 500 Werte aus Stelle „A“ und schreibt die ersten 500 Werte in Stelle „B.“ Die zweite Aufgabe 212 liest die ersten 1000 Werte (d.h. Werte 1-500 und 501-1000) aus Stelle „B“ und schreibt die ersten 1000 Werte in Stelle „C.“ Der Ausgang von der ersten Aufgabe 210 (d.h. die ersten 500 Werte, die aus Stelle „A“ gelesen und in Stelle „B“ geschrieben werden) wird als Eingang in die zweite Aufgabe 212 verwendet.
-
In Betrieb detektiert der Aufgabenmanagerschaltkreis 140 oder bestimmt auf andere Weise eine 1:1 Entsprechung, die zwischen dem Ausgang, der durch die erste Aufgabe 210 bereitgestellt wird (d.h. Schreiben von Werten 1-500 in Stelle „B“) und den Eingängen, die durch die zweite Aufgabe 212 verwendet werden (d.h. Lesen von Werten 1-500 aus Stelle „B“), besteht. In Antwort auf ein Detektieren der 1:1 Entsprechung zwischen einem Abschnitt des Ausgangs von der ersten Aufgabe 210 und dem Eingang zu der zweiten Aufgabe 212 bestimmt der Aufgabenmanagerschaltkreis 140 ferner, dass die zweite Aufgabe 212 in eine neue Teilaufgabe 2121 und neue Teilaufgabe 2122 geteilt, verteilt oder diesen zugeordnet werden kann.
-
Die neue Teilaufgabe 2121 empfängt die Ausgänge von der ersten Aufgabe 210, die eine 1:1 Entsprechung mit den Eingängen der zweiten Aufgabe 212 haben. Der Aufgabenmanagerschaltkreis 140 kann das Verhältnis zwischen der neuen Teilaufgabe 2121 und der ersten Aufgabe 210 unter Verwendung einer oder mehrerer logischer Strukturen 216 und/oder eines oder mehrerer Beziehungsindikatoren (z.B. Abhängigkeitsrand 214) gruppieren, angeben oder auf andere Weise bezeichnen.
-
Der Aufgabenmanagerschaltkreis 140 kann die neue Teilaufgabe 2121 und die erste Aufgabe 210 einem einzelnen Prozessor 110/Prozessorkern 114 oder Beschleuniger 112 zuordnen oder auf andere Weise zuweisen, um vorteilhaft ein Einführen einer zusätzlichen Latenz in das System 200 zu vermeiden, die durch Übertragen oder andersartiges Transferieren einiger oder aller der Ausgänge zwischen Prozessoren 110 und/oder Beschleunigern 112 eingeführt wird. Der Aufgabenmanagerschaltkreis 140 kann die neue Teilaufgabe 2122 einem anderen Prozessor/Kern 114 und/oder Beschleuniger 112 zuordnen oder auf andere Weise zuweisen, um die neue Teilaufgabe 2122 vorteilhaft parallel (d.h. zeitgleich oder gleichzeitig) mit der neuen Teilaufgabe 2121 auszuführen.
-
3 und die folgende Besprechung stellen eine kurze, allgemeine Beschreibung der Komponenten gemäß mindestens einer hier beschriebenen Ausführungsform bereit, die ein beispielhaftes System 300 bilden, das eine prozessorbasierte Vorrichtung 302 enthält, die eine(n) oder mehrere Logikvorrichtungen, Logiksysteme, Logikelemente und/oder Schaltkreise 310 beinhaltet, die imstande sind, einen Aufgabenmanagerschaltkreis 140 zum Verteilen von Aufgaben unter einem oder mehreren Prozessoren 110/Kernen 114 und/oder einem oder mehreren Beschleunigern 112 bereitzustellen, um eine Systemleistung durch Erhöhen einer Aufgabenparallelität und Verringern einer Systemlatenz, die Datentransfers zwischen dem einen oder den mehreren Prozessoren 110/Kernen 114 und einem oder mehreren Beschleunigern 112 zuzuschreiben sind, zu verbessern.
-
Mindestens einige Ausführungsformen oder Implementierungen können maschinenlesbare oder computerausführbare Anweisungssätze enthalten, wie Programmanwendungsmodule, Objekte oder Makros, die durch einen Schaltkreis 310, einen oder mehrere Prozessoren 110/Kerne 114 und/oder einen oder mehrere Hardware-Beschleuniger 112 ausgeführt werden. Mindestens einige Ausführungsformen oder Implementierungen können einen Schaltkreis enthalten, der in der Form von hartverdrahtetem Schaltkreis und Komponenten, Halbleiterschaltkreis, Logiksystemen, Logikelementen, Logikvorrichtungen, Logikmodulen, Logiksystemen/Teilsystemen, Mikroprozessoren, Steuerungen oder ähnlichen Vorrichtungen implementiert ist, die die verschiedenen Komponenten, Systeme, Teilsysteme oder Module bereitstellen, die in der prozessorbasierten Vorrichtung 302 enthalten sind.
-
Fachleute auf dem relevanten Gebiet werden erkennen, dass die dargestellten Ausführungsformen wie auch andere Ausführungsformen mit anderen, auf Schaltkreis basierten Vorrichtungskonfigurationen in die Praxis umgesetzt werden können, enthaltend tragbare elektronische oder handgehaltene elektronische Vorrichtungen, beispielsweise Smartphones, tragbare Computer, am Körper tragbare Computer, Mikroprozessorbasierte oder programmierbare Verbraucherelektronik, Personal Computer („PCs“), Netzwerk-PCs, Minicomputer, Großrechner und dergleichen. Die Ausführungsformen können in verteilten Rechenumgebungen in die Praxis umgesetzt werden, wo Aufgaben oder Module durch Fernverarbeitungsvorrichtungen durchgeführt werden, die durch ein Kommunikationsnetzwerk verbunden sind. In einer verteilte Rechenumgebung können Programmmodule sowohl in lokalen als auch fernen Datenspeichervorrichtungen vorhanden sein.
-
Die prozessorbasierte Vorrichtung 302 kann eine beliebige Anzahl von Schaltungen 310 enthalten, von welchen jeder eine Reihe elektronischer und/oder Halbleiterkomponenten enthalten kann, die mindestens teilweise innerhalb eines am Körper tragbaren Computers, einer tragbaren Rechenvorrichtung, eines Personal Digital Assistant, eines Personal Computers, Blade Servers, einer Arbeitsstation, eines rackmontierten Blade Servers, oder in anderen ähnlichen derzeitigen oder zukünftigen prozessorbasierten Vorrichtungen und/oder Systemen angeordnet sind, die imstande sind, maschinenlesbare Anweisungen auszuführen. Die eine oder mehreren Schaltungen 310 können mit verschiedenen Komponenten innerhalb der prozessorbasierten Vorrichtung 302 über einen oder mehrere serielle oder parallele Leiter, Wege oder Busse 306 zwischenverbunden, an diese elektrisch gekoppelt und/oder kommunikationsfähig gekoppelt sein. Wie in 3 dargestellt, kann die Gesamtheit oder ein Teil der einen oder mehreren Schaltungen 310 verteilt oder zugeordnet sein, um den gesamten oder einen Abschnitt des Aufgabenmanagerschaltkreises 140 bereitzustellen, zu bilden oder auf andere Weise zu erzeugen.
-
Wie in 3 dargestellt, können Systemkomponenten wie der Systemspeicher 120 über den Bus 306 kommunikationsfähig an eine oder mehrere Schaltungen 310 gekoppelt sein. Die prozessorbasierte Vorrichtung 302 kann gelegentlich hier im Singular angegeben sein, aber dies soll die Ausführungsformen nicht auf ein einzelnes System beschränken, da in gewissen Ausführungsformen mehr als eine prozessorbasierte Vorrichtung 302 vorhanden sind, enthaltend auf einem vernetzten Prozessor basierte Vorrichtungen 302, Client/Serverprozessor-basierte Vorrichtungen 302 oder vernetzte Systeme, Schaltungen oder Vorrichtungen.
-
Die eine oder mehreren Schaltungen 310 können eine beliebige Anzahl, Art oder Kombination von Leitern, Isolatoren, elektrischen Vorrichtungen und/oder Halbleiterkomponenten enthalten. Gelegentlich können die eine oder mehreren Schaltungen 310 vollständig oder teilweise in der Form von Halbleitervorrichtungen implementiert sein, wie Dioden, Transistoren, Induktoren, Kondensatoren und Widerstände. Eine solche Implementierung kann jeden derzeitigen oder zukünftig entwickelten Einzel- oder Mehrfachkernprozessor oder Mikroprozessor enthalten, wie: ein oder mehrere Systeme auf einem Chip (SOCs); eine oder mehrere zentrale Verarbeitungseinheiten (CPUs); einen oder mehrere Digitalsignalprozessoren (DSPs); eine oder mehrere Grafikverarbeitungseinheiten (GPUs); einen oder mehrere anwendungsspezifische integrierte Schaltkreise (ASICs), ein oder mehrere feldprogrammierbare Gate-Arrays (FPGAs) und dergleichen. Falls nicht anderes beschrieben ist, sind die Konstruktion und der Betrieb der verschiedenen, in 3 dargestellten Blöcke von herkömmlichem Design. Daher müssen solche Blöcke hier nicht im Detail beschrieben werden, da sie Fachleuten auf dem relevanten Gebiet bekannt sind. Der Bus 306, der mindestens einige der Komponenten verbindet, kann sämtliche bekannte serielle oder parallele Busstrukturen oder Architekturen verwenden.
-
Der Systemspeicher 120 kann Nur-Lese-Speicher (Read Only Memory, „ROM“) 326 und Direktzugriffsspeicher (Random Access Memory, „RAM“) 328 in beliebiger Anzahl Kapazität und/oder Konfiguration enthalten. Ein Abschnitt des ROM 326 kann ein Basis-Eingabe/Ausgabesystem (Basic Input/Output System, „BIOS“) 330 enthalten. Das BIOS 330 kann der prozessorbasierten Vorrichtung 302 Basisfunktionalität bereitstellen. Zum Beispiel indem in einigen Implementierungen die eine oder mehreren Schaltungen 310 veranlasst werden, einen oder mehrere maschinenlesbare Anweisungssätze zu laden, die die Gesamtheit oder einen Abschnitt der einen oder der mehreren Schaltungen 310 veranlassen, den Aufgabenmanagerschaltkreis 140 bereitzustellen oder als dieser zu dienen.
-
Die prozessorbasierte Vorrichtung 302 kann eine oder mehrere kommunikationsfähig gekoppelte, nicht transitorische, Datenspeichervorrichtungen 334 enthalten. die eine oder mehreren Datenspeichervorrichtungen 334 können eine beliebige Anzahl und/oder Kombination von derzeitigen oder zukünftig entwickelten nicht transitorischen Datenspeichervorrichtungen und/oder Speicher enthalten. Nicht einschränkende Beispiele für solche nicht transitorischen, Datenspeichervorrichtungen 334 können eine oder mehrere magnetische Datenspeichervorrichtungen, eine oder mehrere optische Datenspeichervorrichtungen, eine oder mehrere Festkörper-, elektromagnetische Datenspeichervorrichtungen, eine oder mehrere elektroresistive Datenspeichervorrichtungen, eine oder mehrere molekulare Datenspeichervorrichtungen, eine oder mehrere Quantendatenspeichervorrichtungen oder verschiedene Kombinationen davon enthalten, ohne aber darauf beschränkt zu sein. In einigen Implementierungen können die Datenspeichervorrichtungen 334 fern von der prozessorbasierten Vorrichtung 302 angeordnet sein. In einigen Implementierungen können die Datenspeichervorrichtungen 334 eine oder mehrere Hot-Plug-fähige oder entfernbare Datenspeichervorrichtungen enthalten.
-
Eine oder mehrere Schnittstellen und/oder Steuerungen (in 3 nicht dargestellt) können die eine oder mehreren Datenspeichervorrichtungen 334 kommunikationsfähig an den Bus 306 koppeln. Die eine oder mehreren Datenspeichervorrichtungen 334 können maschinenlesbare Anweisungssätze, Datenstrukturen, Programmodule und andere Daten enthalten, die für den Aufgabenmanagerschaltkreis 140 nützlich sind. Zum Beispiel können die eine oder mehreren Datenspeichervorrichtungen 334 Informationen und/oder Daten enthalten, die die maximale Aufgabengröße und/oder minimale Aufgabengröße für eine neue Teilaufgabe oder eine bestehende Teilaufgabe angeben.
-
Die prozessorbasierte Vorrichtung 302 kann eine beliebige Anzahl oder Kombination von Sensoren 380 enthalten, die fähig sind, interne, externe und/oder Umweltbedingungen und/oder Ereignisse zu detektieren. In einigen Implementierungen können solche Sensoren 380 eine beliebige Anzahl und/oder Kombination aus einem oder mehreren der folgenden enthalten: Audioeingangssensoren 382 (z.B. ein oder mehrere Mikrofone oder ähnliches); Bildsensoren 384 (z.B. eine oder mehrere ladungsgekoppelte Vorrichtung- (Charge Coupled Device, CCD) oder komplementäre Metalloxidhalbleiter- (Complementary Metal Oxide Semiconductor, CMOS) Bildsensoren, Sensoren auf Umgebungslichtniveau oder ähnliche); Infrarotleuchten/Infrarotbilderfassungssensoren 386; einen oder mehrere Wärmesensoren 388 (z.B. Wärmesonden, resistive thermische Vorrichtungen, kontaktlose thermische Sensoren oder ähnliche). In mindestens einigen Implementierungen können solche Sensoren 380 autonom Informationen und/oder Daten auf einer kontinuierlichen oder schrittweisen Basis in regelmäßigen, unregelmäßigen periodischen oder aperiodischen Intervallen sammeln.
-
In einigen Implementierungen kann der Aufgabenmanagerschaltkreis 140 Sensordaten empfangen, die durch einen oder mehrere Sensoren 380 bereitgestellt werden, und kann solche Daten beim Zuordnen von Aufgaben und/oder Teilaufgaben unter den Prozessoren 110/Kernen 114 und/oder Beschleunigern 112 verwenden. Zum Beispiel kann der Aufgabenmanagerschaltkreis 140 Aufgaben und/oder Teilaufgaben unter den Prozessoren 110/Kernen 114 und/oder Beschleunigern 112 basierend mindestens teilweise auf einer erfassten Temperatur oder einem ähnlichen thermischen Parameter des entsprechenden Prozessors 110/ Kerns 114 und/oder Beschleunigers 112 zuordnen.
-
Maschinenlesbare Anweisungssätze und/oder Anwendungen 338 können vollständig oder teilweise in der Datenspeichervorrichtung 334 oder vollständig oder teilweise im Systemspeicher 120 gespeichert oder andersartig bewahrt werden. Solche Anweisungssätze können von einer oder mehreren Datenspeichervorrichtungen 334 transferiert und im Systemspeicher 120 vollständig oder teilweise zur Ausführung durch die eine oder mehreren Schaltungen 310 gespeichert werden. Die maschinenlesbaren Anweisungssätze 338 können Anweisungen und/oder Logik enthalten, die die hier beschriebenen semantischen Bezeichnungsfunktionen und Kapazitäten bereitstellen. Zum Beispiel können eine oder mehrere Anwendungen 338 die Schaltung 310 veranlassen, einen Aufgabenmanagerschaltkreis 140 wie oben in 1 und 2 beschrieben bereitzustellen.
-
Die prozessorbasierte Vorrichtung 302 kann eine oder mehrere kommunikationsfähig gekoppelte, physische Eingangsvorrichtungen 350 bereitstellen, wie eine oder mehrere Texteingabevorrichtungen 352 (z.B. Tastatur), eine oder mehrere Zeigevorrichtungen 354 (z.B. Maus, Trackball, Berührungsbildschirm) und/oder eine oder mehrere Audioeingangsvorrichtungen 356. Solche physischen Eingangsvorrichtungen 350 können zum Beispiel verwendet werden, um Befehle (z.B. Quittierungen, Auswahlen, Bestätigungen und ähnliches) wie auch Informationen (z.B. Quittierungen, und ähnliches) der prozessorbasierten Vorrichtung 302 bereitzustellen, in diese einzugeben oder dieser auf andere Weise zuzuleiten. Die prozessorbasierte Vorrichtung 302 kann eine oder mehrere kommunikationsfähig gekoppelte physische Ausgangsvorrichtungen 360, wie eine oder mehrere visuelle Ausgangsvorrichtungen 362 (z.B. eine Anzeigevorrichtung), eine oder mehrere taktile Ausgangsvorrichtungen 364 (z.B. haptische Rückkopplung oder ähnliches), eine oder mehrere Audioausgangsvorrichtungen 366 oder Kombinationen davon enthalten.
-
Die prozessorbasierte Vorrichtung 302 kann eine oder mehrere Netzwerkschnittstellen 370 enthalten, um Kommunikationskapazitäten mit einer oder mehreren zusätzlichen prozessorbasierten Vorrichtungen bereitzustellen. In einigen Implementierungen können die eine oder mehreren Netzwerkschnittstellen 370 eine oder mehrere Flächen enthalten, die in, auf einem externen Rand oder mehreren externen Ränder einer prozessorbasierten Vorrichtung 302 wie eines rackmontierten Blade Servers, oder um diese herum angeordnet sind. In einigen Implementierungen können die eine oder mehreren Netzwerkschnittstellen 370 eine oder mehrere drahtlose Schnittstellen, wie eine oder mehrere IEEE 802.11 (Wi-Fi®) konforme Schnittstellen enthalten. In einigen Implementierungen können die eine oder mehreren Netzwerkschnittstellen 370 eine oder mehrere verdrahtete Schnittstellen, wie eine oder mehrere IEEE 802.3 („Ethernet“) konforme Schnittstellen enthalten.
-
Der Einfachheit wegen sind die Netzwerkschnittstelle 370, die eine oder mehreren Schaltungen 310, der Systemspeicher 324, die physischen Eingangsvorrichtungen 350 und die physischen Ausgangsvorrichtungen 360 über den Bus 306 als kommunikationsfähig aneinander gekoppelt dargestellt, wodurch eine Konnektivität zwischen den oben beschriebenen Komponenten bereitgestellt wird. In alternativen Ausführungsformen können die oben beschriebenen Komponenten auf andere Weise als in 3 dargestellt kommunikationsfähig gekoppelt sein. Zum Beispiel können eine oder mehrere der oben beschriebenen Komponenten direkt an andere Komponenten gekoppelt sein oder können über eine oder mehrere Zwischenkomponenten (nicht dargestellt) aneinander gekoppelt sein. In einigen Ausführungsformen kann der Bus 306 weggelassen werden und die Komponenten können unter Verwendung geeigneter verdrahteter oder drahtloser Verbindungen direkt aneinander gekoppelt sein.
-
4 stellt ein Ablaufdiagramm auf hoher Ebene eines beispielhaften Verfahrens 400 gemäß mindestens einer hier beschriebenen Ausführungsform zum Unterteilen einer Aufgabe in Teilaufgaben dar, sodass die Eingabe/Ausgabe einer Teilaufgabe eine 1:1 Entsprechung mit der Eingabe/Ausgabe einer anderen Aufgabe aufrechterhält. Der Aufgabenmanagerschaltkreis 140 vergleicht den Ausgang einer oder mehrerer erster (z.B. bestehender) Aufgaben 150 mit dem Eingang einer oder mehrerer zweiter (z.B. neuer oder bestehender) Aufgaben 152, um zu detektieren, ob der Aufgabeausgang der ersten Aufgabe 150 mindestens eines von einem Teilsatz oder Supersatz (d.h. eine 1:1 Entsprechung mit der Gesamtheit oder einem Abschnitt) der Aufgabeeingangs in die zweite Aufgabe 152 ist. Wenn der Ausgang der ersten Aufgabe 150 einen Supersatz des Eingangs in die zweite Aufgabe 152 darstellt (d.h. die Ausgangsargumente der ersten Aufgabe 150 enthalten mindestens alle Eingangsargumente der zweiten Aufgabe 152), kann der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in eine Vielzahl von Teilaufgaben 1501 -150" unterteilen oder auf andere Weise zuordnen, von welchen mindestens eine einen Ausgang mit einer 1:1 Entsprechung mit dem Eingang der zweiten Aufgabe 152 enthält. Wenn der Ausgang der ersten Aufgabe 150 einen Teilsatz des Eingangs in die zweite Aufgabe 152 enthält (d.h. die Ausgangsargumente der ersten Aufgabe 150 enthalten mindestens einen Abschnitt der Eingangsargumente der zweiten Aufgabe 152), kann der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in eine Vielzahl von Teilaufgaben 1521 -152" unterteilen oder auf andere Weise teilen, von welchen mindestens eine einen Eingang mit einer 1:1 Entsprechung mit dem Ausgang der ersten Aufgabe 150 enthält. Das Verfahren 400 beginnt bei 402.
-
Bei 404 liest der Aufgabenmanagerschaltkreis 140 einige oder alle der Argumente, die mit der zweiten Aufgabe 152 verknüpft sind. In mindestens einigen Implementierungen können die Argumente, die mit der zweiten Aufgabe 152 verknüpft sind, einige oder alle der Eingänge in die zweite Aufgabe 152 enthalten. In einigen Implementierungen kann der Aufgabenmanager 140 als eine Anordnung 124 im Systemspeicher 120 einige oder alle der Argumente speichern, die mit der zweiten Aufgabe 152 verknüpft sind. In einigen Implementierungen kann die Anordnung 124 eine oder mehrere Hauptachsen 125 und eine oder mehrere Nebenachsen 126 enthalten.
-
Bei 406 vergleicht der Aufgabenmanagerschaltkreis 140 die Eingangsargumente der zweiten Aufgabe (in 4 mit „2TIA“ abgekürzt) mit den Ausgangsargumenten der ersten Aufgabe (in 4 mit „1TOA“ abgekürzt), um zu detektieren, ob eine 1:1 Entsprechung zwischen allen oder einem Abschnitt der Eingangsargumente der zweiten Aufgabe und einem oder mehreren Ausgangsargumenten der ersten Aufgabe besteht.
-
Bei 408, falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Ausgangsargumente der ersten Aufgabe einen Supersatz der Eingangsargumente der zweiten Aufgabe enthalten oder darstellen (z.B. stellen die Eingänge in die zweite Aufgabe 152 einen Teilsatz der Ausgänge einer ersten Aufgabe 150 dar), fährt das Verfahren 400 mit 410 fort, andernfalls fährt das Verfahren 400 mit 412 fort.
-
Bei 410 unterteilt, splittet oder teilt der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in eine Vielzahl neuer Teilaufgaben 1501 -150". Der Aufgabenmanagerschaltkreis 140 verteilt die erste Aufgabe 150, sodass der Ausgang einer der neuen Teilaufgaben 150x eine 1:1 Entsprechung mit den Eingängen in die zweite Aufgabe 152 hat. In einigen Implementierungen weist der Aufgabenmanagerschaltkreis 140 die neue Teilaufgabe 150x und die zweite Aufgabe 152 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der neuen Teilaufgabe 150x und der zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren des Ausgangs der neuen Teilaufgabe 150x von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einer zweiten Aufgabe 152, die auf einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112 ausgeführt wird, eingeführt wird. Nachdem der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in eine Vielzahl neuer Teilaufgaben 1501 -150n bei 410 verteilt, gesplittet oder geteilt hat, endet das Verfahren 400 bei 416.
-
Bei 412, falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die ersten Aufgabenargumente einen Teilsatz der zweiten Aufgabeargumente enthalten oder darstellen (z.B. sind die Ausgänge der ersten Aufgabe 150 ein Teilsatz der Eingänge in die zweite Aufgabe 152 oder stellen diesen dar), fährt das Verfahren 400 mit 414 fort, anderenfalls endet das Verfahren 400 bei 416.
-
Bei 414 unterteilt, splittet oder teilt der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in eine Vielzahl neuer Teilaufgaben 1521 -152". Der Aufgabenmanagerschaltkreis 140 verteilt die zweite Aufgabe 152, sodass die Eingangsargumente zu einer der neuen Teilaufgaben 152x eine 1:1 Entsprechung mit den Ausgangsargumenten von der ersten Aufgabe 150 haben. In einigen Implementierungen weist der Aufgabenmanagerschaltkreis 140 die neue Teilaufgabe 152x und die erste Aufgabe 150 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der neuen Teilaufgabe 152x und der ersten Aufgabe 150 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren des Ausgangs der ersten Aufgabe 150 von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zur neuen Teilaufgabe 152x , die auf einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112 ausgeführt wird, eingeführt wird. Nachdem der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in eine Vielzahl neuer Teilaufgaben 1521 -152n bei 414 verteilt, gesplittet oder geteilt hat, endet das Verfahren bei 416.
-
5 stellt ein Ablaufdiagramm auf hoher Ebene eines beispielhaften Verfahrens 500 gemäß mindestens einer hier beschriebenen Ausführungsform zum Unterteilen einer Aufgabe in Teilaufgaben bereit, sodass die Eingabe/Ausgabe einer Teilaufgabe eine 1:1 Entsprechung mit oder ein Verhältnis zur Eingabe/Ausgabe einer anderen Aufgabe aufrechterhält. Der Aufgabenmanagerschaltkreis 140 vergleicht den Ausgang einer oder mehrerer erster Aufgaben 150 mit dem Eingang einer oder mehrerer zweiter Aufgaben 152 um zu detektieren, ob die Ausgangsargumente der ersten Aufgabe einen Teilsatz oder Supersatz (d.h. die Ausgangsargumente der ersten Aufgabe haben eine 1:1 Entsprechung mit der Gesamtheit oder einem Abschnitt) der zweiten Aufgabeeingangsargumente enthalten.
-
Wenn die Ausgangsargumente der ersten Aufgabe 150 einen Supersatz zu den Eingangsargumenten in die zweite Aufgabe 152 enthalten oder bilden, kann der Aufgabenmanagerschaltkreis 140 eine Unterteilung oder Teilung der ersten Aufgabe 150 in eine Vielzahl neuer Teilaufgaben 1501 -150" vorschlagen, von welchen mindestens eine Ausgangsargumente mit einer 1:1 Entsprechung mit den Eingangsargumenten der zweiten Aufgabe 152 enthält. In einigen Implementierungen kann der Aufgabenmanagerschaltkreis bestimmen, ob die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1501 -150", größer als ein definierter Schwellenwert ist. Falls die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1501 -150" größer als ein definierter Schwellenwert ist, kann der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in die vorgeschlagene Vielzahl neuer Teilaufgaben 1501 -150" unterteilen. Falls die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1501 -150" kleiner als ein definierter Schwellenwert ist, kann der Aufgabenmanagerschaltkreis 140 die Unterteilung oder Teilung der ersten Aufgabe 150 ablehnen.
-
Wenn die Ausgangsargumente der ersten Aufgabe 150 einen Teilsatz zu den Eingangsargumenten in die zweite Aufgabe 152 enthalten oder bilden, kann der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in eine Vielzahl neuer Teilaufgaben 1521 -152n unterteilen oder auf andere Weise teilen, von welchen mindestens eine Eingangsargumente mit einer 1:1 Entsprechung mit den Ausgangsargumenten der ersten Aufgabe 150 enthält. In einigen Implementierungen kann der Aufgabenmanagerschaltkreis bestimmen, ob die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1521 -152", größer als ein definierter Schwellenwert ist. Falls die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1521 -152n größer als ein definierter Schwellenwert ist, kann der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in die vorgeschlagene Vielzahl neuer Teilaufgaben 1521 -152n unterteilen. Falls die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1521 -152" kleiner als ein definierter Schwellenwert ist, kann der Aufgabenmanagerschaltkreis 140 die Unterteilung oder Teilung der zweiten Aufgabe 152 ablehnen. Das Verfahren 500 beginnt bei 502.
-
Bei 504 liest der Aufgabenmanagerschaltkreis 140 einige oder alle der Eingangsargumente, die mit einer zweiten Aufgabe 152 verknüpft sind. In einigen Implementierungen kann der Aufgabenmanager 140 als eine Anordnung 124 im Systemspeicher 120 einige oder alle der Eingangsargumente speichern, die mit der zweiten Aufgabe 152 verknüpft sind. In einigen Implementierungen kann die Anordnung 124 eine oder mehrere Hauptachsen 125 und eine oder mehrere Nebenachsen 126 enthalten.
-
Bei 506 vergleicht der Aufgabenmanagerschaltkreis 140 die Eingangsargumente der zweiten Aufgabe mit einem oder mehreren Ausgangsargumente der ersten Aufgabe, um zu detektieren, ob eine 1:1 Entsprechung zwischen allen oder einem Abschnitt der Eingangsargumente der zweiten Aufgabe und einem oder mehreren Ausgangsargumenten der ersten Aufgabe besteht.
-
Bei 508, falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die ersten Aufgabeargumente einen Supersatz der Eingangsargumente der zweiten Aufgabe bilden, darstellen oder enthalten (z.B. bilden die Eingangsargumente in die zweite Aufgabe 152 einen Teilsatz der Ausgangsargumente der ersten Aufgabe 150, stellen diesen dar oder enthalten diesen), fährt das Verfahren 500 mit 510 fort, andernfalls fährt das Verfahren 500 mit 524 fort.
-
Bei 510 schlägt der Aufgabenmanagerschaltkreis 140 ein Unterteilen, Splitten oder Teilen der ersten Aufgabe 150 in eine Vielzahl neuer Teilaufgaben 1501 -150" vor. Der Aufgabenmanagerschaltkreis 140 schlägt das Unterteilen, Splitten oder Teilen der ersten Aufgabe 150 vor, sodass die Ausgangsargumente, die mit einer der neuen Teilaufgaben 150x verknüpft sind, eine 1:1 Entsprechung mit den Eingangsargumenten bereitstellen, die mit der zweiten Aufgabe 152 verknüpft sind.
-
Bei 512 bestimmt der Aufgabenmanagerschaltkreis 140, ob die Größe einer neuen Teilaufgabe 150x größer oder gleich einem definierten Schwellenwert ist. Der Schwellenwert kann anhand einer gemessenen oder theoretischen Leistung des Prozessors 110/Kerns 114 oder Beschleunigers 112 empirisch bestimmt werden (z.B. kann der definierte Schwellenwert als die minimale Größe etabliert werden, unter der eine Verbesserung in Systemleistung minimiert wird oder unterhalb der die Zeit, die zum Lokalisieren und Abrufen der bestehenden Teilaufgabe erforderlich ist, eine definierte Anzahl von Prozessor- oder Beschleunigertaktzyklen oder eine Zeit überschreitet) In einigen Implementierungen kann der definierte Schwellenwert ein festgesetzter Wert sein, der durch die physischen Parameter und/oder Konfiguration des entsprechenden Prozessors 110/Kerns 114 oder Beschleunigers 112 bestimmt wird. In einigen Implementierungen kann der definierte Schwellenwert ein variabler Wert sein, der durch den Aufgabenmanagerschaltkreis 140 anhand eines oder mehrerer Betriebsparameter bestimmt wird, wie Speichernutzung, Prozessor-/Kernnutzung, Beschleunigernutzung, oder Kombinationen davon.
-
Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe einer neuen Teilaufgabe 150x größer oder gleich dem definierten Schwellenwert ist, fährt das Verfahren 500 bei 514 fort. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe einer neuen Teilaufgabe 150x kleiner als ein definierter Schwellenwert ist, fährt das Verfahren 500 mit 518 fort.
-
Bei 514 unterteilt, splittet oder teilt der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in Antwort auf ein Bestimmen, dass die Größe einiger oder aller der neuen Teilaufgaben 1501 -150" größer oder gleich dem definierten Schwellenwert ist, um die neuen Teilaufgaben 1501 -150" zu bilden, die bei 510 vorgeschlagen wurden.
-
Bei 516 weist der Aufgabenmanagerschaltkreis 140 die neue Teilaufgabe 150x und die zweite Aufgabe 152 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der neuen Teilaufgabe 150x und der zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente der neuen Teilaufgabe 150x von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einer zweiten Aufgabe 152, die auf einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112 ausgeführt wird, eingeführt wird. Das Verfahren 500 endet dann bei 522.
-
Bei 518 lehnt der Aufgabenmanagerschaltkreis 140 das Unterteilen, Splitten oder Teilen der ersten Aufgabe 150 in neuen Teilaufgaben 1501 -150", die bei 510 vorgeschlagen wurden, in Antwort auf ein Bestimmen, dass die Größe einiger oder aller der neuen Teilaufgaben 1501 -150" kleiner als ein definierter Schwellenwert ist, ab und erlaubt, dass die erste Aufgabe 150 intakt oder ungeteilt bleibt.
-
Bei 520 weist der Aufgabenmanagerschaltkreis 140 die ungeteilte erste Aufgabe 150 und die zweite Aufgabe 152 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der ungeteilten ersten Aufgabe 150 und der zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente der ungeteilten ersten Aufgabe 150 von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einer zweiten Aufgabe 152, die auf einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112 ausgeführt wird, eingeführt wird. Das Verfahren 500 endet dann bei 522.
-
Bei 524, falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Ausgangsargumente der ersten Aufgabe einen Teilsatz der Eingangsargumente der zweiten Aufgabe bilden oder auf andere Weise enthalten (z.B. bilden die Eingangsargumente in die zweite Aufgabe 152 einen Supersatz der Ausgangsargumente der ersten Aufgabe 150) fährt das Verfahren 500 mit 526 fort, andernfalls endet das Verfahren 500 bei 538.
-
Bei 526 schlägt der Aufgabenmanagerschaltkreis 140 ein Unterteilen, Splitten oder Teilen der zweiten Aufgabe 152 in eine Vielzahl neuer Teilaufgaben 1521 -152n vor. Der Aufgabenmanagerschaltkreis 140 schlägt das Unterteilen, Splitten oder Teilen der zweiten Aufgabe 152 vor, sodass die Eingangsargumente, die mit einer neuen Teilaufgabe 152x verknüpft sind, eine 1:1 Entsprechung mit den Ausgangsargumenten teilen, die mit der ersten Aufgabe 150 verknüpft sind.
-
Bei 528 bestimmt der Aufgabenmanagerschaltkreis 140, ob die Größe der neuen Teilaufgabe 152x größer oder gleich einem definierten Schwellenwert ist. Der Schwellenwert kann anhand einer gemessenen oder theoretischen Leistung des Prozessors 110/Kerns 114 oder Beschleunigers 112 empirisch bestimmt werden (z.B. kann der definierte Schwellenwert als die minimale Größe etabliert werden, unterhalb der eine Verbesserung in Systemleistung minimiert ist oder unterhalb der die Zeit, die zum Lokalisieren und Abrufen der bestehenden Teilaufgabe erforderlich ist, eine definierte Anzahl von Prozessor- oder Beschleunigertaktzyklen oder eine Zeit überschreitet). In einigen Implementierungen kann der definierte Schwellenwert ein festgesetzter Wert sein, der durch die physischen Parameter und/oder Konfiguration des entsprechenden Prozessors 110/Kerns 114 oder Beschleunigers 112 bestimmt wird. In einigen Implementierungen kann der definierte Schwellenwert ein variabler Wert sein, der durch den Aufgabenmanagerschaltkreis 140 anhand eines oder mehrerer Betriebsparameter bestimmt wird, wie Speichernutzung, Prozessor-/Kernnutzung, Beschleunigernutzung oder Kombinationen davon.
-
Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der neuen Teilaufgabe 152x größer oder gleich dem definierten Schwellenwert ist, fährt das Verfahren 500 mit 530 fort. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der neuen Teilaufgabe 152x kleiner als ein definierter Schwellenwert ist, fährt das Verfahren 500 mit 534 fort.
-
Bei 530 unterteilt, splittet oder teilt der Aufgabenmanagerschaltkreis 140, in Antwort auf ein Bestimmen, dass die Größe der neuen Teilaufgabe 152x größer oder gleich dem definierten Schwellenwert ist, die neuer Aufgabe 152 in neue Teilaufgaben 1521 -152", die bei 526 vorgeschlagen wurden.
-
Bei 532 weist der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 und die neue Teilaufgabe 152x einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der ersten Aufgabe 150 und der neuen Teilaufgabe 152x zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112, auf dem die neue Teilaufgabe 152x ausgeführt wird, eingeführt wird. Anschließend an 532 endet das Verfahren 500 bei 538.
-
Bei 534 lehnt der Aufgabenmanagerschaltkreis 140, in Antwort auf ein Bestimmen, dass die Größe der neuen Teilaufgabe 152x kleiner als ein definierter Schwellenwert ist, das Unterteilen, Splitten oder Teilen der zweiten Aufgabe 152 in neue Teilaufgaben 1521 -152", die bei 526 vorgeschlagen wurden, ab und erlaubt, dass die zweite Aufgabe 152 ungeteilt bleibt.
-
Bei 536 weist der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 und die ungeteilte zweite Aufgabe 152 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der ersten Aufgabe 150 und der ungeteilten zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112, auf dem die ungeteilte zweite Aufgabe 152 ausgeführt wird, eingeführt wird. Anschließend an 536 endet das Verfahren 500 bei 538.
-
6A stellt ein Ablaufdiagramm auf hoher Ebene eines beispielhaften Verfahrens 600 gemäß mindestens einer hier beschriebenen Ausführungsform zum Unterteilen einer Aufgabe in eine Vielzahl neuer Teilaufgaben bereit, sodass die Eingabe/Ausgabeargumente, die mit einer der neuen Teilaufgaben verknüpft sind, eine 1:1 Entsprechung mit den Eingabe/Ausgabeargumenten, die mit einer anderen Aufgabe verknüpft sind, aufrechterhalten oder bilden. 6B stellt eine Fortsetzung des Ablaufdiagramms auf hoher Ebene des beispielhaften Verfahrens 600, das in 6A gezeigt ist, gemäß mindestens einer hier beschriebenen Ausführungsform bereit, wobei das Verfahren 600 ein Unterteilen einer Aufgabe in eine Vielzahl neuer Teilaufgaben enthält, sodass die Eingabe/Ausgabeargumente, die mit einer der neuen Teilaufgaben verknüpft sind, eine 1:1 Entsprechung mit den Eingabe/Ausgabeargumenten, die mit einer anderen Aufgabe verknüpft sind, aufrechterhalten oder bilden. Der Aufgabenmanagerschaltkreis 140 vergleicht die Ausgangsargumente, die mit jeder von einer oder mehreren ersten Aufgaben 150 verknüpft sind, mit den Eingangsargumenten, die mit jeder von einer oder mehreren zweiten Aufgaben 152 verwendet sind, um zu detektieren, ob die Ausgangsargumente, die mit einer ersten Aufgabe verknüpft sind, einen Teilsatz oder Supersatz (d.h. eine 1:1 Entsprechung mit der Gesamtheit oder einem Abschnitt) der Eingangsargumente enthalten, die mit einer zweiten Aufgabe verknüpft sind.
-
Wenn die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, einen Supersatz der Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, enthalten oder bilden, kann der Aufgabenmanagerschaltkreis 140 eine Unterteilung oder Teilung der ersten Aufgabe 150 in eine Vielzahl neuer Teilaufgaben 1501 -150n vorschlagen, von welchen mindestens eine Ausgangsargumente mit einer 1:1 Entsprechung mit den Eingangsargumenten enthält, die mit der zweiten Aufgabe 152 verknüpft sind. In einigen Implementierungen kann der Aufgabenmanagerschaltkreis bestimmen, ob die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1501 -150n einen definierten Schwellenwert übersteigt. Falls die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1501 -150" einen definierten Schwellenwert übersteigt, kann der Aufgabenmanagerschaltkreis 140 bestimmen, ob die erste Aufgabe 150 entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden kann, um die neuen Teilaufgaben 1501 -150" zu bilden. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die erste Aufgabe 150 entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden kann und die Größe einiger oder aller der neuen Teilaufgaben 1501 -150n den definierten Schwellenwert erreicht oder überschreitet, kann der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in die vorgeschlagene Vielzahl neuer Teilaufgaben 1501 -150" unterteilen. Falls die Größe einiger oder aller der Vielzahl neuer Teilaufgaben 1501 -150", kleiner als ein definierter Schwellenwert ist, oder falls die erste Aufgabe 150 nicht entlang einer Hauptachse 125 teilbar ist, um die neuen Teilaufgaben 1501 -150" zu bilden, kann der Aufgabenmanagerschaltkreis 140 die Unterteilung oder Teilung der ersten Aufgabe 150 ablehnen, wodurch die erste Aufgabe 150 ungeteilt bleiben kann.
-
Wenn die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, einen Teilsatz der Eingangsargumente enthalten, die mit der zweiten Aufgabe 152 verknüpft sind, kann der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in eine Vielzahl neuer Teilaufgaben 1521 -152" unterteilen oder auf andere Weise teilen, von welchen mindestens eine (152x ) Eingangsargumente mit einer 1:1 Entsprechung mit den Ausgangsargumenten der ersten Aufgabe 150 enthält. In einigen Implementierungen kann der Aufgabenmanagerschaltkreis bestimmen, ob die Größe der neuen Teilaufgabe 152x , einen definierten Schwellenwert überschreitet. Falls die Größe der neuen Teilaufgaben 152x , einen definierten Schwellenwert überschreitet, kann der Aufgabenmanagerschaltkreis 140 bestimmen, ob die zweite Aufgabe 152 entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden kann, um die die bestehenden Teilaufgaben 1521 -152n bereitzustellen oder auf andere Weise zu bilden. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die zweite Aufgabe 152 entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden kann, und die Größe der neuen Teilaufgabe 152x den definierten Schwellenwert überschreitet, kann der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in die vorgeschlagene Vielzahl neuer Teilaufgaben 1521 -152" unterteilen. Falls die Größe der neuen Teilaufgabe 152x , kleiner als ein definierter Schwellenwert ist oder falls die zweite Aufgabe 152 nicht entlang einer Hauptachse 125 teilbar ist, um die Vielzahl neuer Teilaufgaben 1521 -152" zu bilden, kann der Aufgabenmanagerschaltkreis 140 die Unterteilung oder Teilung der zweiten Aufgabe 152 ablehnen. Das Verfahren 600 beginnt bei 602.
-
Bei 604 liest der Aufgabenmanagerschaltkreis 140 einige oder alle der Argumente, die mit einer zweiten Aufgabe 152 verknüpft sind. In mindestens einigen Implementierungen können die Argumente, die mit der zweiten Aufgabe 152 verknüpft sind, einige oder alle der Eingangsargumente enthalten, die mit der zweiten Aufgabe 152 verknüpft sind. In einigen Implementierungen kann der Aufgabenmanager 140 einige oder alle der Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, als eine Anordnung 124 im Systemspeicher 120 speichern. In einigen Implementierungen kann die Anordnung 124 eine oder mehrere Hauptachsen 125 und eine oder mehrere Nebenachsen 126 enthalten.
-
Bei 606 vergleicht der Aufgabenmanagerschaltkreis 140 die zweiten Aufgabeeingangsargumente mit einem oder mehreren Ausgangsargumenten der ersten Aufgabe, um zu detektieren oder zu bestimmen, ob eine 1:1 Entsprechung zwischen allen oder einem Abschnitt der Eingangsargumente der zweiten Aufgabe und einem oder mehreren Ausgangsargumente der ersten Aufgabe besteht.
-
Bei 608, falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Ausgangsargumente der ersten Aufgabe einen Supersatz der Eingangsargumente der zweiten Aufgabe enthalten oder bilden (z.B. die Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind bilden einen Teilsatz der Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind), fährt das Verfahren 600 mit 610 fort, andernfalls fährt das Verfahren 600 mit 626 fort.
-
Bei 610 schlägt der Aufgabenmanagerschaltkreis 140 ein Unterteilen, Splitten oder Teilen der ersten Aufgabe 150 in eine Vielzahl neuer Teilaufgaben 1501 -150" vor. Der Aufgabenmanagerschaltkreis 140 schlägt das Unterteilen, Splitten oder Teilen der ersten Aufgabe 150 vor, sodass die Ausgangsargumente, die mit einer der neuen Teilaufgaben (150x ) verknüpft sind, eine 1:1 Entsprechung mit den Eingangsargumenten, die mit der zweiten Aufgabe 152 verknüpft sind, bilden oder auf andere Weise bereitstellen.
-
Bei 612 bestimmt der Aufgabenmanagerschaltkreis 140, ob die Größe der neuen Teilaufgabe 150x einen definierten Schwellenwert erreicht oder überschreitet. Der Schwellenwert kann anhand einer gemessenen oder theoretischen Leistung des Prozessors 110/Kerns 114 oder Beschleunigers 112 empirisch bestimmt werden (z.B. kann der definierte Schwellenwert als die minimale Größe etabliert werden, unterhalb der eine Verbesserung in Systemleistung minimiert ist oder unterhalb der die Zeit, die zum Lokalisieren und Abrufen der bestehenden Teilaufgabe eine definierte Anzahl von Prozessor- oder Beschleunigertaktzyklen oder eine Zeit überschreitet). In einigen Implementierungen kann der definierte Schwellenwert ein festgesetzter Wert sein, der durch die physischen Parameter und/oder Konfiguration des entsprechenden Prozessors 110/Kerns 114 oder Beschleunigers 112 bestimmt wird. In einigen Implementierungen kann der definierte Schwellenwert ein variabler Wert sein, der durch den Aufgabenmanagerschaltkreis 140 anhand eines oder mehrerer Betriebsparameter bestimmt wird, wie Speichernutzung, Prozessor-/Kernnutzung, Beschleunigernutzung oder Kombinationen davon.
-
Falls bei 612 der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der neuen Teilaufgabe 150x den definierten Schwellenwert erreicht oder überschreitet, fährt das Verfahren 600 mit 614 fort. Falls bei 612 der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der neuen Teilaufgabe 150x kleiner als ein definierter Schwellenwert ist, fährt das Verfahren 600 bei 620 fort.
-
Bei 614 bestimmt der Aufgabenmanagerschaltkreis 140, ob die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um die neuen Teilaufgaben 1501 -150n zu bilden, die bei 610 vorgeschlagen wurden. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um die neuen Teilaufgaben 1501 -150" zu bilden, die bei 610 vorgeschlagen wurden, fährt das Verfahren 600 mit 616 fort. Falls der Aufgabenmanagerschaltkreis bestimmt, dass die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, nicht entlang einer Hauptachse 125 teilbar sind, um die neuen Teilaufgaben 1501 -150" zu bilden, die bei 610 vorgeschlagen wurden, fährt das Verfahren 600 mit 620 fort.
-
Bei 616, in Antwort darauf, dass der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der bestehenden Teilaufgabe 150x den definierten Schwellenwert erreicht oder überschreitet, und die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um die neuen Teilaufgaben 1501 -150" bereitzustellen, die bei 610 vorgeschlagen wurden, unterteilt, splittet oder teilt der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 in die Vielzahl neuer Teilaufgaben 1501 -150", die bei 610 vorgeschlagen wurden.
-
Bei 618 weist der Aufgabenmanagerschaltkreis 140 die neue Teilaufgabe 150x und die zweite Aufgabe 152 einer gemeinsamen Vorrichtung zu, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112. Ein Zuweisen der neuen Teilaufgabe 150x und der zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente der neuen Teilaufgabe 150x von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112, auf dem die zweite Aufgabe 152 ausgeführt wird, eingeführt wird. Anschließend an 618 endet das Verfahren 600 bei 624.
-
Bei 620, in Antwort darauf, dass der Aufgabenmanagerschaltkreis 140 bestimmt, dass entweder (oder sowohl) die Größe der bestehenden Teilaufgabe 150x kleiner als ein definierter Schwellenwert ist oder (als auch) die Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, nicht entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um die neuen Teilaufgaben 1501 -150" bereitzustellen, die bei 610 vorgeschlagen wurden, kann der Aufgabenmanagerschaltkreis 140 die Unterteilung oder Teilung der ersten Aufgabe 150 ablehnen, wodurch die erste Aufgabe 150 ungeteilt bleiben kann.
-
Bei 622 weist der Aufgabenmanagerschaltkreis 140 die ungeteilte erste Aufgabe 150 und die zweite Aufgabe 152 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der ungeteilten ersten Aufgabe 150 und der zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente, die mit der ungeteilten ersten Aufgabe 150 verknüpft sind, von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112, auf dem die zweite Aufgabe 152 ausgeführt wird, eingeführt wird. Anschließend an 622 endet das Verfahren 600 bei 624.
-
Bei 626, falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Ausgangsargumente der ersten Aufgabe einen Teilsatz der Eingangsargumente der zweiten Aufgabe enthalten oder bilden (z.B. bilden die Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, einen Supersatz der Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind), fährt das Verfahren 600 mit 628 fort, andernfalls endet das Verfahren 600 bei 642.
-
Bei 628 schlägt der Aufgabenmanagerschaltkreis 140 ein Unterteilen, Splitten oder Teilen der zweiten Aufgabe 152 in eine Vielzahl neuer Teilaufgaben 1521 -152". vor. Der Aufgabenmanagerschaltkreis 140 schlägt das Unterteilen, Splitten oder Teilen der zweiten Aufgabe 152 vor, sodass die Eingangsargumente, die mit mindestens einer neuen Teilaufgabe (152x ) verknüpft sind, eine 1:1 Entsprechung mit den Ausgangsargumenten, die mit mindestens einer ersten Aufgabe 150 verknüpft sind, teilen oder bilden.
-
Bei 630 bestimmt der Aufgabenmanagerschaltkreis 140, ob die Größe der neuen Teilaufgabe 152x einen definierten Schwellenwert erreicht oder überschreitet. Der Schwellenwert kann anhand einer gemessenen oder theoretischen Leistung des Prozessors 110/Kerns 114 oder Beschleunigers 112 empirisch bestimmt werden (z.B. kann der definierte Schwellenwert als die minimale Größe etabliert werden, unterhalb der eine Verbesserung in Systemleistung minimiert ist oder unterhalb der die Zeit, die zum Lokalisieren und Abrufen der bestehenden Teilaufgabe eine definierte Anzahl von Prozessor- oder Beschleunigertaktzyklen oder eine Zeit überschreitet). In einigen Implementierungen kann der definierte Schwellenwert ein festgesetzter Wert sein, der durch die physischen Parameter und/oder Konfiguration des entsprechenden Prozessors 110/Kerns 114 oder Beschleunigers 112 bestimmt wird. In einigen Implementierungen kann der definierte Schwellenwert ein variabler Wert sein, der durch den Aufgabenmanagerschaltkreis 140 anhand eines oder mehrerer Betriebsparameter bestimmt wird, wie Speichernutzung, Prozessor-/Kernnutzung, Beschleunigernutzung oder Kombinationen davon.
-
Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der neuen Teilaufgabe 152x den definierten Schwellenwert erreicht oder überschreitet, fährt das Verfahren 600 bei 632 fort. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Größe der neuen Teilaufgabe 152x kleiner als ein definierter Schwellenwert ist, fährt das Verfahren 600 bei 638 fort.
-
Bei 632 bestimmt der Aufgabenmanagerschaltkreis 140, ob die Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um die neuen Teilaufgaben 1521 -152n zu bilden, die bei 628 vorgeschlagen wurden. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um mindestens einige der neuen Teilaufgaben 1521 -152n zu bilden, die bei 628 vorgeschlagen wurden, fährt das Verfahren 600 bei 634 fort. Falls der Aufgabenmanagerschaltkreis 140 bestimmt, dass die Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, nicht entlang einer Hauptachse 125 teilbar sind, um mindestens einige der neuen Teilaufgaben 1521 -152n zu bilden, die bei 628 vorgeschlagen wurden, fährt das Verfahren 600 bei 638 fort.
-
Bei 634, in Antwort auf ein Bestimmen, dass die Größe der neuen Teilaufgabe 152x den definierten Schwellenwert erreicht oder überschreitet, unterteilt, splittet oder teilt der Aufgabenmanagerschaltkreis 140 die zweite Aufgabe 152 in neue Teilaufgaben 1521 -152", die bei 628 vorgeschlagen wurden.
-
Bei 636 weist der Aufgabenmanagerschaltkreis 140 die neue Teilaufgabe 152x und die erste Aufgabe 150 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der ersten Aufgabe 150 und der neuen Teilaufgabe 152x zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112, auf dem die neue Teilaufgabe 152x ausgeführt wird, eingeführt wird. Anschließend an 636 endet das Verfahren 600 bei 642.
-
Bei 638, in Antwort auf ein Bestimmen, dass die Größe der neuen Teilaufgabe 152x kleiner als ein definierter Schwellenwert ist oder dass die Eingangsargumente, die mit der zweiten Aufgabe 152 verknüpft sind, nicht entlang einer Hauptachse 125 unterteilt, gesplittet oder geteilt werden können, um die neuen Teilaufgaben 1521 -152n bereitzustellen, die bei 628 vorgeschlagen wurden, lehnt der Aufgabenmanagerschaltkreis 140 das Unterteilen, Splitten oder Teilen der zweiten Aufgabe 152 in neue Teilaufgaben 1521 -152n ab und erlaubt, dass die zweite Aufgabe 152 ungeteilt bleibt.
-
Bei 640 weist der Aufgabenmanagerschaltkreis 140 die erste Aufgabe 150 und die ungeteilte zweite Aufgabe 152 einer gemeinsamen Vorrichtung, wie einem gemeinsamen Prozessor 110/Kern 114 oder Beschleuniger 112 zu. Ein Zuweisen der ersten Aufgabe 150 und der ungeteilten zweiten Aufgabe 152 zu einer gemeinsamen Vorrichtung eliminiert vorteilhaft die Latenz, die durch Transferieren der Ausgangsargumente, die mit der ersten Aufgabe 150 verknüpft sind, von einem ersten Prozessor 110/Kern 114 oder Beschleuniger 112 zu einem zweiten Prozessor 110/Kern 114 oder Beschleuniger 112, auf dem die ungeteilte zweite Aufgabe 152 ausgeführt wird, eingeführt wird. Anschließend an 640 endet das Verfahren 600 bei 642.
-
Zusätzlich wurden Operationen für die Ausführungsformen ferner unter Bezugnahme auf die obenstehenden Figuren und begleitenden Beispiele beschrieben. Einige der Figuren können einen Logikablauf enthalten. Obwohl solche, hier präsentierten Figuren einen bestimmten Logikablauf enthalten können, ist klar, dass der Logikablauf nur ein Beispiel bereitstellt, wie die allgemeine, hier beschriebene Funktionalität implementiert werden kann. Ferner muss der angegebene Logikablauf nicht unbedingt in der dargestellten Reihenfolge ausgeführt werden, falls nicht anderes angegeben ist. Die Ausführungsformen sind nicht auf diesen Kontext beschränkt.
-
Es wurden hier verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. Die Merkmale, Aspekte und Ausführungsformen sind für eine Kombination miteinander wie auch für einen Variation und Modifizierung geeignet, wie für Fachleute auf dem Gebiet klar ist. Die vorliegende Offenbarung sollte daher so ausgelegt werden, dass sie solche Kombinationen, Variationen und Modifizierungen umfasst. Somit sollte die Breite und der Umfang der vorliegenden Erfindung nicht durch eine der oben beschriebenen, beispielhaften Ausführungsformen beschränkt sein, sondern sollte nur gemäß den folgenden Ansprüchen und deren Äquivalente definiert sein.
-
Die Begriffe und Ausdrücke, die hier benutzt werden, sind Begriffe zur Beschreibung und nicht zur Einschränkung und es ist nicht beabsichtigt, durch Verwendung solcher Begriffe und Ausdrücke, irgendwelche Äquivalente der gezeigten oder beschriebenen Merkmale (oder von Abschnitten derselben) auszuschließen und es ist erkennbar, dass verschiedene Modifizierungen im Umfang der Ansprüche möglich sind. Daher sollen die Ansprüche alle solchen Äquivalente abdecken. Es wurden verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. Die Merkmale, Aspekte und Ausführungsformen a sind für eine Kombination miteinander wie auch für einen Variation und Modifizierung geeignet, wie für Fachleute auf dem Gebiet klar ist. Die vorliegende Offenbarung sollte daher so ausgelegt werden, dass sie solche Kombinationen, Variationen und Modifizierungen umfasst.
-
Eine Bezugnahme in dieser Patentschrift auf „eine Ausführungsform“ oder „irgendeine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform enthalten ist. Das Vorkommen der Phrasen „in einer Ausführungsform“ oder „in irgendeiner Ausführungsform“ an verschiedenen Stellen in dieser Patentschrift bezieht sich nicht unbedingt immer auf dieselbe Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen in geeigneter Weise kombiniert werden.
-
Gemäß Beispiel 1 wird ein System bereitgestellt, das enthalten kann: eine Vielzahl kommunikationsfähig gekoppelter Prozessoren; einen Systemspeicher, der kommunikationsfähig an die Vielzahl kommunikationsfähig gekoppelter Prozessoren gekoppelt ist; und einen Aufgabenmanagerschaltkreis, der dynamisch Aufgaben unter der Vielzahl kommunikationsfähig gekoppelter Prozessoren zuordnet, wobei der Aufgabenmanagerschaltkreis dient zum: Vergleichen einer Vielzahl von Ausgangsargumenten, die mit einer ersten Aufgabe verknüpft sind, mit einer Vielzahl von Eingangsargumenten, die mit einer zweiten Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, besteht; und in Antwort auf ein Bestimmen, dass mindestens einige der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit der Vielzahl von Eingangsargumenten haben, die mit der zweiten Aufgabe verknüpft sind: Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind.
-
Beispiel 2 kann Elemente von Beispiel 1 enthalten und der Aufgabenmanagerschaltkreis ferner imstande ist zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind: Unterteilen der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind.
-
Beispiel 3 kann Elemente von Beispiel 2 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind: Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist.
-
Beispiel 4 kann Elemente von Beispiel 3 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, nicht größer oder gleich dem mindestens einen definierten Schwellenwert ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 5 kann Elemente von Beispiel 3 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich dem mindestens einen definierten Schwellenwert ist, Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist.
-
Beispiel 6 kann Elemente von Beispiel 5 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, Planen einer Ausführung der neuen Teilaufgabe der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 7 kann Elemente von Beispiel 6 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, nicht entlang einer Hauptachse im Systemspeicher trennbar ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 8 kann Elemente von Beispiel 2 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Unterteilen der zweiten Aufgabe in die Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1: 1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist.
-
Beispiel 9 kann Elemente von Beispiel 8 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, nicht größer oder gleich mindestens einem definierten Schwellenwert ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 10 kann Elemente von Beispiel 8 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, Bestimmen, ob die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist.
-
Beispiel 11 kann Elemente von Beispiel 10 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, im Systemspeicher entlang der Hauptachse trennbar ist, Planen einer Ausführung der ersten Aufgabe und der neuen Teilaufgabe der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 12 kann Elemente von Beispiel 10 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Eingangsargumente, die mit der zweiten Aufgabe verknüpft sind, im Systemspeicher entlang der Hauptachse nicht trennbar sind,, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Gemäß Beispiel 13 ist ein Verfahren zum dynamischen Zuordnen von Aufgaben unter einer Vielzahl kommunikationsfähig gekoppelter Prozessoren bereitgestellt. Das Verfahren kann ein Vergleichen, durch einen Aufgabenmanager, einer Vielzahl von Ausgangsargumenten, die mit einer ersten Aufgabe verknüpft sind, mit einer Vielzahl von Eingangsargumenten, die mit einer zweiten Aufgabe verknüpft sind; Bestimmen, durch den Aufgabenmanager, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, besteht; und in Antwort auf ein Bestimmen, dass mindestens einige der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit der Vielzahl von Eingangsargumenten haben, die mit der zweiten Aufgabe verknüpft sind: Unterteilen, durch den Aufgabenmanager, der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, enthalten.
-
Beispiel 14 kann Elemente von Beispiel 13 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, Unterteilen, durch den Aufgabenmanager, der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, enthalten.
-
Beispiel 15 kann Elemente von Beispiel 14 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, Bestimmen, durch den Aufgabenmanager, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, enthalten.
-
Beispiel 16 kann Elemente von Beispiel 15 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, nicht größer oder gleich dem mindestens einen definierten Schwellenwert ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 17 kann Elemente von Beispiel 15 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich dem mindestens einen definierten Schwellenwert ist, Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, enthalten.
-
Beispiel 18 kann Elemente von Beispiel 17 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, Planen einer Ausführung der neuen Teilaufgabe der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 19 kann Elemente von Beispiel 17 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher nicht trennbar ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 20 kann Elemente von Beispiel 14 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Unterteilen, durch den Aufgabenmanager, der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, enthalten.
-
Beispiel 21 kann Elemente von Beispiel 20 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, nicht größer oder gleich mindestens einem definierten Schwellenwert ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 22 kann Elemente von Beispiel 20 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, Bestimmen, ob die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, enthalten.
-
Beispiel 23 kann Elemente von Beispiel 22 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, Planen einer Ausführung der ersten Aufgabe und der neuen Teilaufgabe der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren, enthalten.
-
Beispiel 24 kann Elemente von Beispiel 22 enthalten und das Verfahren kann zusätzlich, in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher nicht trennbar ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren, enthalten.
-
Gemäß Beispiel 25 ist eine Vorrichtung bereitgestellt, enthaltend einen Aufgabenmanagerschaltkreis, der dynamisch Aufgaben unter der Vielzahl kommunikationsfähig gekoppelter Prozessoren zuordnet. Der Aufgabenmanagerschaltkreis ist imstande zum: Vergleichen einer Vielzahl von Ausgangsargumenten, die mit einer ersten Aufgabe verknüpft sind, mit einer Vielzahl von Eingangsargumenten, die mit einer zweiten Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, besteht; und, in Antwort auf ein Bestimmen, dass mindestens einige der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit der Vielzahl von Eingangsargumenten haben, die mit der zweiten Aufgabe verknüpft sind, Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind; und, in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, Unterteilen der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind.
-
Beispiel 26 kann Elemente von Beispiel 25 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist.
-
Beispiel 27 kann Elemente von Beispiel 26 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, nicht größer oder gleich dem mindestens einen definierten Schwellenwert ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 28 kann Elemente von Beispiel 26 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich dem mindestens einen definierten Schwellenwert ist, Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist.
-
Beispiel 29 kann Elemente von Beispiel 28 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, Planen einer Ausführung der neuen Teilaufgabe der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 30 kann Elemente von Beispiel 28 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, nicht entlang einer Hauptachse im Systemspeicher trennbar ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 31 kann Elemente von Beispiel 25 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Unterteilen der zweiten Aufgabe in die Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist.
-
Beispiel 32 kann Elemente von Beispiel 31 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, nicht größer oder gleich mindestens einem definierten Schwellenwert ist, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 33 kann Elemente von Beispiel 32 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, Bestimmen, ob die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist.
-
Beispiel 34 kann Elemente von Beispiel 33 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, im Systemspeicher entlang der Hauptachse trennbar ist, Planen einer Ausführung der ersten Aufgabe und der neuen Teilaufgabe der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 35 kann Elemente von Beispiel 34 enthalten und der Aufgabenmanagerschaltkreis ist ferner imstande zum: in Antwort auf ein Bestimmen, dass die Eingangsargumente, die mit der zweiten Aufgabe verknüpft sind, im Systemspeicher entlang der Hauptachse nicht trennbar sind,, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Gemäß Beispiel 36 ist ein System zum dynamischen Zuordnen von Aufgaben unter einer Vielzahl kommunikationsfähig gekoppelter Prozessoren bereitgestellt. Das System kann enthalten: ein Mittel zum Vergleichen einer Vielzahl von Ausgangsargumenten, die mit einer ersten Aufgabe verknüpft sind, mit einer Vielzahl von Eingangsargumenten, die mit einer zweiten Aufgabe verknüpft sind; ein Mittel zum Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, besteht; und, in Antwort auf ein Bestimmen, dass mindestens einige der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit der Vielzahl von Eingangsargumenten haben, die mit der zweiten Aufgabe verknüpft sind, ein Mittel zum Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind.
-
Beispiel 37 kann Elemente von Beispiel 36 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, ein Mittel zum Unterteilen der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, enthalten.
-
Beispiel 38 kann Elemente von Beispiel 37 enthalten und das System kann zusätzlich in Antwort auf ein Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, ein Mittel zum Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, enthalten.
-
Beispiel 39 kann Elemente von Beispiel 38 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, nicht größer oder gleich dem mindestens einen definierten Schwellenwert ist, ein Mittel zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 40 kann Elemente von Beispiel 38 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich dem mindestens einen definierten Schwellenwert ist, ein Mittel zum Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, enthalten.
-
Beispiel 41 kann Elemente von Beispiel 40 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, ein Mittel zum Planen einer Ausführung der neuen Teilaufgabe der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 42 kann Elemente von Beispiel 40 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher nicht trennbar ist, ein Mittel zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 43 kann Elemente von Beispiel 37 enthalten und das System kann zusätzlich, in Antwort auf ein Unterteilen, durch den Aufgabenmanager, der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, ein Mittel zum Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, enthalten.
-
Beispiel 44 kann Elemente von Beispiel 43 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, nicht größer oder gleich mindestens einem definierten Schwellenwert ist, ein Mittel zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 45 kann Elemente von Beispiel 43 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, ein Mittel zum Bestimmen, ob die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, enthalten.
-
Beispiel 46 kann Elemente von Beispiel 45 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, ein Mittel zum Planen einer Ausführung der ersten Aufgabe und der neuen Teilaufgabe der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Beispiel 47 kann Elemente von Beispiel 43 enthalten und das System kann zusätzlich, in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher nicht trennbar ist, ein Mittel zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren enthalten.
-
Gemäß Beispiel 48 ist ein nicht transitorisches, computerlesbares Medium bereitgestellt, das Anweisungen enthält, die, wenn sie durch einen Schaltkreis ausgeführt werden, den Schaltkreis zu einem dedizierten Aufgabenmanagerschaltkreis umformen. Der Aufgabenmanagerschaltkreis ist imstande zum: Vergleichen einer Vielzahl von Ausgangsargumenten, die mit einer ersten Aufgabe verknüpft sind, mit einer Vielzahl von Eingangsargumenten, die mit einer zweiten Aufgabe verknüpft sind; Bestimmen, ob eine 1:1 Entsprechung zwischen mindestens einigen der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, und mindestens einigen der Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, besteht; und in Antwort auf ein Bestimmen, dass mindestens einige der Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit der Vielzahl von Eingangsargumenten haben, die mit der zweiten Aufgabe verknüpft sind, Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind.
-
Beispiel 49 kann Elemente von Beispiel 48 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit mindestens einigen der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, veranlassen zum Unterteilen der zweiten Aufgabe in eine Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1: 1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind.
-
Beispiel 50 kann Elemente von Beispiel 48 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Unterteilen der ersten Aufgabe in eine Vielzahl neuer Teilaufgaben der ersten Aufgabe, sodass jedes der Ausgangsargumente, die mit einer neuen Teilaufgabe der ersten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Eingangsargumenten hat, die mit der zweiten Aufgabe verknüpft sind, veranlassen zum Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist.
-
Beispiel 51 kann Elemente von Beispiel 50 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, nicht größer oder gleich dem mindestens einen definierten Schwellenwert ist, veranlassen zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 52 kann Elemente von Beispiel 50 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der ersten Aufgabe verknüpft ist, größer oder gleich dem mindestens einen definierten Schwellenwert ist, veranlassen zum Bestimmen, ob die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist.
-
Beispiel 53 kann Elemente von Beispiel 52 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist, veranlassen zum Planen einer Ausführung der neuen Teilaufgabe der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 54 kann Elemente von Beispiel 52 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass die Vielzahl von Ausgangsargumenten, die mit der ersten Aufgabe verknüpft sind, nicht entlang einer Hauptachse im Systemspeicher trennbar ist, veranlassen zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 55 kann Elemente von Beispiel 49 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Unterteilen der zweiten Aufgabe in die Vielzahl neuer Teilaufgaben der zweiten Aufgabe, sodass jedes der Eingangsargumente, die mit einer neuen Teilaufgabe der zweiten Aufgabe verknüpft sind, eine 1:1 Entsprechung mit jedem der Vielzahl von Ausgangsargumenten hat, die mit der ersten Aufgabe verknüpft sind, veranlassen zum Bestimmen, ob mindestens ein Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist.
-
Beispiel 56 kann Elemente von Beispiel 55 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, nicht größer oder gleich mindestens einem definierten Schwellenwert ist, veranlassen zum Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 57 kann Elemente von Beispiel 55 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass der mindestens eine Parameter, der mit der neuen Teilaufgabe der zweiten Aufgabe verknüpft ist, größer oder gleich mindestens einem definierten Schwellenwert ist, veranlassen zum Bestimmen, ob die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, entlang einer Hauptachse im Systemspeicher trennbar ist.
-
Beispiel 58 kann Elemente von Beispiel 57 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis, in Antwort auf ein Bestimmen, dass die Vielzahl von Eingangsargumenten, die mit der zweiten Aufgabe verknüpft sind, im Systemspeicher entlang der Hauptachse trennbar ist, veranlassen zum Planen einer Ausführung der ersten Aufgabe und der neuen Teilaufgabe der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Beispiel 59 kann Elemente von Beispiel 55 enthalten, wo die Anweisungen ferner den Aufgabenmanagerschaltkreis veranlassen zum, in Antwort auf ein Bestimmen, dass die Eingangsargumente, die mit der zweiten Aufgabe verknüpft sind, im Systemspeicher entlang der Hauptachse nicht trennbar sind,, Planen einer Ausführung der ersten Aufgabe und der zweiten Aufgabe auf einem gemeinsamen der Vielzahl von Prozessoren.
-
Gemäß Beispiel 60 ist ein System zum dynamischen Verteilen von Aufgaben unter einer Vielzahl kommunikationsfähig gekoppelter Prozessoren bereitgestellt, wobei das System angeordnet ist, das Verfahren von einem der Beispiele 13 bis 24 durchzuführen.
-
Gemäß Beispiel 61 ist ein Chipsatz bereitgestellt, der angeordnet ist, das Verfahren von einem der Beispiele 13 bis 24 durchzuführen.
-
Gemäß Beispiel 62 ist ein nicht transitorisches maschinenlesbares Medium Geschwindigkeitsregelung, umfassend eine Vielzahl von Anweisungen, die in Antwort auf eine Ausführung auf einer Rechenvorrichtung die Rechenvorrichtung veranlassen, das Verfahren von einem der Beispiele 13 bis 24 durchzuführen.
-
Gemäß Beispiel 63 ist eine Vorrichtung bereitgestellt, die zum dynamischen Verteilen von Aufgaben unter einer Vielzahl kommunikationsfähig gekoppelter Prozessoren konfiguriert ist, wobei die Vorrichtung angeordnet ist, das Verfahren von einem der Beispiele 13 bis 24 durchzuführen.
-
Die Begriffe und Ausdrücke, die hier benutzt werden, sind Begriffe zur Beschreibung und nicht zur Einschränkung und es ist nicht beabsichtigt, durch Verwendung solcher Begriffe und Ausdrücke, irgendwelche Äquivalente der gezeigten oder beschriebenen Merkmale (oder von Abschnitten derselben) auszuschließen und es ist erkennbar, dass verschiedene Modifizierungen im Umfang der Ansprüche möglich sind. Daher sollen die Ansprüche alle solchen Äquivalente abdecken.