This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
guide:moab [2011/05/25 13:32] smabakane |
guide:moab [2021/12/09 16:42] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | The following CHPC HPC systems (Sun Microsytems, | + | ======A Guide to the Moab Job Scheduler at the CHPC====== |
| - | Sun Microsystems - Moab (Scheduler) | + | To submit jobs to run on CHPC systems, you must write a shell script that will run your job, and then use '' |
| - | Blue Gene/P - Loadleveler (Resource manager). | + | |
| - | GPU - Torque (Resources manager) | + | |
| - | SUBMITTING A JOB USING MOAB | + | ====SUN HYBRID SYSTEM==== |
| + | |||
| + | ===PARTITIONS=== | ||
| + | |||
| + | The Sun system is divided into // | ||
| + | |||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | |||
| + | Users can specify different cluster partitions by adding a '' | ||
| + | msub -l feature=nehalem | ||
| + | You are able to choose more than one partition, provided, of course, your code can execute on the requested hardware. The syntax looks like: | ||
| + | msub -l feature=nehalem|harpertown | ||
| + | to use both '' | ||
| + | |||
| + | |||
| + | ===Sun and Dell Westmere Clusters=== | ||
| + | |||
| + | The new **Westmere** clusters are now open to be used and we hope that this will reduce the waiting time and the number of queuing jobs. The new Westmere clusters have their own partitions called "'' | ||
| + | |||
| + | **NB:** The new Dell cluster runs a different O/S from the Sun clusters. | ||
| + | |||
| + | Please note that each node of Westmere has **12 cores**, so please change the processes per node value from '' | ||
| - | Create a test job. | + | To run on one of the Westmere clusters specify |
| - | vi test the file named: job name. | + | |
| - | include | + | |
| - | To get the defination and more flags of MSUB do a command "man msub". | + | |
| - | ************************************************ | + | For example, in your script |
| - | ###These lines are for Moab | + | #MSUB -l feature=westmere |
| - | #MSUB -l nodes=4:ppn=8 | + | #MSUB -l nodes=1:ppn=12 |
| - | #MSUB -l walltime=2:00:00 | + | |
| - | #MSUB -m be | + | Or on the command line |
| - | #MSUB -o / | + | |
| - | | + | |
| - | #MSUB -d / | + | |
| - | #MSUB -mb | + | |
| - | #MSUB -M nmonama@csir.co.za | + | |
| - | | + | See the **// |
| - | NP=`cat $PBS_NODEFILE | wc –l` | + | |
| - | mpirun –np $NP –machinefile $PBS_NODEFILE DLPOLY_3.07.SPARC.Y | + | ===QUEUES=== |
| + | |||
| + | The Moab scheduler has several different queues on the Sun systems for different sized and priority jobs: | ||
| + | |||
| + | - small (min processors=1 , max processors = 8 , max walltime = 336 hours) | ||
| + | - par32 (min processors=9 , max processors = 32 , max walltime = 336 hours) | ||
| + | - par64 ( min processors=33 ,max processors = 64 , max walltime = 336 hours) | ||
| + | - big ( min processors=65, | ||
| + | - test (min processors=1 , max processors = 8 , max walltime = 10 minutes) | ||
| + | - interactive (max processors = 2 ) | ||
| + | - special ( min processors=129 , max processors = 512 , max walltime = 336hours ) | ||
| + | - priority ( min processors=129 , max processors = 768 , max walltime = 336hours ) | ||
| + | |||
| + | NOTE: Users need to log a call at http:// | ||
| + | they need to use the //special// or // | ||
| + | |||
| + | |||
| + | |||
| + | Note that it is not necessary for users to specify queues since moab will automatically choose the | ||
| + | correct queue for you from the information supplied in your job script | ||
| + | e.g. using "msub -l nodes=1: ppn=8 and msub -l walltime" | ||
| + | |||
| + | ===Job script example: | ||
| + | |||
| + | ===MPI job=== | ||
| + | |||
| + | Edit the file with, for example, | ||
| + | <file bash mpi.job> | ||
| + | #/bin/sh | ||
| + | #MSUB -l nodes=1: | ||
| + | #MSUB -l feature=nehalem|harpertown | ||
| + | #MSUB -l walltime=3: | ||
| + | #MSUB -m be | ||
| + | #MSUB -V | ||
| + | #MSUB -o / | ||
| + | #MSUB -e / | ||
| + | #MSUB -d / | ||
| + | #MSUB -mb | ||
| + | ##### Running commands | ||
| + | exe=/ | ||
| + | nproc=`cat $PBS_NODEFILE | wc -l` | ||
| + | mpirun -np $nproc -machinefile $PBS_NODEFILE $exe > users.out | ||
| + | </ | ||
| + | |||
| + | |||
| + | To submit this job (the '' | ||
| + | |||
| + | | ||
| + | |||
| + | By default the job will be submitted to small queue since it only requests 8 processors. | ||
| + | |||
| + | **NB:** Your job MUST be located on the scratch partition, otherwise it will fail to run. | ||
| + | |||
| + | ===Interactive job=== | ||
| + | |||
| + | You have to specify '' | ||
| + | |||
| + | msub -I | ||
| + | |||
| + | There will be a delay while the scheduler allocates and logs you into a free compute node. You can target | ||
| + | a specific free node: | ||
| + | |||
| + | msub -I -l nodes=cnode-9-23 | ||
| + | |||
| + | ===Test jobs=== | ||
| + | |||
| + | Users can use the same script and just change the walltime to 10 minutes or less and then change | ||
| + | #MSUB -l feature=nehalem|harpertown | ||
| + | to | ||
| + | #MSUB -l feature=test | ||
| + | in the job script. | ||
| + | |||
| + | ====GPU CLUSTER==== | ||
| + | |||
| + | ===PARTITIONS=== | ||
| + | |||
| + | - //C2070// (8 of these Nvidia //Fermi// GPU cards are available on two nodes) | ||
| + | - //C1060// (12 of these Nvidia //Tesla// GPU cards are available on three nodes) | ||
| + | |||
| + | Note that GPU cluster has 5 compute nodes and each node has 16 processors and 4 GPUs. In addition the head node (login node) has one each of C2070 and C1060 GPU cards. | ||
| + | |||
| + | ===Job script example: | ||
| + | |||
| + | ===MPI job over infiniband=== | ||
| + | |||
| + | Edit with '' | ||
| + | <file bash mpi.job> | ||
| + | ###These lines are for Moab | ||
| + | #MSUB -l nodes=2: | ||
| + | #MSUB -l feature=c2070 | ||
| + | #MSUB -l walltime=168: | ||
| + | #MSUB -m be | ||
| + | #MSUB -V | ||
| + | #MSUB -o / | ||
| + | #MSUB -e / | ||
| + | #MSUB -d / | ||
| + | #MSUB -mb | ||
| + | ##### Running commands | ||
| + | echo " | ||
| + | echo " | ||
| + | cat $PBS_NODEFILE | ||
| + | echo " | ||
| + | cat $PBS_NODEFILE|sed -e ' | ||
| + | echo " | ||
| + | echo " | ||
| + | cat $PBS_STEP_OUT.hostfile | ||
| + | exe=location of the executable | ||
| + | nproc=`cat $PBS_NODEFILE | wc -l` | ||
| + | cd / | ||
| + | mpirun $nproc $exe > / | ||
| + | </ | ||
| + | |||
| + | |||
| + | Type '' | ||
| + | |||
| + | In this example we have requested four C2070 GPUs and 32 processors | ||
| + | |||
| + | ====(Obsolete) BlueGene/P CLUSTER==== | ||
| + | |||
| + | The BlueGene has been decommissioned and is no longer available. | ||
| + | |||
| + | Users can only use 32, 64, 128, 256 or 512 processors ('' | ||
| + | |||
| + | ===Job script example: | ||
| + | |||
| + | ===MPI job=== | ||
| + | |||
| + | The '' | ||
| + | <file bash mpi.job> | ||
| + | ###These lines are for Moab | ||
| + | #MSUB -l ppn=128 | ||
| + | #MSUB -l walltime=168: | ||
| + | #MSUB -m be | ||
| + | #MSUB -V | ||
| + | #MSUB -o / | ||
| + | #MSUB -e / | ||
| + | #MSUB -d / | ||
| + | #MSUB -mb | ||
| + | ##### Running commands | ||
| + | / | ||
| + | -mode VN -exe LOCATIONOFTHEEXECUTABLE | ||
| + | </ | ||
| + | As before, use '' | ||
| + | |||
| + | |||
| + | ======Moab Summary====== | ||
| + | |||
| + | |||
| + | ====SUBMITTING A JOB USING MOAB==== | ||
| + | |||
| + | Create a test job using a //text// editor: the job script file is a shell script file and should be a plain Ascii text file with Unix style line end characters. | ||
| + | |||
| + | vi test.job | ||
| + | |||
| + | to create a file called '' | ||
| + | |||
| + | Include the following in your script, for more info check http:// | ||
| + | To get the definitions, | ||
| + | |||
| + | <file bash job.msub> | ||
| + | ###These lines are for Moab | ||
| + | #MSUB -l nodes=4: | ||
| + | #MSUB -l walltime=2: | ||
| + | #MSUB -m be | ||
| + | #MSUB -o / | ||
| + | #MSUB -e / | ||
| + | #MSUB -d / | ||
| + | #MSUB -mb | ||
| + | #MSUB -M nmonama@csir.co.za | ||
| + | |||
| + | ##### Running commands | ||
| + | NP=`cat $PBS_NODEFILE | wc –l` | ||
| + | mpirun –np $NP –machinefile $PBS_NODEFILE DLPOLY_3.07.SPARC.Y | ||
| + | </ | ||
| + | Details of each line of the job script: | ||
| SCRIPT | SCRIPT | ||
| Line 48: | Line 240: | ||
| #MSUB -W This option has been deprecated and should be ignored. | #MSUB -W This option has been deprecated and should be ignored. | ||
| - | ++++ | ||
| - | submit test: | + | To submit |
| - | msub test -q x (where x=nehalem, | + | msub test.job |
| - | ============================== | + | **NB:** Your job should always write its output to scratch. It will be faster if it reads its input from there as well. |
| - | *POST AND PRE PROCESSING* | + | |
| - | Please use the following node for post and pre processing: | + | |
| - | chpcsp01 | + | |
| - | chpcsp02 | + | |
| - | Below is an example of Loadleveler script in Blue Gene/P: | ||
| - | |||
| - | #@ job_type = bluegene | ||
| - | #@ bg_size = 64 | ||
| - | #@ class = BGP | ||
| - | #@ input = /dev/null | ||
| - | #@ output = dlpoly.$(jobid).out | ||
| - | #@ error = dlpoly.$(jobid).err | ||
| - | #@ wall_clock_limit = 12:00:00 | ||
| - | #@ resources = ConsumableCpus(1) | ||
| - | #@ node_usage = shared | ||
| - | #@ cluster_list = BGP | ||
| - | #@ notification = complete | ||
| - | #@ queue | ||
| - | / | ||
| - | |||
| - | | ||
| There are various controls of Moab and Loadleveler that can help you to manage your job: | There are various controls of Moab and Loadleveler that can help you to manage your job: | ||
| | | ||
| Some of Moab controls are as follows: | Some of Moab controls are as follows: | ||
| + | |||
| | Command | Description | | | Command | Description | | ||
| ^ msub | Scheduler job submission | | ^ msub | Scheduler job submission | | ||
| Line 86: | Line 257: | ||
| ^ showres | Show existing reservations | | ^ showres | Show existing reservations | | ||
| ^ showstart | Show estimate of when job can or will start | | ^ showstart | Show estimate of when job can or will start | | ||
| - | ^ Checkjob | + | ^ checkjob |
| - | + | ||
| - | + | ||
| - | | + | |
| | | ||
| + | |||