wiki:TorqueCheatsheet

Εκτέλεση στις ουρές

Έχουμε 3 βασικές ουρές:

  • clones
    • clone1 - clone16
  • termis
    • termi1 - termi3
  • serial
    • sandman, haci3, broady, broady2, broady3, dungani, gold1, gold2, silver1, quest

και 1 γενική:

  • parallel (clones, termis)

  1. Eκτέλεση σε κάποιο clone:

qsub -q clones script.sh

ή για interactive mode:

qsub -q clones -I

  1. Eκτέλεση σε κάποιο serial με 12 cores και 10G μνήμη:

qsub -q serial -l nodes=1:ppn=12,vmem=10000m script.sh

  1. Eκτέλεση σε 4 serials με 4 cores και 2G μνήμη ανά node:

qsub -q serial -l nodes=4:ppn=4,vmem=1900m script.sh

  1. Eκτέλεση σε 1 node (parallel), με 8 cores, 10G μνήμη και local storage:

qsub -q parallel -l nodes=1:ppn=8:local,vmem=10000m script.sh

  1. Αν είστε συναισθηματικοί με το clone που πάντα είχατε (έστω clone4):

qsub -q clones -l nodes=clone4:ppn=8,vmem=1800m -I

ή με τα clones που πάντα είχατε (έστω clone4-clone8):

qsub -q clones -l nodes=clone4:ppn=8+clone5:ppn=8+clone6:ppn=8+clone7:ppn=8+clone8:ppn=8,vmem=1800m -I


Παραδείγματα

Παράδειγμα 1: Interactive, 4 nodes, 8 cores each, unlimited memory usage (*CAREFUL*)

user@scirouter:~$ qsub -q clones -l nodes=4:ppn=8 -I
qsub: waiting for job 5435.localhost to start
qsub: job 5435.localhost ready

user@clone1:~$ cat /var/spool/pbs/aux/5435.localhost |uniq
clone1
clone2
clone3
clone4
user@clone1:~$ ulimit -v
unlimited
user@clone1:~$ 

Παράδειγμα 2: Interactive, 4 nodes, 8 cores each, limited memory usage

user@scirouter:~$ qsub -q clones -l nodes=4:ppn=8,vmem=1500m -I
qsub: waiting for job 5436.localhost to start
qsub: job 5436.localhost ready

user@clone1:~$ cat /var/spool/pbs/aux/5436.localhost |uniq
clone1
clone2
clone3
clone4
user@clone1:~$ ulimit -v
1536000
user@clone1:~$ 

Παράδειγμα 3: Ιnteractive 3 nodes, 16 cores each, serial, limited memory usage

user@scirouter:~$ qsub -q serial -l nodes=3:ppn=16,vmem=10000m -I
qsub: waiting for job 5437.localhost to start
qstqsub: job 5437.localhost ready

user@haci3:~$ cat /var/spool/pbs/aux/5437.localhost |uniq
haci3
sandman
broady
user@haci3:~$ ulimit -v
10240000
user@haci3:~$ 

Παράδειγμα 4: NON-Ιnteractive 8 nodes, 4 cores each, parallel, limited memory usage per core

Το αρχείο που θα κάνουμε qsub:

user@scirouter:~$ cat advection.pbs_small 
#!/bin/bash -l

#PBS -l nodes=8:ppn=4,pvmem=400m
#PBS -N advective_small

cd advective3D
for itype in mx tcp
do 
	for x in 32
	do

	MX\_RCACHE=2 \\
		/usr/local/open-mpi/bin/mpirun \\
		-x MX\_RCACHE=2 \\
		-np $x --mca btl $itype,sm,self -bynode \\
		adv3D.comm -T 100 -X 256 -Y 256 -Z 256 -k 2 -x 1 -y 1 -z $x
	MX\_RCACHE=2 \\
		/usr/local/open-mpi/bin/mpirun \\
		-x MX\_RCACHE=2 \\
		-np $x --mca btl $itype,sm,self -bynode \\
		adv3D.comm -T 100 -X 256 -Y 256 -Z 256 -k 2 -x 1 -y $x -z 1
	MX\_RCACHE=2 \\
		/usr/local/open-mpi/bin/mpirun \\
		-x MX\_RCACHE=2 \\
		-np $x --mca btl $itype,sm,self -bynode \\
		adv3D.comm -T 100 -X 256 -Y 256 -Z 256 -k 2 -x $x -y 1 -z 1
	done
done

η εντολή:

user@scirouter:~$ qsub -q clones advection.pbs_small 
5438.localhost
user@scirouter:~$

παρακολούθηση της εκτέλεσης:

user@scirouter:~$ qstat
Job id                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
5438.localhost            advective\_small  user                 0 R clones         
user@scirouter:~$ 

και το output:

user@scirouter:~$ cat advective_small.o5438 
1x1x32 1.171 0.906 0.427 0.479 0.266
1x32x1 0.533 0.349 0.032 0.317 0.184
32x1x1 0.500 0.319 0.041 0.278 0.182
1x1x32 2.370 2.104 0.328 1.776 0.266
1x32x1 2.051 1.840 0.021 1.818 0.211
32x1x1 2.070 1.877 0.026 1.850 0.193

Αντίστοιχα για 2 ουρές:

user@scirouter:~$ qsub -q clones advection.pbs_small 
5441.localhost
user@scirouter:~$ qsub -q termis advection.pbs_small 
5442.localhost
user@scirouter:~$ qstat
Job id                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
5441.localhost            advective_small  user                 0 R clones         
5442.localhost            advective_small  user                 0 R termis

και το output:

user@scirouter:~$ cat advective_small.o5441
1x1x32 1.131 0.887 0.469 0.418 0.244
1x32x1 0.801 0.478 0.031 0.448 0.323
32x1x1 0.507 0.330 0.044 0.286 0.177
1x1x32 2.181 1.909 0.323 1.585 0.272
1x32x1 2.065 1.835 0.020 1.815 0.230
32x1x1 2.055 1.864 0.026 1.838 0.191
user@scirouter:~$ cat advective_small.o5442
1x1x32 3.470 2.702 1.016 1.686 0.768
1x32x1 2.170 1.335 0.087 1.248 0.835
32x1x1 2.064 1.504 0.089 1.415 0.560
1x1x32 4.181 3.404 0.757 2.646 0.778
1x32x1 3.365 2.447 0.076 2.371 0.918
32x1x1 3.253 2.603 0.105 2.497 0.650

Tips

  • 1. Αν θέλουμε να τρέχουμε interactive jobs, για να μπορούμε να τα αφήσουμε να τρέχουν και να τα ανακτήσουμε αργότερα τρέχουμε

screen

στον scirouter και μετά qsub κλπ. για να βγούμε από το screen, αρκεί το ctrl-A-d (detach) και για να ξαναμπούμε κάποια στιγμή το

screen -Rx

  • 2. Προσοχη στη χρήση της μνήμης: Η εντολή

pbsnodelist

μας δίνει την κατάσταση των μηχανημάτων. Το 5ο πεδίο είναι η διαθέσιμη μνήμη του μηχανήματος σε MB. Φροντίζουμε να ορίζουμε πάντα το vmem=XXXXm για να είμαστε σίγουροι ότι θα τρέξουμε σε μηχάνημα που _σηκώνει_ την εφαρμογή μας.

  • 3. Προς το παρόν ακολουθούμε την πεπατημένη χρησιμοποιώντας ολόκληρα μηχανήματα για όσο διαρκεί η δουλειά που θέλουμε να τρέξουμε.
  • 4. Οι κόμβοι, σύμφωνα με το pbsnodelist έχουν συγκεκριμένα χαρακτηριστικά (πχ. mx10g -- myrinet 10gbps, mx2g -- myrinet 2+2gbps, local -- local storage, clover -- intel core αρχιτεκτονική code name: clovertown κλπ.) επομένως αν θέλουμε τα τρέξουμε σε myri10g με local storage γράφουμε:

qsub -q clones -l nodes=4:ppn8:mx10g:local -I

Last modified 2 years ago Last modified on 10/05/22 16:51:16
Note: See TracWiki for help on using the wiki.