| 1 | = Εκτέλεση στις ουρές = |
| 2 | |
| 3 | Έχουμε 3 βασικές ουρές: |
| 4 | * clones |
| 5 | - clone1 - clone16 |
| 6 | * termis |
| 7 | - termi1 - termi3 |
| 8 | * serial |
| 9 | - sandman, haci3, broady, broady2, broady3, dungani, gold1, gold2, silver1, quest |
| 10 | |
| 11 | και 1 γενική: |
| 12 | |
| 13 | * parallel (clones, termis) |
| 14 | ---- |
| 15 | |
| 16 | 1. Eκτέλεση σε κάποιο clone: |
| 17 | |
| 18 | `qsub -q clones script.sh ` |
| 19 | |
| 20 | > ή για interactive mode: |
| 21 | > |
| 22 | > `qsub -q clones -I ` |
| 23 | |
| 24 | 2. Eκτέλεση σε κάποιο serial με 12 cores και 10G μνήμη: |
| 25 | |
| 26 | `qsub -q serial -l nodes=1:ppn=12,vmem=10000m script.sh ` |
| 27 | |
| 28 | 3. Eκτέλεση σε 4 serials με 4 cores και 2G μνήμη ανά node: |
| 29 | |
| 30 | `qsub -q serial -l nodes=4:ppn=4,vmem=1900m script.sh` |
| 31 | |
| 32 | 4. Eκτέλεση σε 1 node (parallel), με 8 cores, 10G μνήμη και local storage: |
| 33 | |
| 34 | `qsub -q parallel -l nodes=1:ppn=8:local,vmem=10000m script.sh` |
| 35 | |
| 36 | 5. Αν είστε συναισθηματικοί με το clone που πάντα είχατε (έστω clone4): |
| 37 | |
| 38 | `qsub -q clones -l nodes=clone4:ppn=8,vmem=1800m -I` |
| 39 | |
| 40 | > ή με τα clones που πάντα είχατε (έστω clone4-clone8): |
| 41 | > |
| 42 | > `qsub -q clones -l nodes=clone4:ppn=8+clone5:ppn=8+clone6:ppn=8+clone7:ppn=8+clone8:ppn=8,vmem=1800m -I` |
| 43 | ---- |
| 44 | == Παραδείγματα == |
| 45 | === Παράδειγμα 1: Interactive, 4 nodes, 8 cores each, unlimited memory usage (*CAREFUL*) === |
| 46 | {{{ |
| 47 | user@scirouter:~$ qsub -q clones -l nodes=4:ppn=8 -I |
| 48 | qsub: waiting for job 5435.localhost to start |
| 49 | qsub: job 5435.localhost ready |
| 50 | |
| 51 | user@clone1:~$ cat /var/spool/pbs/aux/5435.localhost |uniq |
| 52 | clone1 |
| 53 | clone2 |
| 54 | clone3 |
| 55 | clone4 |
| 56 | user@clone1:~$ ulimit -v |
| 57 | unlimited |
| 58 | user@clone1:~$ |
| 59 | }}} |
| 60 | |
| 61 | === Παράδειγμα 2: Interactive, 4 nodes, 8 cores each, limited memory usage === |
| 62 | {{{ |
| 63 | user@scirouter:~$ qsub -q clones -l nodes=4:ppn=8,vmem=1500m -I |
| 64 | qsub: waiting for job 5436.localhost to start |
| 65 | qsub: job 5436.localhost ready |
| 66 | |
| 67 | user@clone1:~$ cat /var/spool/pbs/aux/5436.localhost |uniq |
| 68 | clone1 |
| 69 | clone2 |
| 70 | clone3 |
| 71 | clone4 |
| 72 | user@clone1:~$ ulimit -v |
| 73 | 1536000 |
| 74 | user@clone1:~$ |
| 75 | }}} |
| 76 | |
| 77 | === Παράδειγμα 3: Ιnteractive 3 nodes, 16 cores each, serial, limited memory usage === |
| 78 | {{{ |
| 79 | user@scirouter:~$ qsub -q serial -l nodes=3:ppn=16,vmem=10000m -I |
| 80 | qsub: waiting for job 5437.localhost to start |
| 81 | qstqsub: job 5437.localhost ready |
| 82 | |
| 83 | user@haci3:~$ cat /var/spool/pbs/aux/5437.localhost |uniq |
| 84 | haci3 |
| 85 | sandman |
| 86 | broady |
| 87 | user@haci3:~$ ulimit -v |
| 88 | 10240000 |
| 89 | user@haci3:~$ |
| 90 | }}} |
| 91 | |
| 92 | === Παράδειγμα 4: NON-Ιnteractive 8 nodes, 4 cores each, parallel, limited memory usage per core === |
| 93 | |
| 94 | Το αρχείο που θα κάνουμε `qsub`: |
| 95 | {{{ |
| 96 | user@scirouter:~$ cat advection.pbs_small |
| 97 | #!/bin/bash -l |
| 98 | |
| 99 | #PBS -l nodes=8:ppn=4,pvmem=400m |
| 100 | #PBS -N advective_small |
| 101 | |
| 102 | cd advective3D |
| 103 | for itype in mx tcp |
| 104 | do |
| 105 | for x in 32 |
| 106 | do |
| 107 | |
| 108 | MX\_RCACHE=2 \\ |
| 109 | /usr/local/open-mpi/bin/mpirun \\ |
| 110 | -x MX\_RCACHE=2 \\ |
| 111 | -np $x --mca btl $itype,sm,self -bynode \\ |
| 112 | adv3D.comm -T 100 -X 256 -Y 256 -Z 256 -k 2 -x 1 -y 1 -z $x |
| 113 | MX\_RCACHE=2 \\ |
| 114 | /usr/local/open-mpi/bin/mpirun \\ |
| 115 | -x MX\_RCACHE=2 \\ |
| 116 | -np $x --mca btl $itype,sm,self -bynode \\ |
| 117 | adv3D.comm -T 100 -X 256 -Y 256 -Z 256 -k 2 -x 1 -y $x -z 1 |
| 118 | MX\_RCACHE=2 \\ |
| 119 | /usr/local/open-mpi/bin/mpirun \\ |
| 120 | -x MX\_RCACHE=2 \\ |
| 121 | -np $x --mca btl $itype,sm,self -bynode \\ |
| 122 | adv3D.comm -T 100 -X 256 -Y 256 -Z 256 -k 2 -x $x -y 1 -z 1 |
| 123 | done |
| 124 | done |
| 125 | }}} |
| 126 | η εντολή: |
| 127 | {{{ |
| 128 | user@scirouter:~$ qsub -q clones advection.pbs_small |
| 129 | 5438.localhost |
| 130 | user@scirouter:~$ |
| 131 | }}} |
| 132 | παρακολούθηση της εκτέλεσης: |
| 133 | {{{ |
| 134 | user@scirouter:~$ qstat |
| 135 | Job id Name User Time Use S Queue |
| 136 | ------------------------- ---------------- --------------- -------- - ----- |
| 137 | 5438.localhost advective\_small user 0 R clones |
| 138 | user@scirouter:~$ |
| 139 | }}} |
| 140 | και το output: |
| 141 | {{{ |
| 142 | user@scirouter:~$ cat advective_small.o5438 |
| 143 | 1x1x32 1.171 0.906 0.427 0.479 0.266 |
| 144 | 1x32x1 0.533 0.349 0.032 0.317 0.184 |
| 145 | 32x1x1 0.500 0.319 0.041 0.278 0.182 |
| 146 | 1x1x32 2.370 2.104 0.328 1.776 0.266 |
| 147 | 1x32x1 2.051 1.840 0.021 1.818 0.211 |
| 148 | 32x1x1 2.070 1.877 0.026 1.850 0.193 |
| 149 | }}} |
| 150 | Αντίστοιχα για 2 ουρές: |
| 151 | {{{ |
| 152 | user@scirouter:~$ qsub -q clones advection.pbs_small |
| 153 | 5441.localhost |
| 154 | user@scirouter:~$ qsub -q termis advection.pbs_small |
| 155 | 5442.localhost |
| 156 | user@scirouter:~$ qstat |
| 157 | Job id Name User Time Use S Queue |
| 158 | ------------------------- ---------------- --------------- -------- - ----- |
| 159 | 5441.localhost advective_small user 0 R clones |
| 160 | 5442.localhost advective_small user 0 R termis |
| 161 | }}} |
| 162 | και το output: |
| 163 | {{{ |
| 164 | user@scirouter:~$ cat advective_small.o5441 |
| 165 | 1x1x32 1.131 0.887 0.469 0.418 0.244 |
| 166 | 1x32x1 0.801 0.478 0.031 0.448 0.323 |
| 167 | 32x1x1 0.507 0.330 0.044 0.286 0.177 |
| 168 | 1x1x32 2.181 1.909 0.323 1.585 0.272 |
| 169 | 1x32x1 2.065 1.835 0.020 1.815 0.230 |
| 170 | 32x1x1 2.055 1.864 0.026 1.838 0.191 |
| 171 | user@scirouter:~$ cat advective_small.o5442 |
| 172 | 1x1x32 3.470 2.702 1.016 1.686 0.768 |
| 173 | 1x32x1 2.170 1.335 0.087 1.248 0.835 |
| 174 | 32x1x1 2.064 1.504 0.089 1.415 0.560 |
| 175 | 1x1x32 4.181 3.404 0.757 2.646 0.778 |
| 176 | 1x32x1 3.365 2.447 0.076 2.371 0.918 |
| 177 | 32x1x1 3.253 2.603 0.105 2.497 0.650 |
| 178 | }}} |
| 179 | |
| 180 | === Tips === |
| 181 | |
| 182 | * 1. Αν θέλουμε να τρέχουμε interactive jobs, για να μπορούμε να τα αφήσουμε να τρέχουν και να τα ανακτήσουμε αργότερα τρέχουμε |
| 183 | |
| 184 | `screen` |
| 185 | |
| 186 | στον scirouter και μετά qsub κλπ. για να βγούμε από το screen, αρκεί το ctrl-A-d (detach) και για να ξαναμπούμε κάποια στιγμή το |
| 187 | |
| 188 | `screen -Rx` |
| 189 | |
| 190 | |
| 191 | * 2. Προσοχη στη χρήση της μνήμης: Η εντολή |
| 192 | |
| 193 | `pbsnodelist` |
| 194 | |
| 195 | μας δίνει την κατάσταση των μηχανημάτων. Το 5ο πεδίο είναι η διαθέσιμη μνήμη του μηχανήματος σε MB. Φροντίζουμε να ορίζουμε πάντα το vmem=XXXXm για να είμαστε σίγουροι ότι θα τρέξουμε σε μηχάνημα που _σηκώνει_ την εφαρμογή μας. |
| 196 | |
| 197 | * 3. Προς το παρόν ακολουθούμε την πεπατημένη χρησιμοποιώντας ολόκληρα μηχανήματα για όσο διαρκεί η δουλειά που θέλουμε να τρέξουμε. |
| 198 | * 4. Οι κόμβοι, σύμφωνα με το pbsnodelist έχουν συγκεκριμένα χαρακτηριστικά (πχ. mx10g -- myrinet 10gbps, mx2g -- myrinet 2+2gbps, local -- local storage, clover -- intel core αρχιτεκτονική code name: clovertown κλπ.) επομένως αν θέλουμε τα τρέξουμε σε myri10g με local storage γράφουμε: |
| 199 | |
| 200 | `qsub -q clones -l nodes=4:ppn8:mx10g:local -I` |