DE112013000392T5 - Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten - Google Patents

Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten Download PDF

Info

Publication number
DE112013000392T5
DE112013000392T5 DE112013000392.9T DE112013000392T DE112013000392T5 DE 112013000392 T5 DE112013000392 T5 DE 112013000392T5 DE 112013000392 T DE112013000392 T DE 112013000392T DE 112013000392 T5 DE112013000392 T5 DE 112013000392T5
Authority
DE
Germany
Prior art keywords
processors
data chunks
layers
processing
indices
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
DE112013000392.9T
Other languages
English (en)
Inventor
c/o IBM Corp. Hirsch Michael
c/o IBM Corp. Klein Shmuel Thomas
c/o IBM Corp. Toaff Yair
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 DE112013000392T5 publication Critical patent/DE112013000392T5/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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint
    • 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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Bereitgestellt werden beispielhafte Ausführungsformen eines Verfahrens, Systems und Computerprogrammprodukts zum vollen Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten. In einer Ausführungsform wird lediglich als Beispiel eine Gruppe von Parallelprozessoren gemäß Indizes der Gruppe von Parallelprozessoren in unverbundene Teilgruppen aufgeteilt. Die Größe jeder der unverbundenen Teilgruppen entspricht einer Anzahl von Prozessoren, die dem Verarbeiten von Daten-Chunks in einer der Schichten zugewiesen werden. Jeder der Prozessoren wird unterschiedlichen Schichten in unterschiedlichen Daten-Chunks zugewiesen, sodass jeder der Prozessoren beschäftigt ist und die Daten-Chunks vollständig innerhalb einer Anzahl von Zeitschritten verarbeitet werden, die gleich der Anzahl von Schichten ist. Es wird eine Übergangsfunktion von den Indizes der Gruppe von Parallelprozessoren in einem der Zeitschritte zu den Indizes der Gruppe der Parallelprozessoren in einem folgenden Zeitschritt entworfen.

Description

  • HINTERGRUND DER ERFINDUNG
  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf Computer und insbesondere auf ein volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten in einer Computerumgebung.
  • HINTERGRUND
  • In der heutigen Gesellschaft sind Computersysteme etwas Alltägliches. Computersysteme können am Arbeitsplatz, zu Hause oder in der Schule angetroffen werden. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten enthalten. Täglich müssen große Datenmengen verarbeitet werden, und die derzeitige Tendenz legt nahe, dass diese Mengen in der vorhersehbaren Zukunft ständig weiter ansteigen werden. Eine wirksame Möglichkeit zum Abmildern des Problems besteht im Nutzen von Deduplizierung. Der Gedanke, der einem Deduplizierungssystem zugrunde liegt, besteht darin, sich den Umstand zunutze zu machen, dass große Teile der verfügbaren Daten wieder und wieder kopiert und ohne jede Änderung weitergeleitet werden, indem wiederholte Daten gesucht und nur ihr erstes Auftreten gespeichert wird. Nachfolgende Kopien werden durch Zeiger auf das gespeicherte Vorkommen ersetzt, was die Speicheranforderungen deutlich verringert, wenn sich die Daten tatsächlich wiederholen. Ein Verarbeiten sehr großer Datenmengen ist ein wesentliches Problem, das es zu lösen gilt, und daher besteht eine Notwendigkeit, die Verarbeitung zu verbessern, beispielsweise durch Nutzen einer Gruppe von parallel arbeitenden Prozessoren. In bestimmten Anwendungen kann die Gruppe von Prozessoren dem Ausführen einiger Aufgaben in mehreren Stufen oder Schichten zugewiesen sein, und die Aufgabe kann in hierarchischer Weise wiederholt in Teilaufgaben aufgeteilt werden. Die Leistungsfähigkeit des Systems hängt letztendlich von der Anordnung ab, wie die Prozessoren genau ihren Teilaufgaben zugewiesen sind, daher besteht ein Bedarf für eine verbesserte Prozessoranordnung für hierarchische Parallelberechnungen.
  • Deshalb besteht nach dem Stand der Technik die Notwendigkeit, sich des vorgenannten Problems anzunehmen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Wie erwähnt, ist das Verarbeiten sehr großer Mengen an Informationen und Daten, die im Speichersystem auftreten, ein wesentliches Problem, das es zu lösen gilt. Bei der Datendeduplizierung (Datendeduplizierung bezeichnet die Verringerung und/oder Beseitigung redundanter Daten) wird beispielsweise ein Datenobjekt, bei dem es sich um eine Datei, einen Datenstrom oder eine andere Form von Daten handeln kann, unter Verwendung eines Chunking-Verfahrens in einen oder mehrere als ”Chunks” (Segmente, Abschnitte) bezeichnete Teile aufgeteilt. Bei einem Datendeduplizierungsprozess werden doppelt vorhandene Kopien von Daten verringert oder beseitigt, sodass eine kleinstmögliche Menge redundanter Kopien beziehungsweise eine einzige Kopie der Daten verbleibt. Ein Verwenden von Deduplizierungsprozessen bietet vielfältige Vorteile, beispielsweise die Verringerung der erforderlichen Speicherkapazität und eine erhöhte Netzwerk-Bandbreite. Aufgrund dieser und weiterer Vorteile ist das Deduplizieren in den letzten Jahren zu einem sehr bedeutenden technologischen Gebiet bei Computerspeichersystemen geworden. In einem anderen Speichersystem kann es mehrere Transaktionen geben, die gleichzeitig nicht miteinander verbundene Daten schreiben.
  • Dementsprechend und in Anbetracht des Vorstehend werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogrammprodukten zum vollen Ausnutzen einer Gruppe von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten bereitgestellt, um eine Aufgabe an einer Abfolge von Daten-Chunks auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird. In einer Ausführungsform wird lediglich als Beispiel eine Gruppe von Parallelprozessoren gemäß Indizes der Gruppe von Parallelprozessoren in unverbundene Ungergruppen aufgeteilt, sodass eine Größe jeder der unverbundenen Teilgruppen einer Anzahl der Prozessoren entspricht, die dem Verarbeiten der Daten-Chunks in einer der Schichten zugewiesen sind. Jeder der Prozessoren ist unterschiedlichen Schichten in einem anderen der Daten-Chunks gemäß der Aufteilung zugewiesen, sodass jeder der Prozessoren beschäftigt ist und jeder der Daten-Chunks vollständig innerhalb einer Anzahl der Zeitschritte verarbeitet wird, die gleich der Anzahl aus der Vielzahl von Schichten ist. Es wird eine Übergangsfunktion von den Indizes der Gruppe von Parallelprozessoren in einem der Zeitschritte zu den Indizes der Gruppe der Parallelprozessoren in einem folgenden Zeitschritt entworfen. Die Übergangsfunktion steht im Einklang mit dem Zuordnen. Zusätzliche Ausführungsformen von Systemen und Computerprogrammprodukten werden offenbart und stellen damit verbundene Vorteile bereit.
  • Aus einem ersten Blickwinkel betrachtet, stellt die vorliegende Erfindung ein Verfahren zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten bereit, um eine Aufgabe an einer Abfolge von Daten-Chunks durch eine Prozessoreinheit in einer Computerumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das Verfahren aufweist: Aufteilen der Gruppe aus der Vielzahl von Parallelprozessoren in unverbundene Teilgruppen gemäß Indizes der Gruppe aus der Vielzahl von Parallelprozessoren, sodass eine Größe jeder der unverbundenen Teilgruppen einer Anzahl aus der Vielzahl von Prozessoren entspricht, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen sind; Zuweisen jedes aus der Vielzahl von Prozessoren zu einer anderen aus der Vielzahl von Schichten in einem anderen der Daten-Chunks gemäß dem Aufteilen, sodass jeder aus der Vielzahl von Prozessoren beschäftigt ist und jeder der Daten-Chunks vollständig innerhalb einer Anzahl von Zeitschritten verarbeitet wird, die gleich der Anzahl aus der Vielzahl von Schichten ist; und Entwerfen einer Übergangsfunktion von den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem der Zeitschritte zu den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem folgenden Zeitschritt, wobei die Übergangsfunktion mit dem Zuweisen im Einklang steht.
  • Aus einem weiteren Blickwinkel betrachtet, stellt die vorliegende Erfindung ein System zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten bereit, um eine Aufgabe an einer Abfolge von Daten-Chunks in einer Computerumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das System aufweist: eine in der Computerumgebung funktionsfähige Prozessoreinheit, wobei die Prozessoreinheit zum Ausführen eines Verfahrens zum Ausführen der Schritte der Erfindung angepasst ist.
  • Aus einem weiteren Blickwinkel betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten bereit, um eine Aufgabe an einer Abfolge von Daten-Chunks durch eine Prozessoreinheit in einer Computerspeicherumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das Computerprogrammprodukt ein nichttransitorisches computerlesbares Speichermedium mit darauf gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt zum Aufteilen der Gruppe aus der Vielzahl von Parallelprozessoren in unverbundene Teilgruppen gemäß Indizes der Gruppe aus der Vielzahl von Parallelprozessoren, sodass eine Größe jeder der unverbundenen Teilgruppen einer Anzahl aus der Vielzahl von Prozessoren entspricht, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen sind; einen zweiten ausführbaren Abschnitt zum Zuweisen jedes aus der Vielzahl von Prozessoren zu einer anderen aus der Vielzahl von Schichten in einem anderen der Daten-Chunks gemäß dem Aufteilen, sodass jeder aus der Vielzahl von Prozessoren beschäftigt ist und jeder der Daten-Chunks vollständig innerhalb einer Anzahl von Zeitschritten verarbeitet wird, die gleich der Anzahl aus der Vielzahl von Schichten ist; und einen dritten ausführbaren Abschnitt zum Entwerfen einer Übergangsfunktion von den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem der Zeitschritte zu den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem folgenden Zeitschritt, wobei die Übergangsfunktion mit dem Zuweisen im Einklang steht.
  • Aus einem weiteren Blickwinkel betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten bereit, um eine Aufgabe an einer Abfolge von Daten-Chunks durch eine Prozessoreinheit in einer Computerspeicherumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das Computerprogrammprodukt ein computerlesbares, von einer Verarbeitungsschaltung lesbares Speichermedium und Speicheranweisungen zum Ausführen durch die Verarbeitungsschaltung aufweist, um ein Verfahren zum Ausführen der Schritte der Erfindung auszuführen.
  • Aus noch einem weiteren Blickwinkel betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem computerlesbaren Medium gespeichert ist und in einen internen Speicher eines digitalen Computers geladen werden kann, wobei es Softwarecode-Abschnitte aufweist, um, wenn das Programm auf einem Computer ausgeführt wird, die Schritte der Erfindung auszuführen.
  • Zusätzlich zu der vorhergehenden beispielhaften Ausführungsform eines Verfahrens werden weitere beispielhafte Ausführungsformen von Systemen und Computerprogrammprodukten bereitgestellt und bieten damit verbundene Vorteile. Die vorstehende Zusammenfassung wurde zum Einführen einer Auswahl von Konzepten in einer vereinfachten Form bereitgestellt, die weiter unten in der ausführlichen Beschreibung weiter beschrieben werden. Diese Zusammenfassung ist nicht dazu gedacht, Hauptmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands zu benennen, noch ist sie dazu gedacht, als Hilfe beim Festlegen des Geltungsbereichs des beanspruchten Gegenstands zu dienen. Der beanspruchte Gegenstand ist nicht auf Umsetzungen beschränkt, die Lösungen für beliebige oder alle im Hintergrund erwähnte Nachteile bieten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird nun lediglich als Beispiel unter Bezugnahme auf bevorzugte Ausführungsformen beschrieben, wie sie in den folgenden Figuren veranschaulicht sind:
  • 1 veranschaulicht eine Computerspeicherumgebung mit einer Beispielspeichereinheit nach dem Stand der Technik und in der eine bevorzugte Ausführungsform der vorliegenden Erfindung umgesetzt werden kann;
  • 2 veranschaulicht ein beispielhaftes Blockschaltbild, das eine Hardwarestruktur eines Datenspeichersystems in einem Computer nach dem Stand der Technik darstellt und in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung umgesetzt werden kann;
  • 3 ist ein Ablaufplan, der ein beispielhaftes Verfahren für eine verbesserte Prozessoranordnung für hierarchische Parallelberechnungen zum Verarbeiten von Daten-Chunks gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 4 ist ein Ablaufplan, der ein beispielhaftes Verfahren veranschaulicht, mit dem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung einer Übergangsfunktion bestimmte Randbedingungen auferlegt werden;
  • 5 veranschaulicht ein beispielhaftes Blockschaubild, das erste Einstiegspunkte (seeds) für Datenblöcke einer Datenablage (repository) gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt;
  • 6 veranschaulicht ein beispielhaftes Schaubild, das eine Prozessoranordnung für mehrere anfängliche Daten-Chunks gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt;
  • 7 veranschaulicht ein beispielhaftes Blockschaubild, das eine Prozessorverteilung darstellt, in der Aspekte der vorliegenden Erfindung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung verwirklicht werden können;
  • 8 veranschaulicht eine beispielhafte Aufteilung der Indizes 0 (null) bis 30 (dreißig) = 2n – 2 in mit 0 bis 4 indizierte Schichten gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 9 veranschaulicht eine beispielhafte Tabellendarstellung, die eine weitere Aufteilung der Indizes 0 (null) bis 30 (dreißig) in Teilgruppen, welche Gruppen von parallel arbeitenden Prozessoren entsprechen, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt; und
  • 10 veranschaulicht eine beispielhafte Darstellung, die eine Anordnung eines Indexsatzes zum Übergang von Zeitschritt i zu Zeitschritt i + 1 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG BESTIMMTER AUSFÜHRUNGSFORMEN
  • Wie zuvor erwähnt, wird mit der steigenden Nachfrage nach schnelleren, leistungsfähigeren und effizienteren Möglichkeiten zum Speichern von Daten das Optimieren von Speichertechnologien zu einem Hauptproblem. Wie weiter unten noch beschrieben werden wird, wird mit Hilfe von Mechanismen der veranschaulichten Ausführungsformen versucht, Lösungen zum Verarbeiten von Daten-Chunks zu finden, wobei eine Gruppe oder Gruppen von Parallelprozessoren zugewiesen werden, um Aufgaben in mehreren Stufen an den Daten-Chunks auszuführen, und die Aufgaben können wiederholt in einer hierarchischen Weise in Teilaufgaben aufgeteilt werden, sodass, wenn in einer Stufe n Prozessoren benötigt werden, in der nächsten Stufe nur die Hälfte von ihnen, das heißt n/2 Prozessoren, benötigt werden. Die Möglichkeit, eine Gruppe von Prozessoren zum Ausführen einer Aufgabe in mehreren hierarchisch verbundenen Schichten auszuführen, weist viele Anwendungen auf.
  • Große Speicher- und Sicherungssysteme können wie zuvor beschrieben mittels Deduplizieren komprimiert werden, indem wiederkehrende Teilabschnitte des Textes aufgefunden und diese durch Zeiger auf vorhergehende Stellen, an denen sie vorkommen, ersetzt werden. Jedem Datenblock kann ein Hashwert zugewiesen werden, doch dieser kann möglicherweise nur identische Blöcke erkennen und ist gegebenenfalls nicht geeignet, wenn große Blockgrößen verwendet werden. Ein Ersetzen der Identität nach Ähnlichkeit ermöglicht die Verwendung viel größerer Daten-Chunks, wobei ein Ähnlichkeit nutzender Prozess auf der Bewertung einer Hashfunktion für eine große Zahl von Zeichenfolgen beruhen kann. Eine sehr große Datenablage, etwa in der Größenordnung von 1 Petabyte (PB) = 250 Byte, kann beispielsweise in Chunks von fester oder veränderlicher Größe aufgeteilt werden, wobei jedem von ihnen eine oder mehrere Signaturen zugewiesen werden. Die Signatur eines Chunk kann eine Funktion einer Gruppe von Hashwerten sein, die für jede aufeinander folgende Teilzeichenfolge von k Byte innerhalb des Chunk erzeugt werden. Die Länge k dieser Teilzeichenfolgen, die in dieser Beschreibung durchweg als ”Einstiegspunkte” (seeds) bezeichnet werden können, kann 512 Bit oder mehr betragen, die Bewertung kann für die Verarbeitungszeit jedoch Belastungen bedeuten. Die in dieser Anwendung genutzte Hashfunktion ist die Restfunktion Modulo a einer großen Primzahl P. Mit anderen Worten, wir ermitteln einen Einstiegspunkt B, bei dem es sich um eine Zeichenfolge der Länge K handelt, mit seiner ASCII-Codierung und betrachten diese Codierung als die Standard-Binärdarstellung einer großen 8k-Bit langen ganzen Zahl. Die Hashfunktion wird dann dargestellt durch die Gleichung: h(B) = BmodP (1) worin B die Restfunktion und P die große Primzahl ist. Wenn ein Chunk c = x1 x2 ... xi gegeben ist, in dem xi die Zeichen eines Alphabets bezeichnet, kann die Hashfunktion h auf die Gruppe der Teilzeichenfolgen Bi von C der Länge k angewendet werden, wobei Bi = xi xi + 1 ... xi+k-1 (2) die Teilzeichenfolge ist, die beim i-ten Zeichen von C beginnt. Dies kann für i > 1 in einer konstanten Zeit erfolgen, da die Bewertung von Bi auf dem Wert beruhen kann, der zu einem früheren Zeitpunkt für Bi-1 erhalten wurde, doch dies kann offensichtlich für den ersten zu verwendenden Wert nicht zutreffen. Das heißt, Bi kann eine zu k proportionale Bewertungszeit benötigen.
  • Insbesondere bei der Verbesserung der Bewertungszeit der Restfunktion kann in einer ersten, als Schritt 0 bezeichneten Stufe eine Gruppe von n Prozessoren zugewiesen werden, gleichzeitig an n Daten-Chunks zu arbeiten. In Schritt 1 werden nur n/2 Prozessoren genutzt, wobei jeder auf zwei im vorhergehenden Schritt bewerteten Chunks einwirkt, und im Allgemeinen werden in Schritt i nur n/2i Prozessoren genutzt, wobei jeder auf zwei im vorhergehenden Schritt i – 1 bewertete Chunks einwirkt. Schließlich wird im letzten Schritt log a nur ein einziger Prozessor genutzt. Während sich die Gesamtarbeit aller Prozessoren zusammen im Verhältnis zu einer gleichwertigen sequenziellen Bewertung auf einem einzelnen Prozessor nicht verringert, wird die Gesamtverarbeitungszeit, wenn sie nur einmal für parallel ausgeführte Befehle berücksichtigt wird, von O(n) Operationen auf O(log n) Operationen verringert.
  • Die Gruppe der Prozessoren wird jedoch nur in der ersten Stufe voll ausgenutzt, und tatsächlich bleiben bei jeweils vernünftiger Wahl von n die meisten der Prozessoren die meiste Zeit inaktiv. Die durchschnittliche Anzahl beschäftigter Prozessoren ist gegeben durch die Gleichung: ((n + (n/2) + (n/4) + ... + 2 + 1)/(1 + log n)) = ((2n – 1)/(1 + log n)) (3) wo sich für n = 64 ergibt, dass im Durchschnitt nur 28% der Prozessoren beschäftigt sind. Um für die zuvor beschriebene Leistungsschwäche Abhilfe zu schaffen, ist können die Mechanismen der veranschaulichten Ausführungsformen dazu dienen, den Nutzungsgrad der Prozessoren zu erhöhen, indem mehrere Aufgaben zu einer Gruppe zusammengefasst werden, sodass eine volle Ausnutzung der verfügbaren Verarbeitungsleistung erreicht wird, wodurch die Unwirksamkeit von nicht arbeitenden Prozessoren auf null verringert wird. Diese optimale Auslastung der n Prozessoren wird erreicht, indem wie oben beschrieben Prozessoren den verschiedenen Aufgaben auf verschiedenen Ebenen der Daten-Chunks zugewiesen werden. Dabei kann in den Beschreibungen die Bezugnahme auf eine bestimmte Prozessorzuweisung durchweg als ”Anordnung” (layout) bezeichnet werden.
  • Um die volle Ausnutzung einer Anzahl n von Prozessoren über die gesamte Zeit zu erreichen, können die erforderlichen Aufgaben innerhalb der Computerumgebung parallel ausgeführt werden. Genauer gesagt, da die Bewertung einer bestimmten Funktion bei einem einzelnen Chunk log n Stufen erfordert, können die Prozessoren so zugewiesen werden, dass die Abfolge von log n aufeinander folgenden Chunks gleichzeitig parallel verarbeitet werden kann. Somit wird mit Hilfe von Mechanismen der veranschaulichten Ausführungsform eine geeignete Anordnung entwickelt, die zeigt, wie die verfügbaren Prozessoren in jedem Zeitschritt zuzuweisen sind. Insbesondere ist die Anordnung über Zeitübergänge von Schritt i zu Schritt i + 1 gleichbleibend und erfüllt dabei auch die hierarchische Definition der zu bewertenden Funktion.
  • In 1 wird ein beispielhaftes Computersystem 10 dargestellt, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können. Das Computersystem 10 enthält eine Zentraleinheit (CPU) 12, die mit (einer) Massenspeichereinheit(en) 14 und der Arbeitsspeichereinheit 16 verbunden ist. Zu den Massenspeichereinheiten können Festplattenlaufwerk(HDD)-Einheiten gehören, die als RAID (redundant array of independent disks) konfiguriert sein können. Als Arbeitsspeichereinheit 16 kommt ein Speicher wie beispielsweise ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM) oder ein Host mit zugehörigen Einheiten infrage. Die Arbeitsspeichereinheit 16 und die Massenspeichereinheit 14 sind mit der CPU 12 über ein Signalträgermedium verbunden. Zusätzlich ist die CPU 12 durch den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, an das eine Vielzahl zusätzlicher Computersysteme 22 und 24 angeschlossen ist. Das Computersystem 10 kann eine oder mehrere Prozessoreinheiten (z. B. die CPU 12) und zusätzliche Arbeitsspeichereinheiten 16 für jede einzelne Komponente des Computersystems 10 beinhalten.
  • 2 ist ein beispielhaftes Blockschaltbild 200, das eine Hardwarestruktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Dargestellt sind Host-Computer 210, 220, 225, von denen jeder als Zentraleinheit zum Ausführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 fungiert. Bei den Cluster-Hosts/Knoten (physische oder virtuelle Einheiten) 210, 220 und 225 kann es sich um eine oder mehrere neue physische Einheiten oder logische Einheiten handeln, um die Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 zu erfüllen. Bei einer Verbindung 260 zu einem Netzwerk (z. B. einer Speicherstruktur) kann es sich um eine Fibre-Channel-Struktur, Fibre-Channel-Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle handeln. Die Hosts 210, 220 und 225 können lokal angeordnet oder auf einen oder mehrere Standorte verteilt sein, und sie können mit jeder Art von Struktur- (oder Strukturkanal-) (in 2 nicht dargestellt) oder Netzwerkadapter 260 zu der Speichersteuereinheit 240 ausgestattet sein, beispielsweise Fibre Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, drahtlose oder Koaxialadaptern. Das Datenspeichersystem 200 ist dementsprechend mit einem geeigneten Struktur- (in 2 nicht dargestellt) oder Netzwerkadapter 260 ausgestattet, um Daten auszutauschen. Das Datenspeichersystem 200 ist in 2 so dargestellt, dass es Speichersteuereinheiten 240 und Cluster-Hosts 210, 220 und 225 aufweist. Die Cluster-Hosts 210, 220 und 225 können Cluster-Knoten enthalten.
  • Um ein klareres Verständnis der hier beschriebenen Verfahren zu erleichtern, ist die Speichersteuereinheit 240 in 2 als eine einzige Verarbeitungseinheit dargestellt, die einen Mikroprozessor 242, einen Systemspeicher 243 und einen nichtflüchtigen Speicher („NFS”) 216 beinhaltet, die weiter unten noch ausführlicher beschrieben werden. Es wird auch angemerkt, dass die Speichersteuereinheit 240 in einigen Ausführungsformen aus mehreren Verarbeitungseinheiten besteht, jede mit ihrem eigenen Prozessorkomplex und Systemspeicher und untereinander durch ein starr zugeordnetes Netzwerk innerhalb des Datenspeichersystems 200 verbunden. Darüber hinaus können in Anbetracht der Nutzung der Netzwerkverbindung 260 der Speicherstruktur zusätzliche Konfigurationen der Architektur verwendet werden, indem die Speicherstruktur 260 verwendet wird, um mehrere Speichersteuereinheiten 240 zusammen mit einem oder mehreren Cluster-Hosts 210, 220 und 225 zu verbinden, die mit jeder Speichersteuereinheit 240 verbunden sind.
  • In einigen Ausführungsformen beinhaltet der Systemspeicher 243 der Speichersteuereinheit 240 die Betriebssoftware 250 und speichert Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte in Verbindung mit einem Ausführen der Schritte und Verfahren der vorliegenden Erfindung auszuführen. Wie in 2 gezeigt, kann der Systemspeicher 243 auch einen Zwischenspeicher 245 beinhalten oder mit ihm Daten austauschen, hier auch als ”Cachespeicher” bezeichnet, um ”Schreibdaten” und ”Lesedaten” zu Puffern, die sich jeweils auf Schreib/Lese-Anforderungen und ihre zugehörigen Daten beziehen. In einer Ausführungsform ist der Cachespeicher 245 in einer Einheit außerhalb des Systemspeichers 243 zugeordnet, der Mikroprozessor 242 kann jedoch weiterhin auf ihn zugreifen, und er kann dazu dienen, zusätzlich zum Ausführen der hier beschriebenen Operationen eine zusätzliche Sicherheit vor Datenverlust bereitzustellen.
  • In einigen Ausführungsformen kann der Cachespeicher 245 mit einem flüchtigen Speicher und nichtflüchtigen Arbeitsspeichern umgesetzt und für eine verbesserte Leistungsfähigkeit des Datenspeichersystems 200 über einen (in 2 nicht dargestellten) lokalen Bus mit dem Mikroprozessor 242 verbunden sein. Auf den in der Datenspeicher-Steuereinheit enthaltenen NFS 216 kann der Mikroprozessor 242 zugreifen, und er dient dazu, zusätzliche Unterstützung für Operationen und eine in den anderen Figuren beschriebene Ausführung bereitzustellen. Der NFS 216 kann auch als ”dauerhafter” Zwischenspeicher oder ”Cachespeicher” bezeichnet werden und wird mit einem nichtflüchtigen Speicher umgesetzt, der eine externen Stromquelle zum Erhalten der darin gespeicherten Daten nutzen kann, dies jedoch nicht muss. Der NFS kann im und mit dem Cachespeicher 245 für jegliche Zwecke gespeichert werden, die zum Erfüllen der Zielsetzungen der vorliegenden Erfindung geeignet sind. In einigen Ausführungsformen versorgt eine (in 2 nicht dargestellte) Reservestromquelle, beispielsweise eine Batterie, den NFS 216 mit ausreichend Strom, um die darin gespeicherten Daten im Fall eines Stromausfalls für das Datenspeichersystem 200 zu erhalten. In bestimmten Ausführungsformen ist die Kapazität des NFS 216 kleiner als oder gleich der Gesamtkapazität des Cachespeichers 245.
  • Die Speichersteuereinheit 240 kann ein Prozessorzuweisungsmodul 255 und ein Übergangsfunktionsmodul 257 enthalten. Bei dem Prozessorzuweisungsmodul 255 und dem Übergangsfunktionsmodul 257 kann es sich um ein gleichzeitig arbeitendes vollständiges Modul oder um getrennte Module handeln. Das Prozessorzuweisungsmodul 255 und das Übergangsfunktionsmodul 257 können einige (nicht dargestellte) interne Arbeitsspeicher aufweisen, in dem der Übergangsfunktionsalgorithmus unverarbeitete, verarbeitete oder ”halbverarbeitete” Daten speichern kann. Das Prozessorzuweisungsmodul 255 und das Übergangsfunktionsmodul 257 können in Verbindung mit jeder und allen Komponenten der Speichersteuereinheit 240, den Hosts 210, 220, 225 und anderen Speichersteuereinheiten 240 und Hosts 210, 220 und 225 arbeiten, die mit der gegebenenfalls entfernt angeordneten Speicherstruktur 260 verbunden sein können. Sowohl bei dem Prozessorzuweisungsmodul 255 als auch bei dem Übergangsfunktionsmodul 257 kann es sich strukturell um ein vollständiges Modul handeln, oder sie können zu anderen einzelnen Modulen gehören und/oder in ihnen enthalten sein. Das Prozessorzuweisungsmodul 255 und das Übergangsfunktionsmodul 257 können auch in dem Cachespeicher 245 oder anderen Komponenten der Speichersteuereinheit 240 angeordnet sein.
  • Die Speichersteuereinheit 240 beinhaltet einen Steuer-Switch 241 zum Steuern des Fiber-Channel-Protokolls zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller der Speichersteuereinheiten 240, einen nichtflüchtigen Steuerarbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs der Speichersteuereinheit 240, den Cachespeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und die Puffer 244 zum Unterstützen des Cachespeichers 245 zum Lesen und Schreiben von Daten, einen Steuer-Switch 241 zum Steuern eines Protokolls, um eine Datenübertragung zu oder von dem Prozessorzuweisungsmodul 255 und dem Übergangsfunktionsmodul 257 zu steuern, worin Daten festgelegt werden können. Mehrere Puffer 244 können eingerichtet werden, um bei den hier beschriebenen Verfahren und Schritte zu unterstützen.
  • In einer Ausführungsform sind die Cluster-Hosts/Knoten 210, 220, 225 und die Speichersteuereinheit 240 durch einen Netzwerkadapter (dabei könnte es sich um einen Fibre Channel handeln) 260 als Schnittstelle verbunden, d. h. über einen als „Struktur” bezeichneten Switch. In einer Ausführungsform kann der Betrieb des in 2 dargestellten Systems wie folgt beschrieben werden. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 so steuern, dass er Befehlsdaten von der Cluster-Host/Knoteneinheit (physisch oder virtuell) 210 und Daten zum Kennzeichnen der Cluster-Host/Knoteneinheit (physisch oder virtuell) 210 speichert. Der Steuer-Switch 241, die Puffer 244, der Cachespeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NFS 216, das Prozessorzuweisungsmodul 255 und das Übergangsfunktionsmodul 257 tauschen miteinander Daten aus und können eine einzelne oder voneinander getrennte Komponente(n) sein. Außerdem können mehrere, wenn nicht alle der Komponenten, beispielsweise die Betriebssoftware 250, in dem Arbeitsspeicher 243 enthalten sein. Alle Komponenten innerhalb der dargestellten Einheiten können untereinander verbunden sein und können untereinander für Zwecke, die für die vorliegende Erfindung geeignet sind, Daten austauschen.
  • In einer Ausführungsform können lediglich als Beispiel zwei mögliche Szenarios betrachtet werden. Erstens kann die Zeit, die für jeden Prozessor zum Lesen der zugewiesenen Daten benötigt wird, von den Mechanismen der vorliegenden Erfindung, ignoriert werden und stattdessen die Möglichkeit der Nutzung einiger Parameter berücksichtigt werden, die nur von dem Index der aktuell verarbeiteten Schicht eines Daten-Chunk und nicht von dem jeweiligen Chunk selbst abhängen. Dies stellt eine Anordnung bereit, in der ein Prozessor immer zugewiesen ist, um eine Aufgabe in derselben Schicht von Daten (d. h. Daten-Chunks) auszuführen. In einem zweiten Szenario werden auch Eingabeoperationen berücksichtigt, was zu einer Anordnung führt, in der das Zuweisen neuer Daten zu einem Prozessor auf eine mögliche minimale Prozessorzuweisung verringert ist. Der Prozessor liest neue Daten nur nach dem Abschließen der Aufgaben der Daten, die von dem Prozessor freigegeben wurden. Beide Mechanismen der veranschaulichten Ausführungsformen, wie unten beschrieben, veranschaulichen diese zwei Beispiele und erreichen die volle Ausnutzung von n Prozessoren über die gesamte Zeit mit den erforderlichen Aufgaben innerhalb der Computerumgebung, die parallel ausgeführt wird.
  • 3 ist ein Ablaufplan, der ein beispielhaftes Verfahren für eine verbesserte Prozessoranordnung für hierarchische Parallelberechnungen zum Verarbeiten von Daten-Chunks veranschaulicht. Das Verfahren beginnt (Schritt 302). Die Indizes von Prozessoren werden gemäß ihren Indizes aufgeteilt (Schritt 304). Die auszuführende Aufgabe wird in Schichten aufgeteilt (Schritt 305). Die Prozessoren werden den Schichten der Aufgabe zugewiesen (Schritt 306). Die Daten-Chunks werden mit einer Anzahl von Zeitschritten gleich der Anzahl von Schichten verarbeitet (Schritt 308). Eine Übergangsfunktion von einem Zeitschritt zu dem folgenden Zeitschritt wird so entworfen (und/oder berechnet), dass der Übergang mit dem Zuweisen der Prozessoren zu den Schichten im Einklang steht (Schritte 310). Das Verfahren endet (Schritt 312).
  • In 4 wird ein Ablaufplan dargestellt, der ein beispielhaftes Verfahren veranschaulicht, um einer Übergangsfunktion bestimmte Randbedingungen aufzuerlegen. Das Verfahren 400 beginnt (Schritt 402). Jeder Daten-Chunk wird innerhalb von d Zeitschritten verarbeitet, die den d Schichten entsprechen, wobei die Anzahl von Prozessoren, die Ebene 0 zugewiesen sind, n = 2d-1 ist und wir die Verfügbarkeit von 2n – 1 Prozessoren annehmen. Die Anzahl von Prozessoren, die dem Verarbeiten eines Chunk in einer bestimmten Schicht zugewiesen sind, ist die Hälfte (1/2) der Anzahl von Prozessoren, die dem Verarbeiten des Daten-Chunk in der vorhergehenden Schicht zugewiesen sind (Schritt 404). Zwei mögliche Randbedingungen werden betrachtet: Eine erste Randbedingung beschränkt jeden Prozessor darauf, dass er zugewiesen wird, immer auf derselben Schicht zu arbeiten, und eine zweite Randbedingung besteht darin, dass bei jeder Schicht außer der untersten jeder Prozessor darauf beschränkt wird, mit demselben Daten-Chunk wie in den vorhergehenden Schichten zu arbeiten (Schritt 406). In Schritt 408 prüft das Verfahren 400, welche Randbedingung Anwendung findet (z. B. ermittelt das Verfahren, ob ein Prozessor darauf beschränkt wird, immer auf derselben Schicht zu arbeiten). Wenn es sich um die erste Randbedingung handelt, kann das Verfahren 400 die Prozessoren nach den ganzen Zahlen 0 bis 2n – 2 indizieren, und bei den n/2i Prozessoren, die zum Arbeiten auf Schicht i für i = 0, 1, ..., d – 1 zugewiesen sind, handelt es sich um die Prozessoren, deren Indizes eine Standard-Binärdarstellung aufweisen, die auf 0, gefolgt von i Einsen, endet (Schritt 410). Wenn die zweite Randbedingung Anwendung findet, kann das Verfahren 400 alternativ die Prozessoren nach ganzen Zahlen 1 bis 2n – 1 indizieren, und bei den n/2i Prozessoren, die zum Arbeiten auf Schicht i für i = 0, 1, ..., d – 1 zugewiesen sind, handelt es sich um die Prozessoren, deren Indizes eine Standard-Binärdarstellung aufweisen, die auf 1, gefolgt von i Nullen, endet. (Schritt 412). Das Verfahren endet (Schritt 414).
  • 5 veranschaulicht ein beispielhaftes Blockschaubild, das erste Einstiegspunkte für Daten-Chunks eines Datenlagers darstellt. Wie zuvor erwähnt, dienen die Mechanismen der veranschaulichten Ausführungsformen dazu, die Verarbeitungsleistung aller Prozessoren auszunutzen. Allerdings wären nur für Schicht 0 alle Prozessoren aktiv, während dies für die nächste Schicht nur für die Hälfte der Prozessoren zutrifft, und dann für ein Viertel der Prozessor für eine zusätzliche Schicht usw. Im Gegensatz dazu und um für dieses Unvermögen, Abhilfe zu schaffen, sei als Beispiel eine lange Abfolge von N unabhängigen Daten-Chunks betrachtet, bei der die hierarchische Signaturbewertung auf den ersten Einstiegspunkt jedes Chunk angewendet wird. Die Größen, um die es in einem typischen Aufbau geht, können als Datenablage von 1 PB betrachtet werden, aufgeteilt in eine Abfolge von N Chunks einer festen Größe von 16 Megabyte (MB), womit N = 226 erreicht wird, was ungefähr 64 Millionen Chunks entspricht, wobei für jeden von ihnen der erste Einstiegspunkt mit einer Größe von 512 Byte verarbeitet wird, wie in 5 dargestellt. In 5 sind die Daten-Chunks 504 (in der Zeichnung veranschaulicht als 504A bis E) durch senkrechte Striche 502 (in der Zeichnung veranschaulicht als 502A bis D) getrennt, und die ersten Einstiegspunkte 506 (in der Zeichnung veranschaulicht als 506A bis D), für die die Signatur bewertet wurde, erscheinen schwarz. An diesem Punkt in dem Beispiel kann angenommen werden, dass n Prozessoren für Schicht 0 benötigt werden und dass 2n – 1 Prozessoren verfügbar sind.
  • Das Beispiel wird nun unter Bezug auf 6 weiter betrachtet und erklärt, die ein beispielhaftes Schaubild veranschaulicht, das eine Prozessoranordnung für mehrere anfängliche Daten-Chunks darstellt. Die Mechanismen der veranschaulichten Ausführungsformen können zur Zeit 0 beginnen, indem n Prozessoren dem ersten Chunk (in den Zeichnungen veranschaulicht als der als ”Chunk 0” indizierte Chunk) zugewiesen werden, wobei die Prozessoren Schicht 0 des parallelen Bewertungsalgorithmus ausführen. Im folgenden Schritt, zur Zeit 1, führen n/2 der inaktiven Prozessoren Schicht 1 für Chunk 0 aus, während die ersten n Prozessoren neu zugewiesen werden, um Schicht 0 von Chunk 1 auszuführen. Zur Zeit 2 führen n/2 neue Prozessoren Schicht 2 für Chunk 0 aus, und die n/2 Prozessoren, die im vorhergehenden Schritt auf Schicht 1 für Chunk 0 arbeiten, werden neu zugewiesen, um Schicht 1 für Chunk 1 auszuführen. Die n Prozessoren, die im vorhergehenden Schritt auf Schicht 0 für Chunk 1 arbeiten, werden neu zugewiesen, um Schicht 0 für Chunk 2 auszuführen. Wie in 6 dargestellt, geben durchgezogene Linien Blöcke von aktuell arbeitenden Prozessoren an, und durchbrochene Linien erinnern an Prozessoren, die auf niedrigeren Schichten in früheren Zeitschritten gearbeitet haben.
  • Im Allgemeinen wird zur Zeit i, i = 0, 1, ..., log n, die Gruppe der verfügbaren Prozessoren auf (i + 1) ungleiche Teile aufgeteilt, die die ersten (i + 1) Chunks wie folgt behandeln: n/2i neue Prozessoren können Schicht i von Chunk 0 ausführen, n/2i-1 Prozessoren führen Schicht i – 1 von Chunk 1 aus, ..., n/2 Prozessoren führen Schicht 1 von Chunk i – 1 aus, und n Prozessoren führen Schicht 0 von Chunk i aus. Mit anderen Worten, nur
    Figure DE112013000392T5_0002
    Prozessoren arbeiten zum Zeitpunkt von Schritt i für i < log n, doch nach den anfänglichen log n – 1 Zeitschritten werden alle 2n – 1 Prozessoren arbeiten. 6 stellt das Szenario für die Anfangsschritte dar. Für die folgenden Schritte kann für j = 1, 2, ..., in Zeitschritt j + log n ein Prozessor Schicht log n von Chunk j – log n ausführen, zwei Prozessoren können Schicht log n – 1 von Chunk j – log n + 1 ausführen, vier Prozessoren führen Schicht log n – 2 von Chunk j – log n + 2 aus, ..., n/2 Prozessoren können Schicht 1 von Chunk j – 1 ausführen, und n Prozessoren können Schicht 0 von Chunk j ausführen. Dies kann wie folgt zusammengefasst werden: Für j = 1, 2, ... und i = 0, 1, ..., log n, zum Zeitpunkt j + log n führen n/2log n-1 Prozessoren Schicht log n – i von Chunk j – log n + i aus.
  • 7 veranschaulicht ein beispielhaftes Blockschaubild, das eine Prozessorverteilung darstellt, in der Aspekte der vorliegenden Erfindung verwirklicht werden können. In Fortsetzung von 5 und 6 fasst 7 die Anordnung von 6 für einen allgemeinen Fall nach log n Anfangsschritten zusammen. Wie in 6 beschrieben, gibt es eine getrennte Zeichnung für jeden Zeitschritt, doch diese Zeitschritte sind in 7 überlagert. Genauer gesagt, jede Säule in 7 entspricht einem der Chunks (in 7 als Daten-Chunks j – 4 bis j + 1 indiziert). Die verschiedenen Zeitschritte in 7 sind durch die verschiedenen Schattierungen gekennzeichnet, in denen Rechtecke mit identischen Füllmustern Mengen von gleichzeitig arbeitenden Prozessoren darstellen. Die flächig schwarz gefüllten Rechtecke stellen die Gruppe der Prozessoren dar, die zur Zeit j – log n parallel arbeiten: Die Hälfte von ihnen an Chunk j, ein Viertel an Chunk j – 1 und so weiter. Bei den gepunkteten Mustern handelt es sich um die Arbeitsprozessoren im folgenden Schritt, zum Zeitpunkt j + log n + 1. Somit wird in 6 und 7 beobachtet, dass sich am Übergang von einem Zeitschritt zum folgenden Zeitschritt alle Prozessoren zum folgenden Chunk bewegen, jedoch weiterhin auf derselben vorhergehenden Schicht arbeiten. Wenn man sich einen bestimmten Chunk ansieht, entspricht der Übergang von einem Zeitschritt zum folgenden Zeitschritt dem Wechseln zur nächsthöheren Schicht, und er verringert die Anzahl der Prozessoren, die auf der folgenden Daten-Chunk-Schicht arbeiten, um die Hälfte (1/2).
  • Indem jeder der Prozessoren den verschiedenen Schichten der Daten-Chunks zugewiesen wird, bleibt infolgedessen kein Prozessor nach der Initialisierungsphase von log n Zeitschritten inaktiv, wonach alle 2n – 1 Prozessoren parallel an log n aufeinander folgenden Chunks arbeiten. Darüber hinaus kann die Signatur jedes der verarbeiteten Daten-Chunks in log n Schichten innerhalb von log n aufeinander folgenden Zeitschritten bewertet werden.
  • In einer Ausführungsform kann die Anordnung durch die Mechanismen so gestaltet werden, dass die Prozessoren in feste Gruppen von jeweils n, n/2, n/4, ..., 2, 1 Prozessoren unterteilt werden. Wie in 7 dargestellt, kann die ersten Teilgruppe von n Prozessoren immer zum Arbeiten am Daten-Chunk der Schicht null (0) zugewiesen werden. Die Teilgruppe von n/2j Prozessoren kann immer zum Arbeiten an Schicht j für j = 0, 1, ... log n zugewiesen werden. Durch diese Gestaltung werden Vorteile erzielt, wenn für die verschiedenen Schichten unterschiedliche Konstanten verwendet werden. In den Anwendungen, die zur parallelen Rest-Bewertung genutzt werden, wirkt jeder Prozessor beispielsweise auf eine Eingabe ein, die aus zwei Datenblöcken besteht. Diese Datenblöcke sind für Schicht 0 benachbart, für höhere Schichten sind die Blöcke jedoch weiter voneinander entfernt. Der Abstand zwischen den Blöcken hängt vom Index der Schicht ab. Daraus ergibt sich, dass in dem von jedem der Prozessoren ausgeführten Bewertungsverfahren eine Konstante Ci verwendet wird, und diese Konstante ist für alle Prozessoren gleich, die innerhalb derselben Schicht handeln, die Ci sind jedoch von Schicht zu Schicht verschieden. Wenn ein bestimmter Prozessor immer derselben Schicht i zugewiesen ist, besteht keine Notwendigkeit, diese Konstante Ci zu aktualisieren, die fest (z. B. fest verdrahtet) in dem Prozessor festgelegt sein kann. Eine mögliche feste Aufteilung der Indizes von Prozessoren gemäß dieser Ausführungsform wird unten in 8 beschrieben.
  • 8 veranschaulicht eine beispielhafte Aufteilung der Indizes 0 (null) bis 30 (dreißig) = 2n – 2 in von 0 bis 4 indizierte Schichten. Dementsprechend haben wir in diesem Beispiel n = 16. Die n Prozessoren, die auf Ebene 0 handeln, sind diejenigen mit geraden Indizes {0, 2, 4, 6, ...}. Die n/2 Prozessoren, die auf Daten-Chunk-Ebene 1 handeln, können diejenigen mit Indizes sein, die der Form 1 + Vielfache von 4 {1, 5, 9, 13, ...} entsprechen. Die n/4 Prozessoren, die auf Daten-Chunk-Ebene 2 handeln, können diejenigen mit Indizes sein, die der Form 3 + Vielfache von 8 {3, 11, 19, 27, ...} entsprechen usw. Im Allgemeinen sind die n/2i Prozessoren, die auf Ebene i handeln, diejenigen mit Indizes, die der Form 2i – 1 + Vielfache von 2i + 1 für i = 0, 1, ..., log n entsprechen. Mit anderen Worten, eine gleichwertige Art, diese Aufteilung zu beschreiben, die auch den Vorteil aufweist zu zeigen, dass diese Art des Nummerierens tatsächlich eine Aufteilung ergibt, das heißt, dass alle Indizes berücksichtigt sind und keiner von ihnen zweimal erscheint, besteht darin, auf die (1 + log n)-Bit Standard-Binärdarstellung der Zahlen 0 bis 2n – 2 zu verweisen: Die n geraden Indizes sind diejenigen, die auf 0 enden, die Indizes von Schicht 1 sind diejenigen, die auf 01 enden, danach 011 usw. Im Allgemeinen sind die Indizes von Schicht i die n/2i Zahlen, deren (1 + log n)-Bit Standard-Binärdarstellung auf 011, ... 1 endet, wobei die Länge der Zeichenfolge von Einsen i ist. Die in 8 dargestellte Tabelle enthält die Aufteilung für n – 16, und die Indizes erscheinen in Dezimal- und Binärform, wobei ihre Suffixe hervorgehoben sind.
  • Eine Schwierigkeit, die eine solche Gestaltung bereitet, besteht darin, dass in jedem Schritt möglicherweise alle Prozessoren neue Daten lesen müssen und der durch diesen Eingabevorgang verursachte Systemaufwand alle Vorteile des Nutzens einer Parallelisierung zunichtemachen kann. Um diese Schwierigkeit zu bewältigen, veranschaulicht 9 eine beispielhafte Aufteilung der Indizes 1 (eins) bis 31 (einunddreißig) = 2n – 1 in mit 0 bis 4 indizierte Schichten. 9 stellt ein stärker eingebundenes Indizierungsschema dar, indem die Prozessoren gemäß ihrem Index so zugewiesen werden, dass nur die Hälfte der Prozessoren, das heißt n der 2n – 1, erforderlich sind, um neue Daten in jedem Zeitschritt zu lesen, was das mögliche Minimum ist, da in jedem Zeitschritt auf einen neuen Daten-Chunk zugegriffen wird. Die anderen n – 1 Prozessoren können bei den Daten bleiben, die sie gelesen haben, als ihnen ein Daten-Chunk in Schicht 0 zugewiesen wurde. Dies verhindert etwaige Verzögerungen, die durch Eingabebefehle während der log n aufeinander folgenden Schritte verursacht werden, die zum Verarbeiten der Daten-Chunks in Schichten erforderlich sind. Um die Erklärung, die dem allgemeinen Fall und nicht den anfänglichen log n Chunks entspricht, weiter zu veranschaulichen, sei das folgende Beispiel betrachtet.
  • Die Mechanismen können die 2n – 1 Prozessoren nach ganzen Zahlen von 1 bis 2n – 1 indizieren, wobei angenommen werden kann, dass n eine 2er-Potenz ist (z. B. n = 2d). Wir betrachten die (links mit 0en aufgefüllte) (d + 1)-Bit Binärdarstellung dieser Indizes. Für d = 4 sind die Indizes beispielsweise 00001, 00010, ..., 11110 und 11111. Die Prozessoren sind wie folgt aufgeteilt: Die n Prozessoren, die Chunk j zugewiesen sind, sind diejenigen mit ungeraden Indizes (mit anderen Worten, diejenigen mit Indizes gleich 1 Modulo 2), die n/2 Prozessoren, die Chunk j – 1 zugewiesen sind, sind diejenigen mit auf 10 endenden Indizes (mit anderen Worten, diejenigen mit Indizes gleich 2 Modulo 4), und allgemein sind die n/2r Prozessoren, die Chunk j – r zugewiesen sind, diejenigen mit auf 10⋯0 endenden Indizes (1 gefolgt von r – 1 Nullen, mit anderen Worten, diejenigen mit Indizes gleich 2r Modulo 2r+1). Diese Blöcke von Prozessoren sind im oberen Teil der weiter unten folgenden 10 zu sehen, wo sie innerhalb jeder Spalte lexikografisch geordnet sind. Die festen Suffixe für jeden Block, 1, 10, 100 usw., sind zur Hervorhebung umrahmt.
  • 10 veranschaulicht ein beispielhaftes Blockschaubild einer Anordnung eines Indexsatzes zum Übergang von Zeitschritt i zu Zeitschritt i + 1, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können. 10 stellt die Einzelheiten des Übergangs von Zeitschritt i zu Zeitschritt i + 1 für d = 4 und n = 16 dar. Zeitschritt i ist für die Daten-Chunks j – 4, j – 3, j – 2, j – 1 und j veranschaulicht, und Zeitschritt i + 1 ist für die Daten-Chunks j – 3, j – 2, j – 1, j und j + 1 veranschaulicht.
  • Beim Wechseln von Zeitschritt i zu Zeitschritt i + 1 für d = 4, d. h. n = 16, wird die Hälfte der Prozessoren, die an jedem der aktuell verarbeiteten aufeinander folgenden Chunks j, j – 1, ..., j – log n arbeiten, dem neuen zu verarbeitenden Chunk zugewiesen, der mit j = 1 indiziert ist, während die andere Hälfte bei dem Daten-Chunk bleibt, mit dem die Prozessoren begonnen haben, und der dann auf eine höhere Ebene wechseln kann. Genauer gesagt, alle Prozessoren mit Indizes >= n, deren Binärdarstellung mit 1 beginnt (dargestellt in den fett gezeichneten Rechtecken von 10), werden dem neuen Chunk zugewiesen, während diejenigen mit Indizes < n bei dem früheren Daten-Chunk bleiben. Um eine widerspruchsfreie Nummerierung zu erzielen, kann auf jeden der Indizes am Übergang zwischen Zeitschritten die folgende Transformation angewendet werden: Man erhält den Index B zur Zeit i + 1 aus dem Index A zur Zeit i, indem auf die Binärdarstellung eine zyklische Verschiebung um ein Bit nach links angewendet wird. Bei einer solchen Funktion handelt es sich um eine Bijektion, sodass man, wenn man mit allen Zahlen zwischen 1 und 2n – 1 beginnt, nach der Transformation dieselbe Gruppe erhält. Wenn beispielsweise A = 11001 = 23, ist B = 10011 = 19, und wenn A = 01010 = 10, ist B = 10100 = 20. Mit anderen Worten, der Index B ist durch die folgende Gleichung gegeben: B = 2(A – n) + 1 if A >= n B = 2A if A < n (4)
  • Wie in 10 dargestellt, enden alle Indizes in dem neuen Chunk j + 1 auf 1, alle in Chunk j (bei dem es sich nun um Verarbeitungsschicht 1 handelt) enden auf 10 usw. Wie in 10 zu sehen ist, ist die neue Anordnung ähnlich der des vorhergehenden Zeitschritts. Die Spalte der Indizes von Chunk t im unteren Teil der Figur, die der Zeit i + 1 entspricht, ist identisch mit der Spalte der Indizes von Chunk t – 1 im oberen Teil der Figur, die der Zeit i entspricht, für t = j, j – 1, j – 2 und j – 3. Die Elemente in der letzten Spalte (Chunk j = 1 im unteren Teil der Figur) sind nicht lexikografisch geordnet, um ihre Herkunft hervorzuheben, es lässt sich jedoch leicht nachprüfen, dass es sich bei dieser Spalte lediglich um eine Permutation der Elemente in der Spalte von Chunk j des oberen Teils der Figur handelt.
  • Wie in 9 dargestellt, fasst die Tabelle eine neue Anordnung zusammen und ergibt eine Aufteilung, die ähnlich der vorhergehenden Aufteilungstabelle von 8 ist. Eine alternative Möglichkeit, die neue Aufteilung zu interpretieren, besteht im Hinweisen auf eine Entsprechung zwischen den Tabellen von 8 und 9. Das Element mit Index i an einer bestimmten Position der Tabelle von 8 entspricht dem Element mit Index i + 1 an derselben Position wie der in 9 dargestellten Tabelle.
  • Wie in 10 veranschaulicht, schlägt die Erfindung in einer Ausführungsform somit einen Indizierungsmechanismus der Prozessoren vor, der ein Zuweisen der Prozessoren ermöglicht, sodass sie nur auf Teile der Daten-Chunks auf verschiedenen Schichten einwirken. Bei jedem Zeitschrittübergang wird ein Teil der Prozessoren so neu zugewiesen, dass das Zuweisen von Prozessoren zu Daten-Chunks unverändert bleibt, was eine unbegrenzte Abfolge von Übergängen ermöglicht, während dabei alle Prozessoren gleichbleibend ständig beschäftigt gehalten werden.
  • Wie für einen Fachmann verständlich sein wird, zeigen Aspekte der vorliegenden Erfindung nur eine der Möglichkeiten des Umsetzens des Grundgedankens der hierarchischen Anordnung, die hier vorgeschlagen wird, und dies ist nicht als auf die obigen Parameter beschränkt gedacht. Ein Fachmann kann die obigen Gedanken auf verschiedene Anordnungen verallgemeinern. Insbesondere brauchen der hierarchische Baum und die entsprechenden ganzzahligen Darstellungen nicht notwendigerweise binär zu sein, und sie können ohne Weiteres auf die Basis k für ein beliebiges ganzzahliges k >= 3 verallgemeinert werden. Eine ternäre Anordnung (k = 3) würde beispielsweise bedeuten, dass dann, wenn auf Schicht 0 n Prozessoren benötigt werden, um eine Funktion auf n Chunks zu bewerten, n/3 statt n/2 Prozessoren auf der nächsten Schicht arbeiten können, dann n/9 statt n/4 usw. Das Zuweisen von Prozessoren am Übergang von Zeitschritt i zu i + 1 kann dann dementsprechend auf der Darstellung ihrer Indizes gemäß einer ternären statt einer binären Basis beruhen.
  • Wie für einen Fachmann verständlich sein wird, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte miteinander verbindet und die hier alle allgemein als ”Schaltkreis”, ”Modul” oder ”System” bezeichnet werden können. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medium (Medien) verkörpert ist, auf denen ein computerlesbarer Programmcode verkörpert ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich beispielsweise und ohne darauf beschränkt zu sein um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination davon handeln. Zu konkreteren Beispielen (einer keinen Anspruch auf Vollständigkeit erhebenden Liste) für das computerlesbare Speichermedium würden die folgenden gehören: 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 Compactdisc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Befehlen enthalten oder speichern kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, unter anderem und ohne darauf beschränkt zu sein drahtlos, drahtgebunden, mittels Lichtwellenleiterkabel, HF usw. oder jeder geeigneten Kombination der Vorstehenden. Computerprogrammcode zum Ausführen von Funktionen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java®, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als unabhängiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, darunter ein Nahbereichsnetzwerk (LAN) oder ein Weitbereichsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Verwendung eines Internet-Dienstanbieters). Java und alle auf Java beruhenden Marken und Logos sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen.
  • Aspekte der vorliegenden Erfindung werden oben mit Bezug zu Ablaufplan-Veranschaulichungen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplan-Veranschaulichungen und/oder Blockschaubilder und Kombinationen der Blöcke in den Ablaufplan-Veranschaulichungen und/oder Blockschaubildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungsvorrichtungen bereitgestellt werden, sodass eine Maschine in der Weise hervorgebracht wird, dass die Befehle, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen schaffen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder festgelegt sind.
  • Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer oder andere programmierbare Datenverarbeitungs-Vorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die auf dem computerlesbaren Medium gespeicherten Befehle ein Herstellungsprodukt hervorbringen, das Befehle aufweist, die Funktionen/Handlungen umsetzen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder festgelegt sind. Die Computerprogrammbefehle können auch in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden und veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, den anderen programmierbaren Vorrichtungen oder anderen Einheiten ausgeführt wird, um einen per Computer umgesetzten Prozess in der Weise hervorzubringen, dass die Befehle, die auf einem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder festgelegt sind.
  • Die Ablaufpläne und Blockschaltbilder in den obigen Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder Blockschaltbildern ein Modul, Segment oder den Teil eines Codes darstellen, das bzw. der einen oder mehrere ausführbare Befehle zur Umsetzung der festgelegten logischen Funktion(en) umfasst. Es sollte auch beachtet werden, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen als der in den Figuren angegebenen Reihenfolge stattfinden könnten. Beispielsweise können je nach betroffener Funktionalität zwei als aufeinander folgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden. Es wird auch angemerkt, dass jeder Block der Blockschaubilder und/oder Ablaufplan-Veranschaulichungen und Kombinationen der Blöcke in Blockschaubildern und/oder der Ablaufplan-Veranschaulichungen durch Hardware-Spezialsysteme umgesetzt werden können, die die festgelegten Funktionen oder Handlungen durchführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen.
  • Zwar wurden eine oder mehr bevorzugte Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht, für den Fachmann sollte jedoch selbstverständlich sein, dass Abänderungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne dass dadurch der Geltungsbereich der vorliegenden Erfindung, wie er in den folgenden Ansprüchen dargelegt ist, verlassen würde.

Claims (20)

  1. Verfahren zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten, um eine Aufgabe an einer Abfolge von Daten-Chunks durch eine Prozessoreinheit in einer Computerumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das Verfahren aufweist: Aufteilen der Gruppe aus der Vielzahl von Parallelprozessoren in unverbundene Teilgruppen gemäß Indizes der Gruppe aus der Vielzahl von Parallelprozessoren, sodass eine Größe jeder der unverbundenen Teilgruppen einer Anzahl aus der Vielzahl von Prozessoren entspricht, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen sind; Zuweisen jedes aus der Vielzahl von Prozessoren zu einer anderen aus der Vielzahl von Schichten in einem anderen der Daten-Chunks gemäß dem Aufteilen, sodass jeder aus der Vielzahl von Prozessoren beschäftigt ist und jeder der Daten-Chunks vollständig innerhalb einer Anzahl von Zeitschritten verarbeitet wird, die gleich der Anzahl aus der Vielzahl von Schichten ist; und Entwerfen einer Übergangsfunktion von den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem der Zeitschritte zu den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem folgenden Zeitschritt, wobei die Übergangsfunktion mit dem Zuweisen im Einklang steht.
  2. Verfahren nach Anspruch 1, wobei die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen sind, kleiner ist als die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer vorhergehenden aus der Vielzahl von Schichten zugewiesen sind.
  3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem weiterhin der Übergangsfunktion eine Vielzahl von Randbedingungen auferlegt wird.
  4. Verfahren nach Anspruch 3, wobei die Vielzahl von Randbedingungen Beschränken von mindestens einem aus der Vielzahl von Prozessoren in jedem der Zeitschritte auf dieselbe aus der Vielzahl von Schichten beinhaltet, die zum Verarbeiten der Daten-Chunks zugewiesen wird.
  5. Verfahren nach Anspruch 3, wobei die Vielzahl von Randbedingungen Beschränken der Gruppe aus der Vielzahl von Parallelprozessoren, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen werden, darauf beinhaltet, dass es sich um eine Teilgruppe der Gruppe aus der Vielzahl von Parallelprozessoren handelt, die dem Verarbeiten der Daten-Chunks in einer vorhergehenden aus der Vielzahl von Schichten zugewiesen sind.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Anzahl aus der Vielzahl von Parallelprozessoren, die verfügbar sind, gleich n = 2d – 1 ist, wobei d die Anzahl aus der Vielzahl von Schichten ist, und die Anzahl aus der Vielzahl von Prozessoren, die Ebene 0 zugewiesen sind, n = 2d – 1 ist, und die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten, welche nicht die erste ist, zugewiesen sind, kleiner ist als die Hälfte der Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer vorhergehenden aus der Vielzahl von Schichten zugewiesen sind.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei es sich bei der Vielzahl von Parallelprozessoren um nach den ganzen Zahlen 0 bis 2n – 2 indizierte Gruppen handelt, die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten von Daten-Chunks in einer aus der Vielzahl von Schichten mit Index i für i = 0, 1, ..., d – 1 zugewiesen sind, gleich n/2i ist und die Indizes aus der Vielzahl von Parallelprozessoren von n/2i gleich n/2i Anzahlen sind, die eine Standard-Binärdarstellung der Länge (d + 1) aufweisen, die auf 0, gefolgt von i Einsen, endet.
  8. Verfahren nach einem der Ansprüche 1 bis 6, wobei es sich bei der Vielzahl von Parallelprozessoren um nach den ganzen Zahlen 0 bis 2n – 1 indizierte Mengen handelt, die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten von Daten-Chunks in einer aus der Vielzahl von Schichten mit index i für i = 0, 1, ..., d – 1 zugewiesen sind, gleich n/2i ist und die Indizes aus der Vielzahl von Parallelprozessoren von n/2i gleich n/2i Anzahlen sind, die eine Standard-Binärdarstellung der Länge (d + 1) aufweisen, die auf 1, gefolgt von i Nullen, endet.
  9. Verfahren nach einem der vorhergehenden Ansprüche, das weiterhin in Verbindung mit dem Entwerfen Wählen der Übergangsfunktion als Anwenden einer zyklischen Verschiebung um mindestens ein Bit nach links auf die Standard-Binärdarstellung der Indizes der Vielzahl von Prozessoren beinhaltet.
  10. System zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten, um eine Aufgabe an einer Abfolge von Daten-Chunks in einer Computerumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das System aufweist: eine in der Computerumgebung funktionsfähige Prozessoreinheit, wobei die Prozessoreinheit geeignet ist zum: Aufteilen der Gruppe aus der Vielzahl von Parallelprozessoren in unverbundene Teilgruppen gemäß Indizes der Gruppe aus der Vielzahl von Parallelprozessoren, sodass eine Größe jeder der unverbundenen Teilgruppen einer Anzahl aus der Vielzahl von Prozessoren entspricht, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen sind, Zuweisen jedes aus der Vielzahl von Prozessoren zu einer anderen aus der Vielzahl von Schichten in einem anderen der Daten-Chunks gemäß dem Aufteilen, sodass jeder aus der Vielzahl von Prozessoren beschäftigt ist und jeder der Daten-Chunks vollständig innerhalb einer Anzahl von Zeitschritten verarbeitet wird, die gleich der Anzahl aus der Vielzahl von Schichten ist, und Entwerfen einer Übergangsfunktion von den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem der Zeitschritte zu den Indizes der Gruppe aus der Vielzahl von Parallelprozessoren in einem folgenden Zeitschritt, wobei die Übergangsfunktion mit dem Zuweisen im Einklang steht.
  11. System nach Anspruch 10, wobei die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen sind, kleiner ist als die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer vorhergehenden aus der Vielzahl von Schichten zugewiesen sind.
  12. System nach einem der Ansprüche 10 oder 11, wobei die Prozessoreinheit weiterhin in der Lage ist, der Übergangsfunktion eine Vielzahl von Randbedingungen aufzuerlegen.
  13. System nach einem der Ansprüche 10 bis 12, wobei die Vielzahl von Randbedingungen Beschränken von mindestens einem aus der Vielzahl von Prozessoren in jedem der Zeitschritte auf dieselbe aus der Vielzahl von Schichten beinhaltet, die zum Verarbeiten der Daten-Chunks zugewiesen wird.
  14. System nach Anspruch 12, wobei die Vielzahl von Randbedingungen Beschränken der Gruppe aus der Vielzahl von Parallelprozessoren, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten zugewiesen werden, darauf beinhaltet, dass es sich um eine Teilgruppe der Gruppe aus der Vielzahl von Parallelprozessoren handelt, die dem Verarbeiten der Daten-Chunks in einer vorhergehenden aus der Vielzahl von Schichten zugewiesen sind.
  15. System nach einem der Ansprüche 10 bis 14, wobei die Anzahl aus der Vielzahl von Parallelprozessoren, die verfügbar sind, n = 2d – 1 ist, worin d die Anzahl aus der Vielzahl von Schichten ist, die Anzahl aus der Vielzahl von Ebene 0 zugewiesenen Prozessoren n = 2d – 1 ist und die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten der Daten-Chunks in einer aus der Vielzahl von Schichten, welche nicht die erste ist, zugewiesen sind, die Hälfte der Anzahl aus der Vielzahl von Prozessoren ist, die dem Verarbeiten der Daten-Chunks in der vorhergehenden aus der Vielzahl von Schichten zugewiesen sind.
  16. System nach einem der Ansprüche 10 bis 14, wobei es sich bei der Vielzahl von Parallelprozessoren um nach den ganzen Zahlen 0 bis 2n – 2 indizierte Gruppen handelt, die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten von Daten-Chunks in einer aus der Vielzahl von Schichten mit Index i, für i = 0, 1, ..., d – 1, zugewiesen sind, gleich n/2i ist und die Indizes aus der Vielzahl von Parallelprozessoren von n/2i gleich n/2i Anzahlen sind, die eine Standard-Binärdarstellung der Länge (d + 1) aufweisen, die auf 0, gefolgt von i Einsen, endet.
  17. System nach einem der Ansprüche 10 bis 14, wobei es sich bei der Vielzahl von Parallelprozessoren um nach den ganzen Zahlen 0 bis 2n – 1 indizierte Gruppen handelt, die Anzahl aus der Vielzahl von Prozessoren, die dem Verarbeiten von Daten-Chunks in einer aus der Vielzahl von Schichten mit Index i, für i = 0, 1, ..., d – 1, zugewiesen sind, gleich n/2i ist und die Indizes aus der Vielzahl von Parallelprozessoren von n/2i gleich n/2i Anzahlen sind, die eine Standard-Binärdarstellung der Länge (d + 1) aufweisen, die auf 1, gefolgt von i Nullen, endet.
  18. System nach einem der Ansprüche 10 bis 17, wobei die Prozessoreinheit weiterhin in Verbindung mit dem Entwerfen geeignet ist zum Wählen der Übergangsfunktion als Anwenden einer zyklischen Verschiebung um mindestens ein Bit nach links auf die Standard-Binärdarstellung der Indizes der Vielzahl von Prozessoren.
  19. Computerprogrammprodukt zum vollen Ausnutzen einer Gruppe aus einer Vielzahl von Parallelprozessoren nach einer Vielzahl von Initialisierungsschritten, um eine Aufgabe an einer Abfolge von Daten-Chunks durch eine Prozessoreinheit in einer Computerspeicherumgebung auszuführen, wobei jeder der Daten-Chunks in mehreren Zeitschritten und von einer Vielzahl von Schichten verarbeitet wird, wobei die Vielzahl von Schichten von mindestens einem aus einer Vielzahl von Prozessoren in jedem der Zeitschritte behandelt wird, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung gelesen werden kann, und Speicheranweisungen zum Ausführen eines Verfahrens nach einem der Ansprüche 1 bis 9 durch die Verarbeitungsschaltung.
  20. Computerprogramm, das auf einem computerlesbare Medium gespeichert ist und in einen internen Arbeitsspeicher eines digitalen Computers geladen werden kann, das Softwarecode-Abschnitte aufweist, um, wenn das Programm auf einem Computer ausgeführt wird, das Verfahren nach einem der Ansprüche 1 bis 9 durchzuführen.
DE112013000392.9T 2012-01-30 2013-01-17 Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten Pending DE112013000392T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/361,544 2012-01-30
US13/361,544 US8959522B2 (en) 2012-01-30 2012-01-30 Full exploitation of parallel processors for data processing
PCT/IB2013/050420 WO2013114236A1 (en) 2012-01-30 2013-01-17 Full exploitation of parallel processors for data processing

Publications (1)

Publication Number Publication Date
DE112013000392T5 true DE112013000392T5 (de) 2014-09-04

Family

ID=48871506

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000392.9T Pending DE112013000392T5 (de) 2012-01-30 2013-01-17 Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten

Country Status (4)

Country Link
US (4) US8959522B2 (de)
CN (1) CN104081378B (de)
DE (1) DE112013000392T5 (de)
WO (1) WO2013114236A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778268A (zh) * 2012-10-24 2014-05-07 鸿富锦精密工业(深圳)有限公司 文件自动分类方法及系统
US10591638B2 (en) * 2013-03-06 2020-03-17 Exxonmobil Upstream Research Company Inversion of geophysical data on computer system having parallel processors
US10509643B2 (en) 2015-08-17 2019-12-17 II Robert Elliott Stanley Data processing with a plane computer
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
CN106445701B (zh) 2016-09-21 2018-01-09 腾讯科技(深圳)有限公司 数据处理方法和装置
CN107341061A (zh) * 2017-07-20 2017-11-10 郑州云海信息技术有限公司 一种数据调度处理方法及装置
CN107992526B (zh) * 2017-11-10 2021-03-23 广州虎牙信息科技有限公司 主播推荐方法、存储设备及计算机设备
CN108763584B (zh) * 2018-06-11 2021-11-02 北京天泽智云科技有限公司 一种风功率曲线散点过滤的方法及其系统
CN111813544A (zh) * 2020-06-19 2020-10-23 华控清交信息科技(北京)有限公司 计算任务的处理方法、装置、调度及管理系统和介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159686A (en) 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
US5991866A (en) * 1992-03-25 1999-11-23 Tm Patents, Lp Method and system for generating a program to facilitate rearrangement of address bits among addresses in a massively parallel processor system
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6065005A (en) 1997-12-17 2000-05-16 International Business Machines Corporation Data sorting
US6088511A (en) * 1998-05-13 2000-07-11 Microsoft Corporation Nested parallel 2D Delaunay triangulation method
AU2003231521A1 (en) 2002-04-26 2003-11-10 Nihon University School Juridical Person Parallel merge/sort processing device, method, and program
WO2008021024A2 (en) 2006-08-13 2008-02-21 Mentor Graphics Corporation Multiprocessor architecture with hierarchical processor organization
WO2011114477A1 (ja) 2010-03-17 2011-09-22 富士通株式会社 階層型マルチコアプロセッサ、マルチコアプロセッサシステム、および制御プログラム

Also Published As

Publication number Publication date
US9448854B2 (en) 2016-09-20
US8959522B2 (en) 2015-02-17
CN104081378A (zh) 2014-10-01
US20130198754A1 (en) 2013-08-01
US20130198753A1 (en) 2013-08-01
US9436511B2 (en) 2016-09-06
US20160224391A1 (en) 2016-08-04
US8959524B2 (en) 2015-02-17
US20150234685A1 (en) 2015-08-20
CN104081378B (zh) 2016-12-28
WO2013114236A1 (en) 2013-08-08

Similar Documents

Publication Publication Date Title
DE112013000392T5 (de) Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE112012003503T5 (de) Skalierbares Deduplizierungssystem mit kleinen Blöcken
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112011101317T5 (de) Optimieren eines Dateisystems für unterschiedliche Typen von Anwendungen in einem Datenverarbeitungs-Cluster unter Verwendung von dynamischer Blockgrössen-Granularität
DE112015000218T5 (de) Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE112013000734T5 (de) Multiplex-Klassifizierung zum Komprimieren von Tabellendaten
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112018001789T5 (de) Systeme und verfahren zum durchführen von datenverarbeitungsoperationen unter verwendung von parallelität variabler grade
DE112015005742B4 (de) Lastadaptiver algorithmus zum packen von daten
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE112019005392T5 (de) Steigern von datenleistung durch transferieren von daten zwischen speicherebenen unter verwendung von arbeitslastmerkmalen
DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
EP2057538B1 (de) Verfahren zur erzeugung eines grössenoptimierten delta-files
DE112016000776T5 (de) Effiziente Durchführung von Einfüge- und Punktabfrage-Operationen in einem Spaltenspeicher
DE112017007865T5 (de) Netzgebundener shuffle-datenspeicher
DE112020005099T5 (de) Konstruktion einer blockvorrichtung
DE112012005635T5 (de) Inkrementelles Modifizieren eines Fehlererkennungscodes
DE112020004801T5 (de) Intelligenter datenpool

Legal Events

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