DE112013000687T5 - Verteilte Funktionsausführung für Hybridsysteme - Google Patents

Verteilte Funktionsausführung für Hybridsysteme Download PDF

Info

Publication number
DE112013000687T5
DE112013000687T5 DE112013000687.1T DE112013000687T DE112013000687T5 DE 112013000687 T5 DE112013000687 T5 DE 112013000687T5 DE 112013000687 T DE112013000687 T DE 112013000687T DE 112013000687 T5 DE112013000687 T5 DE 112013000687T5
Authority
DE
Germany
Prior art keywords
accelerator
buffer
data
host
send
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE112013000687.1T
Other languages
English (en)
Inventor
David Gary Chapman
Donald William Schmidt
Rajaram B. Krishnamurthy
Carl Joseph Parris
Benjamin Patrick Segal
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013000687T5 publication Critical patent/DE112013000687T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

Ein Verfahren beinhaltet ein Verarbeiten einer Anwendung durch einen Host mit einem oder mehreren Prozessoren und ein Verteilen mindestens eines Teils der Anwendung zum Verarbeiten an einen Beschleuniger. Das Verfahren beinhaltet ein Anweisen des Beschleunigers, einen Puffer auf dem Beschleuniger zu erstellen, und ein Anweisen des Beschleunigers, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt. Das Verfahren beinhaltet außerdem ein Anweisen des Beschleunigers, die Daten an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert. Der Beschleuniger fasst die Daten in dem Puffer vor dem Senden der Daten an den Host auf der Grundlage einer oder mehrerer Laufzeitbedingungen in dem Host zusammen.

Description

  • Hintergrund
  • Die vorliegende Offenbarung betrifft allgemein eine verteilte Funktionsausführung und insbesondere eine verteilte Funktionsausführung für Hybridsysteme, bei denen OpenCL verwendet wird.
  • Bei der Open Computing Language (OpenCL) handelt es sich um ein Framework zum Schreiben von Programmen, die heterogene Plattformen, bestehend aus CPUs, Grafikverarbeitungseinheiten (graphics processing units, GPUs) und anderen Prozessoren, übergreifend ausgeführt werden können. OpenCL enthält eine Sprache zum Schreiben von Kernels, bei denen es sich um Funktionen handelt, die auf OpenCL-Einheiten ausgeführt werden, und APIs (application programming interfaces, Anwendungsprogrammierschnittstellen), die zum Definieren und anschließenden Steuern der Plattformen verwendet werden. OpenCL bietet parallele Datenverarbeitung unter Verwendung von Parallelität auf der Grundlage von Aufgaben und Daten. OpenCL wurde entwickelt, um Anwendungen zum Zweck einer nicht grafischen Datenverarbeitung Zugriff auf die Grafikverarbeitungseinheit zu bieten und dadurch die Leistung der CPU über Grafik hinaus zu erweitern.
  • Aktuell sind OpenCL-Laufzeitumgebungen nicht für eine Anwendung mit bestimmten Architekturen wie beispielsweise dem System z von IBM verfügbar. Damit OpenCL mit diesen Architekturen verwendet werden kann, muss die Architektur auf einer separaten Architektur auf die OpenCL-Laufzeit zugreifen. Bei einer zEnterprise-Konfiguration kann ein System z-Host rechenintensive Funktionen auf einer anderen Einheit aufrufen, die im Allgemeinen als ein Beschleuniger bezeichnet wird. Damit ein zOS-Adressraum oder ein zLinux-Prozess in einem OpenCL-Host-Programm auf die API zugreifen kann, kann ein Prozedurfernaufrufschema (remote procedure call (RPC) scheme) verwendet werden. Allerdings gibt es verschiedene Nachteile bei der Verwendung aktuell zur Verfügung stehender RPC-Schemata in Verbindung mit OpenCL. Da OpenCL für eine Verwendung mit einem nicht verteilten System entwickelt wurde, ist OpenCL nicht dafür ausgelegt, eine Datenübertragung zwischen den verschiedenen von den Einheiten in dem System verwendeten Prozessoren und Puffern zu optimieren.
  • Kurzdarstellung
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung beinhaltet ein Verfahren zur verteilten Funktionsausführung auf Hybridsystemen ein Verarbeiten einer Anwendung durch einen Host mit einem oder mehreren Prozessoren und ein Verteilen mindestens eines Teils der Anwendung zur Ausführung auf einen Beschleuniger. Das Verfahren beinhaltet ein Anweisen des Beschleunigers, einen Puffer auf dem Beschleuniger zu erstellen, und ein Anweisen des Beschleunigers, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt. Das Verfahren beinhaltet außerdem ein Anweisen des Beschleunigers, die Daten an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert. Der Beschleuniger fasst die Daten in dem Puffer vor dem Senden der Daten an den Host auf der Grundlage einer oder mehrerer Laufzeitbedingungen in dem Host zusammen.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung enthält ein Computerprogrammprodukt ein computerlesbares Speichermedium mit darauf enthaltenem computerlesbaren Programmcode, wobei der computerlesbare Programmcode computerlesbaren Programmcode beinhaltet, der für ein Ausführen einer Anwendung auf einem Host konfiguriert ist. Der computerlesbare Programmcode ist dafür konfiguriert, mindestens einen Teil der Anwendung zur Ausführung an einen Beschleuniger zu verteilen und den Beschleuniger anzuweisen, auf dem Beschleuniger einen Puffer zu erstellen. Der computerlesbare Programmcode ist außerdem dafür konfiguriert, den Beschleuniger anzuweisen, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt, und den Beschleuniger anzuweisen, die Daten in dem Puffer an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert. Der Beschleuniger fasst die Daten in dem Puffer vor dem Senden der Daten an den Host auf der Grundlage einer oder mehrerer Laufzeitbedingungen in dem Host zusammen.
  • Gemäß noch einer weiteren Ausführungsform der vorliegenden Offenbarung, einem System zur verteilten Funktionsausführung, enthält das System einen Host, der in betriebsfähigem Datenaustausch mit einem Beschleuniger steht. Das System ist dafür konfiguriert, ein Verfahren auszuführen, das ein Verarbeiten einer Anwendung durch den Host und ein Verteilen mindestens eines Teils der Anwendung zum Verarbeiten an den Beschleuniger beinhaltet. Das Verfahren beinhaltet außerdem ein Anweisen des Beschleunigers, einen Puffer auf dem Beschleuniger zu erstellen, ein Anweisen des Beschleunigers, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt, und ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert. Der Beschleuniger fasst die Daten in dem Puffer vor dem Senden der Daten an den Host auf der Grundlage einer oder mehrerer Laufzeitbedingungen in dem Host zusammen.
  • Weitere Merkmale und Vorteile werden mithilfe der Techniken der vorliegenden Erfindung realisiert. Andere Ausführungsformen und Aspekte der Erfindung werden hier ausführlich beschrieben und als ein Teil der beanspruchten Erfindung angesehen. Für ein besseres Verständnis der Erfindung mitsamt den Vorteilen und Merkmalen sollten die Beschreibung und die Zeichnungen herangezogen werden.
  • Kurzbeschreibung der verschiedenen Ansichten der Zeichnungen
  • Der als Erfindung betrachtete Gegenstand wird in den Ansprüchen am Ende der Beschreibung besonders aufgezeigt und ausdrücklich beansprucht. Das Vorangehende sowie andere Merkmale und Vorteile der Erfindung sind aus der folgenden, in Verbindung mit den begleitenden Zeichnungen gelesenen ausführlichen Beschreibung ersichtlich, wobei in den Zeichnungen Folgendes dargestellt ist:
  • 1 ist ein Ablaufplan, der den Betrieb eines OpenCL-Verfahrens veranschaulicht;
  • 2 ist ein Blockschaubild, das ein System zur verteilten Funktionsausführung mithilfe von OpenCL veranschaulicht, und
  • 3 ist ein Ablaufplan, der ein Verfahren zur verteilten Funktionsausführung auf Hybridsystemen veranschaulicht.
  • Ausführliche Beschreibung
  • 1 zeigt einen Ablaufplan, der den Betrieb eines OpenCL-Verfahrens darstellt. Wie bei Block 10 gezeigt, verarbeitet der Host eine Anwendung zum Zweck der Ausführung. Der Host erstellt einen oder mehrere Kernels, die Teile von Anwendungen sind, und verteilt sie unter Leitung des Hosts auf einen oder mehrere Beschleuniger wie bei Block 12 gezeigt. Als Nächstes erstellt und schreibt der Host, wie bei Block 14 gezeigt, einen oder mehrere Puffer auf dem/den Beschleuniger. Die Puffer können Daten enthalten, die der Kernel zur Ausführung benötigt. Sobald die Puffer auf dem/den Beschleuniger erstellt und geschrieben wurden, werden von dem Host auf dem Beschleuniger Ausführungs-Kernels in eine Warteschlange eingereiht wie bei Block 16 gezeigt. Wie bei Block 18 veranschaulicht, werden die Kernels dann auf dem Beschleuniger ausgeführt. Die Ausführungsergebnisse der Kernel-Ausführung werden in die Puffer auf dem Beschleuniger geschrieben wie bei Block 20 gezeigt. Schließlich können die Puffer auf dem Beschleuniger von dem aufrufenden Host zurückgelesen werden wie bei Block 22 veranschaulicht.
  • 2 ist ein Blockschaubild, das ein Hybridsystem 100 zur verteilten Funktionsausführung mithilfe von OpenCL veranschaulicht. Zu dem Hybridsystem 100 zählen ein Host 102 und ein Beschleuniger 104, die über eine Datenübertragungsverbindung 106 verbunden sind. Bei einer beispielhaften Ausführungsform kann der Host 102 ein System z-Betriebssystem (z. B. zOS oder zLinux) aufweisen, während der Beschleuniger 104 über jede beliebige andere Art von Betriebssystem (z. B. AIX oder Linux) verfügen kann. Zu dem Host 102 zählt eine Datenverwaltungs- und Dispatch-Bibliothek 108, die ermöglicht, dass ein OpenCL-Quell-Code auf dem Host 102 Ausführungs-Kernel 124 auf dem Beschleuniger 104 aufruft. Der Vorprozessor 120 wird während eines Kompilierens des Host-OpenCL-Quellcodes ausgeführt. Der Vorprozessor 120 führt eine statische Codeanalyse aus, um Beziehungen zwischen Kernel- und Puffer-Daten und ihren entsprechenden Verwendungsmodellen zu ermitteln. Bei der Vorprozessor-Ausgabe handelt es sich um eine Tabelle, die diese Zuordnungen enthält. Die Datenverwaltungs- und Dispatch-Bibliothek 108 wird zum Steuern des Betriebs des OpenCL-Hostprogramms und zugehöriger Beschleuniger-Kernel sowie einer Datenbewegung zwischen Host und Beschleuniger verwendet.
  • Bei einer Ausführungsform können der Host 102 und der Beschleuniger 104 eine Datenübertragungs- oder Synchronisationsbibliothek (DaCS) oder TCP/IP-Sockets als eine Transportschicht zum Datenaustausch miteinander nutzen. Zu dem Beschleuniger 104 zählt auch eine OpenCL-Beschleuniger-Laufzeitumgebung 110, die für den Host 102 als ein Proxy dient und eine OpenCL-API im Namen des Hosts 102 aufruft. Die OpenCL-Beschleuniger-Laufzeitumgebung 110 reagiert auf Hostbefehle und sendet Ereignisbenachrichtigungen an den Host zurück. Zu dem Beschleuniger 104 zählt ein nativer Compiler 122, der von der OpenCL-Beschleuniger-Laufzeitumgebung 110 verwendet werden kann. Der Host 102 kann einen Host-Dämon 112 und der Beschleuniger 104 einen Beschleuniger-Dämon 114 enthalten, die dazu verwendet werden, die Datenübertragungsverbindung 106 zwischen dem Host 102 und dem Beschleuniger 104 zu konfigurieren und ein Verwalten von Beschleunigern, eingeschlossen eine Netzwerktopologie zwischen dem Beschleuniger und dem Host, durch den Host zu ermöglichen. Der Host 102 enthält einen oder mehrere Hostpuffer 116 und der Beschleuniger enthält einen oder mehrere Beschleunigerpuffer 118. Bei anderen Ausführungsformen kann die DaCS durch TCP/IP, Infiniband oder MPI ersetzt werden. Der Beschleuniger-Dämon 112 und der Host-Dämon 114 bieten eine Steuerpfad-Unterstützung, während der Beschleuniger-Proxy 110 über 108 Befehle von dem Host empfängt und mithilfe der Datenübertragungsverbindung 106 Benachrichtigungen sendet.
  • Bei einer beispielhaften Ausführungsform kann die Datenverwaltungs- und Dispatch-Bibliothek 108 ermitteln, welche Beschleunigerpuffer 118 nach einer Kernel-Ausführung von dem Beschleuniger 104 zu dem Host 102 zurückgelesen werden. Die Datenverwaltungs- und Dispatch-Bibliothek 108 kann die OpenCL-Beschleuniger-Laufzeitumgebung 110 anweisen, diese Beschleunigerpuffer 118 nach einer Kernel-Ausführung von dem Beschleuniger 104 per Push zu dem Host 102 zu übertragen. Durch ein selektives Übertragen der Daten in den Beschleunigerpuffern 118 auf dem Beschleuniger 104 zu dem Host 102 per Push und Speichern der Daten in den Hostpuffern 116 erhöht die Datenverwaltungs- und Dispatch-Bibliothek 108 eine Ausführungsgeschwindigkeit und minimiert eine Latenz, indem sie dem Host 102 Zugriff auf die Daten in dem Hostpuffer 116 bietet, ohne abzuwarten, bis der Host 102 die Daten von dem Beschleuniger 104 anfordert. In bestimmten Fällen müssen Beschleunigerpuffer 118, in die von einem Kernel auf dem Beschleuniger 104 geschrieben wurde, möglicherweise nicht von dem Host 102 gelesen werden. Zum Beispiel können diese Beschleunigerpuffer 118 nur zum Ausführen eines weiteren Kernels auf dem Beschleuniger 104 benötigt werden. Wenn die Datenverwaltungs- und Dispatch-Bibliothek 108 ermittelt, dass die Beschleunigerpuffer 118 von dem Host 102 nicht benötigt werden, werden die Daten in den Beschleunigerpuffern 118 nach einer Kernel-Ausführung nicht zu dem Host 102 zurückgesendet.
  • Bei beispielhaften Ausführungsformen kann der Vorprozessor 120 den auf dem Host 102 ausgeführten Anwendungsquellcode analysieren und eine Zuordnung zwischen Anweisungen zum Schreiben von Puffern von dem Host 102 auf den Beschleuniger 104 und Anweisungen zum Einreihen des Kernels in eine Warteschlange und Ausführen des Kernels auf dem Beschleuniger 104 erstellen. Auf der Grundlage dieser Zuordnungen kann der Vorprozessor 120 die von dem Host 102 an den Beschleuniger 104 gesendeten Daten zusammenfassen, d. h. Pufferübertragungsaufrufe und Kernel-Ausführungsaufrufe mithilfe einer einzigen Datenübertragung zwischen Host und Beschleuniger zusammenfassen. Durch Zusammenfassen der gesendeten Daten wird die Notwendigkeit mehrerer Systemaufrufe, um dieselben Daten von dem Host 102 zu dem Beschleuniger 104 zu übertragen, verringert und entfällt möglicherweise vollständig.
  • Bei beispielhaften Ausführungsformen können eine oder mehrere Optionen in einer Anwendung enthalten sein, sodass die Datenverwaltungs- und Dispatch-Bibliothek 108 Umgebungsvariablen lesen kann, um ein Zusammenfassen und/oder Übertragen von Daten per Push auszulösen. Überdies kann durch diese Optionen ermöglicht werden, dass ein Programmierer oder Nutzer zwischen einem Zusammenfassen und/oder Übertragen von Daten per Push hin- und herschalten kann. Bei einer Ausführungsform kann die Datenverwaltungs- und Dispatch-Bibliothek 108 eine auf dem Host 102 erstellte Puffertabelle 116 erstellen und verwenden. Die Datenverwaltungs- und Dispatch-Bibliothek 108 kann prüfen und bestätigen, dass Kernels, die die Puffer verwenden, tatsächlich in eine Warteschlange auf dem Beschleuniger 104 eingereiht werden. Zum Beispiel kann die Datenverwaltungs- und Dispatch-Bibliothek 108 die Puffertabelle verwenden, um zu verfolgen, ob jeder Beschleunigerpuffer 118 tatsächlich in eine Warteschlange auf dem Beschleuniger 104 eingereiht ist. Überdies kann die Datenverwaltungs- und Dispatch-Bibliothek 108 ein ähnliches Verfahren verwenden, um andere Nutzungsdetails für jeden Puffer auf dem Beschleuniger 104 zu verfolgen, z. B., ob der Puffer für Nur-Lese-Daten, Nur-Schreib-Daten oder sowohl für Lesen als auch für Schreiben von Pufferdaten auf dem Beschleuniger verwendet wird. OpenCL-Puffer können als Nur-Lese-, Nur-Schreib- oder Lese-Schreib-Puffer gekennzeichnet werden. Die Datenverwaltungs- und Dispatch-Bibliothek 108 kann auf der Grundlage dieser Einstellungen intelligente Entscheidungen zur Pufferübertragung treffen. Ein als „Nur Lesen” (nur von dem Kernel gelesen) gekennzeichneter Puffer muss nicht zu dem Host zurückgeschrieben werden. Umgekehrt muss der Inhalt eines als „Nur Schreiben” gekennzeichneten Puffers nicht von dem Hostspeicher initialisiert werden (wodurch Datenübertragungen weiter verringert werden). Bei einer Ausführungsform kann, wenn die Datenverwaltungs- und Dispatch-Bibliothek 108 auf eine Puffer-Schreibanweisung stößt, die zu einer Übertragung von Daten über die Datenübertragungsverbindung 106 führt, die Puffertabelle abgefragt werden, und die Pufferdaten können für eine Übertragung markiert werden, wenn eine entsprechende Anweisung zum Einreihen eines Kernels in eine Warteschlange gefunden wird, die die Pufferdaten einschließt. Bei Szenarios, bei denen eine Anwendung kleine Datenmengen zwischen Anweisungen zum Ausführen des Kernels sendet, kann die Anwendung eine Option enthalten, die einem Benutzer oder Vorprozessor 120 ein Deaktivieren der Datenzusammenfassung ermöglicht.
  • Ein Deaktivieren der Datenzusammenfassung ist auch dann klug, wenn Pufferdaten für einen Kernel gesendet werden, der auf dem Beschleuniger ausgeführt wird, aber der nächste Kernel in der Warteschlange einem anderem als dem auf dem Beschleuniger ausgeführten Kernel entspricht. Programmiereroptionen im Anwendungsquellcode können verwendet werden, um hinsichtlich einer Aktion einer Umgebungsvariablen während der Laufzeit hin- und herzuschalten. Durch einen von dem Programmierer eingegebenen Hinweis „Zusammenfassung beginnen” würden Daten Beschleuniger-Funktionsaufrufe übergreifend für alle Aufrufe nach dem Hinweis und bis zum Erreichen eines Hinweises „Zusammenfassen beenden” zusammengefasst. Der Vorprozessor 120 durchsucht die Eingabequelle und erstellt eine Zusammenfassungstabelle. Die Tabelle verfügt über eine Zeilennummer, einen Eingabedateinamen, eine Quellzeilennummer, einen API-Funktionsaufrufnamen sowie eine Zusammenfassungs-Zeilenliste und einen Iterationsbereich. Bei der Zusammenfassungs-Zeilenliste handelt es sich einfach um all die Funktionen, die Zeilen entsprechen, die zum Übertragen in einer bestimmten Zeile zusammengefasst werden. Der Iterationsbereich ist der Bereich von Iterationen, für den die Zusammenfassung vorgenommen wird. Der Vorprozessor 120 erstellt diese Tabelle und kann sie in einen Speicher oder einen Hauptspeicher schreiben. Die Datenverwaltungs- und Dispatch-Bibliothek 108 kann diese Tabelle lesen, um Zusammenfassungs-Entscheidungen zu treffen, während das System in Betrieb ist. In ähnlicher Weise erstellt der Vorprozessor 120 eine „Übertragen-per-Push”-Tabelle ('push-ahead' table), die Zeilennummer, Eingabedateinamen, Quellzeilennummer, API-Funktionsaufrufnamen, Übertragen-per-Push-Markierung (push-ahead-flag) enthält. Der Programmierer fügt Hinweise „Übertragen per Push beginnen” und „Übertragen per Push beenden” in Abschnitts-Anwendungsquellcode ein, bei dem ein Übertragen per Push erforderlich ist. Der Vorprozessor 120 erstellt diese Tabelle und kann sie in einem Speicher ablegen. Beim Start wird diese Tabelle dem Beschleuniger 104 zum Ausführen übermittelt. Jede Änderung von Tabellenbedingungen während der Laufzeit wird dem Beschleuniger 104 mit Aktualisierungen spezieller Zeilennummern übermittelt. Beispielsweise können für einen gegebenen Aufruf des OpenCL-Programms Datenzusammenfassungs-Umgebungsvariablen in der BS-Umgebung festgelegt sein, um Daten zusammenzufassen, aber ein Anwendungsquell-Code kann Logik enthalten, die zum Ausschalten einer Datenzusammenfassung dient, wenn während eines dynamischen Ausführens der Anwendungsquell-Code bestimmte Bedingungen erfüllt sind. Zum Beispiel kann eine Datenzusammenfassung dazu führen, dass große Datenmengen von dem Host zu dem Beschleuniger geschickt werden, was im Hinblick auf Datenübertragung ineffizient sein kann. Durch die zuvor erwähnten Verfahren wird ermöglicht, dass bei Zusammenfassungs- und Push-Übertragungs-Anfragen zwischen Kompilierungszeitbedingungen und dynamischen Laufzeitbedingen hin- und hergeschaltet werden kann.
  • Bei beispielhaften Ausführungsformen kann die Datenverwaltungs- und Dispatch-Bibliothek 108 eine Puffertabelle erstellen, die von dem Host 102 während des Ausführens der Anwendung gelesen wird. Wenn ein Kernel auf dem Beschleuniger 104 in eine Warteschlange eingereiht wird, kann die Datenverwaltungs- und Dispatch-Bibliothek 108 eine Markierung setzen, um anzuzeigen, dass die Daten in dem von dem Kernel verwendeten Beschleunigerpuffer 118 zu dem Host 102 verschoben werden sollen, bevor der Host 102 eine Anweisung zum Lesen des Puffers ausführt. Bei einer Ausführungsform können nach dem Ausführen des Kernels auf dem Beschleuniger 104 die Daten in dem Beschleunigerpuffer 118 augenblicklich per Push zu dem Host 102 zurückübertragen und in dem Hostpuffer 116 gespeichert werden. Die OpenCL-Beschleuniger-Laufzeitumgebung 110 kann verwendet werden, um die Datenverwaltungs- und Dispatch-Bibliothek 108 abzufragen, um zu ermitteln, ob der Beschleunigerpuffer 118 proaktiv per Push zu dem Host 102 übertragen werden sollte. Die Datenverwaltungs- und Dispatch-Bibliothek 108 kann außerdem die Puffernutzungseigenschaften in dem Host 102 verstehen und dem Beschleuniger 104 befehlen, nur die erforderlichen Daten per Push zu übertragen.
  • Bei einer Ausführungsform kann ein Programmierer ausdrückliche Optionen in dem Anwendungsquellcode platzieren, die verwendet werden können, um die Pufferverwaltungsverfahren selektiv zu aktivieren, darunter Datenzusammenfassung und Datenübertragung per Push. Bei einer Ausführungsform kann bei Rechenschleifen, die iterativ einen Kernel ausführen und einen Puffer lesen, eine Push-Übertragungs-Option verwendet werden, um Daten, die über mehrere Iterationen der Schleife gesammelt werden, von dem Beschleuniger 104 zu dem Host 102 zu übertragen. Bei einer Ausführungsform kann eine Option „Zuletzt per Push übertragen” verwendet werden, um den Beschleuniger 104 anzuweisen, die auf dem Beschleuniger während der Rechenschleife erstellten Daten zusammenzufassen und die zusammengefassten Daten nach abgeschlossener Kernel-Ausführung per Push zu dem Host 102 zu übertragen. Bei beispielhaften Ausführungsformen kann die Option „Zuletzt per Push übertragen” verwendet werden, um zu verhindern, dass der Beschleuniger 104 den Host 102 durch ein ständiges Senden von Daten „überschwemmt”.
  • Bei einer beispielhaften Ausführungsform kann ein Kernel für kurze Zeit ausgeführt werden, und der Host 102 kann nach jeder Kernel-Ausführung den von dem Kernel verwendeten Beschleunigerpuffer 118 lesen. In diesem Fall liegt eine große Anzahl von Datenübertragungen zwischen dem Host 102 und dem Beschleuniger 104 vor. Wenn der Host 102 das Ergebnis der Kernel-Ausführung nicht augenblicklich benötigt, können, um die Anzahl von Datenübertragungen zu verringern, Datenübertragungen per Push von dem Beschleuniger 104 zu dem Host 102 auf eine Anweisung der Datenverwaltungs- und Dispatch-Bibliothek 108 hin, die die OpenCL-Beschleuniger-Laufzeitumgebung 110 anweist, die Daten zu einer minimalen Menge zusammenzufassen, zusammengefasst werden, wonach die Daten per Push von dem Beschleuniger 104 zu dem Host 102 übertragen werden können. Bei einer weiteren Ausführungsform können Push-Datenübertragungen von dem Beschleuniger 104 zu dem Host 102 zusammengefasst werden, und zwar auf eine Anweisung der Datenverwaltungs- und Dispatch-Bibliothek 108 hin, wodurch die OpenCL-Beschleuniger-Laufzeitumgebung 110 angewiesen wird, die Daten zusammenzufassen und die Daten mit einer maximalen Sendefrequenz von dem Beschleuniger 104 zu dem Host 102 zu senden, die von dem Vorprozessor 102 festgelegt werden kann, wobei z. B. der Host bei jeder Iteration nur einen bestimmten Datenabschnitt von einem Puffer anfordert. Ein Vorprozessor-Hinweis, bei dem eine Übertragung per Push mit Größe und Position verwendet wird, könnte zum Minimieren von Datenübertragungen verwendet werden.
  • Bei einer weiteren beispielhaften Ausführungsform können mehrere Kernel auf dem Beschleuniger 104 ausgeführt werden, und die Datenverwaltungs- und Dispatch-Bibliothek 108 kann die OpenCL-Beschleuniger-Laufzeitumgebung 110 anweisen, Puffer-Push-Übertragungen von unterschiedlichen Kernel-Ausführungen an den Host 102 zusammenzufassen. Bei einer Ausführungsform kann eine Datenzusammenfassung auch mithilfe der BS-Zuteilungsdauer auf dem Host 102 ausgelöst werden. Wenn der BS-Zuteiler auf dem Host 102 zum Beispiel alle x Millisekunden ausgeführt wird, können Daten auf dem Beschleuniger 104 zusammenfasst und an den Host 102 gesendet werden, gerade bevor der Host 102 versucht, die gesendeten Daten zu lesen. Steuer- und Synchronisationsprotokolle können verwendet werden, um eine Konsistenz und Kohärenz von dem Host gelesener Daten sicherzustellen.
  • 3 ist ein Ablaufplan, der ein Verfahren zur verteilten Funktionsausführung auf Hybridsystemen zeigt. Wie bei Block 210 gezeigt, verarbeitet der Host eine Anwendung zur Ausführung über das verteilte System. Der Host erstellt einen oder mehrere Kernels, die Teile der Anwendung sind, und verteilt sie auf einen oder mehrere Beschleuniger wie bei Block 212 gezeigt. Als Nächstes erstellt und schreibt der Host, wie bei Block 214 gezeigt, einen oder mehrere Puffer auf dem/den Beschleuniger, reiht Kernel auf dem Beschleuniger in eine Warteschlange ein und weist den Beschleuniger an, die Kernels auszuführen. Bei einer beispielhaften Ausführungsform kann der Host eine Datenverwaltungs- und Dispatch-Bibliothek 108 verwenden, um die von dem Host an den Beschleuniger gesendeten Daten während der Schritte des Schreibens der Puffer auf den Beschleuniger, Einreihen der Kernel in eine Warteschlange und Anweisen des Beschleunigers zum Ausführen der Kernel zusammenzufassen. Wie bei Block 216 veranschaulicht, werden die Kernels dann auf dem Beschleuniger ausgeführt. Die Ausführungsergebnisse der Kernel-Ausführung werden in die Puffer auf dem Beschleuniger geschrieben wie bei Block 218 gezeigt. Wahlweise kann der Beschleuniger, wie bei Block 220 gezeigt, die durch das Ausführen des Kernel erstellten Daten zusammenfassen. Die durch das Ausführen des Kernel erstellten Daten, die möglicherweise zusammengefasst wurden, werden von dem Beschleuniger per Push zu dem Host übertragen wie bei Block 222 veranschaulicht.
  • Demzufolge werden durch das offenbarte Verfahren für eine ein Hybridsystem übergreifende verteilte Funktionsausführung mehrere Nachteile bei der Verwendung aktuell verfügbarer RPC-Schemata in Verbindung mit OpenCL überwunden. Beispielsweise ist bei aktuellen RPC-Verfahren die Verfügbarkeit von Puffern synchron, und RPC kann keine Daten vor dem Zeitpunkt zur Verfügung stellen, an dem sie auf dem aufrufenden Host benötigt werden. Darüber hinaus fasst RPC Daten nicht über Remote-Funktionsaufrufe zusammen, um eine Netzwerknutzung zu optimieren. Vielmehr senden RPC-Verfahren Puffer jeweils, wenn ein Funktionsaufruf vorgenommen wird. Die offenbarten Verfahren für eine verteilte systemübergreifende Funktionsausführung in einem Hybridsystem ermöglichen, dass der Beschleuniger Daten per Push zu dem Host überträgt, bevor die Daten von dem Host benötigt werden. Außerdem ermöglichen die offenbarten Verfahren für eine verteilte systemübergreifende Funktionsausführung in einem Hybridsystem, dass sowohl der Host als auch der Beschleuniger Daten zusammenfassen können, die über das den Host und den Beschleuniger verbindende Datenübertragungsnetzwerk gesendet werden, um die Netzwerkwerknutzung zu optimieren.
  • Wie Fachleute verstehen werden, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung in Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (eingeschlossen Firmware, speicherresidente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, bei der Software- und Hardwareaspekte kombiniert werden, die hier alle allgemein als „Schaltung”, „Modul” oder „System” bezeichnet sein können. Aspekte der vorliegenden Erfindung können außerdem in der Form eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien mit in dem Medium enthaltenem computerlesbarem Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise, aber ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede beliebige Kombination von diesen sein. Als konkretere Beispiele (unvollständige Liste) für das computerlesbare Speichermedium könnten die folgenden aufgeführt werden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorstehenden. Im Zusammenhang dieses Dokuments kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm für die Nutzung durch ein Anweisungen ausführendes System, eine solche Vorrichtung oder Einheit oder für die Nutzung in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein verbreitetes Datensignal mit darin enthaltenem computerlesbarem Programmcode sein, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches verbreitetes Signal kann verschiedene Formen annehmen, unter anderem, aber ohne darauf beschränkt zu sein, eine elektromagnetische oder optische Form oder eine beliebige geeignete Kombination aus diesen. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm für die Nutzung durch ein Anweisungen ausführendes System, eine solche Vorrichtung oder Einheit oder für die Nutzung in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit übermitteln, verbreiten oder transportieren kann.
  • Auf einem computerlesbaren Medium enthaltener Programmcode kann mithilfe jedes geeigneten Mediums übermittelt werden, einschließlich, ohne darauf beschränkt zu sein, ein drahtloses oder drahtgebundenes Medium, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder jede geeignete Kombination von diesen.
  • Computerprogrammcode zum Ausführen von Operationen der Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig oder teilweise auf dem Computer des Benutzers, als ein eigenständiges Softwarepaket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Bei dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch ein beliebiges Netzwerk, darunter ein lokales Netzwerk (local area network, LAN) oder ein Weitverkehrsnetz (widearea network, WAN) verbunden sein, oder es kann eine Verbindung mit einem externen Computer hergestellt werden (zum Beispiel mithilfe eines Internetdienstanbieters über das Internet).
  • Aspekte der vorliegenden Erfindung werden im Folgenden mit Bezug auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammanweisungen realisiert werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, sodass die Anweisungen, die durch den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Realisieren der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis samt der Anweisungen herstellen, mithilfe derer die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebene Funktion/Handlung realisiert wird.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Betriebsschritten zu bewirken, um einen computerrealisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Realisieren der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen bereitstellen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Beziehung kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, Segment oder einen Codeabschnitt enthalten, das/der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen Logikfunktion(en) aufweist. Es sollte auch beachtet werden, dass bei einigen alternativen Realisierungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren angegeben auftreten können. Zum Beispiel können zwei aufeinander folgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können in Abhängigkeit von der betreffenden Funktionalität manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist ebenfalls zu beachten, dass jeder Block der Blockschaubilder und/oder Ablaufpläne sowie Blockkombinationen in den Blockschaubildern und/oder Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen realisiert werden können.
  • Die hier verwendete Terminologie dient ausschließlich dem Zweck der Beschreibung bestimmter Ausführungsformen und soll die Erfindung nicht einschränken. Die Singularformen unbestimmter und bestimmter Artikel wie „ein”, „eine” und „der”, „die”, „das” sollen ebenfalls die Pluralformen beinhalten, solange der Kontext nicht eindeutig auf etwas anderes hinweist. Ferner versteht sich, dass die Begriffe „aufweist” und/oder „aufweisend” in dieser Beschreibung das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten beschreiben, aber das Vorhandensein oder Hinzufügen von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen von diesen nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Handlungen sowie Äquivalente aller Mittel oder Schritt-und-Funktion-Elemente (step plus function elements) in den folgenden Ansprüchen sollen jede beliebige Struktur, jedes beliebige Material oder jede beliebige Handlung zum Ausführen der Funktion in Verbindung mit anderen beanspruchten Elementen als ausdrücklich beansprucht beinhalten. Die Beschreibung der vorliegenden Erfindung wird zum Zweck der Veranschaulichung und Beschreibung vorgelegt und soll nicht vollständig oder auf die offenbarte Form der Erfindung beschränkt sein. Für Fachleute werden zahlreiche Abänderungen und Abwandlungen offensichtlich sein, die aber keine Abweichung vom Schutzbereich der Erfindung und dem Erfindungsgedanken darstellen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erläutern, und um andere Fachleute in die Lage zu versetzen, die Erfindung im Hinblick auf verschiedene Ausführungsformen mit verschiedenen Abwandlungen zu verstehen, die für die spezielle in Betracht gezogene Verwendung geeignet sind.
  • Obwohl die bevorzugte Ausführungsform der Erfindung beschrieben wurde, sollte beachtet werden, dass Fachleute sowohl jetzt wie zukünftig verschiedene Verbesserungen und Erweiterungen vornehmen können, die in den Schutzbereich der nachfolgenden Ansprüche fallen. Diese Ansprüche sollten so aufgefasst werden, dass sie den ordnungsgemäßen Schutz der zuerst beschriebenen Erfindung aufrechterhalten.

Claims (20)

  1. Verfahren, das aufweist: Verarbeiten einer Anwendung durch einen Host mit einem oder mehreren Prozessoren; Verteilen mindestens eines Teils der Anwendung zum Ausführen an einen Beschleuniger; Anweisen des Beschleunigers, auf dem Beschleuniger einen Puffer zu erstellen; Anweisen des Beschleunigers, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt, und Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert, wobei der Beschleuniger die Daten in dem Puffer vor dem Senden der Daten an den Host auf Grundlage einer oder mehrerer Laufzeitbedingungen des Hosts zusammenfasst.
  2. Verfahren nach Anspruch 1, wobei der Puffer auf dem Beschleuniger eine Bezeichnung als Nur-Lese-, Nur-Schreib- oder Lese-Schreib-Puffer aufweist.
  3. Verfahren nach Anspruch 2, wobei der Beschleuniger die Daten in dem Puffer nicht an den Host sendet, wenn der Puffer als Nur-Lese-Puffer bezeichnet ist.
  4. Verfahren nach Anspruch 1, wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem aufweist: Bereitstellen eines minimalen Sendewertes für den Beschleuniger; Anweisen des Beschleunigers, die Daten in dem Puffer zusammenzufassen, und Anweisen des Beschleunigers, die Daten in dem Puffer zu senden, wenn eine Größe des Puffers den minimalen Sendewert überschreitet.
  5. Verfahren nach Anspruch 1, wobei der Teil der Anwendung eine Rechenschleife aufweist, und wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem ein Anweisen des Beschleunigers aufweist, die Daten in dem Puffer bei einer Fertigstellung der Rechenschleife an den Host zu senden.
  6. Verfahren nach Anspruch 1, wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem aufweist: Bereitstellen eines Sendezeitraums für den Beschleuniger; Anweisen des Beschleunigers, die Daten in dem Puffer zusammenzufassen, und Anweisen des Beschleunigers, die Daten in dem Puffer nicht öfter als einmal während des Sendezeitraums an den Host zu senden.
  7. Verfahren nach Anspruch 1, das außerdem aufweist: Schreiben von Anwendungsdaten zum Ausführen des Teils der Anwendung in den Puffer auf dem Beschleuniger, wobei der Host von dem Host an den Beschleuniger gesendete Daten zusammenfasst, um eine während getrennter Übertragungen von Bestandteilen der Daten entstandene Datenübertragungslatenz zu verbergen.
  8. Computerprogrammprodukt, das aufweist: ein computerlesbares Speichermedium mit darauf enthaltenem computerlesbaren Programmcode, wobei der computerlesbare Programmcode aufweist: computerlesbaren Programmcode, der konfiguriert ist zum: Verarbeiten einer Anwendung auf einem Host, Verteilen mindestens eines Teils der Anwendung zum Ausführen an einen Beschleuniger; Anweisen des Beschleunigers, auf dem Beschleuniger einen Puffer zu erstellen; Anweisen des Beschleunigers, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt, und Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert, wobei der Beschleuniger die Daten in dem Puffer vor dem Senden der Daten an den Host auf Grundlage einer oder mehrerer Laufzeitbedingungen des Hosts zusammenfasst.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der Puffer auf dem Beschleuniger eine Bezeichnung als Nur-Lese-, Nur-Schreib- oder Lese-Schreib-Puffer aufweist.
  10. Computerprogrammprodukt nach Anspruch 9, wobei der Beschleuniger die Daten in dem Puffer nicht an den Host sendet, wenn der Puffer als Nur-Lese-Puffer bezeichnet ist.
  11. Computerprogrammprodukt nach Anspruch 8, wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem aufweist: Bereitstellen eines minimalen Sendewertes für den Beschleuniger; Anweisen des Beschleunigers, die Daten in dem Puffer zusammenzufassen, und Anweisen des Beschleunigers, die Daten in dem Puffer zu senden, wenn eine Größe des Puffers den minimalen Sendewert überschreitet.
  12. Computerprogrammprodukt nach Anspruch 8, wobei der Teil der Anwendung eine Rechenschleife aufweist, und wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem ein Anweisen des Beschleunigers aufweist, die Daten in dem Puffer bei einer Fertigstellung der Rechenschleife an den Host zu senden.
  13. Computerprogrammprodukt nach Anspruch 8, wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem aufweist: Bereitstellen eines Sendezeitraums für den Beschleuniger; Anweisen des Beschleunigers, die Daten in dem Puffer zusammenzufassen, und Anweisen des Beschleunigers, die Daten in dem Puffer nicht öfter als einmal während des Sendezeitraums an den Host zu senden.
  14. Computerprogrammprodukt nach Anspruch 8, das außerdem aufweist: Schreiben von Anwendungsdaten zum Ausführen des Teils der Anwendung in den Puffer auf dem Beschleuniger, wobei der Host von dem Host an den Beschleuniger gesendete Daten zusammenfasst, um ein Senden doppelter Daten zu minimieren.
  15. System zur verteilten Funktionsausführung, wobei das System aufweist: einen Host im betriebsfähigen Datenaustausch mit einem Beschleuniger, wobei das System dafür konfiguriert ist, ein Verfahren auszuführen, das aufweist: Verarbeiten einer Anwendung durch den Host, Verteilen mindestens eines Teils der Anwendung zum Ausführen an den Beschleuniger; Anweisen des Beschleunigers, auf dem Beschleuniger einen Puffer zu erstellen; Anweisen des Beschleunigers, den Teil der Anwendung auszuführen, wobei der Beschleuniger Daten in den Puffer schreibt, und Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, bevor die Anwendung die Daten in dem Puffer anfordert, wobei der Beschleuniger die Daten in dem Puffer vor dem Senden der Daten an den Host auf Grundlage einer oder mehrerer Laufzeitbedingungen des Hosts zusammenfasst.
  16. System nach Anspruch 15, wobei der Puffer auf dem Beschleuniger eine Bezeichnung als Nur-Lese-, Nur-Schreib- oder Lese-Schreib-Puffer aufweist.
  17. System nach Anspruch 16, wobei der Beschleuniger die Daten in dem Puffer nicht an den Host sendet, wenn der Puffer als Nur-Lese-Puffer bezeichnet ist.
  18. System nach Anspruch 15, wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem aufweist: Bereitstellen eines minimalen Sendewertes für den Beschleuniger; Anweisen des Beschleunigers, die Daten in dem Puffer zusammenzufassen, und Anweisen des Beschleunigers, die Daten in dem Puffer zu senden, wenn eine Größe des Puffers den minimalen Sendewert überschreitet.
  19. System nach Anspruch 15, wobei der Teil der Anwendung eine Rechenschleife aufweist, und wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem ein Anweisen des Beschleunigers aufweist, die Daten in dem Puffer bei einer Fertigstellung der Rechenschleife an den Host zu senden.
  20. System nach Anspruch 15, wobei ein Anweisen des Beschleunigers, die Daten in dem Puffer an den Host zu senden, außerdem aufweist: Bereitstellen eines Sendezeitraums für den Beschleuniger; Anweisen des Beschleunigers, die Daten in dem Puffer zusammenzufassen, und Anweisen des Beschleunigers, die Daten in dem Puffer nicht öfter als einmal während des Sendezeitraums an den Host zu senden.
DE112013000687.1T 2012-01-25 2013-01-22 Verteilte Funktionsausführung für Hybridsysteme Ceased DE112013000687T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/357,650 US8689233B2 (en) 2012-01-25 2012-01-25 Distributed function execution for hybrid systems
US13/357,650 2012-01-25
PCT/CN2013/070809 WO2013110234A1 (en) 2012-01-25 2013-01-22 Distributed function execution for hybrid systems

Publications (1)

Publication Number Publication Date
DE112013000687T5 true DE112013000687T5 (de) 2014-10-30

Family

ID=48798334

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000687.1T Ceased DE112013000687T5 (de) 2012-01-25 2013-01-22 Verteilte Funktionsausführung für Hybridsysteme

Country Status (5)

Country Link
US (2) US8689233B2 (de)
CN (1) CN104081351B (de)
DE (1) DE112013000687T5 (de)
GB (1) GB2512785A (de)
WO (1) WO2013110234A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158497B2 (en) * 2013-01-02 2015-10-13 International Business Machines Corporation Optimization of native buffer accesses in Java applications on hybrid systems
JP6200824B2 (ja) * 2014-02-10 2017-09-20 ルネサスエレクトロニクス株式会社 演算制御装置及び演算制御方法並びにプログラム、OpenCLデバイス
CN105975434B (zh) * 2016-04-29 2018-10-02 中国人民解放军国防科学技术大学 面向异构系统的数据传输优化方法
CN106681837B (zh) * 2016-12-29 2020-10-16 北京奇虎科技有限公司 基于数据表的数据淘汰方法及装置
CN106873904B (zh) * 2016-12-30 2020-02-14 深圳忆联信息系统有限公司 数据写入方法及固态硬盘
US11119835B2 (en) 2017-08-30 2021-09-14 Intel Corporation Technologies for providing efficient reprovisioning in an accelerator device
EP3794444A4 (de) * 2019-01-04 2022-01-12 Baidu.com Times Technology (Beijing) Co., Ltd. Verfahren und system zum schutz von durch datenverarbeitungsbeschleuniger verarbeiteten daten
CN110083549B (zh) * 2019-04-01 2021-10-01 福建天泉教育科技有限公司 一种缓存读写的方法及终端

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414840A (en) * 1992-06-25 1995-05-09 Digital Equipment Corporation Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
JP3874112B2 (ja) * 2002-05-13 2007-01-31 サクサ株式会社 揺らぎ吸収バッファの制御方法および制御装置
WO2004036432A1 (ja) 2002-10-21 2004-04-29 Annex Systems Incorporated データベースのアクセラレーター
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8141102B2 (en) 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US8230442B2 (en) 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US8225074B2 (en) 2008-10-02 2012-07-17 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
EP2192780A1 (de) * 2008-11-28 2010-06-02 Thomson Licensing Verfahren zur von einer Grafikverarbeitungseinheit unterstützten Videoentschlüsselung
US20110041128A1 (en) 2009-08-13 2011-02-17 Mathias Kohlenz Apparatus and Method for Distributed Data Processing
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US9767070B2 (en) 2009-11-06 2017-09-19 Hewlett Packard Enterprise Development Lp Storage system with a memory blade that generates a computational result for a storage device
EP2336882A1 (de) * 2009-12-18 2011-06-22 Telefonaktiebolaget L M Ericsson (PUBL) Verfahren zur Laufzeitbereitstellung eines ausführbaren Codes unter Verwendung von gerätefernen Diensten
US8375392B2 (en) 2010-01-12 2013-02-12 Nec Laboratories America, Inc. Data aware scheduling on heterogeneous platforms
CN102207919A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法

Also Published As

Publication number Publication date
CN104081351A (zh) 2014-10-01
US8695014B2 (en) 2014-04-08
US8689233B2 (en) 2014-04-01
GB2512785A (en) 2014-10-08
US20130191848A1 (en) 2013-07-25
GB201412801D0 (en) 2014-09-03
WO2013110234A1 (en) 2013-08-01
US20130191849A1 (en) 2013-07-25
CN104081351B (zh) 2017-06-06

Similar Documents

Publication Publication Date Title
DE112013000687T5 (de) Verteilte Funktionsausführung für Hybridsysteme
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE112012003716B4 (de) Erzeugen von kompiliertem Code, der Registeraktivität angibt
DE112012004747B4 (de) Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen
DE102018132781A1 (de) Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern
DE102013202495A1 (de) Verfahren zur Durchführung von interaktivem Debugging auf nicht unterbrechbaren Graphikverarbeitungseinheiten
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE112010005705T5 (de) Umplanen von Workload in einer hybriden Datenverarbeitungsumgebung
DE112012002241T5 (de) Migration eines transparenten Dateisystems zu einem neuen physischen Speicherort
US9965412B2 (en) Method for application-aware interrupts management
DE102013208558A1 (de) Verfahren und System zur Verarbeitung verschachtelter Stream-Events
DE102020101814A1 (de) Effiziente ausführung anhand von aufgabengraphen festgelegter arbeitslasten
DE112011100258T5 (de) Durchführen von aggressiven Codeoptimierungen mit einer Fähigkeit zum Annulieren derdurch die aggressiven Optimierungen vorgenommenen Änderungen
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112010005821T5 (de) Kontextwechsel
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112012001526T5 (de) Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen
DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
DE102017124078A1 (de) Ordinale modifikation der dienstgüte
DE102009060301A1 (de) Das Ermöglichen mehrerer virtueller Geräte-Controller durch Umleiten eines Interrupts von einem physischen Geräte-Controller
DE102009060299A1 (de) Das Einführen von Transaktionen, um die Virtualisierung eines physischen Geräte-Controllers zu unterstützen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final