Title:
METHODEN ZUR SKALIERBAREN ENDPUNKTADRESSIERUNG FÜR PARALLELE ANWENDUNGEN
Kind Code:
T5


Abstract:

Es werden Methoden zum algorithmischen Abbilden logischer Prozesskennungen offenbart, um hochskalierbare Endpunktadressierung in Mehrknotensystemen bereitzustellen, die in der Lage sind, massiv parallel Anwendungen auszuführen. Insbesondere können Knoten, die Interprozesskommunikation mit einem Zielprozess initiieren, einen initiatorseitigen Umwandlungsprozess verwenden, der eine algorithmische Abbildung ausführt, um eine logische Prozesskennung (zum Beispiel einen Rang/ein Processing-Element) in eine physische Zielknotenkennung und eine lokale Zielprozesskennung umzuwandeln. Der initiierende Knoten kann dann Hardware-Fabric eines Mehrknotennetzwerks verwenden, um die Interprozesskommunikation zu einem geeigneten Knoten zu leiten. Ein Knoten kann eine Interprozesskommunikation empfangen und kann einen zielseitigen Umwandlungsprozess in Hardware verwenden, um die virtuelle Zielprozesskennung in eine lokale Prozesskennung für den Knoten umzuwandeln. Der Knoten kann dann eine Operation gemäß der Interprozesskommunikation ausführen, wie zum Beispiel ein Get oder Set gegen einen dem Knoten zugeordneten Speicher. embedded image




Inventors:
Underwood, Keith, Tenn. (Powell, US)
Giefer, Charles, Wash. (Seattle, US)
Addison, David, Wash. (Issaquah, US)
Application Number:
DE112016006026T
Filing Date:
11/25/2016
Assignee:
INTEL CORPORATION (Calif., Santa Clara, US)
International Classes:



Attorney, Agent or Firm:
Samson & Partner Patentanwälte mbB, 80538, München, DE
Claims:
Verfahren zum Durchführen einer Interprozesskommunikation zwischen Knoten eines Mehrknotensystems, wobei das Verfahren Folgendes umfasst:
Empfangen, durch einen Schaltkreis, eines Pakets von einem entfernten Knoten, einschließlich einer virtuellen Zielprozesskennung und mindestens einer Speicheroperation;
Umwandeln, durch den Schaltkreis, der virtuellen Prozesskennung in eine lokale Prozesskennung, die einem lokalen Prozess entspricht; und
Veranlassen, durch den Schaltkreis, dass mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird.

Verfahren nach Anspruch 1, wobei der Schaltkreis eine Netzwerkschnittstellenschaltung umfasst.

Verfahren nach Anspruch 1, wobei das Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird, ferner beinhaltet, dass der Schaltkreis Direct-Memory-Access (DMA) auf einem Speichergerät ausführt.

Verfahren nach Anspruch 1, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner beinhaltet, dass der Schaltkreis eine Karte durchquert, um einen der virtuellen Zielprozesskennung entsprechenden lokalen Prozess zu identifizieren.

Verfahren nach Anspruch 1, wobei das Paket ferner ein Job-Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen eines Knotens zugeordnet ist.

Verfahren nach Anspruch 5, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner beinhaltet:
Zugreifen auf ein Content-Addressable-Memory (CAM) -Gerät, um eine Basisprozessadresse basierend auf dem Job-Tag zu ermitteln; und
Berechnen der lokalen Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Zielprozesskennung.

Verfahren nach Anspruch 5, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner beinhaltet:
Zugreifen auf ein Content-Addressable-Memory (CAM) -Gerät, um eine Basisprozessadresse basierend auf dem Job-Tag zu ermitteln;
Berechnen einer Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Zielprozesskennung; und
Zugreifen auf eine Prozesskennungsverlagerungstabelle, um eine der berechneten Prozesskennung zugeordnete lokale Prozesskennung zu lokalisieren.

Verfahren nach Anspruch 1, wobei die virtuelle Prozesskennung auf einer algorithmischen Abbildung basiert, die mehrere physikalische Prozesse über eine Anzahl N Knoten abbildet.

System, das Folgendes umfasst:
ein erstes Knotengerät, das Folgendes umfasst:
einen Speicher;
eine Steuerung, die mit dem Speicher gekoppelt und dazu ausgelegt ist, mindestens einen lokalen Prozess auszuführen, wobei der mindestens eine lokale Prozess einer Speicherregion und einer lokalen Prozesskennung zugeordnet ist;
einen Schaltkreis, der kommunizierend mit der Steuerung gekoppelt und dazu ausgelegt ist, kommunizierend mit einem Mehrknotennetzwerk gekoppelt zu sein, wobei der Schaltkreis dazu ausgelegt ist:
ein Paket von einem entfernten Knoten über das Mehrknotennetzwerk zu empfangen, wobei das Paket eine virtuelle Prozesskennung und mindestens eine Speicheroperation beinhaltet;
einen lokalen Zielprozess zumindest teilweise durch Umwandeln der virtuellen Prozesskennung in eine dem lokalen Zielprozess entsprechende lokale Prozesskennung zu identifizieren; und
zu veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Zielprozess zugeordnete Speicherregion ausgeführt wird.

System nach Anspruch 9, wobei der Schaltkreis eine Netzwerkschnittstellenschaltung umfasst.

System nach Anspruch 9, wobei das Veranlassen, dass die mindestens eine Speicheroperation gegen die dem lokalen Zielprozess zugeordnete Speicherregion ausgeführt wird, ferner beinhaltet, dass der Schaltkreis Direct-Memory-Access (DMA) auf dem Speicher ausführt.

System nach Anspruch 9, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner beinhaltet, dass der Schaltkreis eine Karte durchquert, um einen der virtuellen Prozesskennung entsprechenden lokalen Prozess zu identifizieren.

System nach Anspruch 9, wobei das Paket ferner ein Job-Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen des ersten Knotengeräts zugeordnet ist.

System nach Anspruch 13, das ferner ein Content-Addressable-Memory (CAM) -Gerät umfasst.

System nach Anspruch 14, wobei der Schaltkreis ferner dazu ausgelegt ist:
auf das CAM-Gerät zuzugreifen, um eine Basisprozessadresse basierend auf dem Job-Tag zu ermitteln; und
den lokalen Zielprozess durch Summieren der Basisprozessadresse und der virtuellen Prozesskennung zu identifizieren.

System nach Anspruch 14, wobei der Schaltkreis ferner dazu ausgelegt ist:
auf das CAM-Gerät zuzugreifen, um eine Basisprozessadresse basierend auf dem Job-Tag zu ermitteln; und
eine Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Prozesskennung zu berechnen; und
den lokalen Zielprozess durch Zugreifen auf eine Prozesskennungsverlagerungstabelle in dem Speicher zu identifizieren, um die der berechneten Prozesskennung zugeordnete lokale Prozesskennung zu lokalisieren.

System nach Anspruch 9, wobei die virtuelle Prozesskennung auf einer algorithmischen Abbildung basiert, die mehrere physikalische Prozesse über eine Anzahl N Knoten abbildet.

System nach Anspruch 9, wobei das Mehrknotennetzwerk mehrere Knotengeräte beinhaltet, und wobei das Mehrknotennetzwerk Hardware-Fabric in einer All-to-All-Konfiguration beinhaltet, sodass jeder Knoten einen Pfad zu allen anderen Knoten hat.

Nicht flüchtiges computerlesbares Medium mit mehreren darauf kodierten Anweisungen, die, wenn von mindestens einem Prozessor ausgeführt, veranlassen, dass ein Prozess ausgeführt wird, wobei der Prozess Folgendes umfasst:
Empfangen eines Pakets von einem entfernten Knoten über ein Mehrknotennetzwerk, wobei das Paket eine virtuelle Zielprozesskennung und mindestens eine Speicheroperation beinhaltet;
Umwandeln der virtuellen Prozesskennung in eine lokale Prozesskennung, die einem lokalen Prozess entspricht; und
Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird.

Computerlesbares Medium nach Anspruch 19, wobei die Speicheroperation eine Get- oder Set-Operation ist.

Computerlesbares Medium nach Anspruch 19, wobei das Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird, ferner beinhaltet, dass der Schaltkreis dazu veranlasst wird, Direct-Memory-Access (DMA) auf einem Speichergerät auszuführen.

System, das Folgendes umfasst:
einen Speicher;
Mittel zum Empfangen eines Pakets von einem entfernten Knoten über ein Mehrknotennetzwerk, wobei das Paket eine virtuelle Prozesskennung und mindestens eine Speicheroperation beinhaltet;
Mittel zum Identifizieren eines lokalen Zielprozesses zumindest teilweise durch Umwandeln der virtuellen Prozesskennung in eine dem lokalen Zielprozess entsprechende lokale Prozesskennung; und
Mittel zum Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Zielprozess zugeordnete Speicherregion ausgeführt wird.

System nach Anspruch 22, das ferner Mittel zum Durchqueren einer Karte umfasst, um einen der virtuellen Prozesskennung entsprechenden lokalen Prozess zu identifizieren.

System nach Anspruch 22, wobei das Paket ferner ein Job-Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen zugeordnet ist.

System nach Anspruch 24, das ferner Folgendes umfasst:
Mittel zum Ermitteln einer Basisprozessadresse basierend auf dem Job-Tag; und
Mittel zum Identifizieren des lokalen Zielprozesses durch Summieren der Basisprozessadresse und der virtuellen Prozesskennung.

Description:
GEBIET

Die vorliegende Offenbarung ist allgemein auf die Kommunikation zwischen Knoten eines Mehrknotennetzwerks und insbesondere auf Methoden zur skalierbaren Endpunktadressierung in einem Mehrknotennetzwerk zum Ausführen paralleler Anwendungen gerichtet.

REGIERUNGSRECHTE

Diese Erfindung wurde mit Unterstützung der U. S.-Regierung unter der vom Verteidigungsministerium erteilten Vertragsnummer H98230-13-D-0124 gemacht. Die Regierung hat bestimmte Rechte an dieser Erfindung.

HINTERGRUND

Die Verwendung einer großen Anzahl von Multicore-Prozessoren, kombiniert mit Zentralisierungsmethoden, nimmt bei Anwendungen, die rechenintensive Aufgaben aufweisen, weiterhin an Popularität zu. Zum Beispiel sind Systeme, die mit einer großen Anzahl von nahe beieinander angeordneten Rechenknoten implementiert und über Hochgeschwindigkeitsverbindungen gekoppelt sind, für Anwendungen wie Quantenmechanik, Wettervorhersage, Klimaforschung, Öl- und Gasexploration und molekulare Modellierung, um nur einige zu nennen, besonders gut geeignet. Diese Mehrknotensysteme können um viele Größenordnungen größere Verarbeitungskapazität als die eines einzelnen Computers bereitstellen. Diese Lücke wächst jedes Jahr exponentiell. Zum Beispiel haben einige Mehrknotensysteme Verarbeitungskapazität (allgemein bewertet durch Floating-Point-Operations-per-Second - FLOP) im Petaflops-Bereich.

Dieses Streben nach erhöhter Leistung hat zu Ansätzen geführt, die massiv parallele Systeme mit einer großen Anzahl von Rechenknoten beinhalten, wobei jeder Knoten einen oder mehrere Prozessoren, Speicher und eine Schnittstellenschaltung, die den Knoten mit einem Mehrknotennetzwerk verbindet, bereitstellt. Die Verarbeitungskapazität eines gegebenen Mehrknotennetzwerks kann basierend auf dem Hinzufügen zusätzlicher Knoten skalieren. Wenn sich jedoch Mehrknotensysteme an Exascale, oder eine Milliarde Milliarden Berechnungen pro Sekunde, annähern, verursacht die Komplexität des Ansprechens einer großen Anzahl von Knoten zahlreiche nicht unbedeutende Herausforderungen.

Figurenliste

  • 1 ist ein Blockdiagramm eines beispielhaften Mehrknotennetzwerks mit mehreren miteinander verbundenen Knoten, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 2 ist ein Blockdiagramm eines beispielhaften Knotens des Mehrknotennetzwerks von 1, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 3 veranschaulicht einen beispielhaften Prozessablauf zum Initiieren von Interprozesskommunikationen zwischen Knoten des Mehrknotennetzwerks von 1, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 4 zeigt ein beispielhaftes Verfahren zum Initiieren einer Interprozesskommunikation, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 5 zeigt ein beispielhaftes Verfahren zum Empfangen und Bedienen einer Interprozesskommunikation, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 6 zeigt einen beispielhaften Prozess zum Ausführen einer zielseitigen Umwandlung zur Verwendung in dem beispielhaften Verfahren von 5, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • Die 7A-7C zeigen gemeinsam einen anderen beispielhaften Prozess zum Ausführen einer zielseitigen Umwandlung zur Verwendung in dem beispielhaften Verfahren von 5, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • Die 8A-8B zeigen gemeinsam noch einen anderen beispielhaften Prozess zum Ausführen einer zielseitigen Umwandlung zur Verwendung in dem beispielhaften Verfahren von 5, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 9 veranschaulicht ein Datenverarbeitungssystem, das dazu ausgelegt ist, verschiedene hierin offenbarte Prozesse auszuführen, gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung.

Diese und andere Merkmale der vorliegenden Ausführungsformen werden durch Lesen der folgenden ausführlichen Beschreibung zusammen mit den hierin beschriebenen Figuren besser verstanden. Die zugehörigen Zeichnungen sind nicht dazu beabsichtigt, maßstabsgetreu gezeichnet zu sein. In den Zeichnungen ist jede identische oder nahezu identische Komponente, die in verschiedenen Figuren veranschaulicht ist, durch eine gleiche Zahl dargestellt. Zum Zweck der Klarheit kann nicht jede Komponente in jeder Zeichnung gekennzeichnet sein.

AUSFÜHRLICHE BESCHREIBUNG

High Performance Computing (HPC) -Anwendungen, die beispielsweise durch Verwenden von Programmiermodellen, wie zum Beispiel Message-Passing-Interface (MPI) und OpenSHMEM, implementiert werden, verwenden allgemein eine große Anzahl von miteinander verbundenen Knoten. Die miteinander verbundenen Knoten können ein sogenanntes „Fabric“ bilden, wobei jeder Knoten mit jedem anderen Knoten über ein Netzwerk kommunizierend gekoppelt ist. Jeder Knoten kann einen oder mehrere Prozessoren bereitstellen, wobei jeder Prozessor eine Anzahl N von Verarbeitungskernen aufweist. Während der Initialisierung können HPC-Anwendungen eine vordefinierte Anzahl von Knoten und insbesondere eine Anzahl von Prozessoren oder Prozessorkernen anfordern, um einen Prozess auszuführen, der einer gegebenen parallelen Anwendung zugeordnet ist, die auch als ein Job bezeichnet werden kann. Während der Laufzeit einer parallelen Anwendung können Knoten anstreben, miteinander zu kommunizieren, wobei diese Kommunikation allgemein als Interprozesskommunikation bezeichnet wird. HPC-Anwendungen können ihre zugewiesenen Prozesse des Mehrknotennetzwerks als einen zusammenhängenden Bereich von logischen Kennungen (zum Beispiel 0 ... N-1) betrachten. Zu diesem Zweck entspricht eine logische Kennung allgemein einem einzelnen Prozess, der auf einem Knoten ausgeführt wird. Ein oder mehrere Kerne des Knotens können jeden Prozess ausführen und können mindestens einen Hardware-Thread pro Prozess bereitstellen, obwohl mehrere Prozesse auf demselben Hardware-Thread geplant werden können. Im Kontext von MPI werden diese logischen Kennungen beispielsweise allgemein als Ränge bezeichnet. In ähnlicher Weise werden diese Kennungen im Kontext von OpenSHMEM allgemein als Processing-Elements (PE) bezeichnet.

Die bestimmten einer gegebenen parallelen Anwendung zugewiesenen Knoten können sich jedoch nicht notwendigerweise als physisch zusammenhängender Bereich von Knoten aus der Sicht des Mehrknotennetzwerks manifestieren. Zum Beispiel kann eine parallele Anwendung einen nicht zusammenhängenden Bereich von physischen Knoten haben, zum Beispiel physische Knoten 1, 7, 8 und 9. Zu diesem Zweck verwenden Ansätze zur Kommunikation zwischen Knoten in Mehrknotennetzwerken und insbesondere jene, die HPC-Anwendungen ausführen, eine Umwandlungsroutine, die eine logische Knotenkennung in eine durch das Netzwerk adressierbare oder anderweitig leitbare physische Zielknotenkennung umwandelt, und eine Zielprozesskennung, die von dem physischen Zielknoten verwendet werden kann, um eine Operation gemäß der Interprozesskommunikation auszuführen. Zum Beispiel beinhalten einige beispielhafte Operationen Speicheroperationen, wie zum Beispiel Gets/Sets, die versuchen, Daten (oder eine Referenz) von einem dem Zielprozess zugeordneten Speicher abzurufen, bzw. Daten in den Speicher zu schreiben.

Einige Ansätze zur Umwandlung beinhalten eine Tabellensuche an dem Knoten, der die Interprozesskommunikation initiiert. Zum Beispiel können Knoten eine oder mehrere Rangumwandlungstabellen beinhalten, die sich als eine sogenannte „vollständige Tabelle“ manifestieren können. In Implementierungen vollständiger Tabellen wird jeder Rang/jedes PE dargestellt und beinhaltet eine entsprechende physische Knotenadresse. Solche Tabellen sind jedoch proportional zu der Anzahl von Rängen/PE, die in dem Mehrknotennetzwerken vorhanden sind, dimensioniert, was unglücklicherweise Skalierbarkeit beschränken kann. Dies liegt daran, dass eine Umwandlungstabelle mit beispielsweise 1 Million Rängen/PE abhängig von einer bestimmten Implementierung, wie zum Beispiel einem Netzwerk, das eine lokale 16-Bit-Kennung (local identifier - LID) und 16-Bit-Prozesskennung (process identifier - PID) verwendet, etwa 4 Megabyte Speicherplatz benötigt, um jeden Rang/jede PE anzusprechen. Für Schnittstellenschaltungen von Knoten, die diese Tabelle implementieren können, ist es daher erforderlich, genügend Speicher zu haben, um die Tabellensuche aufzunehmen. Zusätzlich können Zugriffe auf „vollständige Tabellen“ während der Suche aufgrund eines „Cache-Fehltreffers“ eine erhebliche Zeit beanspruchen, da ein Zugriffsmuster in die Tabelle zufällig auf große Abschnitte der Tabelle zugreifen kann.

Somit werden gemäß einer Ausführungsform der vorliegenden Offenbarung Methoden zum algorithmischen Abbilden von logischen Prozesskennungen (zum Beispiel Rängen/PE) offenbart, um Systeme mit hochskalierbaren Knotenkonfigurationen bereitzustellen. Insbesondere können Knoten, die Interprozesskommunikation mit einem Zielprozess initiieren, einen initiatorseitigen Umwandlungsprozess verwenden, der eine algorithmische Abbildung ausführt, um eine logische Prozesskennung (zum Beispiel einen Rang/eine PE) in eine physische Zielknotenkennung und eine virtuelle Zielprozesskennung umzuwandeln. Der initiierende Knoten kann dann Hardware-Fabric eines Mehrknotennetzwerks verwenden, um die Interprozesskommunikation zu einem geeigneten Knoten zu leiten. Ein Knoten kann eine Interprozesskommunikation empfangen und kann einen zielseitigen Umwandlungsprozess verwenden, um die virtuelle Zielprozesskennung in eine lokale oder physische Prozesskennung für den Knoten umzuwandeln. Der Knoten kann dann eine Operation gemäß der Interprozesskommunikation ausführen, wie zum Beispiel ein Get oder Set gegen einen dem lokalen Prozess zugeordneten Speicherbereich. Der initiatorseitige Umwandlungsprozess und der zielseitige Umwandlungsprozess können vorteilhafterweise innerhalb der Hardware des initiierenden Knotens bzw. des Zielknotens abhängig von einer angestrebten Konfiguration ausgeführt werden.

Detaillierter kann ein Knoten, der eine Interprozesskommunikation mit einem Zielprozess initiiert, eine logische Prozesskennung in eine physische Zielknotenkennung und eine virtuelle Zielprozesskennung für den physischen Zielknoten umwandeln. In einigen Fällen beinhaltet dies Hardware des initiierenden Knotens zum Ausführen einer Berechnung, um eine physische Zielknotenkennung und eine virtuelle Prozesskennung basierend auf einer Zerlegung eines zugewiesenen Ränge-/PE-Raums abzuleiten, wobei die Ränge/PE für eine gegebene parallele Anwendung über N Knoten, die einer bestimmten parallelen Anwendung zugeordnet sind, abgebildet sein können. Diese Umwandlung kann präzise als initiatorseitige Umwandlung bezeichnet werden. Die algorithmische Abbildung kann abhängig von der Implementierung gestreifte, geblockte, gefaltete, Hilbert-Raumfüllkurven oder andere berechenbare algorithmische Abbildungen beinhalten. Die Hardware des Knotens kann dann die physische Zielknotenkennung zusammen mit Fabric-Hardware des Mehrknotennetzwerks verwenden, um eine Interprozesskommunikation, die die berechnete virtuelle Zielprozesskennung beinhaltet, zu dem geeigneten physischen Knoten zu leiten.

Andererseits kann ein Knoten, der die Interprozesskommunikation empfängt, einen bestimmten lokalen mit der Interprozesskommunikation verbundenen Prozess identifizieren, indem er einen zielseitigen Umwandlungsprozess verwendet, der die mit der Interprozesskommunikation empfangene virtuelle Zielprozesskennung in eine lokale Prozesskennung umwandelt. In einigen Fällen beinhaltet der zielseitige Umwandlungsprozess das Verwenden einer Tabellensuche, wobei alle gegenwärtig zugewiesenen Ränge/PE des Knotens einen entsprechenden Eintrag beinhalten und durch ihre zugeordnete virtuelle Prozesskennung indiziert werden.

In anderen Fällen umfasst der zielseitige Umwandlungsprozess das Zugreifen auf ein Content-Addressable-Memory (CAM) -Gerät, wobei der CAM einen Suchschlüssel eines Jobs und ein Suchergebnis, das eine physische Prozessbasisadresse beinhaltet, aufweist. Es ist darauf hinzuweisen, dass Implementierungen von Programmiermodellen, wie zum Beispiel MPI, Metadaten bereitstellen können, wobei jedes Paket ein Job-Tag beinhaltet. So kann das Job-Tag verwendet werden, um eine physische Basisprozessadresse durch Verwenden des CAM zu ermitteln. In dieser Ausführungsform beinhaltet jeder Job einen zusammenhängenden Bereich von Prozesskennungen, beginnend mit der Basisadresse. Somit kann der Knoten die virtuelle Zielprozesskennung zu der aus der Tabelle abgerufenen Basisadresse hinzufügen, um eine physische Prozessadresse zu berechnen. In noch anderen Fällen beinhaltet der zielseitige Umwandlungsprozess das Verwenden einer Prozessverlagerungstabelle zusätzlich zum Zugreifen auf einen CAM, um eine Basisprozessadresse zu bestimmen, wie oben diskutiert. In diesen Fällen wird die Prozessadresse, die sich aus dem Summieren der Basisprozessadresse mit der virtuellen Zielprozesskennung, die mit der Interprozesskommunikation empfangen wurde, ergibt, in Kombination mit einer Verlagerungstabelle verwendet. Die Verlagerungstabelle kann eine Vielzahl von Prozesskennungen (zum Beispiel durch Verwenden der Basisprozessadresse berechnet) zu einer entsprechenden physischen Prozesskennung abbilden. Es ist darauf hinzuweisen, dass es dies einem flexiblen, nicht zusammenhängenden Bereich von Prozesskennungen erlaubt, einen bestimmten Job/eine bestimmte parallele Anwendung abzubilden. Dieser Ansatz kann insbesondere gut für ein Szenario geeignet sein, das mehrere parallele Anwendungen beinhaltet, die Ressourcen zuweisen und freigeben, sodass nicht zusammenhängende Bereiche von Prozessen für nachfolgende Verwendung verfügbar bleiben. Es ist darauf hinzuweisen, dass ein Mehrknotensystem jedes der oben genannten Umwandlungsschemata implementieren kann und eine Schnittstelle bereitstellen kann, die es erlaubt, dass eine bestimmte Implementierung beispielsweise basierend auf einer Benutzereingabe ausgewählt wird.

Im Licht dieser Offenbarung werden zahlreiche Vorteile gegen andere Ansätze zur Endpunktadressierung in Mehrknotennetzwerken offensichtlich. Zum Beispiel kann durch Vermeiden eines tabellenbasierten Schemas an einem initiierenden Knoten eine große Anzahl von Prozessen (Rängen/PE) ansprechbar sein, ohne dass eine lokal gespeicherte Tabelle Speicher und andere Knotenressourcen verbraucht. Dies wird teilweise durch algorithmisches Berechnen einer virtuellen Zielprozesskennung und Transportieren derselben über das Mehrknotennetzwerk zu einem geeigneten Knoten erreicht. Man stelle sich beispielsweise vor, N ist die Größe des Knotenraums und P ist die Größe des Prozessraums pro Knoten. Verschiedene hierin offenbarte Ausführungsformen ermöglichen einen Statusraum, der nicht größer als N+P pro Knoten ist; anstelle von N*P, das von anderen Ansätzen an jedem Knoten verwendet wird. Wenn sich P erhöht, zum Beispiel basierend darauf, dass Knoten dazu ausgelegt sind, immer mehr Verarbeitungskerne/Prozesse bereitzustellen, kann dies Statuseinsparungen von mindestens zwei Größenordnungen zur Folge haben. In einem allgemeineren Sinn ermöglicht es die algorithmische Abbildung einem leichtgewichtigen, hocheffizienten Satz von Anweisungen, logische Kennungen in zugeordnete physische/lokale Kennungen umzuwandeln, ohne das notwendigerweise Verwenden einer Speichersuche. Somit können Aspekte und Ausführungsformen hierin einen skalierbaren Umwandlungsmechanismus bereitstellen, der in der Lage ist, bis zu 8 Millionen und mehr logische Prozesse (zum Beispiel Ränge/PE) durch Verwenden einer relativ kleinen initiatorseitigen Tabelle (zum Beispiel ca. 256 Kilobyte) und zielseitigen Tabelle (zum Beispiel ca. 256 Byte) anzusprechen, und können die Umwandlung auf Fabric-Hardwareschnittstellen abladen, um die normalerweise mit großen Mehrknotensystemen verbundenen Latenzen zu minimieren oder anderweitig abzumildern.

Während auf HPC-Anwendungen konkret Bezug genommen wird, ist diese Offenbarung nicht dazu beabsichtigt, in dieser Hinsicht beschränkt zu sein. Zum Beispiel können Knoten Standard-Datenverarbeitungssysteme umfassen, wie zum Beispiel Server-Computer, die für Nicht-HPC-Anwendungen kommerziell verfügbar sind (zum Beispiel Datenspeicher, E-Mail-Server, Domain-Controller, usw.). Somit muss das Mehrknotennetzwerk nicht unbedingt einen sogenannten „Supercomputer“ umfassen, der mit Höchstleistungsrechenknoten konfiguriert ist. Darüber hinaus liegen sowohl allgemeine Datenzentrumanwendungen, als auch spezifische Datenzentrumanwendungen innerhalb des Umfangs dieser Offenbarung. Zum Beispiel beinhalten universelle Datenzentren allgemein eine Infrastruktur, die ein einzelnes Unternehmen mit einer breiten Vielfalt von Anwendungen, oder einen Informationstechnologie (IT) -Anbieter, der viele Kunden bedient, unterstützt. Andererseits beinhalten spezifische Datenzentren allgemein universitäre und militärische Forschung, wissenschaftliche Laboratorien, Finanzinstitute und Suchmaschinenanbieter, um nur einige zu nennen. Spezifische Datenzentren implementieren allgemein spezifische Nutzungsmuster und sind insbesondere gut für eine hochskalierbare Architektur geeignet, die auf einen einzigen Zweck oder eine anderweitig beschränkte Anzahl von Zwecken zugeschnitten ist. In jedem solcher Fälle sind die Methoden zur Endpunktadressierung in hierin offenbarten Mehrknotennetzwerken gleichermaßen sowohl auf Datenzentren mit allgemeinem, als auch mit spezifischem Zweck anwendbar.

Nun Bezug nehmend auf die Figuren, zeigt 1 ein Mehrknotennetzwerk 100, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie gezeigt, ist jeder der Knoten 102-1 bis 102-6 über Pfade 101 oder Verbindungen kommunizierend miteinander verbunden. Das Mehrknotennetzwerk 100 kann auch präzise als ein Fabric-System mit einer All-To-All-Konfiguration bezeichnet werden, wobei jeder Knoten einen Knotenpfad zu allen anderen Knoten hat. Es ist darauf hinzuweisen, dass das Mehrknotennetzwerk 100 in einer stark vereinfachten Form veranschaulicht ist. Ebenso liegen andere Knotentopologien innerhalb des Umfangs dieser Offenbarung, und die beispielhafte Ausführungsform von 1 ist nicht dazu beabsichtigt, den Umfang dieser Offenbarung zu beschränken. Das Mehrknotennetzwerk 100 kann eine Anzahl N von Knoten beinhalten und ist nicht notwendigerweise auf sechs Knoten, wie gezeigt, beschränkt. Zum Beispiel kann das Mehrknotennetzwerk 100 tausende von Knoten oder mehr (zum Beispiel 1Mio+) beinhalten, abhängig von einer angestrebten Konfiguration.

In einer Ausführungsform kann jeder der Pfade 101 zugehörige vernetzende Schalteinrichtungen, wie zum Beispiel Netzwerkschalter, Router und andere Hochgeschwindigkeitsverbindungen, beinhalten. Zum Beispiel können die Pfade 101 eine Switched-Fabric- oder Switching-Fabric-Netzwerktopologie bilden, in der jeder Knoten über einen oder mehrere Netzwerkschalter mit dem Mehrknotennetzwerk 100 kommunizierend gekoppelt ist. Alternativ oder zusätzlich zu Switched-Fabric können sich ein oder mehrere Pfade auch physisch als ein Datenbus manifestieren, wie zum Beispiel ein PCI Express-Datenbus oder ein proprietärer Datenbus, der zum Beispiel durch eine Rückwandplatine implementiert ist, die zwei oder mehr Knoten koppelt. In einem spezifischen Beispiel, das die vorliegende Offenbarung nicht beschränken soll, können einer oder mehrere der Pfade 101 Verbindungen mit hoher Bandbreite, wie zum Beispiel 10-Gigabit-InfiniBand-Verbindungen, umfassen. In jedem Fall kann das Mehrknotennetzwerk 100 den Netzwerkverkehr über mehrere physische Verbindungen verteilen, die durch jeden der Pfade 101 repräsentiert werden, was einen Durchsatz ergeben kann, der denjenigen anderer Netzwerk-Ansätze, wie zum Beispiel Broadcast-Netzwerke, die Ethernet implementieren, übersteigt.

In einer Ausführungsform kann jeder der Knoten 102-1 bis 102-6 ein Datenverarbeitungssystem, wie zum Beispiel das Datenverarbeitungssystem 900 von 9, umfassen. Jeder der Knoten 102-1 bis 102-6 kann die gleiche Hardware und das gleiche Betriebssystem umfassen, obwohl unterschiedliche Betriebssysteme an jedem Knoten und/oder an unterschiedlicher Hardware verwendet werden können. In einigen Fällen können ein oder mehrere Knoten ein Single-Board- oder Small-Form-Factor- (SFF-) Rechengerät umfassen, das Anwendungen mit hoher Dichte ermöglicht. Zum Beispiel können Datenzentren diese Arten von Rechenknoten auswählen, um das Verhältnis von Prozessoren/Kernen pro Rackeinheit (U) des Rackraums zu maximieren oder anderweitig zu erhöhen.

Bezugnehmend auf 2, veranschaulicht ein Blockdiagramm einen beispielhaften Knoten 102-X, der zur Verwendung als ein Knoten des Mehrknotennetzwerk 100 von 1 kompatibel ist, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie gezeigt, umfasst der beispielhafte Knoten 102-X mindestens eine Netzwerkschnittstellenschaltung 204-1 bis 204-N, Steuerung 206-1 bis 206-N und Speichergerät 208-1 bis 208-N. In einer Ausführungsform umfasst der beispielhafte Knoten 102-X ein einzelnes System-On-Chip (SoC) -Gerät, obwohl andere Ausführungsformen innerhalb des Umfangs dieser Offenbarung liegen. Zum Beispiel kann jede Komponente des beispielhaften Knotens 102-X einen separaten Chip umfassen.

Genauer gesagt, jede Netzwerkschnittstellenschaltung 204-1 bis 204-N kann kommunizierend mit einer jeweiligen der Steuerungen 206-1 bis 206-N und mit einem jeweiligen der Speichergeräte 208-1 bis 208-N verbunden sein. Die Netzwerkschnittstellenschaltungen 204-1 bis 204-N können jeweils Hardware, Software oder beides umfassen, die dazu ausgelegt sind, Signale unter Verwendung verschiedener Kommunikationstechniken zu übertragen und zu empfangen. Zum Beispiel kann jede Netzwerkschnittstellenschaltung 204-1 bis 204-N dazu ausgelegt sein, elektrische Signalisierung, optische Signalisierung oder beides zwischen Knoten des Mehrknotennetzwerks 100 bereitzustellen. In jedem solcher Fälle kann jede Netzwerkschnittstellenschaltung 204-1 bis 204-N dazu ausgelegt sein, eine Vielzahl bidirektionaler Netzwerkports mit Aufwärts/Abwärts-Geschwindigkeiten von zum Beispiel mindestens 4,7 bis 5,25 Gigabyte (GB) pro Port bereitzustellen, obwohl andere Verbindungsgeschwindigkeiten innerhalb des Umfangs dieser Offenbarung liegen.

Jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N kann mindestens ein Verarbeitungsgerät/eine Schaltung (nicht gezeigt), wie zum Beispiel ein Field-Programmable-Gate-Array (FPGA), Reduced-Instruction-Set-Computer (RISC) -Prozessor, x86-Befehlssatzprozessor, Mikrocontroller, einen Application-Specific-Integrated-Circuit (ASIC), beinhalten. Zu diesem Zweck kann jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N dazu ausgelegt sein, eine Vielzahl von Anweisungen auszuführen, um Prozesse gemäß verschiedener hierin offenbarten Aspekte und Ausführungsformen auszuführen. Zum Beispiel kann das Verarbeitungsgerät der Netzwerkschnittstellenschaltung dazu ausgelegt sein, die Verfahren der 4-8B auszuführen. Diese Prozesse können zum Beispiel durch Verwenden von Software (zum Beispiel C oder C++, die auf dem Controller/Prozessor ausgeführt wird), Hardware (zum Beispiel hartcodierte Gate-Logik oder speziell gebautes Silizium) oder Firmware (zum Beispiel eingebettete Routinen, die auf einem Mikrocontroller ausgeführt werden), oder irgendeine Kombination davon, implementiert werden.

Wie gezeigt, ist jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N kommunizierend mit einer jeweiligen der Steuerungen 206-1 bis 206-N und mit einem jeweiligen der Speichergeräte 208-1 bis 208-N gekoppelt. In einer Ausführungsform kann sich dieses Koppeln physisch als ein serieller Hochgeschwindigkeitsdatenbus, wie beispielsweise ein serieller PCI-E-Bus, manifestieren, obwohl zahlreiche andere Kommunikationstechniken im Licht dieser Offenbarung offensichtlich sein sollten. Wie weiter unten diskutiert, kann jede Netzwerkschnittstellenschaltung 204-1 bis 204-N dazu ausgelegt sein, einen Direct-Memory-Access (DMA) auf einem zugeordneten Speichergerät auszuführen.

Es ist darauf hinzuweisen, dass jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N optional direkt oder indirekt miteinander für die Kommunikation zwischen Knoten gekoppelt sein kann. Zum Beispiel kann jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N direkt miteinander gekoppelt sein, sodass Nachrichten zwischen Knoten geroutet werden, ohne Fabric-Hardware (zum Beispiel Netzwerkschalter, Router und so weiter) des Mehrknotennetzwerks 100 zu verwenden. Andererseits kann jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N indirekt miteinander durch Verwenden eines Routergeräts (nicht gezeigt) gekoppelt sein, das die Intra-Kommunikation des beispielhaften Knotens 102-X intelligent zu einer geeigneten Netzwerkschnittstellenschaltung leiten kann.

Jede Steuerung 206-1 bis 206-N kann mindestens ein Verarbeitungsgerät/einen Schaltkreis beinhalten, aber andere Ausführungsformen liegen ebenfalls innerhalb des Umfangs dieser Offenbarung. Zum Beispiel kann jede Steuerung 206-1 bis 206-N mindestens zwei Verarbeitungsgeräte umfassen. Einige beispielhafte Verarbeitungsgeräte beinhalten beispielsweise einen Complex Instruction Set Computer (CISC), ein Field-Programmable-Gate-Array (FPGA), Reduced-Instruction-Set-Computer (RISC) -Prozessor, x86-Befehlssatzprozessor, Mikrocontroller, einen Application-Specific-Integrated-Circuit (ASIC), eine Graphics-Processing-Unit (GPU) oder Central-Processing-Unit (CPU). In einigen Fällen stellt jedes Verarbeitungsgerät mindestens einen Verarbeitungskern bereit. Zum Beispiel, und gemäß einer Ausführungsform, kann jedes Verarbeitungsgerät einen Multicore-Prozessor umfassen, der dazu ausgelegt ist, mindestens 16 Verarbeitungskerne bereitzustellen. In einigen Fällen ist jede der Steuerungen 206-1 bis 206-N mit der gleichen Hardware konfiguriert, obwohl auch andere Ausführungsformen innerhalb des Umfangs dieser Offenbarung liegen. In jedem Fall kann jede der Steuerungen 206-1 bis 206-N Anweisungen beinhalten oder auf andere Weise empfangen, die, wenn ausgeführt, veranlassen, dass ein oder mehrere Prozesse ausgeführt werden, wie zum Beispiel Prozesse, die die Verfahren der 4-8B umfassen.

Jedes Speichergerät 208-1 bis 208-N kann zum Beispiel ein nichtflüchtiges Speichergerät umfassen, das einen Flash-Speicher und/oder flüchtige Speichergeräte, wie zum Beispiel Random-Access-Memory (RAM), Dynamic-Random-Access-Memory (DRAM) und Static-Ram (SRAM), beinhaltet. In einer Ausführungsform kann jedes Speichergerät 208-1 bis 208-N ein Content-Addressable-Memory (CAM) -Gerät umfassen. In dieser Ausführungsform kann das CAM-Gerät ein Halbleiterspeichergerät (zum Beispiel SRAM) umfassen und kann einen Vergleichsschaltkreis (nicht gezeigt) beinhalten, der es ermöglicht, dass eine Suchoperation in einem einzigen Taktzyklus vervollständigt wird.

Zurückkommend auf 1, können die Knoten 102-1 bis 102-6 des Mehrknotennetzwerks 100 dazu ausgelegt sein, verteilte Speicheranwendungen (oder parallele Anwendungen) auszuführen, die Message-Passing-Interface- (MPI), Shared-Memory-Access-(SHMEM) und Partitioned-Global-Address-Space (PGAS) -Programmiermodellen gerecht werden, obwohl auch andere Modelle innerhalb des Umfangs dieser Offenbarung liegen. Zu diesem Zweck, und gemäß einer Ausführungsform, kann jeder der Knoten 102-1 und 102-5 gemeinsam eine oder mehrere parallele Anwendungen gemäß dieser Programmiermodelle ausführen. In einigen Fällen kann jedes Prozessorgerät der Knoten 102-1 bis 102-6 und insbesondere jeder dadurch bereitgestellte Kern einen Prozess bereitstellen, der innerhalb des Mehrknotennetzwerks 100 eindeutig identifizierbar und adressierbar ist. Zum Beispiel, und wie gezeigt, kann der Knoten 102-5 Prozesse 104-1 bis 104-N bereitstellen, wobei jeder Prozess durch einen fest zugeordneten Prozessorkern ausgeführt wird.

Das Mehrknotennetzwerk 100 kann eine dynamische Zuweisung von Rechenressourcen bereitstellen, sodass eine parallele Anwendung über M Knoten und N Prozesse/Kerne ausgeführt werden kann, wobei die bestimmte Anzahl von Knoten und Prozessen basierend auf der bestimmten Implementierung der parallelen Anwendung zugewiesen wird. Zum Beispiel kann eine parallele Anwendung eine bestimmte Anzahl von angestrebten Prozessen anfordern, um einen angestrebten Satz von Berechnungen durchzuführen. In Reaktion darauf kann das Mehrknotennetzwerk 100 einen zusammenhängenden oder nicht zusammenhängenden Bereich von Knoten und zugeordneten Prozessen jeder parallelen Anwendung zuweisen. In einigen Fällen kann das Mehrknotennetzwerk 100 gleichzeitig mehrere solcher parallelen Anwendungen unterstützen, wobei jede der ausgeführten parallelen Anwendungen einen Pool von privat zugewiesenen Ressourcen aufweist.

Während der Laufzeit einer gegebenen parallelen Anwendung kann das Mehrknotennetzwerk 100 eine Zwischenspeicher-Kohärenz bereitstellen, sodass geteilte Ressourcendaten unter einer Vielzahl von Speichergeräten, die diese zwischenspeichern, konsistent sind. In einem allgemeinen Sinn kann die Zwischenspeicher-Kohärenz einen Schutzmechanismus bereitstellen, der verhindert, dass Zwischenspeicher-Daten in einem ungültigen Status sind oder anderweitig in Konflikt stehen, wenn zwei oder mehr Knoten/Prozesse auf einem gleichen Datenelement arbeiten. In einer bestimmten beispielhaften Ausführungsform implementiert das Mehrknotennetzwerk 100 zumindest teilweise Zwischenspeicher-Kohärenz, indem jeder Knoten nur lokal erzeugte Daten in seinem zugehörigen Speicher zwischenspeichert. Zu diesem Zweck werden fern-erzeugte Daten (z. B. durch einen entfernten Knoten erzeugte Daten) durch die Ausführung von Gets/Sets erfasst. Zum Beispiel kann ein Knoten, der ein „Set“ an einem Zielprozess initiiert, ein Paket dazu veranlassen, sich durch das Mehrknotennetzwerk 100 zu einem Zielknoten, der dem Zielprozess zugeordnet ist, auszubreiten, und, sobald es durch diesen empfangen wurde, den Zielknoten dazu veranlassen, eine Schreiboperation gegen einen dem Zielprozess zugeordneten Speicherbereich auszuführen. Andererseits kann ein Knoten, der ein „Get“ an einem Zielprozess initiiert, den Zielknoten dazu veranlassen, einen dem Zielprozess zugeordneten Speicherbereich zu lesen und ein bestimmtes Datenelement, das vom initiierenden Knoten angestrebt wird, über das Mehrknotennetzwerk 100 zurückzugeben.

Parallele Anwendungen arbeiten allgemein in dem logischen Raum, sodass jeder Prozess andere der gleichen parallelen Anwendung zugeordnete Prozesse kennt, basierend auf einem zusammenhängenden Bereich von Kennungen, wie zum Beispiel Prozesse 0 ... N-1. Der bestimmte Pool von Ressourcen, die einer gegebenen parallelen Anwendung zugewiesen sind, ist jedoch nicht notwendigerweise ein zusammenhängender Bereich von Knotenkennungen und Prozessen. Man berücksichtige zum Beispiel die folgende beispielhafte Tabelle: Tabelle 1. Beispielhafter zugewiesener Ressourcenpool für eine parallele Anwendung

Logische ProzesskennungPhysische KnotenkennungPhysische Prozesskennung010021100321004311304113151132622315723515823516923517

Wie oben gezeigt, entspricht jede der logischen Prozesskennungen einem nicht zusammenhängenden Bereich physischer Knotenkennungen und zugeordneter physischer Prozesskennungen. Somit, und gemäß einer Ausführungsform, können Operationen zwischen Knoten ein Umwandlungsschema verwenden, wobei ein initiierender Knoten eine logische Prozesskennung in eine Adresse umwandelt, die korrekt über das Mehrknotennetzwerk 100 zu einem beabsichtigten Empfänger geleitet werden kann. In einigen Fällen umfasst diese Adresse ein Tupel oder ein anderes geeignetes Adressschema, das mindestens einen beabsichtigten Zielknoten und -Prozess identifiziert.

Zum Beispiel zeigt 3 einen beispielhaften Prozessablauf für eine Interprozessoperation zwischen den Knoten 102-5 und 102-X. Wie gezeigt, beinhaltet Knoten 102-5 einen Prozess 104-1, der anstrebt, eine entfernte Operation gegen entfernten Prozess 104-X auszuführen. Wie oben diskutiert, kann der Prozess 104-1 den Prozess 104-X und zugeordneten Knoten 102-X logisch als einen Wert innerhalb eines zusammenhängenden Bereichs von logischen Prozesskennungen identifizieren. Innerhalb des Kontexts von MPI können diese logischen Kennungen als „Ränge“ bezeichnet werden. 3 veranschaulicht einen solchen beispielhaften Rang 302-X. In ähnlicher Weise, und innerhalb des Kontexts von OpenSHMEM, können diese logischen Kennungen als Processing -Elements (PE) bezeichnet werden. Zum Zweck der Klarheit veranschaulicht 3 einen Zielrang, aber dies sollte nicht als Beschränken der vorliegenden Offenbarung ausgelegt werden.

Die Fabric-Hardware (z. B. Schalter, Router usw.) des Mehrknotennetzwerks verwendet jedoch physische Kennungen, um Daten zu einem korrekten Knoten zu leiten. Somit kann der Knoten 102-5 eine angestrebte Operation (zum Beispiel ein Get/Set) und eine logische Prozesskennung, zum Beispiel für eine Netzwerkschnittstellenschaltung oder andere Hardware des Knotens 102-5, die die logische Prozesskennung in eine leitbare Adresse umwandeln kann, bereitstellen. Die leitbare Adresse kann mindestens eine physische Knotenkennung, die von Fabric-Hardware des Mehrknotennetzwerks verwendet werden kann, um Daten an den Zielknoten zu leiten, und eine Prozesskennung, die es dem Zielknoten erlaubt, die gewünschte Operation gegen den geeigneten Prozess auszuführen, beinhalten.

Somit tritt, damit der Prozess 104-1 Interprozesskommunikation mit Zielprozess 104-X einleitet, eine initiatorseitige Umwandlung auf, um die logische Prozesskennung, oder, im Zusammenhang mit 3 einen Zielrang in eine physische Knotenkennung umzuwandeln. Ein beispielhaftes initiatorseitiges Umwandlungsverfahren 400 wird unten unter Bezugnahme auf 4 detaillierter diskutiert. Einmal umgewandelt, leitet das Hardware-Fabric des Mehrknotennetzwerks die Interprozesskommunikation zu dem korrekten physischen Knoten, der innerhalb des bestimmten beispielhaften Kontexts des in 3 gezeigten Kommunikationsflusses Knoten 102-X ist. Die Interprozesskommunikation kann sich physisch als ein Paket (zum Beispiel mehrere Bytes) oder anderes geeignetes Signal über das Mehrknotennetzwerk manifestieren. Der Knoten 102-X führt wiederum eine zielseitige Umwandlung aus, um eine logische Prozesskennung in eine physische Prozesskennung umzuwandeln. Verschiedene zielseitige Umwandlungsverfahren werden unten unter Bezugnahme auf die 5-8B detaillierter diskutiert.

Beispielhafte Methodik und Architektur

Wie zuvor diskutiert, beinhalten verschiedene hierin offenbarte Ausführungsformen Verfahren zum Initiieren einer Kommunikation zwischen Knoten eines Mehrknotennetzwerks, wie zum Beispiel des Mehrknotennetzwerks 100. Ein solches beispielhaftes Verfahren 400 wird in 4 gezeigt. Das beispielhafte Verfahren 400 kann durch einen Knoten, wie zum Beispiel den Knoten 102-X von 2, und insbesondere durch die Netzwerkschnittstellenschaltung 204-1 bis 204-N des Knotens ausgeführt werden. Es ist jedoch darauf hinzuweisen, dass Verfahren 400 auch teilweise oder ganz durch die Steuerung 206-1 bis 206-N oder andere geeignete Steuerungen/Schaltungen ausgeführt werden kann. Das Verfahren 400 beinhaltet Vorgänge zum Empfangen einer Anforderung zur Interprozesskommunikation, zum Umwandeln einer logischen Zielprozesskennung in eine virtuelle Zielknotenkennung und eine virtuelle Zielprozesskennung, zum Identifizieren eines physischen Knotens entsprechend der virtuellen Zielknotenkennung und zum Initiieren von Kommunikation mit dem physischen Knoten über die Hardware-Fabric des Mehrknotennetzwerks. Es ist darauf hinzuweisen, dass die Vorgänge des Verfahrens 400 nicht notwendigerweise in der angegebenen Reihenfolge ausgeführt werden können, und außerdem können einige Vorgänge abhängig von einer angestrebten Implementierung weggelassen, hinzugefügt, oder anderweitig ergänzt werden. Verfahren 400 beginnt in Vorgang 402.

In Vorgang 404 empfängt der Knoten eine Anforderung zur Interprozesskommunikation. In einer Ausführungsform kann die Anforderung zur Interprozesskommunikation beispielsweise über ein Application-Programming-Interface (API) durch Verwenden von MPI, OpenSHMEM oder einem anderen geeigneten parallelen Anwendungsprogrammiermodell erfolgen. Die Anforderung zur Interprozesskommunikation kann mindestens eine logische Zielprozesskennung beinhalten. Die logische Zielprozesskennung kann präzise als Zielrang oder Ziel-PE bezeichnet werden, abhängig von dem bestimmten durch den Knoten implementierten Programmiermodell. Zusätzlich, und in einer Ausführungsform, beinhaltet die Anforderung zur Interprozesskommunikation mindestens eine auszuführende Operation, wie zum Beispiel ein Get oder ein Set, und eine optionale Datennutzlast. Die optionale Datennutzlast kann beispielsweise einen bestimmten Satz von Bytes beinhalten, die in einen Speicher geschrieben werden sollen, der einem Zielprozess zugeordnet ist. Dementsprechend kann die auszuführende Operation zum Beispiel präzise als eine Speicheroperation innerhalb des Kontexts von MPI und OpenSHMEM bezeichnet werden, da die Interprozesskommunikation auf die Manipulation von Speicherregionen gerichtet ist, die von einem bestimmten Prozess während der Laufzeit einer gegebenen parallelen Anwendung verwendet werden.

In Vorgang 406 wandelt der Knoten die lokale Zielprozesskennung in eine virtuelle Zielknotenkennung und eine virtuelle Zielprozesskennung um. Vorgang 406 kann auch allgemein als initiatorseitiger Umwandlungsprozess bezeichnet werden. In einer Ausführungsform kann die initiatorseitige Umwandlung beinhalten, dass der Knoten den Rangraum, zum Beispiel den Bereich von Rängen, die einer gegebenen parallelen Anwendung zugewiesen sind, durch algorithmisches Abbilden der Ränge über die physischen Knoten, die diesen zugewiesenen Rängen zugeordnet sind, zerlegt. In einer Ausführungsform können die algorithmischen Abbildungen zum Beispiel gestreifte, blockierte, gefaltete oder Hilbert-Raumfüllkurven beinhalten. Es ist darauf hinzuweisen, dass algorithmische Abbildung vorteilhafterweise das Indizieren einer Zuordnungstabelle, die Ränge zu einer physikalischen Knotenkennung abbildet, vermeidet.

Man betrachte zum Beispiel eine parallele Anwendung mit einer Anzahl N zugewiesener Knoten mit P Prozessen pro zugewiesenem Knoten. In einem blockbasierten Ansatz kann der Knotenabschnitt der Zieladresse basierend auf der folgenden Gleichung berechnet werden: VirtualNodeT=Rang/Pembedded imageWobei VirtualNodeT der virtuelle Zielknoten ist. Der Prozessabschnitt der Zieladresse kann basierend auf der folgenden Gleichung berechnet werden: VirtualProcessT=P[Rang/P]embedded imageWobei VirtualProcessT der virtuelle Zielprozess ist. Somit kann der Knoten eine virtuelle Zielknotenkennung und eine virtuelle Zielprozesskennung ermitteln, um die Kommunikation zwischen Knoten an diesen zu richten.

In Vorgang 408 identifiziert der Knoten einen physischen Knoten entsprechend der in Vorgang 406 ermittelten virtuellen Zielknotenkennung. In einer Ausführungsform identifiziert der Knoten durch Verwenden einer einfachen Zuordnungstabelle den physischen Knoten, der der virtuellen Zielknotenkennung entspricht, wobei jeder virtuelle Zielknoten eine entsprechende physische Knotenkennung (zum Beispiel physischer Knoten = Tabelle[VirtualNodeT]) beinhaltet. In anderen Fällen kann eine skalierbare Knotenumwandlungstabelle verwendet werden, wobei der virtuelle Zielknoten zu einem Basisknotenwert hinzugefügt wird, um eine physikalische Knotenkennung abzuleiten. Dies kann durch Hinzufügen eines Basisknotenwerts zu der virtuellen Zielknotenkennung eine eindeutige physische Knotenabbildung erlauben. Somit können mehrere Knoten gemeinsame zusammenhängende virtuelle Knotenkennungen verwenden, zum Beispiel beginnend bei Null, um verschiedene physische Knoten zum Zweck des Leitens durch das Mehrknotennetzwerk 100 zu referenzieren. Tabelle 2 illustriert ein solches Beispiel physischer Knotenabbildung für drei verschiedene Basisknotenwerte: A, B und C Tabelle 2. Physische Knotenberechnung

SourceknotenVirtualNodeτPhysischer Knoten(Basisknoten = 100)A0100A1101A2102(Basisknoten = 200)B3200B4201B5202(Basisknoten = 300)C6300C7301C8302

In Vorgang 410 initiiert der Knoten die Kommunikation mit dem in Vorgang 408 identifizierten physischen Knoten über das Mehrknotennetzwerk 100 und insbesondere über die Hardware-Fabric des Mehrknotennetzwerks 100. In einer Ausführungsform wählt das Mehrknotennetzwerk 100 einen bestimmten Pfad durch das Mehrknotennetzwerk aus, sodass die Interprozessanforderung ordnungsgemäß zu dem bestimmten in Vorgang 408 identifizierten Knoten gelenkt wird. In Vorgang 412 endet das Verfahren 400.

Nun bezugnehmend auf 5, ist ein beispielhaftes Verfahren 500 zum Empfangen einer Interprozesskommunikation über das Mehrknotennetzwerk 100 gezeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Das beispielhafte Verfahren 500 kann durch einen kommunizierend mit dem Mehrknotennetzwerk (zum Beispiel Knoten 102-X von 2) gekoppelten Knoten und insbesondere durch Hardware des Knotens ausgeführt werden. In einer Ausführungsform kann die Netzwerkschnittstellenschaltung (zum Beispiel Netzwerkschnittstellenschaltung 204-1) oder andere Hardware Direct-Memory-Access (DMA) ausführen, um eine empfangene Interprozesskommunikation zu erfüllen, und somit eine zugehörige Steuerung umgehen. Es ist jedoch darauf hinzuweisen, dass das Verfahren 500 ganz oder teilweise durch andere Hardware und/oder Software des Knotens ausgeführt werden kann. Zum Beispiel kann die Steuerung 206-1 alle oder einige der Vorgänge des Verfahrens 500 abhängig von der Konfiguration eines gegebenen Knotens ausführen. Das Verfahren 500 beinhaltet Vorgänge zum Empfangen einer Interprozesskommunikation von einem entfernten Knoten des Mehrknotennetzwerks, zum Analysieren der Interprozesskommunikation, um eine virtuelle Zielprozesskennung zu ermitteln, zum Umwandeln der virtuellen Prozesskennung in eine lokale Prozesskennung und zum Ausführen einer Speicheroperation gemäß der empfangenen Interprozesskommunikation auf einer Speicherregion, die einem der lokalen Prozesskennung entsprechenden lokalen Prozess zugeordnet ist. Verfahren 500 beginnt in Vorgang 502.

In Vorgang 504 empfängt der Knoten eine Interprozesskommunikation von einem entfernten Knoten des Mehrknotennetzwerks 100. In Vorgang 506 analysiert der Knoten die Interprozesskommunikation, um eine virtuelle Zielprozesskennung zu ermitteln. In einer Ausführungsform kann dies beinhalten, dass der Knoten ein oder mehrere Bytes der empfangenen Interprozesskommunikation untersucht, um den bestimmten darin identifizierten virtuellen Zielprozess zu identifizieren. Einmal identifiziert, und in Schritt 508, wandelt der Knoten die virtuelle Prozesskennung in eine lokale Prozesskennung um. Der Vorgang 508 kann auch allgemein als zielseitiger Umwandlungsprozess bezeichnet werden. Einige spezielle beispielhafte Methodiken für die zielseitige Umwandlung werden weiter unten unter Bezugnahme auf die 6-8B diskutiert.

In Vorgang 510 führt der Knoten eine Speicheroperation gemäß der empfangenen Interprozesskommunikation auf einer Speicherregion aus, die einem der lokalen Prozesskennung entsprechenden lokalen Prozess zugeordnet ist. Zum Beispiel kann die Speicheroperation ein Get oder Set sein, das auf einen bestimmten dem lokalen Prozess zugeordneten Speicherbereich gerichtet ist. Das Verfahren 500 endet bei Vorgang 512.

Nun bezugnehmend auf 6, ist ein beispielhafter zielseitiger Umwandlungsprozess 508A gezeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Der beispielhafte zielseitige Umwandlungsprozess 508A kann in Hardware des Knotens, wie zum Beispiel durch die Netzwerkschnittstellenschaltung, ausgeführt werden. Andere Ausführungsformen liegen jedoch ebenfalls innerhalb des Umfangs dieser Offenbarung. Zum Beispiel kann der beispielhafte zielseitige Umwandlungsprozess 508A in Software oder einer Kombination von Hardware und Software implementiert sein. Der beispielhafte zielseitige Umwandlungsprozess 508A beinhaltet Vorgänge des Durchquerens einer Zuordnungstabelle, um einen der virtuellen Zielprozesskennung entsprechenden lokalen Prozess zu identifizieren, und um eine dem identifizierten lokalen Prozess entsprechende lokale Prozesskennung zurückzugeben. Der beispielhafte zielseitige Umwandlungsprozess 508A beginnt in Vorgang 602.

In Vorgang 602 durchquert der Knoten eine Karte, um einen der virtuellen Zielprozesskennung entsprechenden lokalen Prozess zu identifizieren. In einer Ausführungsform kann die Karte eine Zuordnungstabelle oder andere geeignete Datenstruktur in einem dem Knoten zugeordneten Speicher umfassen. Die Zuordnungstabelle kann einen Index beinhalten, der eine effiziente Umwandlung zwischen einer virtuellen Zielprozesskennung und einer Kennung eines lokalen Prozesses erlaubt. Zum Beispiel zeigt Tabelle 3 eine beispielhafte Zuordnungstabelle. Tabelle 3. Beispielhafte Zuordnungstabelle

Virtuelle ProzesskennungLokale Prozesskennung02142135465861271581693
Es ist darauf hinzuweisen, dass jeder der Prozesse eines Knotens mehreren parallelen Anwendungen zugeordnet sein kann. Somit ist das zielseitige Umwandlungsverfahren von 6 besonders gut für Implementierungen geeignet, die eine kleine Anzahl paralleler Anwendungen beinhalten, die innerhalb jedes Knotens ausgeführt werden.

In Vorgang 606 gibt der Knoten die berechnete lokale Prozesskennung zurück. Zum Beispiel kann das Verfahren 500 den identifizierten lokalen Prozess in Vorgang 510 verwenden, um eine bestimmte Speicheroperation gemäß einer empfangenen Interprozesskommunikation auszuführen. Das Verfahren 508A endet in Vorgang 608.

Nun bezugnehmend auf FIG. 7A, ist ein anderer beispielhafter zielseitiger Umwandlungsprozess 508B gezeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Der beispielhafte zielseitige Umwandlungsprozess 508B kann in Hardware des Knotens, wie zum Beispiel durch die Netzwerkschnittstellenschaltung, ausgeführt werden. Andere Ausführungsformen liegen jedoch ebenfalls innerhalb des Umfangs dieser Offenbarung. Zum Beispiel kann der beispielhafte zielseitige Umwandlungsprozess 508B in Software oder einer Kombination von Hardware und Software implementiert sein. Der beispielhafte zielseitige Umwandlungsprozess 508B beinhaltet Vorgänge des Zugreifens auf ein Content-Addressable-Memory (CAM) -Gerät, um eine Basisprozessadresse für eine gegebene durch den Knoten bediente parallele Anwendung zu identifizieren, des Hinzufügens einer virtuellen Zielprozesskennung zu einer identifizierten Basisprozessadresse, um eine lokale Prozesskennung zu berechnen, und des Zurückgebens der berechneten lokalen Prozesskennung. Das Verfahren 508B beginnt in Vorgang 702.

In Vorgang 704 greift der Knoten auf ein Content-Address-Memory (CAM) -Gerät zu, um eine Basisprozessadresse für eine gegebene parallele Anwendung zu identifizieren. Jede über das Mehrknotennetzwerk 100 implementierte parallele Anwendung kann eindeutig durch ein bestimmtes Job-Tag oder eine bestimmte Kennung identifiziert werden. Anders ausgedrückt, kann ein Knoten durch Ausführen von Prozessen, die sich auf diese parallelen Anwendungen beziehen, eine oder mehrere parallele Anwendungen bedienen. Zu diesem Zweck können die von jedem Knoten ausgeführten Prozesse basierend auf dem Job-Tag über Knoten hinweg zugeordnet werden. Jede empfangene Interprozesskommunikation, wie zum Beispiel die in Vorgang 504 des Verfahrens 500 empfangene Interprozesskommunikation, kann den bestimmten mit der Interprozesskommunikation verbundenen Job identifizieren. Somit kann der Knoten ein CAM-Gerät beinhalten, das mit Job-Tags bestückt ist, die den von dem Knoten bedienten parallelen Anwendungen entsprechen. Für jedes der Job-Tags kann der CAM einen entsprechenden Index in eine Tabelle beinhalten, die für jeden Job einen zusammenhängenden Adressraum bereitstellt. In einem allgemeinen Sinn liefert der innerhalb einer Interprozesskommunikation identifizierte Job einen Kontext, der während des zielseitigen Umwandlungsprozesses verwendet werden kann.

Zum Beispiel, wie in 7B gezeigt, wird ein Job, der einer Interprozessanforderung zugeordnet ist, mit einem Eintrag in der Jobtabelle 750 abgeglichen. Wenn ein übereinstimmender Eintrag in der Jobtabelle 750 gefunden wird (zum Beispiel wird der Auftrag durch Prozesse des Knotens bedient), wird ein dem übereinstimmenden Eintrag zugeordneter Indexwert verwendet, um auf eine Process-Identifier (PID) -Basistabelle 752 zuzugreifen. Wie in 7C gezeigt, ist die PID-Basistabelle 752 nach Job partitioniert, wobei jeder Job einen Bereich von zusammenhängenden Kennungen aufweist, beginnend mit einer Basisadresse. Somit kann der Knoten den Indexwert verwenden, um durch Verwenden der PID-Basistabelle 752 eine bestimmte PID-Basisadresse für den Job zu identifizieren. Sobald eine PID-Basisadresse für den Job identifiziert ist, kann die mit der Interprozesskommunikation empfangene virtuelle Zielprozesskennung zu der PID-Basisadresse hinzugefügt werden, um eine lokale Prozesskennung zu berechnen.

Zurückkommend zu FIG. 7A, und in Vorgang 708, gibt der Knoten die berechnete lokale Prozesskennung zurück. Zum Beispiel kann das Verfahren 500 den identifizierten lokalen Prozess in Vorgang 510 verwenden, um eine bestimmte Speicheroperation gemäß einer empfangenen Interprozesskommunikation auszuführen. Das Verfahren 508B endet in Vorgang 710.

Nun bezugnehmend auf FIG. 8A, ist ein anderer beispielhafter zielseitiger Umwandlungsprozess 508C gezeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Der beispielhafte zielseitige Umwandlungsprozess 508C kann in Hardware des Knotens, wie zum Beispiel durch die Netzwerkschnittstellenschaltung, ausgeführt werden. Andere Ausführungsformen liegen jedoch ebenfalls innerhalb des Umfangs dieser Offenbarung. Zum Beispiel kann der beispielhafte zielseitige Umwandlungsprozess 508C in Software oder einer Kombination von Hardware und Software implementiert sein. Der beispielhafte zielseitige Umwandlungsprozess 508C beinhaltet Vorgänge des Umwandelns der virtuellen Prozesskennung in eine lokale Prozesskennung, des Durchquerens einer PID-Verlagerungstabelle, um einen der virtuellen Zielprozesskennung entsprechenden lokalen Prozess zu identifizieren, und des Zurückgebens der verlagerten lokalen Prozesskennung. Der Prozess 508C beginnt in Vorgang 802.

In Vorgang 508B wandelt der Knoten die virtuelle Prozesskennung in eine lokale Prozesskennung um. Es ist darauf hinzuweisen, dass der Vorgang 508B im Wesentlichen die gleichen Schritte des beispielhaften zielseitige Umwandlungsprozesses 508B von FIG. 7A, wie oben diskutiert, umfasst, und aus diesem Grund der Kürze wegen nicht wiederholt wird.

In Vorgang 804 durchquert der Knoten eine PID-Verlagerungstabelle, um einen der virtuellen Zielprozesskennung entsprechenden, in Vorgang 508B berechneten lokalen Prozess zu identifizieren. In einigen Fällen sind die virtuellen Prozesskennungen nicht notwendigerweise zusammenhängend. Zum Beispiel, wie zuvor in Tabelle 1 gezeigt, ist der Bereich der lokalen Prozesskennungen in jedem Knoten zusammenhängend, aber in einigen Szenarien kann dies nicht der Fall sein. Zuweisung und Aufhebung der Zuweisung von Ressourcenpools, die parallelen Anwendungen zugewiesen sind, kann sogenannte „Löcher“ hinterlassen, sodass nachfolgende Zuweisungen einen nicht zusammenhängenden Bereich von Prozesskennungen bereitstellen. Ein solches Beispiel einer nicht zusammenhängenden Prozesszuweisung für einen Knoten A ist unten in Tabelle 4 gezeigt. Tabelle 4. Beispielhafte nicht zusammenhängende Prozesszuweisung

Job-KennungLokale Prozesskennungen für Knoten A00010256510512997991132001803200182

Somit kann der Knoten durch Verwenden der in Vorgang 508B berechneten Prozesskennung eine sogenannte „vollständige“ Verlagerung ausführen. Zum Beispiel, wie in 8B gezeigt, kann die in Schritt 508B abgeleitete lokale Prozesskennung verwendet werden, um eine PID-Verlagerungstabelle 850 zu indizieren. Jeder Eintrag in der PID-Verlagerungstabelle 850 kann eine lokale Prozesskennung und eine verlagerte PID beinhalten. Die verlagerte PID kann dann dem tatsächlichen lokalen Prozess entsprechen, auf den eine Interprozesskommunikation beispielsweise ein Get/Set auszuführen anstrebt. Somit erlaubt die PID-Verlagerungstabelle 850 einem Knoten, einen bestimmten lokalen Prozess zu identifizieren, ohne dass jeder Job notwendigerweise einen zusammenhängenden Bereich von zugeordneten/zugewiesenen Prozesskennungen aufweist.

Zurückkommend zu FIG. 8A, und in Vorgang 806, gibt der Knoten die verlagerte lokale Prozesskennung zurück. Zum Beispiel kann das Verfahren 500 die verlagerte lokale Prozesskennung in Vorgang 510 verwenden, um eine bestimmte Speicheroperation gemäß einer empfangenen Interprozesskommunikation auszuführen. Das Verfahren 508B endet in Vorgang 808.

Beispielhaftes System

9 veranschaulicht ein Datenverarbeitungssystem 900, das dazu ausgelegt ist, verschiedene hierin offenbarte Prozesse auszuführen. Zum Beispiel kann das System 900 in einen Personal-Computer (PC), Laptop-Computer, tragbares Datenverarbeitungsgerät, Ultra-Laptop-Computer, Tablet, Touchpad, tragbaren Computer, Handheld-Computer, Palmtop-Computer, Personal-Digital-Assistant (PDA), Mobiltelefon, Kombination Mobiltelefon/PDA, Fernseher, intelligentes Gerät (z. B. Smartphone, Smart-Tablet oder Smart-TV), Mobile-Internet-Device (MID), Nachrichtengerät, Datenkommunikationsgerät, Set-Top-Box, Spielekonsole oder andere solche Computerumgebungen, die Grafik-Rendering-Operationen durchführen und Inhalte anzeigen können, integriert sein.

In einigen Ausführungsformen umfasst das System 900 eine Plattform 902, die mit einer Anzeige 920 gekoppelt ist. Plattform 902 kann Inhalt von einem Inhaltsgerät, wie zum Beispiel Inhaltsdienstgerät(e) 930 oder Inhaltsliefergerät(e) 940, oder anderen ähnlichen Inhaltsquellen empfangen. Eine Navigationssteuerung 950, die ein oder mehrere Navigationsmerkmale umfasst, kann verwendet werden, um beispielsweise mit Plattform 902 und/oder Anzeige 920 zu interagieren, um Navigationsgestikulieren durch den Benutzer zu ergänzen. Jede dieser beispielhaften Komponenten wird unten ausführlicher beschrieben.

In einigen Ausführungsformen kann Plattform 902 jegliche Kombination eines Chipsatzes 905, Prozessors 910, Speichers 912, Speicherung 914, Grafiksubsystems 915, Kamera 919, Bewegungssensoren 921, Anwendungen 916 und/oder Funkgeräts 918 oder einer drahtlosen Sende-Empfangsschaltung umfassen. Chipsatz 905 kann Interkommunikation zwischen Prozessor 910, Speicher 912, Speicherung 914, Grafiksubsystem 915, Anwendungen 916 und/oder Funkgerät 918 bereitstellen. Zum Beispiel kann Chipsatz 905 einen Speicherungsadapter (nicht dargestellt) beinhalten, der zum Bereitstellen von Interkommunikation mit Speicherung 914 geeignet ist.

Prozessor 910 kann zum Beispiel als Complex-Instruction-Set-Computer- (CISC-) oder Reduced-Instruction-Set-Computer (RISC) -Prozessoren, x86-Instruktionssatz-kompatible Prozessoren, Multicore- oder jeglicher andere Mikroprozessor oder Central-Processing-Unit (CPU) implementiert sein. In einigen Ausführungsformen kann Prozessor 910 Dual-Core-Prozessor(en), Dual-Core-Mobile-Prozessor(en) und so weiter umfassen. Speicher 912 kann zum Beispiel als ein flüchtiges Speichergerät implementiert sein, wie zum Beispiel, aber nicht beschränkt auf einen Random-Access-Memory (RAM), Dynamic-Random-Access-Memory (DRAM) oder Static-RAM (SRAM). Speicherung 914 kann beispielsweise als ein nichtflüchtiges Speicherungsgerät implementiert sein, wie zum Beispiel, aber nicht beschränkt auf ein Magnetplattenlaufwerk, optisches Plattenlaufwerk, Bandlaufwerk, internes Speicherungsgerät, verbundenes Speicherungsgerät, Flash-Speicher, batteriegesicherter SDRAM (synchroner DRAM) und/oder ein netzwerkzugängliches Speichergerät. In einigen Ausführungsformen kann Speicherung 914 Technologie umfassen, um den speicherleistungsverbesserten Schutz für wertvolle digitale Medien zu erhöhen, wenn beispielsweise mehrere Festplatten enthalten sind.

Grafiksubsystem 915 kann das Verarbeiten von Bildern wie Standbild oder Video für Anzeige ausführen und ist in einigen Ausführungsformen dazu ausgelegt, Gesichtsbilder zu synthetisieren, wie hierin verschiedenartig beschrieben. Grafiksubsystem 915 kann zum Beispiel eine Graphics-Processing-Unit (GPU) oder eine Visual-Processing-Unit (VPU) sein. Eine analoge oder digitale Schnittstelle kann dazu verwendet werden, Grafiksubsystem 915 und Anzeige 920 kommunizierend zu koppeln. Zum Beispiel kann die Schnittstelle jegliche einer High-Definition-Multimedia-Interface-, DisplayPort-, drahtlosen HDMI- und/oder drahtlosen HD-konformen Techniken sein. Grafiksubsystem 915 könnte in Prozessor 910 oder Chipsatz 905 integriert sein. Grafiksubsystem 915 könnte eine eigenständige Karte sein, die kommunizierend mit Chipsatz 905 gekoppelt ist. Die Grafik- und/oder Videoverarbeitungstechniken, einschließlich der hierin beschriebenen Techniken zum Identifizieren und Erzeugen bevorzugter Flächenorientierungen, können in verschiedenen Hardwarearchitekturen implementiert sein. Zum Beispiel können Grafik- und/oder Videofunktionalität in einem Chipsatz integriert sein. Alternativ dazu kann ein spezieller Grafik- und/oder Videoprozessor verwendet werden. Als noch eine weitere Ausführungsform können die Grafik- und/oder Videofunktionen durch einen Mehrzweckprozessor einschließlich eines Multicore-Prozessors implementiert werden. In einer weiteren Ausführungsform können die Funktionen in einem Unterhaltungselektronikgerät implementiert sein.

Funkgerät 918 kann eines oder mehrere Funkgeräte beinhalten, die zum Übertragen und Empfangen von Signalen durch Verwenden verschiedener geeigneter drahtloser Kommunikationstechniken geeignet sind. Solche Techniken können Kommunikationen über eines oder mehrere drahtlose Netzwerke einbeziehen. Beispielhafte drahtlose Netzwerke beinhalten (sind jedoch nicht beschränkt auf) Wireless-Local-Area-Networks (WLAN), Wireless-Personal-Area-Networks (WPAN), Wireless-Metropolitan-Area-Network (WMAN), Mobilfunknetzwerke und Satellitennetzwerke. Bei der Kommunikation über solche Netzwerke kann Funkgerät 918 gemäß einem oder mehrerer anwendbarer Standards in jeglicher Version arbeiten.

In einigen Ausführungsformen können Inhaltsdienstgerät(e) 930 von jeglichem nationalen, internationalen und/oder unabhängigen Dienst gehostet werden und somit für Plattform 902 beispielsweise über das Internet oder ein anderes Netzwerk zugänglich sein. Inhaltsdienstgerät(e) 930 können mit Plattform 902 und/oder mit Anzeige 920 gekoppelt sein. Plattform 902 und/oder Inhaltsdienstgerät(e) 930 können mit einem Netzwerk 960 gekoppelt sein, um Medieninformationen zu und von Netzwerk 960 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Inhaltsliefergerät(e) 940 können auch mit Plattform 902 und/oder mit Anzeige 920 gekoppelt sein. In einigen Ausführungsformen können Inhaltsdienstgerät(e) 930 eine Kabelfernsehbox, Personal-Computer, Netzwerk, Telefon, internetfähige Geräte oder Vorrichtung, geeignet zum Liefern von digitaler Information und/oder digitalem Inhalt, und jegliches andere ähnliche Gerät umfassen, das geeignet ist, unidirektional oder bidirektional Inhalt zwischen Inhaltsanbietern und Plattform 902 und/oder Anzeige 920, über Netzwerk 960 oder direkt zu kommunizieren. Es wird darauf hingewiesen, dass der Inhalt unidirektional und/oder bidirektional zu und von jeglicher der Komponenten in System 900 und einem Inhaltsanbieter über Netzwerk 960 kommuniziert werden kann. Beispiele von Inhalt können jegliche Medieninformationen, einschließlich zum Beispiel Video, Musik, Grafik, Text, medizinischer Inhalt und Spieleinhalt, und so weiter, beinhalten.

Inhaltsdienstgerät(e) 930 empfangen Inhalt wie Kabelfernsehprogramme einschließlich Medieninformation, digitaler Information und/oder anderer Inhalt. Beispiele für Inhaltsanbieter können jegliche Anbieter von Kabel- oder Satellitenfernsehen oder Radio- oder Internet-Inhaltsanbieter beinhalten. Die bereitgestellten Beispiele sollen die vorliegende Offenbarung nicht beschränken. In einigen Ausführungsformen kann Plattform 902 Steuersignale von Navigationssteuerung 950 mit einem oder mehreren Navigationsmerkmalen empfangen. Die Navigationsmerkmale von Steuerung 950 können verwendet werden, um beispielsweise mit Benutzerschnittstelle 922 zu interagieren. In einigen Ausführungsformen kann Navigationssteuerung 950 ein Zeigegerät sein, das eine Computerhardwarekomponente (insbesondere ein menschliches Schnittstellengerät) sein kann, die es einem Benutzer erlaubt, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie zum Beispiel Graphical-User-Interfaces (GUI) und Fernsehgeräte und Monitore, erlauben es dem Benutzer, Daten für den Computer oder das Fernsehen durch Verwenden von physischen Gesten, Gesichtsausdrücken oder Tönen zu steuern und diese bereitzustellen.

Bewegungen der Navigationsmerkmale von Steuerung 950 können auf einer Anzeige (zum Beispiel Anzeige 920) durch Bewegungen eines Zeigegeräts, eines Cursors, eines Fokusrings oder anderer auf der Anzeige angezeigter visueller Indikatoren wiedergegeben werden. Zum Beispiel können unter der Steuerung von Softwareanwendungen 916 die auf Navigationssteuerung 950 angeordneten Navigationsmerkmale zu virtuellen Navigationsmerkmalen abgebildet werden, die beispielsweise auf Benutzerschnittstelle 922 angezeigt werden. In einigen Ausführungsformen kann Steuerung 950 keine separate Komponente sein, sondern in Plattform 902 und/oder Anzeige 920 integriert sein. Ausführungsformen sind jedoch nicht auf die Elemente oder auf den Kontext, der hierin gezeigt oder beschrieben ist, beschränkt, worauf hingewiesen wird.

In einigen Ausführungsformen können Treiber (nicht gezeigt) eine Technologie umfassen, die es Benutzern ermöglicht, Plattform 902 wie einen Fernseher mit der Berührung einer Taste nach dem anfänglichen Hochfahren, wenn ermöglicht, beispielsweise sofort ein- und auszuschalten. Programmlogik kann es Plattform 902 erlauben, Inhalte an Medienadapter oder andere Inhaltsdienstgerät(e) 930 oder Inhaltsliefergerät(e) 940 zu streamen, wenn die Plattform auf „aus“ geschaltet ist. Zusätzlich kann Chipsatz 905 Hardware- und/oder Software-Unterstützung für beispielsweise 5.1-Surround-Sound-Audio und/oder High-Definition 7.1-Surround-Sound-Audio umfassen. Treiber können einen Grafiktreiber für integrierte Grafikplattformen beinhalten. In einigen Ausführungsformen kann der Grafiktreiber eine Peripheral-Component-Interconnect (PCI) -Express-Grafikkarte umfassen.

In verschiedenen Ausführungsformen können eine oder mehrere der in System 900 gezeigten Komponenten integriert sein. Zum Beispiel können Plattform 902 und Inhaltsdienstgerät(e) 930 integriert sein, oder Plattform 902 und Inhaltsliefergerät(e) 940 können integriert sein, oder Plattform 902, Inhaltsdienstgerät(e) 930 und Inhaltsliefergerät(e) 940 können beispielsweise integriert sein. In verschiedenen Ausführungsformen können Plattform 902 und Anzeige 920 eine integrierte Einheit sein. Anzeige 920 und Inhaltsdienstgerät(e) 930 können integriert sein, oder Anzeige 920 und Inhaltsliefergerät(e) 940 können beispielsweise integriert sein. Diese Beispiele sollen die vorliegende Offenbarung nicht beschränken.

In verschiedenen Ausführungsformen kann System 900 als ein drahtloses System, ein drahtgebundenes System, oder eine Kombination von beiden implementiert sein. Wenn als ein drahtloses System implementiert, kann System 900 Komponenten und Schnittstellen beinhalten, die zum Kommunizieren über ein drahtloses geteiltes Medium geeignet sind, wie zum Beispiel eine oder mehrere Antennen, Sender, Empfänger, Sende-Empfangsgeräte, Verstärker, Filter, Steuerlogik, und so weiter. Ein Beispiel von drahtlosem geteiltem Medium kann Abschnitte eines drahtlosen Spektrums, wie z. B. das HF-Spektrum, und so weiter, beinhalten. Wenn als ein drahtgebundenes System implementiert, kann System 900 Komponenten und Schnittstellen beinhalten, die zum Kommunizieren über drahtgebundene Kommunikationsmedien geeignet sind, wie zum Beispiel Eingabe/Ausgabe (I/O) -Adapter, physische Verbindungselemente, um den I/O-Adapter mit einem entsprechenden drahtgebundenen Kommunikationsmedium zu verbinden, eine Network-Interface-Card (NIC), Disc-Controller, Video-Controller, Audio-Controller, und so weiter. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, Kabel, Metallleiter, Printed-Circuit-Board (PCB), Rückwandplatine, Schaltergewebe, Halbleitermaterial, verdrillten Doppelleiter, Koaxialkabel, Faseroptik, und so weiter, beinhalten.

Plattform 902 kann einen oder mehrere logische oder physische Kanäle einrichten, um Informationen zu kommunizieren. Die Information kann Medieninformation und Steuerinformation beinhalten. Medieninformationen können sich auf jegliche Daten beziehen, die für einen Benutzer bestimmte Inhalte darstellen. Beispiele für Inhalte können beispielsweise Daten von einer Sprachkonversation, Videokonferenz, Video-Streaming, E-Mail- oder Textnachrichten, Voicemail-Nachrichten, alphanumerischen Symbolen, Grafiken, Bildern (z. B. Selfies, usw.), Video, Text, und so weiter, beinhalten. Steuerinformationen können sich auf jegliche Daten beziehen, die für ein automatisiertes System gedachte Befehle, Anweisungen oder Steuerwörter darstellen. Zum Beispiel kann Steuerinformation dazu verwendet werden, Medieninformation durch ein System zu leiten, oder einen Knoten anzuweisen, die Medieninformation in einer vorgegebenen Weise zu verarbeiten (zum Beispiel durch Verwenden von Hardware, die für Privilegienzugriffsverletzungsprüfungen wie hierin beschrieben unterstützt wird). Die Ausführungsformen sind jedoch nicht auf die Elemente oder auf den Kontext, der in 9 gezeigt oder beschrieben ist, beschränkt.

Wie oben beschrieben, kann System 900 in verschiedenen physischen Stilen oder Formfaktoren verkörpert sein. 9 veranschaulicht Ausführungsformen eines kleinen Formfaktorgeräts 900, in dem System 900 verkörpert sein kann. In einigen Ausführungsformen kann Gerät 900 zum Beispiel als ein mobiles Datenverarbeitungsgerät mit drahtlosen Fähigkeiten implementiert sein. Ein mobiles Datenverarbeitungsgerät kann sich auf jegliches Gerät beziehen, das ein Verarbeitungssystem und eine mobile Energiequelle oder -Versorgung, wie zum Beispiel eine oder mehrere Batterien, hat.

Wie zuvor beschrieben, können Beispiele eines mobilen Datenverarbeitungsgeräts einen Personal-Computer (PC), Laptop-Computer, tragbares Datenverarbeitungsgerät, Ultra-Laptop-Computer, Tablet, Touchpad, tragbaren Computer, Handheld-Computer, Palmtop-Computer, Personal-Digital-Assistant (PDA), Mobiltelefon, Kombination Mobiltelefon/PDA, Fernseher, intelligentes Gerät (z. B. Smartphone, Smart-Tablet oder Smart-TV), mobiles Internetgerät (MID), Nachrichtengerät, Datenkommunikationsgerät, und so weiter, beinhalten

Beispiele eines mobilen Datenverarbeitungsgeräts können auch Computer beinhalten, die angeordnet sind, um von einer Person getragen zu werden, wie zum Beispiel ein Handgelenkcomputer, Fingercomputer, Ringcomputer, Brillencomputer, Gürtelclipcomputer, Armbandcomputer, Schuhcomputer, Bekleidungscomputer und andere tragbare Computer. In einigen Ausführungsformen kann zum Beispiel ein mobiles Datenverarbeitungsgerät als ein Smartphone implementiert sein, das geeignet ist, Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen auszuführen. Obwohl einige Ausführungsformen mit einem mobilen Datenverarbeitungsgerät, das beispielsweise als ein Smartphone implementiert ist, beschrieben werden können, wird darauf hingewiesen, dass andere Ausführungsformen durch Verwenden anderer drahtloser mobiler Datenverarbeitungsgeräte implementiert werden können. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.

Wie in 9 gezeigt, kann mobile elektronische Vorrichtung 900 ein Gehäuse 902, eine Anzeige 904, ein Eingabe/Ausgabe (I/O) -Gerät 906 und eine Antenne 908 umfassen. Vorrichtung 900 kann auch Navigationsmerkmale 912 umfassen. Anzeige 904 kann jegliche geeignete Anzeigeeinheit zum Anzeigen von Informationen umfassen, die für ein mobiles Datenverarbeitungsgerät, das in einer beispielhaften Ausführungsform eine Touchpad-Anzeige ist, angemessen sind. Das I/O-Gerät 906 kann jegliches geeignete I/O-Gerät zum Eingeben von Informationen in ein mobiles Datenverarbeitungsgerät umfassen. Beispiele für I/O-Gerät 906 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Knöpfe, eine Kamera, Schalter, Wippschalter, Mikrofone, Lautsprecher, Spracherkennungsgerät und Software, und so weiter, beinhalten. Informationen können in Gerät 900 auch mittels Mikrofon eingegeben werden. Solche Informationen können durch ein Spracherkennungsgerät digitalisiert werden. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.

Verschiedene Ausführungsformen können durch Verwenden von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert werden. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltkreise, Schaltungselemente (zum Beispiel Transistoren, Widerstände, Kondensatoren, Induktoren, und so weiter), integrierte Schaltkreise, Application-Specific-Integrated-Circuits (ASIC), Programmable-Logic-Devices (PLD), Digital-Signal-Processors (DSP), Field-Programmable-Gate-Array (FPGA), Logikgatter, Register, On-Chip-Systeme, Halbleitergerät, Chips, Mikrochips, Chipsätze, und so weiter, beinhalten. Beispiele von Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Application-Program-Interfaces (API), Anweisungssätze, Datenverarbeitungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole, oder jegliche Kombination davon, beinhalten. Ob Hardware-Elemente und/oder Software-Elemente verwendet werden, kann von einer Ausführungsform zur nächsten gemäß jeglicher Anzahl von Faktoren, wie zum Beispiel angestrebte Berechnungsrate, Leistungsniveaus, Wärmetoleranzen, Verarbeitungszyklus-Budget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen, variieren.

Einige Ausführungsformen können zum Beispiel durch Verwenden eines maschinenlesbaren Mediums oder Gegenstands implementiert werden, der eine Anweisung oder einen Satz von Anweisungen speichern kann, die, wenn von einer Maschine ausgeführt, die Maschine dazu veranlassen können, ein Verfahren und/oder eine Operationen gemäß einer Ausführungsform der vorliegenden Offenbarung auszuführen. Eine solche Maschine kann beispielsweise jegliche geeignete Verarbeitungsplattform, Datenverarbeitungsplattform, Datenverarbeitungsgerät, Verarbeitungsgerät, Datenverarbeitungssystem, Verarbeitungssystem, Computer, Prozessor oder dergleichen beinhalten und kann durch Verwenden jeglicher geeigneten Kombination von Hardware und Software implementiert werden. Das maschinenlesbare Medium oder der Artikel kann beispielsweise jeglichen geeigneten Typ von Speichereinheit, Speichergerät, Speicherartikel, Speichermedium, Speicherungsgerät, Speicherungsartikel, Speicherungsmedium und/oder Speicherungseinheit beinhalten, zum Beispiel Speicher, entfernbare oder nicht entfernbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Diskette, Compact-Disk-Read-Only-Memory (CD-ROM), Compact-Disk-Recordable (CD-R), Compact-Disk-Rewritable (CD-RW), optische Disk, magnetische Medien, magnetooptische Medien, entfernbare Speicherkarten oder Disketten, verschiedene Typen von Digital-Versatile-Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Anweisungen können jeglichen geeigneten Typ von ausführbarem Code beinhalten, der durch Verwenden irgendeiner geeigneten hochrangigen, niedrigrangigen, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert wird.

Weitere beispielhafte Ausführungsformen

Die folgenden Beispiele betreffen weitere Ausführungsformen, aus denen zahlreiche Permutationen und Konfigurationen ersichtlich werden.

Beispiel 1 offenbart ein Verfahren zum Ausführen einer Interprozesskommunikation zwischen Knoten eines Mehrknotensystems, wobei das Verfahren das Empfangen, durch einen Schaltkreis, eines Pakets von einem entfernten Knoten, einschließlich einer virtuellen Zielprozesskennung und mindestens einer Speicheroperation, das Umwandeln, durch den Schaltkreis, der virtuellen Prozesskennung in eine lokale Prozesskennung, die einem lokalen Prozess entspricht, und das Veranlassen, durch den Schaltkreis, dass die mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird, umfasst.

Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, wobei der Schaltkreis eine Netzwerkschnittstellenschaltung umfasst.

Beispiel 3 beinhaltet den Gegenstand eines der Beispiele 1-2, wobei das Veranlassen, dass die mindestens eine Speicheroperation gegen die dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird, ferner beinhaltet, dass der Schalkreis Direct-Memory-Access (DMA) auf einem Speichergerät ausführt.

Beispiel 4 beinhaltet den Gegenstand eines der Beispiele 1-3, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner das Durchquerens einer Zuordnungstabelle durch den Schaltkreis beinhaltet, um einen der virtuellen Zielprozesskennung entsprechenden lokalen Prozess zu identifizieren.

Beispiel 5 beinhaltet den Gegenstand eines der Beispiele 1-4, wobei das Paket ferner ein Job Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen eines Knotens zugeordnet ist.

Beispiel 6 beinhaltet den Gegenstand von Beispiel 5, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner das Zugreifen auf ein Content-Addressable-Memory (CAM) -Gerät, um eine Basisprozessadresse basierend auf dem Job-Tag zu bestimmen, und das Berechnen der lokalen Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Zielprozesskennung, beinhaltet.

Beispiel 7 beinhaltet den Gegenstand von Beispiel 5, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner das Zugreifen auf ein Content-Addressable-Memory (CAM) -Gerät, um eine Basisprozessadresse basierend auf dem Job-Tag zu bestimmen, das Berechnen einer Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Zielprozesskennung, und das Zugreifen auf eine Prozesskennungsverlagerungstabelle, um eine der berechneten Prozesskennung zugeordnete lokale Prozesskennung zu lokalisieren, beinhaltet.

Beispiel 8 beinhaltet den Gegenstand eines der Beispiele 1-7, wobei die virtuelle Prozesskennung auf einer algorithmischen Abbildung basiert, die mehrere physikalische Prozesse über eine Anzahl N Knoten abbildet.

Beispiel 9 offenbart ein System, wobei das System ein erstes Knotengerät umfasst, das einen Speicher, eine Steuerung, die mit dem Speicher gekoppelt und dazu ausgelegt ist, mindestens einen lokalen Prozess auszuführen, wobei der mindestens eine lokale Prozess einer Speicherregion und einer lokalen Prozesskennung zugeordnet ist, einen Schaltkreis, der kommunizierend mit der Steuerung gekoppelt und dazu ausgelegt ist, kommunizierend mit einem Mehrknotennetzwerk gekoppelt zu sein, wobei der Schaltkreis dazu ausgelegt ist, ein Paket von einem entfernten Knoten über das Mehrknotennetzwerk zu empfangen, wobei das Paket eine virtuelle Prozesskennung und mindestens eine Speicheroperation beinhaltet, das Identifizieren eines lokalen Zielprozesses zumindest teilweise durch Umwandeln der virtuellen Prozesskennung in eine dem lokalen Zielprozess entsprechende lokale Prozesskennung, und das Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Zielprozess zugeordnete Speicherregion ausgeführt wird, umfasst.

Beispiel 10 beinhaltet den Gegenstand von Beispiel 9, wobei der Schaltkreis eine Netzwerkschnittstellenschaltung umfasst.

Beispiel 11 beinhaltet den Gegenstand eines der Beispiele 9-10, wobei das Veranlassen, dass die mindestens eine Speicheroperation gegen die dem lokalen Zielprozess zugeordnete Speicherregion ausgeführt wird, ferner beinhaltet, dass der Schaltkreis Direct-Memory-Access (DMA) auf dem Speicher ausführt.

Beispiel 12 beinhaltet den Gegenstand eines der Beispiele 9-11, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner beinhaltet, dass der Schaltkreis eine Karte durchquert, um einen der virtuellen Prozesskennung entsprechenden lokalen Prozess zu identifizieren.

Beispiel 13 beinhaltet den Gegenstand von Beispiel 9, wobei das Paket ferner ein Job-Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen des ersten Knotengeräts zugeordnet ist.

Beispiel 14 beinhaltet den Gegenstand von Beispiel 13, wobei das erste Knotengerät ferner ein Content-Addressable-Memory (CAM) -Gerät umfasst.

Beispiel 15 beinhaltet den Gegenstand von Beispiel 14, wobei der Schaltkreis ferner dazu ausgelegt ist, auf das CAM-Gerät zuzugreifen, um eine Basisprozessadresse basierend auf dem Job-Tag zu ermitteln, und um den lokalen Zielprozess durch Summieren der Basisprozessadresse und der virtuellen Prozesskennung zu identifizieren.

Beispiel 16 beinhaltet den Gegenstand von Beispiel 14, wobei der Schaltkreis ferner dazu ausgelegt ist, auf das CAM-Gerät zuzugreifen, um eine Basisprozessadresse basierend auf dem Job-Tag zu ermitteln, und eine Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Prozesskennung zu berechnen, und den lokalen Zielprozess durch Zugreifen auf eine Prozesskennungsverlagerungstabelle zu identifizieren, um die der berechneten Prozesskennung zugeordnete lokale Prozesskennung zu lokalisieren.

Beispiel 17 beinhaltet den Gegenstand eines der Beispiele 9-16, wobei die virtuelle Prozesskennung auf einer algorithmischen Abbildung basiert, die mehrere physikalische Prozesse über eine Anzahl N Knoten abbildet.

Beispiel 18 beinhaltet den Gegenstand eines der Beispiele 9-17, wobei das Mehrknotennetzwerk mehrere Knotengeräte beinhaltet, und wobei das Mehrknotennetzwerk Hardware-Fabric in einer All-to-All-Konfiguration beinhaltet, sodass jeder Knoten einen Pfad zu allen anderen Knoten hat.

Beispiel 19 umfasst den Gegenstand von Beispiel 9, der ferner ein zweites Knotengerät umfasst, das einen Speicher, eine kommunizierend mit einem Mehrknotennetzwerk gekoppelte Netzwerkschnittstellenschaltung, einen Schalkreis, der mit dem Speicher gekoppelt und dazu ausgelegt ist, eine Anforderung zum Ausführen von Interprozesskommunikation zu empfangen, umfasst, wobei die Anforderung eine logische Prozesskennung identifiziert, eine Zielkennung für einen physischen Knoten und eine lokale Zielprozesskennung basierend auf einer algorithmischen Abbildung berechnet und veranlasst, dass ein Paket über das Mehrknotennetzwerk zu dem physischen Zielknoten geleitet wird.

Beispiel 20 beinhaltet den Gegenstand von Beispiel 19, wobei die algorithmische Abbildung eine geblockte oder eine gefaltete algorithmische Abbildung umfasst.

Beispiel 21 offenbart ein nicht flüchtiges computerlesbares Medium mit mehreren darauf kodierten Anweisungen, die, wenn von mindestens einem Prozessor ausgeführt, veranlassen, dass ein Prozess ausgeführt wird, wobei der Prozess das Empfangen eines Pakets von einem entfernten Knoten über das Mehrknotennetzwerk, wobei das Paket eine virtuelle Zielprozesskennung und mindestens eine Speicheroperation beinhaltet, das Umwandeln der virtuellen Prozesskennung in eine lokale Prozesskennung, die einem lokalen Prozess entspricht, und das Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird, umfasst.

Beispiel 22 beinhaltet den Gegenstand von Beispiel 21, wobei die Speicheroperation eine Get- oder Set-Operation ist.

Beispiel 23 beinhaltet den Gegenstand eines der Beispiele 21-22, wobei das Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Prozess zugeordnete Speicherregion ausgeführt wird, ferner das Veranlassen beinhaltet, dass der Schaltkreis Direct-Memory-Access (DMA) auf einem Speichergerät ausführt.

Beispiel 24 beinhaltet den Gegenstand eines der Beispiele 21-23, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner das Durchqueren einer Karte beinhaltet, um einen der virtuellen Zielprozesskennung entsprechenden lokalen Prozess zu identifizieren.

Beispiel 25 beinhaltet den Gegenstand von Beispiel 21, wobei das Paket ferner ein Job-Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen eines Knotens zugeordnet ist.

Beispiel 26 beinhaltet den Gegenstand von Beispiel 25, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner das Veranlassen des Schaltkreises, auf ein Content-Addressable-Memory (CAM) -Gerät zuzugreifen, um eine Basisprozessadresse basierend auf dem Job-Tag zu bestimmen, und das Berechnen der lokalen Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Zielprozesskennung, beinhaltet.

Beispiel 27 beinhaltet den Gegenstand von Beispiel 25, wobei das Umwandeln der virtuellen Prozesskennung in die dem lokalen Prozess entsprechende lokale Prozesskennung ferner das Veranlassen des Schaltkreises, auf ein Content-Addressable-Memory (CAM) -Gerät zuzugreifen, um eine Basisprozessadresse basierend auf dem Job-Tag zu bestimmen, das Berechnen einer lokalen Prozesskennung durch Summieren der Basisprozessadresse und der virtuellen Zielprozesskennung, und das Zugreifen auf eine Prozesskennungsverlagerungstabelle, um eine der Prozesskennung zugeordnete lokale Prozesskennung zu lokalisieren, beinhaltet.

Beispiel 28 offenbart ein System das einen Speicher, Mittel zum Empfangen eines Pakets von einem entfernten Knoten über ein Mehrknotennetzwerk, wobei das Paket eine virtuelle Prozesskennung und mindestens eine Speicheroperation beinhaltet, Mittel zum Identifizieren eines lokalen Zielprozesses zumindest teilweise durch Umwandeln der virtuellen Prozesskennung in eine dem lokalen Zielprozess entsprechende lokale Prozesskennung, und Mittel zum Veranlassen, dass die mindestens eine Speicheroperation gegen eine dem lokalen Zielprozess zugeordnete Speicherregion ausgeführt wird, umfasst.

Beispiel 29 beinhaltet den Gegenstand von Beispiel 28, der ferner Mittel zum Durchqueren einer Karte umfasst, um einen der virtuellen Prozesskennung entsprechenden lokalen Prozess zu identifizieren.

Beispiel 30 beinhaltet den Gegenstand eines der Beispiele 28-29, wobei das Paket ferner ein Job-Tag beinhaltet, wobei das Job-Tag einem oder mehreren lokalen Prozessen zugeordnet ist.

Beispiel 31 beinhaltet den Gegenstand von Beispiel 30, der ferner Mittel zum Ermitteln einer Basisprozessadresse basierend auf dem Job-Tag, und Mittel zum Identifizieren des lokalen Zielprozesses durch Summieren der Basisprozessadresse und der virtuellen Prozesskennung, umfasst.

Die vorstehende Beschreibung von beispielhaften Ausführungsformen wurde zum Zweck der Veranschaulichung und Beschreibung präsentiert. Sie ist nicht dazu beabsichtigt, erschöpfend zu sein, oder die vorliegende Offenbarung auf die präzise offenbarten Formen zu beschränken. Im Licht dieser Offenbarung sind viele Modifikationen und Variationen möglich. Es ist beabsichtigt, dass der Umfang der vorliegenden Offenbarung nicht durch diese detaillierte Beschreibung, sondern vielmehr durch die hierzu beigefügten Ansprüche beschränkt wird. Zukünftig eingereichte Anmeldungen, die Priorität für diese Anmeldung beanspruchen, können den offenbarten Gegenstand auf eine andere Weise beanspruchen und können allgemein jeden Satz einer oder mehrerer Beschränkungen, wie hierin offenbart oder anderweitig demonstriert, beinhalten.