Wolfram Computation Meets Knowledge

Wie verwende ich Mathematica in einem verwalteten High-Performance-Cluster?

Allgemeines

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.

Ein entferntes Mathematica-Frontend ausführen

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.

  1. Melden Sie sich am Hauptcomputer über SSH mit aktivierter X-Windows-Weiterleitung an.
  2. Starten Sie eine interaktive Sitzung, die alle Ressourcen auf einem einzelnen Computer bzw. Knoten anfordert.
  3. Starten Sie eine Mathematica-Sitzung.

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.

Ein entferntes Mathematica-Script ausführen

Es wird angenommen, dass

  • Sie wissen, wie man entfernte Subkernel startet
  • das Cluster eine Unix-Umgebung ist
  • das Cluster ein geklontes Dateisystem verwendet, sodass Mathematica von derselben ausführbaren Datei auf allen Computern bzw. Knoten ausgeführt wird

Wenn eine der obigen Annahmen nicht zutrifft, muss das Folgende geändert werden, aber die allgemeinen Grundzüge bleiben bestehen:

  1. Fragen Sie das System ab, um die Namen der Knoten zu finden, die dem Job zugewiesen sind, und wie viele Kerne pro Knoten verfügbar sind
  2. Starten Sie entfernte Kernel manuell

Auf einem von Torque verwalteten Cluster würde zum Beispiel in einem Mathematica- oder Wolfram Language-Skript Folgendes stehen:

(*get association of resources, name of local host and remove local host 
from available resources*)
hosts = Counts[ReadList[Environment["PBS_NODEFILE"], "String"]];
local = First[StringSplit[Environment["HOSTNAME"],"."]];
hosts[local]--;

(*launch subkernels and connect them to the controlling Wolfram Kernel*)
Needs["SubKernels`RemoteKernels`"];
Map[If[hosts[#] > 0, LaunchKernels[RemoteMachine[#, hosts[#]]]]&, Keys[hosts]];

An diesem Punkt können nun parallele Funktionen verwendet werden, die die gesamten verfügbaren Ressourcen nutzen. Wenn der parallele Code vollständig ist, ist es gute Praxis, die Wolfram-Kernel zu schließen.

CloseKernels[];

[English]

Ist dieser Artikel hilfreich?
Ja
Nein

Kommentare?

Danke für Ihr Feedback.

Senden

Support kontaktieren

Egal, ob Sie eine Frage zur Rechnung, Aktivierung oder zu einer technischen Angelegenheit haben, wir sind da, um Ihnen zu helfen.

1-800-WOLFRAM (+1-217-398-0700 für internationale Anrufer)

Kundendienst

Montag–Freitag
8:00–17:00 US Central Time

  • Produktregistrierung oder Aktivierung
  • Kaufinformationen und Bestellung
  • Hilfe beim Installieren und Starten

Erweiterter technischer Support (für berechtigte Kunden)

Montag–Donnerstag
8:00–19:00 US Central Time

Freitag
8:30–10:00 & 11:00–17:00 US Central Time

  • Technischer Priority-Support
  • Produktassistenz von Wolfram-Experten
  • Hilfe beim Programmieren mit der Wolfram Language
  • Erweiterter Support beim Installieren