Dies ist eine alte Version des Dokuments!
Zielgruppe: Einsteiger des Phoenix-Clusters
Um auf dem Phoenix-Cluster zu arbeiten, sind einige wenige Grundkenntnisse mit Linux-System erforderlich.
Zur Arbeit auf dem Cluster stellen Sie eine SSH-Verbindung zu einem Loginknoten unter username@phoenix.hlr.rz.tu-bs.de
her. Dabei ist username
Ihr Benutzername, den Sie für alle Dienste des Gauß-IT-Zentrum nutzen; das Passwort ist das dazu gehörige Passwort.
Falls Sie sich noch nicht für die Nutzung des Phoenix registriert haben, können Sie sich an phoenix-support@tu-bs.de wenden.
ssh username@phoenix.hlr.rz.tu-bs.de
Für die Verwendung graphischer Anwendungen ist eine X-Weiterleitung mittels dem Parameter „-Y“ (nicht „-X“) nötig.
ssh -Y username@phoenix.hlr.rz.tu-bs.de
Um sich abzumelden, geben Sie einfach den Befehl exit
ein.
Der Fingerprint zum Login Server lautet:
phoenix.hlr.rz.tu-bs.de ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFDm9AGYEiUIZ6wBwXHoO6YmrMD/QKieMZGVJ0NLR0WhhfyNsjDmTOYM8idAjld57dsbdJZwNxDxaMxeNHG0rpy8bjex1OwqPMXVH7yab0aa87KPZNbCld6zQV/uUju6/xnbUOoybfEq5HfC2Trdxa+FVnk5wBJ0JUttDmn7ex4/qs71eNysOVH2jA77GEW1VeSHbimBFRYJiUAcVnjEmLJkj9gnCgES+VxSZnjhDVUFpLlt4PMXSX+3RNq1jrmXiafr+OR09QPIvpSEKafVqv4L1pA67JfOg2UDoEnBN1K3PG2L5fnuf2VQoUNqlv1MqR37uJuw2eVFlgYuAh1WD9
Wenn Sie mit einem Loginknoten verbunden sind, gibt es zwei Möglichkeiten Jobs zu starten: Direkt per Jobfile (dies ist die übliche Vorgehensweise), oder per Allokierung („Reservierung“) von Resourcen mithilfe eines Jobfiles, um interativ auf einzelnen Knoten zu arbeiten.
Ein Jobfile bzw. Jobscript sieht beispielsweise wie folgt aus:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=2 #SBATCH --time=12:00:00 #SBATCH --job-name=nearest #SBATCH --ntasks-per-node=20 working_dir=~ cd $working_dir module load comp/gcc/6.3.0 module load mpi/openmpi/2.1.0/gcc mpiexec -np 40 ./test/mpinearest
partition
gibt die Partition (auch Queue genannt) an, auf der Sie rechnen wollen.
time
gibt die maximale Laufzeit Ihres Jobs an, bevor dieser dann abgebrochen wird.
job-name
gibt einen Namen an, unter dem Sie Ihren Job später in SLURM wieder finden können.
Ein Jobfile muss dann mittels sbatch
gestartet werden.
username@login01 [~] sbatch jobname.job
Eine Startzeit kann mit dem Schalter –begin
vorgegeben werden. Beispielsweise:
--begin=16:00 --begin=now+1hour --begin=now+60 (seconds by default) --begin=2010-01-20T12:34:00
Weitere Informationen bietet auch man sbatch
. Sämtliche dort verwendeten Parameter können auch im Jobscript selber mit #SBATCH
angeben werden.
Wenn Sie sich Knoten reservieren wollen um interaktiv auf diesen zu arbeiten, ist dies mit einem simplen Jobfile möglich:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=1 #SBATCH --time=7-00:00:00 #SBATCH --job-name=SleepExample #SBATCH --ntasks-per-node=1 cd ~/data_dir sleep 168h
Bei der Ausführung per sbatch
wird dann ein Knoten für die angegebene Zeit benutzt. Da ein Job läuft, kann auf diesen vom Besitzer per SSH zugegriffen werden. Um den richtigen Knoten zu finden, verwenden Sie squeue
und suchen nach dem angegebenen Jobnamen. Danach aktivieren Sie den Sitzungsmanager mit screen
.
username@login01 [~] sbatch jobname.job [Knoten finden] username@login01 [~] ssh node265 username@node265 [~] screen username@node265 [~] ...
Nachdem Sie nun eine Anwendung gestartet haben, können Sie die Sitzung mit Strg + A + D
in den Hintergrund verschieben. Wichtig ist dabei, dass Sie vorher screen
eingegeben haben, um den Sitzungsmanager zu starten.
Eine in den Hintergrund verschobene Sitzung wird nicht geschlossen, wenn Sie die SSH-Verbindung trennen. Damit laufen Ihre Prozesse in diesen Sitzungen entsprechend weiter, andernfalls würden Sie beendet werden!
Um eine einzelne Sitzung wieder aufzunehmen, verwenden Sie auf dem entsprechenden Knoten screen -r
. Sollten mehrere Sitzungen im Hintergrund offen sein, wird eine Liste angezeigt, aus der Sie spezifizieren müssen:
username@node265 [~] screen -r 154577.pts-0.node265 (Detached) 154308.pts-0.node265 (Detached) 153240.pts-0.node265 (Detached) Type "screen [-d] -r [pid.]tty.host" to resume one of them. username@node265 [~] screen -r 153240.pts-0.node265
Diese Sitzung lässt sich danach mit Eingabe von screen -d
wieder in den Hintergrund verschieben.
Einen interaktiven Job in der vis Partition (Queue) starten. Auf dem zugewiesenen vis Knoten einloggen (ssh vis0X wobei X der zugewiesene Knoten ist). Falls noch nie vorher vnc genutzt wurde, diesen Befehl eingeben und ein neues vnc Passwort eingeben: /cluster/share/vnc/setup-vnc.sh Dann den Server mit dem folgenden Befehl starten: vncserver Wir empfehlen vinagre als VNC Client. Dort als tunnel username@phoenix.hlr.rz.tu-bs.de angeben. Als Ziel den zugewiesenen vis Knoten mit der Displaynummer (z.B. vis03:01).
Es wird nach dem neuen vnc Passwort gefragt, das in setpup-vnc.sh Schritt erstellt wurde. Am Ende den vnc Server mit vncserver -kill :1 beenden. Falls dies nicht passiert, sollte es beim nächsten einloggen getan werden. Sonst verschiebt sich die Display Nummer (:1 wird beispielsweise zu :2).
Sie können sich mit dem Befehlt squeue
eine Liste aller Jobs in SLURM anzeigen lassen. Mehr Informationen gibt es mit squeue -l
.
username@login01 [~]squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 333 standard MD_BA_GA user0001 R 58:56 1 node265 336 standard bash username R 1:12 2 node267,node268 334 standard bash user0002 R 50:16 1 node266 331 vis vis user0003 R 1:25:22 1 vis01 329 standard name1 user0003 PD 00:00 1 (Resources)
JOBID
ist die ID der Jobs, um diese in SLURM ansprechen zu können.
NAME
ist der von Ihnen gewählte Name zur leichteren Identifikation des Jobs.
ST
gibt den Status des Jobs an (R
= Running, PD
= Wartend).
TIME
beschreibt die Zeit, die der Job bereits läuft.
Sollte der Job nicht laufen (PD
), wird unter NODELIST
statt der Knoten eine knappe Begründung angegeben, warum der Job (noch) nicht läuft.
Mit der ID des Jobs lässt sich ein Job mit scancel
abbrechen:
username@login01 [~]scancel 336 salloc: Job allocation 336 has been revoked.
Auf dem Phoenix ist das Environment Modules System (kurz Modules) installiert.
Module verändern/erweitern Pfade und Variablen um Programme und Bibliotheken von anderen Orten zu laden. Jede auf dem Phoenix installierte Software hat ein Modulfile, welches die beim Laden die nötigen Variablen setzt, die für den Einsatz der Software erforderlich sind.
Eine Übersicht aller verfügbaren Module erhält man mittels
module avail
Die aktuell geladenen Module sieht man mit
module list
Auf diese Weise erkennt man auch, welche Software auf dem Phoenix verfügbar ist und in welchen Versionen diese vorliegen.
Module können mittels
module load MODULNAME
geladen werden. Es ist auch möglich, mehrere Module auf einmal zu laden. Diese werden dann getrennt durch Leerzeichen eingegeben.
Entfernt werden die Module dann durch
module remove MODULNAME
Hier ist es ebenfalls möglich, mehrere Module gleichzeitig zu entfernen.
Alle Module auf einmal entfernen
module purge
Die Datei /home/username/.bash_profile verhält sich wie die .bashrc auf den meisten anderen Linux Distributionen. Befehle die dort eingetragen werden, werden automatisch beim Anmelden ausgeführt. Zum Editieren kann zum Beispiel nano benutzt werden: nano .bash_profile
Um Abaqus mit Slurm und MPI kompatibel zu machen, müssen einige Befehle im Jobfile abgearbeitet werden. Hier ist ein Beispiel Jobfile.
#!/bin/bash -l #SBATCH --partition=fat #SBATCH --nodes=1 #SBATCH --job-name=dingALE #SBATCH --ntasks-per-node=20 #SBATCH --time=48:00:00 #SBATCH -o bo-%j.log module purge module load software/abaqus/abaqus_2016 input_file=dingALE.inp working_dir=~/DingALE cd $working_dir ### Create ABAQUS environment file for current job, you can set/add your own options (Python syntax) env_file=custom_v6.env ######################################################################### cat << EOF > ${env_file} mp_file_system = (DETECT,DETECT) EOF node_list=$(scontrol show hostname ${SLURM_NODELIST} | sort -u) mp_host_list="[" for host in ${node_list}; do mp_host_list="${mp_host_list}['$host', ${SLURM_CPUS_ON_NODE}]," done mp_host_list=$(echo ${mp_host_list} | sed -e "s/,$/]/") echo "mp_host_list=${mp_host_list}" >> ${env_file} ### Set input file and job (file prefix) name here job_name=${SLURM_JOB_NAME} ### ABAQUS parallel execution abaqus job=${job_name} input=${input_file} cpus=${SLURM_NTASKS} standard_parallel=all mp_mode=mpi interactive
Auf das vorhandene Script (Beispiel.sh) mit dem SBATCH und den auszuführenden Befehlen das Script /cluster/share/make_ansys_job_check_for_license.sh anwenden und dazu Lizenzenanzahl mit Lizenzart angeben. Das Skript hängt an den auszuführenden Skript die Lizenzcheck und zusätzlich benötigte Variablen mit an. Ausgegeben wird das Skript in der Standardausgabe, kann also mit Hilfe der Ein-/Ausgabe Umleitung von Linux in eine Datei mit dem Operator „>“ geschrieben werden.
Beispiel für eine normale Ansys Datei, die nocht keinen Lizenzcheck besitzt:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=1 #SBATCH --time=3:00:00 #SBATCH --job-name=TCTM #SBATCH --ntasks-per-node=20 module load software/ansys/18.0 ####################### #### HIER VARIABEL #### ####################### NUMPROCS=60 module load software/ansys/18.0 cfx5solve -batch -chdir $working_dir -double -verbose -def $working_dir/Heater_pt_Loss.def -start-method 'IBM MPI Distributed Parallel' -par -part $NUMPROCS -par-host-list $ALLMACHINES -part-coupled -part-large -part-mode orcb -priority 0 -size 1.4 -size-part 1.4
Syntax:
/cluster/share/make_ansys_job_check_for_license.sh Script.sh NumberOfLicences1 LicenceType1 NumberOfLicences2 LincenceType2 ...
Beispiel:
/cluster/share/make_ansys_job_check_for_license.sh Beispiel.sh 50 aa_r_hpc > BeispielMitLizenzCheck.sh
Wenn man nicht weiß welcher Lizenztyp genutzt werden soll, wird empfohlen den Typ aa_r_hpc zu nutzen.
Der Lizenzcheck funktioniert so, dass vorher die angegebene Anzahl an Lizenzen geprüft werden und je nachdem das Programm weiterlaufen kann, oder nach einer Stunde der Check nochmal durchgeführt wird, wenn nicht genug Lizenzen vorhanden sein sollten.
Alte Methode:
Es müssen die Dateien CFX.sh und nodes2ansys.py angelegt werden. Dann kann ein Ansys Job via sbatch CFX.sh gestartet werden. StaticMixer.def sollte durch die eigene Datei ersetzt werden.
CFX.sh:
#!/bin/bash -l # export PATH=/cluster/tools/ansys_inc/v180/CFX/tools/multiport/mpi/lnamd64/intel/bin:$PATH # export PATH=/cluster/tools/ansys_inc/v180/commonfiles/MPI/Intel/5.1.3.223/linx64:$PATH #SBATCH --partition=standard #SBATCH --nodes=2 #SBATCH --time=3:00:00 #SBATCH --job-name=Ansys #SBATCH --ntasks-per-node=20 # ####################### #### HIER VARIABEL #### ####################### export working_dir=$HOME/ansys # export ALLMACHINES=$(scontrol show hostname $SLURM_JOB_NODELIST |paste -d, -s ) /usr/bin/python nodes2ansys.py export ALLMACHINES=`cat $HOME/ansys/cfx_nodefile.dat` echo $SLURM_JOB_NODELIST>$HOME/ansys/slurmjoblist echo $ALLMACHINES>$HOME/ansys/machines ################# NUMPROCS=40 ################# cd $working_dir export TMI_CONFIG=/cluster/tools/ansys_inc/v180/commonfiles/MPI/Intel/5.1.3.223/linx64/etc/tmi.conf export I_MPI_FABRICS=shm:tmi export I_MPI_FABRICS_LIST=tmi export I_MPI_FALLBACK=0 export I_MPI_TMI_PROVIDER=psm2 module load software/ansys/18.0 cfx5solve -batch -chdir $working_dir -double -verbose -def $working_dir/StaticMixer.def -start-method 'Intel MPI Distributed Parallel' -par -part $NUMPROCS -par-host-list $ALLMACHINES -part-coupled -part-large -part-mode orcb -priority 0 -size 1.4 -size-part 1.4
nodes2ansys.py:
#!/usr/bin/python import os # READ SLURM JOB LIST #line = example data: fat[1-3] line = os.environ['SLURM_JOB_NODELIST'] #line = 'fat[001-003]\n' line.strip() file = open( "cfx_nodefile.dat" , "w" ) #name = fat , numbers = 001-003 name,numbers = line.split('[') numbers = numbers.replace(']', '') #001-003 -> 001 003 start,end = numbers.split('-') #001 003 -> 1 3 start_int = int(start) end_int = int(end) #from 1 to 3 do: for number in range(start_int, end_int+1): number_string = str(number) #add the leading zeroes to node-number 2 -> 002 while len(number_string) < len(start): number_string = "0" + number_string #write down the nodename like fat002 20 times... you could do this most likely with ntasks-per-node for i in range (1,21): file.write(name + str(number_string) + ',' ) file.close
Für die Lehre existiert eine Queue: teaching und in Zukunft teaching_gpu. Diese Knoten verfügen nicht über eine funktionierende Infinity Band Verbindung sondern nutzen klassisches Ethernet für die MPI Kommunikation. Daher muss in der Jobfile angegeben werden, dass Ethernet genutzt werden soll.
NUMBER_OF_CPU_CORES_TO_USE=16 mpirun -n $NUMBER_OF_CPU_CORES_TO_USE --mca btl tcp,sm,self --mca btl_tcp_if_include eth0 /home/your_name/your_binary
Beispiel Jobfile:
#!/bin/bash -l #SBATCH --partition=visalt #SBATCH --nodes=2 #SBATCH --time=1:00:00 #SBATCH --job-name=nearest #SBATCH --ntasks-per-node=8 #SBATCH --exclude=visalt01 module load mpi/openmpi/2.1.0/gcc comp/gcc/6.3.0 mpirun -n 16 --mca btl tcp,sm,self --mca btl_tcp_if_include eth0 /home/raskrato/alt/visalt/ptest
Target audience: Beginners on the Phoenix Cluster
For your work with the Phoenix cluster you will need a little experience with Linux systems.
At first you need to connect via SSH to username@phoenix.hlr.rz.tu-bs.de
. Where username
is your account name for all services of the Gauß-IT-Zentrum with the same passwort.
In case you aren't registered yet, you can contact phoenix-support@tu-bs.de.
ssh username@phoenix.hlr.rz.tu-bs.de
If you need to work with graphical interfaces, you need to use trusted X11-forwarding with the parameter „-Y“ (instead of „-X“).
ssh -Y username@phoenix.hlr.rz.tu-bs.de
To log off you can use the command exit
.
The Fingerprint to the login server is:
phoenix.hlr.rz.tu-bs.de ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFDm9AGYEiUIZ6wBwXHoO6YmrMD/QKieMZGVJ0NLR0WhhfyNsjDmTOYM8idAjld57dsbdJZwNxDxaMxeNHG0rpy8bjex1OwqPMXVH7yab0aa87KPZNbCld6zQV/uUju6/xnbUOoybfEq5HfC2Trdxa+FVnk5wBJ0JUttDmn7ex4/qs71eNysOVH2jA77GEW1VeSHbimBFRYJiUAcVnjEmLJkj9gnCgES+VxSZnjhDVUFpLlt4PMXSX+3RNq1jrmXiafr+OR09QPIvpSEKafVqv4L1pA67JfOg2UDoEnBN1K3PG2L5fnuf2VQoUNqlv1MqR37uJuw2eVFlgYuAh1WD9
When you are connected to one of the login nodes, there are two ways to start jobs: With a jobfile (usual approach) or by allocating resources to interactively work on nodes.
For example a jobfile (or jobscript) can look like this:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=2 #SBATCH --time=12:00:00 #SBATCH --job-name=nearest #SBATCH --ntasks-per-node=20 working_dir=~ cd $working_dir module load comp/gcc/6.3.0 module load mpi/openmpi/2.1.0/gcc mpiexec -np 40 ./test/mpinearest
partition
determines the partition (queue) you want to use.
time
is the maximum time your job will run before being cancelled.
job-name
is the name for your job to identify in the queuing system.
The jobfile then has to be started with sbatch
.
username@login01 [~] sbatch jobname.job
A starting time can be given with –begin
.
--begin=16:00 --begin=now+1hour --begin=now+60 (seconds by default) --begin=2010-01-20T12:34:00
You can find further information with man sbatch
. Any parameters found there can also instead be included in the jobscript with #SBATCH
.
To allocate a node for interactive usage you need a simple jobfile:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=1 #SBATCH --time=7-00:00:00 #SBATCH --job-name=SleepExample #SBATCH --ntasks-per-node=1 cd ~/data_dir sleep 168h
When executing this file with sbatch
a node will be used for the given time. Since a job is running the user can connect to the node via SSH. To find the node allocated for you, use squeue
and look for your given job name. After connecting to the node you will have to activate the session manager with screen
.
username@login01 [~] sbatch jobname.job [Knoten finden] username@login01 [~] ssh node265 username@node265 [~] screen username@node265 [~] ...
After starting an application or processes on the node you can press Crtl + A + D
to move the session to the background.
A session that was moved to the background will not be closed when you disconnect from the node. Processes and application will continue to run in this session.
The get back into sessions use screen -r
. If you had multiple sessions moved to the background this will open a list from which you can specify:
username@node265 [~] screen -r 154577.pts-0.node265 (Detached) 154308.pts-0.node265 (Detached) 153240.pts-0.node265 (Detached) Type "screen [-d] -r [pid.]tty.host" to resume one of them. username@node265 [~] screen -r 153240.pts-0.node265
A session can be moved to the background again with screen -d
.
Start an interactive job in the vis partition (queue). Log in on the assigned vis node (ssh vis0X, where X is the assigned node). If you have never used vnc before, enter this command and enter a new vnc password: /cluster/share/vnc/setup-vnc.sh Start the vnc server with the command: vncserver Then start the server with the following command: vncserver We recommend vinagre as a VNC client. Specify username@phoenix.hlr.rz.tu-bs.de as tunnel. Specify the assigned vis node with the display number as target (e.g., vis03:01).
Then you are asked for the new vnc password that was created in setpup-vnc.sh step. In the end, shut down the vnc server with vncserver -kill: 1. If you forget shutting it down, it should be done the next time you log in. Otherwise the display number shifts (e.g., :1 becomes :2).
Using squeue
you get a list of all jobs currently running on the system. You can get more information with squeue -l
.
username@login01 [~]squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 333 standard MD_BA_GA user0001 R 58:56 1 node265 336 standard bash username R 1:12 2 node267,node268 334 standard bash user0002 R 50:16 1 node266 331 vis vis user0003 R 1:25:22 1 vis01 329 standard name1 user0003 PD 00:00 1 (Resources)
JOBID
is your jobs ID to specify your job to SLURM.
NAME
is the job name you chose for better identification.
ST
is the status of your job (R
= running, PD
= pending).
TIME
gives the time your job is currently running.
If your job is pending, NODELIST
will give a short explanation, why it is not (yet) running.
You can cancel your jobs with the ID from squeue
using scancel <ID>
.
username@login01 [~]scancel 336 salloc: Job allocation 336 has been revoked.
We use the Environment Modules System (short Modules) on the Phoenix.
Modules change and extend pathes and variables to load applications and libraries from different places. All installed software used on the Phoenix has a modulefile which loads the necessary variables to run the software.
For an overview of available modules you can use
module avail
The currently loaded modules are shown with
module list
This way you can see which software and which versions are installed on the Phoenix.
You can load modules with
module load MODULNAME
You can remove modules with
module remove MODULNAME
To load or remove multiple modules at once you just have to seperate them by a space.
/home/username/.bash_profile acts like .bashrc on most Linux distributions. Commands added there will be automatically executed on login. To edit the file you can for example use nano: nano .bash_profile
To make Abaqus compatible with Slurm and MPI, some commands have to be executed in the jobfile. Here is an exemplary jobfile:
#!/bin/bash -l #SBATCH --partition=fat #SBATCH --nodes=1 #SBATCH --job-name=dingALE #SBATCH --ntasks-per-node=20 #SBATCH --time=48:00:00 #SBATCH -o bo-%j.log module purge module load software/abaqus/abaqus_2016 input_file=dingALE.inp working_dir=~/DingALE cd $working_dir ### Create ABAQUS environment file for current job, you can set/add your own options (Python syntax) env_file=custom_v6.env ######################################################################### cat << EOF > ${env_file} mp_file_system = (DETECT,DETECT) EOF node_list=$(scontrol show hostname ${SLURM_NODELIST} | sort -u) mp_host_list="[" for host in ${node_list}; do mp_host_list="${mp_host_list}['$host', ${SLURM_CPUS_ON_NODE}]," done mp_host_list=$(echo ${mp_host_list} | sed -e "s/,$/]/") echo "mp_host_list=${mp_host_list}" >> ${env_file} ### Set input file and job (file prefix) name here job_name=${SLURM_JOB_NAME} ### ABAQUS parallel execution abaqus job=${job_name} input=${input_file} cpus=${SLURM_NTASKS} standard_parallel=all mp_mode=mpi interactive
We recommend use our new script, which converts your jobfile automaticly. Just write a normal jobfile and call this script and use > to save the output to a new file. Here is an example for normal ansys file without any license checks:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=1 #SBATCH --time=3:00:00 #SBATCH --job-name=TCTM #SBATCH --ntasks-per-node=20 module load software/ansys/18.0 ####################### #### HIER VARIABEL #### ####################### NUMPROCS=60 module load software/ansys/18.0 cfx5solve -batch -chdir $working_dir -double -verbose -def $working_dir/Heater_pt_Loss.def -start-method 'IBM MPI Distributed Parallel' -par -part $NUMPROCS -par-host-list $ALLMACHINES -part-coupled -part-large -part-mode orcb -priority 0 -size 1.4 -size-part 1.4
Here is the code to add an license check:
/cluster/share/make_ansys_job_check_for_license.sh Script.sh NumberOfLicences1 LicenceType1 NumberOfLicences2 LincenceType2 ...
An example:
/cluster/share/make_ansys_job_check_for_license.sh myjob.sh 50 aa_r_hpc > myjob_now_working_on_phoenix.sh
There are different license types. If you are not sure which one to choose, just use aa_r_hpc.
Under this note there is the old, legacy way of starting an ansys job.
The files CFX.sh and nodes2ansys.py must be created. Then an Ansys job can be started via sbatch CFX.sh. StaticMixer.def should be replaced with your own file.
CFX.sh:
#!/bin/bash -l # export PATH=/cluster/tools/ansys_inc/v180/CFX/tools/multiport/mpi/lnamd64/intel/bin:$PATH # export PATH=/cluster/tools/ansys_inc/v180/commonfiles/MPI/Intel/5.1.3.223/linx64:$PATH #SBATCH --partition=standard #SBATCH --nodes=2 #SBATCH --time=3:00:00 #SBATCH --job-name=Ansys #SBATCH --ntasks-per-node=20 # ####################### ### HERE CHANGEABLE ### ####################### export working_dir=$HOME/ansys # export ALLMACHINES=$(scontrol show hostname $SLURM_JOB_NODELIST |paste -d, -s ) /usr/bin/python nodes2ansys.py export ALLMACHINES=`cat $HOME/ansys/cfx_nodefile.dat` echo $SLURM_JOB_NODELIST>$HOME/ansys/slurmjoblist echo $ALLMACHINES>$HOME/ansys/machines ################# NUMPROCS=40 ################# cd $working_dir export TMI_CONFIG=/cluster/tools/ansys_inc/v180/commonfiles/MPI/Intel/5.1.3.223/linx64/etc/tmi.conf export I_MPI_FABRICS=shm:tmi export I_MPI_FABRICS_LIST=tmi export I_MPI_FALLBACK=0 export I_MPI_TMI_PROVIDER=psm2 module load software/ansys/18.0 cfx5solve -batch -chdir $working_dir -double -verbose -def $working_dir/StaticMixer.def -start-method 'Intel MPI Distributed Parallel' -par -part $NUMPROCS -par-host-list $ALLMACHINES -part-coupled -part-large -part-mode orcb -priority 0 -size 1.4 -size-part 1.4
nodes2ansys.py:
#!/usr/bin/python import os # READ SLURM JOB LIST #line = example data: fat[1-3] line = os.environ['SLURM_JOB_NODELIST'] #line = 'fat[001-003]\n' line.strip() file = open( "cfx_nodefile.dat" , "w" ) #name = fat , numbers = 001-003 name,numbers = line.split('[') numbers = numbers.replace(']', '') #001-003 -> 001 003 start,end = numbers.split('-') #001 003 -> 1 3 start_int = int(start) end_int = int(end) #from 1 to 3 do: for number in range(start_int, end_int+1): number_string = str(number) #add the leading zeroes to node-number 2 -> 002 while len(number_string) < len(start): number_string = "0" + number_string #write down the nodename like fat002 20 times... you could do this most likely with ntasks-per-node for i in range (1,21): file.write(name + str(number_string) + ',' ) file.close