Springe direkt zu Inhalt

CPUs

Wenn Ihr Progamm intern eine Form von Parallelität, wie Multithreading, OpenMP oder MPI, verwendet, wird der Job im Allgemeinen einen Kern pro Thread oder Prozess anfordern müssen.

Bitte beachten Sie, dass streng genommen eine CPU mehrere Kerne besitzt.  Allerdings werden die beiden Begriffe oft synonym verwendet, um eine einzige Recheneinheit zu bezeichnen.  Insbesondere wird in der Dokumentation zu Slurm oft CPU benutzt, wo Kern gemeint ist.

Um die optimale Anzahl von Kernen zu bestimmen, müssen folgende zwei Aspekte betrachtet werden:

  • Skalierung - Wie viele schenller läuft ein Programm, wenn die Anzahl der Kerne erhöht wird?
  • Wartezeit - Wie viel länger wird ein Job warten müssen, wenn mehr Kerne angefordert werden?

Skalierung

In Hinblick auf die Skalierung ist es gute Praxis, den gleichen Job mit jeweils einer anderen Anzahl von Kernen laufen zu lassen, damit man eine Idee bekommt, um wie viel die Laufzeit mit dem Parallelisierungsgrad veringert wird. Es kann sein, dass ein Job mit 32 Kernen nicht doppelt so schnell wie einer mit 16 Kernen läuft, sonder lediglich etwa 1,2 mal schneller.

Bevor man eine große Anzahl von ähnlichen Jobs laufen lässt, sollte man ein Skalierungsexperiment durchfürhen, in dem man den gleichen Job mit etwa 1, 2, 4 , 8, 16, 32 Kernen startet, un den Punkt zu ermitteln, ab dem die Steigerung der Zahl der Kerne eine abschwächende Wirkung auf die Geschwindigeit des Jobs hat.

Wartezeit

Wenn die angeforderten Ressourcen nicht zur Verfügung stehen, wird ein Job warten müssen.  Wenn ein Job warten muss, dann wird er im allgemeinen um so länger warten müssen, desto mehr Ressourcen er angefordert hat.  Dies ist besonders der Fall, wenn kein MPI-Parallelismus verwendet wird und alle Kerne sich innerhalb eines Knoten befinden müssen.  Man muss also erreichen, dass die wahrscheinliche Wartezeit in einem sinnvollen Verhältnis zur eigentlichen Laufzeit des Jobs steht.

Schlagwörter