Difference between revisions of "Job submission"
From ScientificComputing
Line 161: | Line 161: | ||
== Helper == | == Helper == | ||
* [https://scicomp.ethz.ch/lsf_submission_line_advisor/ LSF Submission Line Advisor] | * [https://scicomp.ethz.ch/lsf_submission_line_advisor/ LSF Submission Line Advisor] | ||
+ | |||
<table style="width: 100%;"> | <table style="width: 100%;"> |
Revision as of 08:36, 15 July 2021
The three ways to access computing resources are
- Submit a job through command line
- Submit a job through a job bash script using #BSUB pragmas
- Get an interactive session on a compute node
Basic job submission
A basic BSUB job submission command consists of three parts:
bsub | LSF options | Job |
where
bsub | is the LSF submit command. |
LSF options | are for requesting resources and defining job-related options. |
Job | is a computing job to be submitted. |
Here is an example:
bsub | -n 1 -W 4:00 -R "rusage[mem=4096]" | "python myscript.py" |
When the job is submitted, LSF shows job's information:
$ bsub -n 1 -W 4:00 -R "rusage[mem=4096]" "python myscript.py" Generic job. Job <8146539> is submitted to queue <normal.4h>
The output includes
- Job type, e.g., Generic Job, MPI Job or Abaqus Job
- Unique job ID, e.g., 8146539
- The queue, e.g., normal.4h, normal.24h, or normal.120h
Job |
A job can be one of the following:
Job | Command | Examples of job submission command |
---|---|---|
a single Linux command | cmd | |
a program with its path | /path/to/myprogram | bsub ./bin/hello |
a command or program with its arguments | cmd arg1 arg2 | bsub echo hello |
multiple commands | "cmd1 ; cmd2" | bsub "date; pwd; ls -l" |
piped command | "cmd1 | cmd2" | |
a command with I/O redirection, quote | "cmd<in >out" | bsub "du -sk /scratch > du.out" |
a here document, passed via "<<" | << EOF ... EOF | |
a shell script, passed via "<" | < script | bsub < hello.sh |
LSF options |
Requesting resources
Resources | Format | Default values |
---|---|---|
Maximum run time | -W HH:MM | 04:00 (4 hours) |
Number of processors | -n nprocs | 1 processor |
Memory | -R "rusage[mem=2048]" | 1024 MB per core |
Scratch space | -R "rusage[scratch=10000]" |
Other LSF options
-o outfile | append job’s standard output to outfile |
-e errfile | append job’s error messages to errfile |
-R "rusage[...]" | advanced resource requirement (memory,...) |
-J jobname | assign a jobname to the job |
-w "depcond" | wait until dependency condition is satisfied |
-Is | submit an interactive job with pseudo-terminal |
-B /-N | send an email when the job begins/ends |
-u user@domain | use this address instead of username@ethz.ch |
LSF submission line advisor can assist your to find LSF options you need.
Job script and #BSUB pragmas
Create a job script called job_script.bsub
#!/bin/bash #BSUB -n 24 # 24 cores #BSUB -W 8:00 # 8-hour run-time #BSUB -R "rusage[mem=4000]" # 4000 MB per core #BSUB -J analysis1 #BSUB -o analysis1.out #BSUB -e analysis1.err #BSUB -N module load gcc/6.3.0 openmpi/3.0.2 cd /path/to/execution/folder mpirun myprogram arg1
Submit a job
$ bsub < job_script.bsub
Interactive session on a compute node
To run a quick test or a benchmark, you can request an interactive session on a compute node by using the BSUB option
-I, -Ip or -Is
For example:
[jarunanp@eu-login-38 ~]$ bsub -n 4 -W 01:00 -Is bash Generic job. Job <161197292> is submitted to queue <normal.4h>. <<Waiting for dispatch ...>> <<Starting on eu-ms-001-15>> [jarunanp@eu-ms-001-15 ~]$
Further reading
Helper