|
|
SeiteninhaltLoadLeveler auf dem UNIX-Cluster: Serielle und parallele Jobs startenEin Programm kann auf einem Prozessor laufen, dies ist ein "serieller" Job. Wenn ein Programm mehrere Threads öffnet und diese auf mehreren Prozessoren verteilt laufen, dann ist das ein "paralleler" Job. Einen seriellen Job startenMit Hilfe von xloadl kann ein serieller Job erstellt werden. Alternativ kann die cmd-Datei, die submittet werden soll, auch von Hand erstellt werden. Als Vorlage kann das folgende Skript verwendet werden: ### Die kursiven Ausdrücke selber bestücken! #!/bin/ksh # @ job_type = serial # @ executable = filename_of_executable # @ arguments = parameter-list # @ input = /dev/null # @ output = $(Executable).$(Cluster).$(Process).out # @ error = $(Executable).$(Cluster).$(Process).err # @ initialdir = Wherever_My_Directory_Is # @ notify_user = my_complete_email_adress # @ class = c200 # @ notification = complete # @ checkpoint = no # @ restart = no # @ requirements = (Arch == "R6000") && (OpSys == "AIX51") # @ queue Anstatt das Skript abzutippen, kann es auch als sample.cmd heruntergeladen werden. Wenn der Speicherbedarf eines seriellen Jobs durch die konfigurierten Klassen nicht abgedeckt wird, kann die Klasse "parallel" auch für serielle Jobs verwendet werden. Wie's geht steht am Ende des nächsten Abschnitts... Einen parallen Job startenDa ein paralleler Job auf mehreren Prozessoren läft müssen dem LoadLeveler im Vergleich zum seriellen Job noch zusätzliche Parameter mitgegeben werden. Grundsätzlich kann bei einem parallelen Job der Speicherbedarf und die Anzahl der zu benutzenden Prozessoren frei gewählt werden. Diese sogenannten "Consumable Resources" müssen bei parallelen Jobs immer angegeben werden. Als Vorlage kann das folgende Skript verwendet werden: ### Die kursiven Ausdrücke selber bestücken! #!/bin/ksh # @ job_type = parallel # @ executable = filename_of_executable # @ arguments = parameter-list # @ input = /dev/null # @ output = $(Executable).$(Cluster).$(Process).out # @ error = $(Executable).$(Cluster).$(Process).err # @ initialdir = Wherever_My_Directory_Is # @ notify_user = my_complete_email_adress # @ class = parallel # @ resources = ConsumableCpus(1) ConsumableMemory(2 GB) # @ node = 1 # @ tasks_per_node = 1 # @ notification = complete # @ checkpoint = no # @ restart = no # @ requirements = (Arch == "R6000") && (OpSys == "AIX51") # @ queue Anstatt das Skript abzutippen, kann es auch als parallel.cmd heruntergeladen werden. Nun zu den Änderungen gegenüber einem seriellen Job im einzelnen:
Einen serieller Job kann auch in der Klasse "parallel" gerechnnet werden. Dies hat den Vorteil das der Speicherbedarf mit Hilfe der "Consumable Resources" sehr genau gesteuert werden kann. Folgende Veränderungen sind dann vorzunehmen: # @ job_type = parallel # @ resources = ConsumableCpus(1) ConsumableMemory(2 GB) # @ node = 1 # @ tasks_per_node = 1 Der zu erwartende Speicherbedarf muß bei ConsumableMemory eingetragen werden.
geändert am 26. Oktober 2004 E-Mail: loadlloadl@rz.uni-frankfurt.de | | Zur Navigationshilfe |
Druckversion: 26. Oktober 2004, 09:18
http://www.uni-frankfurt.de/org/hrz/services/loadl/parallel.html