DE112017001421T5 - Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern - Google Patents

Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern Download PDF

Info

Publication number
DE112017001421T5
DE112017001421T5 DE112017001421.2T DE112017001421T DE112017001421T5 DE 112017001421 T5 DE112017001421 T5 DE 112017001421T5 DE 112017001421 T DE112017001421 T DE 112017001421T DE 112017001421 T5 DE112017001421 T5 DE 112017001421T5
Authority
DE
Germany
Prior art keywords
data
data processing
application
area
data area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112017001421.2T
Other languages
English (en)
Inventor
Zehra Norman Sura
Tong Chen
John Kevin O'Brien
Arthur Prener Daniel
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 DE112017001421T5 publication Critical patent/DE112017001421T5/de
Pending 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Human Computer Interaction (AREA)
  • Communication Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Verfahren und Systeme zur Optimierung einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, beinhalten ein Bestimmen einer oder mehrerer Datenverarbeitungseigenschaften für einen Datenbereich in einer Anwendung. Eine oder mehrere Datenverarbeitungsrichtlinien für den Datenbereich werden basierend auf den einen oder mehreren Datenverarbeitungseigenschaften festgelegt. Für einen Bereich in der Anwendung, der den Datenbereich an verschiedenen Speicherorten verwendet, werden basierend auf den einen oder mehreren Datenverarbeitungseigenschaften Dateneinrichtungskosten bestimmt. Die Anwendung wird in Übereinstimmung mit den einen oder mehreren Datenverarbeitungsrichtlinien und den Dateneinrichtungskosten für die verschiedenen Speicherorte optimiert.

Description

  • HINTERGRUND
  • Technischer Bereich
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf Datenverwaltung und insbesondere auf die Optimierung von Speicherort und Speicherzugriffskanälen.
  • Beschreibung der Standes der Technik
  • Moderne Computersysteme können über mehrere verschiedene Speicher und Speicherorte verfügen. Dies ist in vielen Größenordnungen möglich, z.B. bei mehreren Speichern innerhalb eines Geräts, mehreren verteilten Computersystemen mit jeweils lokalen Speichern, Cloud-Computersystemen usw. Bei der Ausführung von Software, die Zugriff auf mehrere Speicher hat, werden Entscheidungen darüber, wo bestimmte Daten gespeichert werden sollen und wie diese Daten an den entsprechenden Ort übermittelt werden sollen, entweder automatisch oder von Hand getroffen.
  • In einem konventionellen Ansatz lassen Low-Level-Programmiertechnologien wie das Message Passing Interface (MPI) den Programmierer manuell Speicherorte und Kommunikationsmethoden bestimmen. Dieser Prozess ist jedoch bei zunehmender Systemkomplexität fehleranfällig und schwer zu optimieren.
  • Es sind auch automatische Systeme verfügbar, bei denen wenige Programmierkenntnisse erforderlich sind. Solche Systeme bieten jedoch generische Lösungen, die möglicherweise schlecht auf die jeweilige Anwendung abgestimmt sind und einen unnötig hohen Overhead verursachen. Halbautomatische Systeme steuern den Datenverkehr durch auf programmierte High-Level-Vorgaben, nutzen dabei aber nur Informationen darüber, welche Datenbereiche an bestimmten Stellen in der Anwendung gelesen oder geschrieben werden, und funktionieren nicht gut für Datenbereiche, die feinkörnige, unregelmäßige Zugriffe haben. Im schlimmsten Fall gehen die halbautomatischen Systeme bei der Verwendung rekursiver, Pointerbasierter Datenstrukturen auf den Low-Level-Ansatz über.
  • ZUSAMMENFASSUNG
  • Ein Verfahren zum Optimieren einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, beinhaltet das Bestimmen einer oder mehrerer Datenverarbeitungseigenschaften für einen Datenbereich in einer Anwendung. Eine oder mehrere Datenverarbeitungsrichtlinien für den Datenbereich werden basierend auf den einen oder mehreren Datenverarbeitungseigenschaften festgelegt. Für einen Bereich in der Anwendung, der den Datenbereich an verschiedenen Speicherorten verwendet, werden basierend auf den einen oder mehreren Datenverarbeitungseigenschaften Dateneinrichtungskosten bestimmt. Die Anwendung wird in Übereinstimmung mit den einen oder mehreren Datenverarbeitungsrichtlinien und den Dateneinrichtungskosten für die verschiedenen Speicherorte optimiert.
  • Ein Verfahren zum Optimieren einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, beinhaltet das Bestimmen einer oder mehrerer Datenverarbeitungseigenschaften für einen Datenbereich in einer Anwendung. Eine oder mehrere Datenverarbeitungsrichtlinien werden für den Datenbereich basierend auf den einen oder mehreren Datenverarbeitungseigenschaften festgelegt. Für einen Bereich in der Anwendung, der den Datenbereich an verschiedenen Speicherorten verwendet, werden basierend auf den einen oder mehreren Datenverarbeitungseigenschaften Dateneinrichtungskosten bestimmt. Die Anwendung wird in Übereinstimmung mit den einen oder mehreren Datenverarbeitungsrichtlinien und den Dateneinrichtungskosten für die verschiedenen Speicherorte optimiert. Die Optimierung beinhaltet das Auswählen eines oder mehrerer Speicherorte, in denen der Datenbereich gespeichert werden soll, und das Auswählen eines oder mehrerer Kommunikationskanäle, durch die der Datenbereich zwischen Speicherorten übertragen wird.
  • Ein System zum Optimieren einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, beinhaltet ein Compilermodul, das einen Prozessor aufweist, der konfiguriert ist, um eine oder mehrere Datenverarbeitungseigenschaften für einen Datenbereich in einer Anwendung zu bestimmen, um eine oder mehrere Datenverarbeitungsrichtlinien für den Datenbereich basierend auf den einen oder mehreren Datenverarbeitungseigenschaften festzulegen, um basierend auf den einen oder mehreren Datenverarbeitungseigenschaften Dateneinrichtungskosten für einen Bereich in der Anwendung zu bestimmen, der den Datenbereich an verschiedenen Speicherorten verwendet, und um die Anwendung in Übereinstimmung mit den einen oder den mehreren Datenverarbeitungsrichtlinien und den Dateneinrichtungskosten für die verschiedenen Speicherorte zu optimieren.
  • Diese und andere Merkmale und Vorteile werden sich aus der folgenden detaillierten Beschreibung erläuternder Ausführungsformen ergeben, die im Zusammenhang mit den beigefügten Zeichnungen zu lesen ist.
  • Figurenliste
  • Die Offenbarung stellt in der folgenden Beschreibung der bevorzugten Ausführungsformen unter Bezugnahme auf die folgenden Figuren Einzelheiten zur Verfügung, wobei:
    • BILD 1 ein Blockdiagramm eines Computersystems mit mehreren Speichern gemäß der vorliegenden Erfindung ist;
    • BILD 2 ein Block- / Flussdiagramm eines Verfahrens zur Auswahl von Datenverarbeitungsrichtlinien basierend auf Dateneigenschaften gemäß der vorliegenden Erfindung ist;
    • BILD 3 ein Block- / Flussdiagramm eines Verfahrens zur Optimierung von Anwendungscode basierend auf Dateneigenschaften und Datenverarbeitungsrichtlinien gemäß der vorliegenden Erfindung ist;
    • BILD 4 ein Blockdiagramm eines Optimierungssystems gemäß der vorliegenden Erfindung ist;
    • BILD 5 ein Blockdiagramm eines Verarbeitungssystems gemäß der vorliegenden Erfindung ist;
    • BILD 6 ein Diagramm einer Cloud-Computing-Umgebung gemäß der vorliegenden Erfindung ist; und
    • BILD 7 ein Diagramm von Abstraktionsmodellschichten gemäß der vorliegenden Erfindung ist.
  • DETAILLIERTE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Erfindung automatisieren die Steuerung von Datenbewegungen durch Hinweise des Programmierers, die sich auf die Programmdaten konzentrieren. Diese Hinweise spezifizieren Eigenschaften der Daten, die bei der späteren automatisierten Optimierung wesentlich helfen und zu spezifischen Richtlinien für die Datenverarbeitung führen.
  • Es ist im Voraus zu verstehen, dass, obwohl diese Offenbarung eine detaillierte Beschreibung von Cloud Computing enthält, die Umsetzung der hierin dargelegten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr sind Ausführungsformen der vorliegenden Erfindung in Verbindung mit jeder anderen Art von Computerumgebung, die heute bekannt ist oder in Zukunft entwickelt wird, realisierbar.
  • Unter Bezugnahme auf 1 wird ein generalisiertes Computersystem 100 mit mehreren Speichern dargestellt. Das Computersystem 100 beinhaltet mehrere Systemknoten 102, die jeweils mit entsprechenden Verarbeitungsressourcen 104 und Speicherressourcen 106 ausgestattet sind. Es ist zu verstehen, dass die Verarbeitungsressourcen 104 einen oder mehrere Hardwareprozessoren beinhalten können und dass die Speicherressourcen 106 eine oder mehrere Speicherbänke eines beliebigen geeigneten Typs beinhalten können, wie im Folgenden näher erläutert wird.
  • Die Systemknoten 102 kommunizieren miteinander über einen von mehreren Kommunikationskanälen 108. Die Kommunikationskanäle 108 können jede geeignete Form eines Datenkommunikationssystems sein, einschließlich z.B. eines In-System-Bus, einer drahtgebundenen Verbindung, einer drahtlosen Verbindung, einer Verbindung über das Internet usw. Jeder Systemknoten 102 beinhaltet eine oder mehrere Speicher-Controller 110, die Datenanforderungen empfangen, die angeforderten Daten von Speicherressourcen 106 abrufen und die angeforderten Daten über einen oder mehrere Kommunikationskanäle 108 an den anfordernden Knoten übermitteln. Die Speicher-Controller 110 übernehmen auch die Vervielfältigung von Daten an andere Knoten 102, um z.B. die Systemleistung zu erhöhen, indem sie lokale Kopien an Knoten 102 erstellen, die sie benötigen.
  • Es ist zu beachten, dass die Kommunikationskanäle 108 sowohl Hardware- als auch Softwareaspekte beinhalten. Hardwaremechanismen beziehen sich auf die physikalisch verfügbaren Kommunikationspfade, die durch einen Aufruf der Software über z.B. eine Anwendungsprogrammierschnittstelle (API) direkt freigegeben werden können. Zwei Speicher können mehrere physikalische Verbindungen zwischen ihnen in Form von direkten physikalischen Verbindungen aufweisen, aber es kann auch indirekte physikalische Verbindungen geben, z.B. durch den Datenfluss von einer ersten Speicherressource 106 über die Verarbeitungsressource 104 zu einer zweiten Speicherressource. Software-Kommunikationsmechanismen können auf den Hardwaremechanismen aufbauen und zusätzliche Dienste bereitstellen oder bestimmte Richtlinien durchsetzen. Die Hardwaremechanismen und die SoftwareMechanismen bilden zusammen die Kommunikationskanäle 108.
  • Wie die Speicher-Controller 110 bestimmen, wo Daten gespeichert werden und wie Daten an anfragende Knoten übertragen werden, wird von einem Softwareprogramm bestimmt, das auf den Verarbeitungsressourcen 102 läuft. Jedes Softwareprogramm hat unterschiedliche Anforderungen an die Datenverwaltung und daher unterschiedliche optimale Datenverarbeitungsrichtlinien, die den spezifischen Datentypen entsprechen, die verwendet werden.
  • Um diesen unterschiedlichen Möglichkeiten gerecht zu werden, wird das Softwareprogramm zur Kompilierzeit und zur Laufzeit entsprechend bekannter Eigenschaften der betreffenden Daten optimiert. Datenverarbeitungsrichtlinien werden zur Kompilierzeit festgelegt, aber der Code kann auch mit Laufzeitaufrufen kompiliert werden, die die Implementierung der Richtlinien erleichtern. Laufzeitaufrufe können Aufrufe der Anwendungsprogrammierschnittstelle (API) für die Softwarekommunikationsmechanismen beinhalten oder Aufrufe zur Abfrage des Zustands von Laufzeit-Systemressourcen oder Programmdaten sein, um die Auswahl eines Ausführungspfades zu erleichtern.
  • Die Dateneigenschaften können vom Programmierer explizit festgelegt oder automatisch erkannt werden. Zu Dateneigenschaften, die verwendet werden können, gehören die Größe eines Datenbereichs für Daten in einem bestimmten Bereich, der Status von Lese- / Schreib- / Lese-Schreib-Zugriffen, Umfanginformationen, Zugriffsfrequenzinformationen und Datenlayoutinformationen. Insbesondere beziehen sich Umfanginformationen darauf, wie viele Elemente eines Datenbereichs abgerufen werden (z.B. wenige, alle, die meisten oder ein fester oder variabler Prozentsatz der Datenbereichsgröße), Zugriffsfrequenzinformationen darauf, wie oft auf den Datenbereich zugegriffen wird (z.B. einmal, selten, in regelmäßigen Abständen, stoßweise usw.), und Datenlayoutinformationen darauf, ob Zugriffe z.B. in Form eines Datenstroms, zufällig oder fortschreitend erfolgen. Weitere Kriterien, die bei der Optimierung berücksichtigt werden können, sind die Zeit für die Datenübertragung, die Menge und Häufigkeit der zu übertragenden Daten, der Overhead-Aufwand für das Kopieren von Daten, die Kosten für die Aufrechterhaltung von Kohärenz und Konsistenz, Leistungs- und Bandbreitenbeschränkungen für das System 100 sowie das Verhältnis und die Überlappung zwischen Berechnung und Kommunikation.
  • In einer bestimmten Ausführungsform ist das System 100 als Cloud-Computersystem mit vielen verschiedenen Knoten 102 implementiert, die geographisch weit voneinander entfernt sein können. In solchen Systemen können die Kosten für die Datenübertragung von einem Knoten 102 zum anderen über die Kommunikationskanäle 108 im Verhältnis zu den Kosten für die Durchführung der zugehörigen Berechnungen mit diesen Daten sehr hoch sein. In einem solchen Fall ist der Nutzen der Optimierung der Datenspeicherung und Kommunikationskanäle offensichtlich.
  • Unter Bezugnahme auf 2 wird ein Verfahren zum Auswählen von Richtlinien basierend auf Dateneigenschaften dargestellt. Block 202 ändert den Quellcode einer Anwendung, die auf dem System 100 ausgeführt werden soll, um Dateneigenschaften für Datenbereiche festzulegen. Es wird ausdrücklich erwogen, dass Block 202 vom Programmierer manuell ausgeführt werden kann und die Eingabe expliziter Anweisungen beinhaltet, die beispielsweise eine der oben beschriebenen Eigenschaften angeben. Block 204 erkennt dann automatisch Eigenschaften für die Datenbereiche der Anwendung, z.B. durch statische Analyse und dynamisches Profiling, um so viele Lücken wie möglich in den Eigenschaftsdefinitionen zu schließen. Für alle Datenbereiche, die Eigenschaften haben, die nicht zugewiesen bleiben, setzt Block 206 Standardwerte.
  • Block 208 analysiert die Eigenschaften für jeden Datenbereich über alle Bereiche der Anwendung hinweg. Wie hierin verwendet, bezieht sich der Begriff „Bereich“ auf einen Abschnitt des Anwendungscodes, der basierend auf syntaktischen Strukturen im Code oder basierend auf der Reihenfolge der auszuführenden Anweisungen abgegrenzt werden kann. Die Analyse hängt von der spezifischen Konfiguration des Systems 100 und den Anforderungen der Anwendung ab, aber einige Beispiele werden im Folgenden aufgeführt. Im Allgemeinen versucht Block 208, eine oder mehrere Systemmetriken zu optimieren (z. B. die Geschwindigkeit der Anwendung, die Leistungs- / Energieeffizienz oder die Bandbreitenauslastung), indem er bestimmt, wo Datenbereiche gespeichert werden sollen und welche Kommunikationskanäle (Hard- und Softwaremechanismen) zum Übertragen dieser Datenbereiche verwendet werden sollen. Diese Analyse kann sowohl Hardware- als auch Softwareeinschränkungen im Hinblick auf die Anforderungen der Anwendung berücksichtigen. Basierend auf der Analyse wählt Block 210 für jeden Datenbereich Datenverarbeitungseigenschaften aus, einschließlich der Einstellung der ersten Datenplatzierung.
  • Eine von mehreren verschiedenen Datenverarbeitungsrichtlinien kann für einen bestimmten Datenbereich in einem bestimmten Bereich im Softwareprogramm gelten. Im Allgemeinen können die Richtlinien einfach (z.B. eine Auswahl zwischen zwei verschiedenen Kommunikationskanälen) oder komplexer sein (z.B. X auswählen, wenn sich die Daten bei A befinden, oder anderweitig Y auswählen).
  • Eine erste exemplarische Richtlinie ist eine Wahl zwischen verschiedenen Kohärenz-/ Konsistenzoptionen. Beispielsweise kann eine Systemkonfiguration drei verschiedene Speicherorte A, B und C beinhalten, wobei die Kohärenz in der Hardware über A und B hinweg effizient unterstützt wird, nicht aber in C. Die Kohärenz für C wird in Software mit hohem Overhead behandelt. Der Anwendungscode für eine exemplarische Software erfordert Kohärenz auf Systemebene und hat drei Bereiche X, Y und Z die parallel ausgeführt werden können und die alle auf den gleichen Datenbereich zugreifen. Dieser Datenbereich wird vor der Berechnung in die lokalen Speicher A, B und C kopiert. Wenn dann X, Y und Z alle in alle Elemente des Datenbereichs schreiben, dann kann (X, Y, Z) abgebildet werden, um auf (A, B, C) in beliebiger Reihenfolge ausgeführt zu werden, ohne dass die Softwarekohärenz auf C aktiviert ist. Wenn X jedoch nicht in alle Elemente des Datenbereichs schreiben darf, dann würde die Zuordnung von X auf C eine Behandlung der Softwarekohärenz zu hohen Kosten erfordern. In diesem Beispiel würde die Auswahl einer Richtlinie diese Eigenschaften berücksichtigen, um Kosten zu berechnen und Rechenorte auszuwählen, um zu verhindern, dass X auf C abgebildet wird. Diese Richtlinie wählt dabei zwischen einem Kommunikationskanal 108, der Kohärenz unterstützt, und einem Kanal, der dies nicht tut.
  • Eine zweite exemplarische Richtlinie ist eine Wahl zwischen verschiedenen softwaregestützten Kommunikationsmechanismen (z.B. eine Auswahl von Softwarekommunikationskanälen 108). Ein exemplarisches System kann einen Host-Prozessor und -Speicher sowie einen separaten Beschleuniger-Prozessor und -Speicher aufweisen, wobei die Verbindung zwischen den beiden Speichern bandbreitenbeschränkt ist und eine feste Zeit für die Übertragung einer kleinen Datenmenge, aber eine längere Zeit für die Übertragung von Mengen, die größer als ein Schwellenwert sind, benötigt wird. Zwei exemplarische Softwarebibliotheken implementieren Datenübertragungen - eine, die mit hoher Leistung Daten versendet (Massenübertragungen) und eine andere, die mit niedriger Leistung Daten empfängt (mehrere feinkörnige Übertragungen). In einer exemplarischen Anwendung greift die Software auf beliebige Elemente eines großen Datenbereichs zu. Wenn nur auf wenige Elemente zugegriffen wird, kann die Zeitlatenz mehrerer kleiner Übertragungen geringer sein als die Zeit, die für die Übertragung des gesamten Datenbereichs benötigt wird. In diesem Beispiel würde die Auswahl einer Richtlinie die Zugangsfrequenzeigenschaften berücksichtigen, um Kosten und Nutzen der verschiedenen Richtlinien abzuwägen. Die Versionen der Softwarebibliothek mit hoher und niedriger Leistung repräsentieren verschiedene Softwaremechanismen, die unterschiedliche Kommunikationskanäle 108 charakterisieren.
  • Eine dritte exemplarische Richtlinie ist eine Wahl zwischen verschiedenen hardwarebasierten Mechanismen (z.B. eine Auswahl von Hardwaremechanismen). Wie vorstehend erwähnt, weist das exemplarische System einen Host-Prozessor und -Speicher sowie einen Beschleuniger-Prozessor und -Speicher auf, wobei die Hardwareverbindung es dem Beschleuniger ermöglicht, direkt auf den Host-Speicher und den Beschleuniger-Speicher zuzugreifen (mit anderen Worten, der Beschleuniger unterstützt Lade- / Speicheranweisungen unter Verwendung von Adressen, die dem Host-Speicher zugeordnet sind, sowie Adressen, die dem Beschleuniger-Speicher zugeordnet sind). In diesem Fall müssen Daten, auf die selten auf dem Beschleuniger zugegriffen wird, nicht in dessen lokalen Speicher kopiert werden, während Daten, auf die häufig zugegriffen wird, zur Leistungssteigerung trotzdem kopiert werden sollten. Die Auswahl einer Richtlinie würde daher Eigenschaften berücksichtigen, die festlegen, wie häufig auf die Daten zugegriffen werden soll. In diesem Beispiel stellen der direkte Zugriff auf den Hostspeicher und das Kopieren der Daten in den lokalen Speicher verschiedene Kommunikationskanäle 108 dar.
  • Eine vierte exemplarische Richtlinie ist die Verschiebung von Daten an einen anderen Ort, wenn Daten genau einmal in einem Bereich geschrieben werden. Ein exemplarisches System kann einen Host-Prozessor und -Speicher sowie einen separaten Beschleuniger-Prozessor und -Speicher beinhalten, wobei die Verbindung zwischen den beiden Speichern eine hohe Übertragungslatenz aufweist. Zusätzlich können diesem exemplarischen System zwei exemplarische Softwarebibliotheken zur Verfügung stehen, mit denen Datenübertragungen realisiert werden können - eine erste Bibliothek versendet nach einem Schreibzugriff durch Kopieren der Daten mit hoher Leistung Daten an andere Orte und eine zweite Bibliothek empfängt mit niedriger Leistung Daten von dem Ort, an dem die Daten zuletzt bei einem Lesezugriff aktualisiert wurden. Wenn die Software genau einmal in Elemente in einem Datenbereich auf dem Host schreibt und dann mehrfach auf dem Beschleuniger liest, dann ist es effizienter, die mit hoher Leistung versendende Bibliothek für die Übertragung von Elementen des Datenbereichs über die Verbindung zu nutzen, da die relativ hohen Schreibkosten durch Leseeinsparungen aufgewogen werden. Die Versionen der Softwarebibliothek mit hoher und niedriger Leistung repräsentieren verschiedene Softwaremechanismen, die unterschiedliche Kommunikationskanäle 108 charakterisieren.
  • Eine fünfte exemplarische Richtlinie leitet die Platzierung von Daten und Berechnungen, um Fernzugriffe über die Kommunikationskanäle 108 zu vermeiden. Die pro Datenbereich bestimmten Dateneigenschaften können verwendet werden, um automatisch Optimierungen der Datenaffinität anzuwenden (z.B. Platzieren von Daten in der Nähe des Rechenortes, von dem darauf zugegriffen werden wird). Eine exemplarische Anwendung kann einen großen Datenbereich haben, auf den in einem parallelen Codeabschnitt zugegriffen wird. Wenn auf die Daten in einem regelmäßigen Muster zugegriffen wird (z.B. Streaming oder fortschreitende Daten), kann der Datenbereich partitioniert und in mehrere Speicher abgelegt werden. Dann können die Rechenorte für die parallelen Codeabschnitte so ausgewählt werden, dass sie physisch in der Nähe des Speichers liegen, der die Datenbereichspartition hält, die den vom Code abgerufenen Daten entspricht. Dies kann dazu beitragen, den Datentransfer über die Kommunikationskanäle 108 zu reduzieren oder zu unterbinden.
  • Unter Bezugnahme nun auf 3 wird ein Verfahren zur Optimierung des Codes einer Anwendung dargestellt. Block 302 wählt einen neuen Bereich aus den verschiedenen Bereichen der Anwendung aus. Block 304 sammelt Eigenschaften für jeden Datenbereich, auf den in dem Bereich zugegriffen wird. Block 304 kann die gleichen Dateneigenschaften, die durch den Prozess von 2 bestimmt wurden, wiederverwenden. Block 306 führt dann eine Compileranalyse durch, die um diese Informationen ergänzt wird. Die Compileranalyse kann beispielsweise Analysen wie Kontroll- und Datenflussanalyse, Alias-Analyse und Abhängigkeitsanalyse beinhalten, die helfen, den Satz von Datenelementen, auf die im Code zugegriffen wird, und die Zugriffsmuster zu bestimmen.
  • Block 308 berechnet die Kosten für die Dateneinrichtung für jeden der verschiedenen am System 100 verfügbaren Rechenorte. Für jeden Ort werden Informationen über den Satz von Datenelementen, auf die im Code zugegriffen wird, die Zugriffsmuster und die Datenverarbeitungsrichtlinien verwendet, um die Anzahl, Größe und Richtung der Datenübertragungen zu bestimmen, die erforderlich sind, wenn der Bereich an diesem Rechenort ausgeführt wird. Anschließend können die Kosten für alle Datenübertragungen für den / die Kommunikationskanäle 108 geschätzt werden, der / die durch die Datenverarbeitungsrichtlinien ausgewählt wurde(n). Eine anwendbare Kostenmetrik kann jede Teilmenge der Systemparameter beinhalten, die dafür optimiert werden, z.B. Ausführungszeit, Leistungs- / Energieeffizienz und / oder Bandbreitenauslastung zu berücksichtigen.
  • Block 310 wählt einen Rechenort für den Bereich basierend auf den berechneten Kosten aus. Der Rechenort wird entsprechend einer oder mehrerer Anforderungen in der Anwendung ausgewählt. So können beispielsweise Funktionen, die die Anwendung benötigt, an einigen Rechenorten fehlen oder mit diesen Funktionen können höhere Kosten verbunden sein, sodass ein anderer Rechenort ausgewählt werden kann. In einem anderen Beispiel können die Kosten den Stromverbrauch der Verarbeitung charakterisieren, wobei die Verarbeitung an einigen Orten mit höheren Energiekosten verbunden ist. Block 312 wendet dann die Datenverarbeitungsrichtlinien auf den Bereich an dem / den jeweiligen Rechenort(en) an. Für jeden Datenbereich im Bereich wird der Kommunikationskanal 108 basierend auf der Datenverarbeitungsrichtlinie für den Datenbereich und den für diesen Ort verfügbaren Kommunikationskanälen 108 ausgewählt. Der ausgewählte Kommunikationskanal 108 wird für alle Datenübertragungen in dem Bereich verwendet, die Elementen dieses Datenbereichs entsprechen.
  • Block 314 bestimmt, ob es in der Anwendung zusätzliche Bereiche gibt, die noch nicht behandelt wurden. Wenn ja, kehrt die Verarbeitung zu Block 302 zurück, wo ein neuer Bereich ausgewählt wird. Wenn nicht, generiert Block 316 optimierten Code unter Verwendung des / der ausgewählten Rechenorte und der Datenverarbeitungsrichtlinien. Dieser optimierte Code berücksichtigt die Bedürfnisse der Anwendung bereichsübergreifend und in einer Weise, die sich stark an den Eigenschaften der beteiligten Datenbereiche orientiert, ohne dass eine explizite Vorgabe durch den Programmierer erforderlich ist. Infolgedessen läuft die Anwendung bei der Ausführung des Codes im Block 318 mit einer besseren Leistung.
  • Die Optimierungskriterien, nach denen die besten Speicherorte für Datenbereiche ermittelt werden, hängen von den spezifischen Anwendungs- und Systemparametern ab. Optimierungskriterien (d.h. Ziele, die durch den Optimierungsprozess erreicht werden sollen) können beispielsweise Verbesserungen der Datenübertragungszeit, der Menge / Häufigkeit der zu übertragenden Daten, des Overheads für das Kopieren von Daten oder der Kosten für die Aufrechterhaltung der Kohärenz / Konsistenz oder für die Berücksichtigung von Leistungs- / Bandbreitenbeschränkungen im System sein.
  • Die vorliegende Erfindung kann ein System, ein Verfahren und / oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit computerlesbaren Programmanweisungen beinhalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Das computerlesbare Speichermedium kann eine physische Vorrichtung sein, die Anweisungen für die Verwendung durch eine Befehlsausführungsvorrichtung aufbewahren und speichern kann. Das computerlesbare Speichermedium kann beispielsweise eine elektronische Speichervorrichtung, eine magnetische Speichervorrichtung, eine optische Speichervorrichtung, eine elektromagnetische Speichervorrichtung, eine Halbleiterspeichervorrichtung oder eine geeignete Kombination des Vorgenannten sein. Eine nicht abschließende Liste spezifischerer Beispiele für das computerlesbare Speichermedium enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine Digital Versatile Disc (DVD), einen Speicherstick, eine Diskette, eine mechanisch kodierte Vorrichtung wie Lochkarten oder erhöhte Strukturen in einer Nut mit darauf aufgezeichneten Anweisungen, und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie es hierin verwendet wird, ist nicht als vergängliches Signal an sich zu verstehen, wie beispielsweise Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die durch ein Glasfaserkabel laufen), oder elektrische Signale, die durch einen Draht übertragen werden.
  • Die hierin beschriebenen computerlesbaren Programmanweisungen können von einem computerlesbaren Speichermedium auf die jeweiligen Rechen-/ Verarbeitungsgeräte oder über ein Netzwerk, z.B. das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und / oder ein drahtloses Netzwerk, auf einen externen Computer oder eine externe Speichervorrichtung heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, optische Übertragungsfasern, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und / oder Edge-Server umfassen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Rechen- / Verarbeitungsvorrichtung empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung auf einem computerlesbaren Speichermedium innerhalb der jeweiligen Rechen- / Verarbeitungsvorrichtung weiter.
  • Computerlesbare Programmanweisungen zur Durchführung von Operationen der vorliegenden Erfindung können Assembleranweisungen, Anweisungen einer Befehlssatzarchitektur (ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstelldaten oder entweder Quellcode oder Objektcode sein, der in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben ist, einschließlich einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem Remotecomputer oder vollständig auf dem Remotecomputer oder Server ausgeführt werden. In letzterem Szenario kann der entfernte Computer über jede Art von Netzwerk mit dem Computer des Benutzers verbunden sein, einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzwerks (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (z.B. über das Internet über einen Internet Service Provider). In einigen Ausführungsformen kann eine elektronische Schaltung, die beispielsweise programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) beinhaltet, die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen verwendet, um die elektronische Schaltung individuell anzupassen, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden hierin mit Bezug auf Flussdiagrammdarstellungen und / oder Blockdiagramme von Verfahren, Geräten (Systemen) und Computerprogrammprodukten gemäß den Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagramm-Illustrationen und / oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagramm-Illustrationen und / oder Blockdiagrammen durch computerlesbare Programmanweisungen umgesetzt werden können.
  • Diese computerlesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine zur Verfügung gestellt werden, sodass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Ausführung der in dem Block oder den Blöcken der Fluss- und / oder Blockdiagramme angegebenen Funktionen / Vorgänge schaffen. Diese computerlesbaren Programmanweisungen können auch auf einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und / oder andere Vorrichtungen so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass das computerlesbare Speichermedium mit darin gespeicherten Anweisungen einen Herstellungsgegenstand umfasst, der Anweisungen enthält, die Aspekte der / des in dem Block oder den Blöcken der Fluss- und / oder Blockdiagramme angegebenen Funktion / Vorgangs umsetzen.
  • Die computerlesbaren Programmanweisungen können auch in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Vorrichtung geladen werden, um eine Reihe von Betriebsschritten zu veranlassen, die auf dem Computer, der anderen programmierbaren Vorrichtung oder der anderen Vorrichtung ausgeführt werden, um einen computerimplementierten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, der anderen programmierbaren Vorrichtung oder der anderen Vorrichtung ausgeführt werden, die in dem Block oder den Blöcken der Fluss- und / oder Blockdiagramme angegebenen Funktionen oder Vorgänge ausführen.
  • Die Fluss- und Blockdiagramme in den Abbildungen veranschaulichen die Architektur, den Funktionsumfang und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Fluss- oder Blockdiagrammen ein Modul, ein Segment oder einen Teil der Anweisungen darstellen, das / der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) umfasst. In einigen alternativen Implementierungen können die in den Blöcken angegebenen Funktionen außerhalb der in den Abbildungen angegebenen Reihenfolge auftreten. So können beispielsweise zwei aufeinanderfolgende Sätze im Wesentlichen gleichzeitig ausgeführt werden, oder die Sätze können je nach Funktion manchmal in umgekehrter Reihenfolge ausgeführt werden. Es wird auch darauf hingewiesen, dass jeder Block der Block- und / oder Flussdiagrammdarstellung sowie Kombinationen von Blöcken der Block- und / oder der Flussdiagrammdarstellung durch dedizierte hardwarebasierte Systeme implementiert werden kann, die die angegebenen Funktionen oder Vorgänge ausführen oder Kombinationen von dedizierter Hardware und Computeranweisungen ausführen.
  • Der Verweis in der Beschreibung auf „eine Ausführungsform“ der vorliegenden Prinzipien sowie Variationen davon bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur, eine bestimmte Eigenschaft usw., das / die im Zusammenhang mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Prinzipien enthalten ist. So beziehen sich die Erscheinungsformen der Phrase „in einer Ausführungsform“ sowie alle Variationen, die an verschiedenen Stellen der Beschreibung auftreten, nicht unbedingt alle auf die gleiche Ausführungsform.
  • Es ist zu beachten, dass die Verwendung einer der folgenden „/“, „und / oder“ und „mindestens einer von“, z.B. in den Fällen „A / B“, „A und / oder B“ und „mindestens einer von A und B“, die Auswahl nur der ersten aufgeführten Option (A) oder nur der zweiten aufgeführten Option (B) oder die Auswahl beider Optionen (A und B) umfassen soll. Als weiteres Beispiel soll in den Fällen „A, B und / oder C“ und „mindestens einer von A, B und C“ eine solche Formulierung die Auswahl nur der ersten aufgeführten Option (A) oder nur der zweiten aufgeführten Option (B) oder nur der dritten aufgeführten Option (C) umfassen, oder die Auswahl der ersten und zweiten aufgeführten Optionen (A und B), oder die Auswahl der ersten und dritten aufgeführten Optionen (A und C), oder die Auswahl der zweiten und dritten aufgeführten Optionen (B und C), oder die Auswahl aller drei Optionen (A und B und C). Dies kann für eine beliebige aufgelistete Anzahl von Optionen erweitert werden, wie dies für eine üblich befähigte Fachperson in dieses und verwandter Bereiche leicht erkennbar ist.
  • Unter Bezugnahme auf 4 ist nun ein Optimierungssystem 400 dargestellt. Das System 400 beinhaltet einen Hardwareprozessor 402 und einen Speicher 404. Das System 400 kann weiterhin ein oder mehrere Funktionsmodule beinhalten. Die Funktionsmodule können als Software implementiert werden, die im Speicher 404 gespeichert und vom Hardwareprozessor 402 ausgeführt wird. In alternativen Ausführungsformen können die Funktionsmodule als eine oder mehrere diskrete Hardwarekomponenten in Form von z.B. anwendungsspezifischen integrierten Chips oder feldprogrammierbaren Gate-Arrays implementiert werden.
  • Eine Entwicklungsumgebung 406 läuft auf dem System 400 und ermöglicht es einem Programmierer, Änderungen am Quellcode 408 vorzunehmen, der im Speicher 404 gespeichert ist. Die Entwicklerumgebung 406 bietet die Möglichkeit, Eigenschaften 410 für Datenbereiche über verschiedene Bereiche des Quellcodes 408 hinweg manuell festzulegen. Ein Compilermodul 414 verwendet die Dateneigenschaften und die Systembeschreibung 412, um Datenverarbeitungsrichtlinien auszuwählen, die auf den Quellcode angewendet werden sollen, und wählt Rechenorte für jeden Datenbereich aus. Das Compilermodul 414 gibt dann eine kompilierte Anwendung zur Ausführung auf einem System 100 mit mehreren Rechen- und Speicherorten aus.
  • Unter Bezugnahme auf 5 ist nun ein exemplarisches Verarbeitungssystem 500 dargestellt, das das Optimierungssystem 400 darstellen kann. Das Verarbeitungssystem 500 beinhaltet mindestens einen Prozessor (CPU) 504, der über einen Systembus 502 funktional mit anderen Komponenten gekoppelt ist. Ein Cache 506, ein Read-Only Memory (ROM) 508, ein Random Access Memory (RAM) 510, ein Ein-/Ausgangs-Adapter (I/O-Adapter) 520, ein Soundadapter 530, ein Netzwerkadapter 540, ein Benutzeroberflächenadapter 550 und ein Anzeigeadapter 560 sind funktional mit dem Systembus 502 gekoppelt.
  • Eine erste Speichervorrichtung 522 und eine zweite Speichervorrichtung 524 sind über den I/O-Adapter 520 funktional mit dem Systembus 502 gekoppelt. Die Speichervorrichtungen 522 und 524 können eine beliebige Plattenspeichervorrichtung (z.B. eine magnetische oder optische Plattenspeichervorrichtung), eine Festkörpermagnetvorrichtung usw. sein. Die Speichergeräte 522 und 524 können der gleiche Typ von Speichergerät oder verschiedene Typen von Speichergeräten sein.
  • Ein Lautsprecher 532 ist über den Soundadapter 530 funktional mit dem Systembus 502 gekoppelt. Ein Sende-Empfänger 542 ist über den Netzwerkadapter 540 funktional mit dem Systembus 502 gekoppelt. Eine Anzeigevorrichtung 562 ist über den Anzeigeadapter 560 funktional mit dem Systembus 502 gekoppelt.
  • Eine erste Benutzereingabevorrichtung 552, eine zweite Benutzereingabevorrichtung 554 und eine dritte Benutzereingabevorrichtung 556 sind über den Benutzerschnittstellenadapter 550 funktional mit dem Systembus 502 gekoppelt. Die Benutzereingabevorrichtungen 552, 554 und 556 können beliebig aus einer Tastatur, einer Maus, einem Tastenfeld, einer Bilderfassungsvorrichtung, einer Bewegungssensorvorrichtung, einem Mikrofon, einer Vorrichtung mit der Funktionalität von mindestens zwei der vorhergehenden Vorrichtungen usw. ausgewählt sein. Natürlich können auch andere Arten von Eingabegeräten verwendet werden, wobei der Sinn der vorliegenden Prinzipien erhalten bleibt. Die Benutzereingabevorrichtungen 552, 554 und 556 können der gleiche Typ von Benutzereingabevorrichtung oder verschiedene Typen von Benutzereingabevorrichtungen sein. Die Benutzereingabevorrichtungen 552, 554 und 556 werden verwendet, um Informationen zum und vom System 500 einzugeben und auszugeben.
  • Natürlich kann das Verarbeitungssystem 500 auch andere Elemente beinhalten (nicht dargestellt), wie sie von einer Fachperson gerne in Betracht gezogen werden, und bestimmte Elemente weglassen. So können beispielsweise verschiedene andere Eingabe- und / oder Ausgabegeräte in das Verarbeitungssystem 500 einbezogen werden, je nach der jeweiligen Implementierung, wie dies von einer üblich befähigten Fachperson leicht verstanden wird. So können beispielsweise verschiedene Arten von drahtlosen und / oder drahtgebundenen Ein- und / oder Ausgabegeräten verwendet werden. Darüber hinaus können zusätzliche Prozessoren, Controller, Speicher usw. in verschiedenen Konfigurationen auch verwendet werden, wie es von einer üblich befähigten Fachperson geschätzt wird. Diese und andere Variationen des Verarbeitungssystems 500 werden anhand der Lehren der hierin enthaltenen vorliegenden Prinzipien leicht durch eine üblich befähigte Fachperson in Betracht gezogen.
  • Unter Bezugnahme auf 6 ist nun eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie dargestellt, umfasst die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Computergeräte, die von Cloud-Konsumenten genutzt werden, wie beispielsweise ein Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und / oder Automobil-Computersystem 54N, kommunizieren können. Die Knoten 10 können miteinander kommunizieren. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert werden (nicht dargestellt), wie beispielsweise Private, Community, Public oder Hybrid Clouds, wie vorstehend beschrieben, oder eine Kombination davon. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und / oder Software als Dienste anzubieten, für die ein Cloud-Kunde keine Ressourcen auf einem lokalen Computergerät verwalten muss. Es versteht sich, dass die in 6 dargestellten Typen von Rechengeräten 54A-N nur zur Veranschaulichung bestimmt sind und dass Rechenknoten 10 und Cloud-Computing-Umgebung 50 mit jeder Art von computerisierten Geräten über jede Art von Netzwerk- und / oder netzwerkadressierbarer Verbindung (z.B. über einen Webbrowser) kommunizieren können.
  • Unter Bezugnahme auf 7 wird ein Satz funktionaler Abstraktionsschichten dargestellt, die von der Cloud-Computing-Umgebung 50 (6) bereitgestellt werden. Es ist im Voraus zu verstehen, dass die in 6 dargestellten Komponenten, Schichten und Funktionen nur zur Veranschaulichung gedacht sind und die Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, sind die folgenden Schichten und entsprechenden Funktionen vorhanden:
  • Die Hard- und Softwareschicht 60 beinhaltet Hard- und Softwarekomponenten. Beispiele für Hardwarekomponenten sind: Mainframes 61; RISC- (Reduced Instruction Set Computer) Architektur-basierte Server 62; Server 63; Blade-Server 64; Speichervorrichtungen 65; und Netzwerke und Netzwerkkomponenten 66. In einigen Ausführungsformen beinhalten Softwarekomponenten Netzwerk-Applikationsserver-Software 67 und Datenbanksoftware 68.
  • Die Virtualisierungsschicht 70 bietet eine Abstraktionsschicht, aus der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsebene 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 ermöglicht die dynamische Beschaffung von Computerressourcen und anderen Ressourcen, die zur Ausführung von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Erfassungs- und Preiskalkulationsmodul 82 bietet eine Kostenverfolgung bei der Nutzung von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie eine Abrechnung oder Fakturierung für den Verbrauch dieser Ressourcen. In einem Beispiel können diese Ressourcen aus Lizenzen für Anwendungssoftware bestehen. Ein Sicherheitsmodul bietet Identitätsverifizierung für Cloud-Konsumenten und - Aufgaben sowie Schutz für Daten und andere Ressourcen. Ein Benutzerportal 83 bietet Verbrauchern und Systemadministratoren Zugriff auf die Cloud-Computing-Umgebung. Ein Service Level Management 84 bietet eine Ressourcenzuweisung und -verwaltung für Cloud Computing, sodass die erforderlichen Service Levels erreicht werden. Ein Modul für die Planung und Erfüllung von Service Level Agreements (SLAs) 85 sieht die Vorbereitung und Beschaffung von Cloud Computing-Ressourcen vor, für die gemäß einem SLA ein zukünftiger Bedarf erwartet wird.
  • Eine Workload-Schicht 90 bietet Beispiele für Funktionen, für die die Cloud Computing-Umgebung genutzt werden kann. Beispiele für Workloads und Funktionen, die von dieser Schicht aus bereitgestellt werden können, sind: Kartendienste und Navigation 91, Softwareentwicklung und Lebenszyklusverwaltung 92, Bildungsdienste mit einem virtuellen Klassenzimmer 93, Datenanalyseverarbeitung 94, Transaktionsverarbeitung 95 und Quellcode-Optimierung 96.
  • Nach der Beschreibung von bevorzugten Ausführungsformen einer flexibel optimierten Datenverarbeitung in Systemen mit mehreren Speichern (die illustrativ und nicht einschränkend sein sollen), wird darauf hingewiesen, dass Änderungen und Variationen von Fachleuten im Lichte der vorstehenden Lehren vorgenommen werden können. Es ist daher zu verstehen, dass Änderungen an den offenbarten Ausführungsformen vorgenommen werden können, die in den Anwendungsbereich der Erfindung fallen, wie in den beigefügten Ansprüchen beschrieben. Nachdem auf diese Weise Aspekte der Erfindung mit den von den Patentgesetzen geforderten Details und Besonderheiten beschrieben wurden, wird das, wofür kraft Patenturkunde Schutz beansprucht und gewünscht wird, in den beigefügten Ansprüchen dargelegt.

Claims (17)

  1. Verfahren zur Optimierung einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, aufweisend: Bestimmen einer oder mehrerer Datenverarbeitungseigenschaften für einen Datenbereich in einer Anwendung; Bestimmen einer oder mehrerer Datenverarbeitungsrichtlinien für den Datenbereich basierend auf den einen oder mehreren Datenverarbeitungseigenschaften; Bestimmen von Dateneinrichtungskosten für einen Bereich in der Anwendung, der den Datenbereich an verschiedenen Speicherorten verwendet, basierend auf den einen oder mehreren Datenverarbeitungseigenschaften; und Optimierung der Anwendung in Übereinstimmung mit den einen oder mehreren Datenverarbeitungsrichtlinien und den Dateneinrichtungskosten für die verschiedenen Speicherorte.
  2. Verfahren nach Anspruch 1, wobei die Optimierung der Anwendung ein Auswählen eines oder mehrerer Speicherorte aufweist, in denen der Datenbereich gespeichert werden soll.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, ferner aufweisend ein Auswählen eines oder mehrerer Kommunikationskanäle, durch die der Datenbereich zwischen Speicherorten übertragen wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die einen oder mehreren Datenverarbeitungseigenschaften für den Datenbereich Umfanginformationen aufweisen.
  5. Verfahren nach einem der Ansprüche 1-3, wobei die eine oder mehreren Datenverarbeitungseigenschaften für den Datenbereich Zugriffsfrequenzinformationen aufweisen.
  6. Verfahren nach einem der Ansprüche 1-4, wobei die eine oder mehreren Datenverarbeitungseigenschaften für den Datenbereich Datenlayoutinformationen aufweisen.
  7. Verfahren nach Anspruch 1, wobei mindestens eine der einen oder mehreren Datenverarbeitungseigenschaften von einem Programmierer festgelegt werden.
  8. Verfahren nach einem der Ansprüche 4, 5 und 6, wobei jeder Bereich in der Anwendung durch einen Abschnitt eines Anwendungscodes definiert ist, der durch syntaktische Strukturen im Anwendungscode oder durch eine Folge von auszuführenden Anweisungen abgegrenzt ist.
  9. Nichtflüchtiges, computerlesbares Speichermedium, aufweisend ein computerlesbares Programm zur Optimierung einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, wobei das computerlesbare Programm, wenn es auf einem Computer ausgeführt wird, den Computer dazu veranlasst, die Schritte nach Anspruch 1 auszuführen.
  10. System zur Optimierung einer Anwendung für ein Computersystem mit mehreren verschiedenen Speicherorten, die durch einen oder mehrere Kommunikationskanäle miteinander verbunden sind, aufweisend: ein Compilermodul, aufweisend einen Prozessor, der konfiguriert ist, um eine oder mehrere Datenverarbeitungseigenschaften für einen Datenbereich in einer Anwendung zu bestimmen, um eine oder mehrere Datenverarbeitungsrichtlinien für den Datenbereich basierend auf den einen oder mehreren Datenverarbeitungseigenschaften zu bestimmen, um basierend auf den einen oder mehreren Datenverarbeitungseigenschaften Dateneinrichtungskosten für einen Bereich in der Anwendung zu bestimmen, der den Datenbereich in verschiedenen Speicherorten verwendet, und um die Anwendung gemäß den einen oder mehreren Datenverarbeitungsrichtlinien und den Dateneinrichtungskosten für die verschiedenen Speicherorte zu optimieren.
  11. System zur Optimierung nach Anspruch 10, wobei das Compilermodul ferner konfiguriert ist, um einen oder mehrere Speicherorte auszuwählen, an denen der Datenbereich gespeichert werden soll.
  12. System zur Optimierung nach Anspruch 10, wobei das Compilermodul ferner konfiguriert ist, um einen oder mehrere Kommunikationskanäle auszuwählen, durch die der Datenbereich zwischen Speicherorten übertragen wird.
  13. System zur Optimierung nach Anspruch 10, wobei die einen oder mehreren Datenverarbeitungseigenschaften für den Datenbereich Umfanginformationen aufweisen.
  14. System zur Optimierung nach Anspruch 10, wobei die einen oder mehreren Datenverarbeitungseigenschaften für den Datenbereich Zugriffsfrequenzinformationen aufweisen.
  15. System zur Optimierung nach Anspruch 10, wobei die einen oder mehreren Datenverarbeitungseigenschaften für den Datenbereich Datenlayoutinformationen aufweisen.
  16. System zur Optimierung nach Anspruch 10, wobei mindestens eine der einen oder mehreren Datenverarbeitungseigenschaften von einem Programmierer festgelegt werden.
  17. System zur Optimierung nach Anspruch 10, wobei jeder Bereich in der Anwendung durch einen Abschnitt eines Anwendungscodes definiert ist, der durch syntaktische Strukturen im Anwendungscode oder durch eine Folge von auszuführenden Anweisungen abgegrenzt ist.
DE112017001421.2T 2016-06-13 2017-02-20 Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern Pending DE112017001421T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/180,756 US10996989B2 (en) 2016-06-13 2016-06-13 Flexible optimized data handling in systems with multiple memories
US15/180,756 2016-06-13
PCT/IB2017/050953 WO2017216646A1 (en) 2016-06-13 2017-02-20 Flexible optimized data handling in systems with multiple memories

Publications (1)

Publication Number Publication Date
DE112017001421T5 true DE112017001421T5 (de) 2018-11-29

Family

ID=60572751

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001421.2T Pending DE112017001421T5 (de) 2016-06-13 2017-02-20 Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern

Country Status (6)

Country Link
US (3) US10996989B2 (de)
JP (1) JP6857196B2 (de)
CN (1) CN109196484B (de)
DE (1) DE112017001421T5 (de)
GB (1) GB2568399A (de)
WO (1) WO2017216646A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10996989B2 (en) * 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
US11287982B2 (en) * 2019-07-12 2022-03-29 International Business Machines Corporation Associating data management policies to portions of data using connection information
JP7196052B2 (ja) * 2019-11-27 2022-12-26 Kddi株式会社 情報処理装置及び情報処理方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5954085A (en) 1994-07-12 1999-09-21 Petro-First, Inc. Prefabricated modular fuel dispensing system
US5953531A (en) * 1997-07-25 1999-09-14 International Business Machines Corporation Method of, system for, and computer program product for minimizing loop execution time by optimizing block/tile sizes
US6378066B1 (en) 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US6889293B1 (en) * 2000-06-09 2005-05-03 Agere Systems Inc. Directory-based prediction methods and apparatus for shared-memory multiprocessor systems
JP2002196960A (ja) * 2000-12-25 2002-07-12 Hitachi Ltd ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム
GB2381886B (en) * 2001-11-07 2004-06-23 Sun Microsystems Inc Computer system with virtual memory and paging mechanism
US6952821B2 (en) * 2002-08-19 2005-10-04 Hewlett-Packard Development Company, L.P. Method and system for memory management optimization
US7200840B2 (en) * 2002-10-24 2007-04-03 International Business Machines Corporation Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture
US6954085B2 (en) 2003-10-13 2005-10-11 International Business Machines Corporation System and method for dynamically executing a function in a programmable logic array
JP4842909B2 (ja) 2004-08-30 2011-12-21 株式会社日立製作所 ストレージシステム及びデータ再配置制御装置
JP4479431B2 (ja) 2004-09-14 2010-06-09 株式会社日立製作所 情報ライフサイクル管理システム及びそのデータ配置決定方法
JP2006107338A (ja) 2004-10-08 2006-04-20 Matsushita Electric Ind Co Ltd プログラム処理装置
US8117288B2 (en) * 2004-10-12 2012-02-14 International Business Machines Corporation Optimizing layout of an application on a massively parallel supercomputer
US20060095705A1 (en) * 2004-10-30 2006-05-04 James Wichelman Systems and methods for data storage management
US7574425B2 (en) 2004-12-03 2009-08-11 International Business Machines Corporation System and method for query management in a database management system
US7743366B2 (en) * 2005-10-03 2010-06-22 Arm Limited System and method for compiling a computer program
US8327370B2 (en) * 2005-10-27 2012-12-04 International Business Machines Corporation Dynamic policy manager method, system, and computer program product for optimizing fractional resource allocation
US20070174411A1 (en) * 2006-01-26 2007-07-26 Brokenshire Daniel A Apparatus and method for efficient communication of producer/consumer buffer status
US8762951B1 (en) * 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US7644254B2 (en) * 2007-04-18 2010-01-05 International Business Machines Corporation Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list
US8127273B2 (en) * 2007-11-09 2012-02-28 International Business Machines Corporation Node selection for executing a Java application among a plurality of nodes
US8468510B1 (en) * 2008-01-16 2013-06-18 Xilinx, Inc. Optimization of cache architecture generated from a high-level language description
US8281311B2 (en) * 2008-04-24 2012-10-02 International Business Machines Corporation Executing a distributed software application on a plurality of compute nodes according to a compilation history
US8682845B2 (en) * 2008-07-09 2014-03-25 The Boeing Company Secure high performance multi-level security database systems and methods
WO2011031796A2 (en) 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US8561046B2 (en) * 2009-09-14 2013-10-15 Oracle America, Inc. Pipelined parallelization with localized self-helper threading
CN104808954B (zh) * 2009-12-24 2017-12-01 株式会社日立制作所 提供虚拟卷的存储系统及其控制方法
US8365186B2 (en) * 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US8380703B2 (en) 2010-07-26 2013-02-19 International Business Machines Corporation Feedback loop between a query optimizer and a cache manager
US20120047339A1 (en) * 2010-08-20 2012-02-23 Dan Decasper Redundant array of independent clouds
US8713518B2 (en) * 2010-11-10 2014-04-29 SRC Computers, LLC System and method for computational unification of heterogeneous implicit and explicit processing elements
US9471384B2 (en) * 2012-03-16 2016-10-18 Rackspace Us, Inc. Method and system for utilizing spare cloud resources
US9916258B2 (en) * 2011-03-31 2018-03-13 EMC IP Holding Company LLC Resource efficient scale-out file systems
US8893103B2 (en) * 2012-08-16 2014-11-18 Nec Laboratories America, Inc. Automatic asynchronous offload to many-core coprocessors
US9710275B2 (en) * 2012-11-05 2017-07-18 Nvidia Corporation System and method for allocating memory of differing properties to shared data objects
US8914778B2 (en) * 2012-11-05 2014-12-16 International Business Machines Corporation Data placement for execution of an executable
GB2508365A (en) 2012-11-29 2014-06-04 Ibm Optimising a compilation parser by identifying a subset of grammar productions
US9430400B2 (en) * 2013-03-14 2016-08-30 Nvidia Corporation Migration directives in a unified virtual memory system architecture
CN103207786B (zh) 2013-04-28 2016-03-23 中国人民解放军信息工程大学 渐进式智能回溯向量化代码调优方法
JP6018022B2 (ja) * 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
US9607036B2 (en) 2013-08-21 2017-03-28 International Business Machines Corporation Managing a data set
GB2519534A (en) * 2013-10-23 2015-04-29 Ibm Persistent caching system and method for operating a persistent caching system
US10223260B2 (en) * 2014-03-19 2019-03-05 International Business Machines Corporation Compiler-generated memory mapping hints
US9716738B2 (en) * 2014-05-13 2017-07-25 International Business Machines Corporation Deploying a portion of a streaming application to one or more virtual machines according to cost
US9274771B1 (en) * 2014-09-22 2016-03-01 Oracle International Corporation Automated adaptive compiler optimization
JP2016224812A (ja) * 2015-06-02 2016-12-28 富士通株式会社 並列計算装置、並列処理方法、並列処理プログラムおよびコンパイルプログラム
JP6432450B2 (ja) * 2015-06-04 2018-12-05 富士通株式会社 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
US10249073B2 (en) * 2015-07-21 2019-04-02 Intel Corporation Distributed frame buffer and API for scalable parallel rendering
US10996989B2 (en) * 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories

Also Published As

Publication number Publication date
WO2017216646A1 (en) 2017-12-21
US20210208939A1 (en) 2021-07-08
US20230244530A1 (en) 2023-08-03
JP2019526091A (ja) 2019-09-12
GB2568399A (en) 2019-05-15
CN109196484B (zh) 2023-05-16
US11687369B2 (en) 2023-06-27
JP6857196B2 (ja) 2021-04-14
US20170357445A1 (en) 2017-12-14
GB201819786D0 (en) 2019-01-23
CN109196484A (zh) 2019-01-11
US10996989B2 (en) 2021-05-04

Similar Documents

Publication Publication Date Title
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112012004336T5 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
DE112021002245T5 (de) Verhindern einer unberechtigten bereitstellung von paketen in clustern
DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE112020000912T5 (de) Verwalten von software-programmen
DE112020002189T5 (de) Container-basierte anwendungen
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112021003401T5 (de) Schattenexperimente für serverlose multi-tenant-cloud-dienste
DE112021004290T5 (de) Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung
DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
DE112021002487T5 (de) Teilen einer geografisch konzentrierten arbeitslast zwischen benachbarten mec-hosts mehrerer netzbetreiber
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE102021125182A1 (de) Gemeinsam genutzte unternehmenscloud
DE112022002615T5 (de) Kontinuierliche funktionsfähigkeit und integrität von anwendungen während eines migrationsvorgangs
DE112017001421T5 (de) Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern
DE112021003668T5 (de) Zuteilen von aufgaben und daten unter verwendung von multi-access edge computing
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage
DE112019002052T5 (de) Datenschutzsensibilisierung bei der bereitstellung von arbeitslasten
DE112021005927T5 (de) Patchen von arbeitsabläufen
DE102021125847A1 (de) Auf blockchain beruhende reservierung und delegierung von diensten
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
DE102014116744A1 (de) Management von Informationstechnologieressourcen
DE112021003274T5 (de) Ressourcenzuordnung zum optimieren von hyperparametern bei umfangreichen deep-learning-arbeitslasten
DE102021124335A1 (de) Verwalten von ausfällen in edge-computing-umgebungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence