\\
**[[cluster:0|Back]]**
===== Job Arrays =====
Just have to document this. Very handy.
You can find detailed informaton at this **[[http://lsfdocs.wesleyan.edu/lsf6.1_complete_doc_set_html/lsf6.1_admin/G_jobarrays.html#32777|Link]]**
A job array makes it easy to manage a sequence of jobs with "shorthand" syntax. It could be managing 20 jobs or 2,000 jobs, managed by a single command. Once submitted the array job itself can be managed or the individual jobs that make up the job array.
MAX_JOB_ARRAY_SIZE=65534
can be set in ''lsb.params''. The default is 1,000.
===== ''bsub -J'' =====
For example:
**''bsub -q idle -J "test[1-20]" -i ~/arrays/in.%I -o ~/arrays/out.%J.%I ~/array/my_array_job.sh''**
This single command will submit 20 jobs at once to queue idle. The **%I** iterates form 1 to 20. The **%J** assumes the JOBPID of the job array. If submitted, you would see something like:
bjobs 1766
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
1766 hmeij RUN idle swallowtail compute-1-1 test[1] Sep 09 12:34
1766 hmeij RUN idle swallowtail compute-1-17 test[2] Sep 09 12:34
1766 hmeij RUN idle swallowtail compute-2-31 test[3] Sep 09 12:34
1766 hmeij RUN idle swallowtail compute-1-10 test[4] Sep 09 12:34
...
1766 hmeij PEND idle swallowtail - test[18] Sep 09 12:34
1766 hmeij PEND idle swallowtail - test[19] Sep 09 12:34
1766 hmeij PEND idle swallowtail - test[20] Sep 09 12:34
Nifty.
Your input files are dynamically matched ... so "test[1]" uses ~/arrays/in.1 and the output file is saved as ~/arrays/out.1766.1 etc.
You now can manage your job arrays: for example to abort the entire job array ''bkill 1766'' or address individual jobs within the array ''bkill 1766[18]''.
===== Samples =====
If it was working you could use these sample files.
* create input files: ~/arrays/in.N with content (where N = 1 .. 20)
'N'
* create ~/arrays/my_array_job.sh
#!/bin/bash
read i
echo $(($i*$i))
Submit.
\\
**[[cluster:0|Back]]**