Das ultimative Wolfram Language- und Notebook-Erlebnis
Die Original-Umgebung für technische Datenverarbeitung
Multidomänen-Modellierung und -Simulation komplexer Systeme
Weitere mobile Apps
Wir liefern Lösungen für das KI-Zeitalter – durch die Kombination von symbolischer Berechnung, datengesteuerten Erkenntnissen und tiefgreifender technischer Expertise
Wolfram Consulting
Weitere Wolfram-Lösungen
Weitere Lösungen für den Bildungsbereich
Kurse in Informatik, Wissenschaft, Leben und mehr
Lernen, Probleme lösen und Ideen austauschen.
Nachrichten, Ansichten und Einblicke von Wolfram
Ressourcen für
Größere Rechencluster bestehen aus vielen Knoten, wobei jeder Knoten aus vielen CPU-Kernen besteht. Spezielle Software wie Mathematica läuft häufig im Rechnerverbund bzw. als Cluster. Benutzer fordern diese Ressourcen an, indem sie sich auf einem Rechner, dem Hauptknoten anmelden, und Batch-Jobs an den Cluster-Manager senden. Die Rechenaufgabe bzw. der Job wird ausgeführt, wenn die Ressourcen verfügbar sind. Zwei gängige Clustermanager sind TORQUE und Slurm.
Mathematicas Parallelsystem verwendet das Hub-and-Spoke-Modell, bei dem ein Control-Kernel eine Reihe untergeordneter Kernel (Subkernel) verwaltet. In einer Cluster-Umgebung führt der Client den Control-Kernel aus und die Hosts stellen Subkernel bereit. Der Cluster-Manager bestimmt, welcher Knoten als Client dient und welche Knoten als Hosts fungieren.
Der Betrieb von Mathematica auf einem Cluster hat zwei Vorteile: Die Anzahl der verfügbaren CPU-Kerne, selbst auf einem einzelnen Knoten, ist in der Regel größer als auf einem Desktop-Computer. Außerdem ist die Geschwindigkeit jedes CPU-Kerns individuell schneller als bei einem Desktop-Computer.
Bei einem entfernten Frontend muss der Benutzer die Kontrolle über die Ressourcen der Jobs behalten. Dies wird als interaktive Sitzung bezeichnet.
Obwohl es in der Regel einen Vorteil bei der CPU-Geschwindigkeit gegenüber der Verwendung eines Desktop-Computers gibt, ist das Frontend über eine interaktive Sitzung langsamer als die Ausführung einer lokalen Version des Frontends. Dies liegt daran, dass das Frontend auf dem Cluster ausgeführt wird, während die Schnittstelle an den Computer des Remote-Benutzers weitergeleitet wird.
Eine interaktive Sitzung ist nicht dazu gedacht, CPU-intensive Berechnungen auszuführen, sondern sie dient zum Testen und Diagnostizieren von Code. Normalerweise werden nur die Ressourcen eines Computers bzw. Knotens angefordert.
Wenn Sie in einem Mathematica-Notebook den Befehl LaunchKernels[] oder eine andere Parallelfunktionalität verwenden, werden nun andere Knoten bzw. Computer des Clusters mit einbezogen.
Es wird angenommen, dass
Wenn eine der obigen Annahmen nicht zutrifft, muss das Folgende geändert werden, aber die allgemeinen Grundzüge bleiben bestehen:
For Slurm, in a Mathematica or Wolfram Language script, you could have:
(* get host names *) hosts = ReadList["!scontrol show hostname $SLURM_JOB_NODELIST", String] masternode = Environment["SLURM_NODENAME"] njobs = ToExpression[Environment["SLURM_CPUS_ON_NODE"]] hosts = DeleteCases[hosts, masternode]; Length[hosts] (* launch kernels on each host *) kernels = KernelConfiguration[#, "KernelCount" -> njobs] & /@ hosts; LaunchKernels[kernels]
Bei der Erfassung der Knotennamen können Sie aus Gründen der Abwärtskompatibilität auch SLURM_NODELIST anstelle von SLURM_JOB_NODELIST verwenden.
SLURM_NODELIST
SLURM_JOB_NODELIST
Das zurückgegebene Format der Anzahl der Aufgaben pro Knoten ist nicht für die Interpretation durch die Wolfram Language geeignet. Daher wird der Ausdruck manuell in einen Listenausdruck geparst.
Für TORQUE könnte man in einem Mathematica- oder Wolfram-Language-Skript haben:
(* get association of resources *) hosts = Counts[ReadList[Environment["PBS_NODEFILE"], "String"]]; (* launch subkernels and connect them to the controlling Wolfram Kernel *) kernels= Map[KernelConfiguration[#,"KernelCount" -> hosts[#]] &, Keys[hosts]] LaunchKernels[kernels]
PBS_NODEFILE ist eine Systemvariable, die jeden Knotennamen einmal pro verfügbarem CPU-Kern auflistet. Counts wandelt diese Liste in eine Instanz von Association um, mit dem Knotennamen als Schlüssel und der Anzahl der CPU-Kerne als Wert. Der Einfachheit halber werden alle Subkernel als entfernte Kernel behandelt, auch wenn einige auf demselben Knoten wie die lokale Instanz von Mathematica laufen.
PBS_NODEFILE
Wenn der parallele Code abgeschlossen ist, ist es gute Praxis, die Wolfram-Kerne zu schließen:
CloseKernels[];
[English]
Kommentare?
Danke für Ihr Feedback.
Egal, ob Sie eine Frage zur Rechnung, Aktivierung oder zu einer technischen Angelegenheit haben, wir sind da, um Ihnen zu helfen.
Montag–Freitag 8:00–17:00 US Central Time
Montag–Donnerstag 8:00–19:00 US Central Time
Freitag 8:30–10:00 & 11:00–17:00 US Central Time