Matlab is currently available for use centrally. One may use the Matlab environment by loading the appropriate module:
...
A batch or serial job is generally run on a single node. The following is a very simple example of a non-parallel batch job using Matlab functions.
Code Block | ||||
---|---|---|---|---|
|
...
#!/bin/bash |
...
# The name of the job: |
...
#$ -N MatlabTest |
...
# Name of the output log file: |
...
#$ -o matjob.log |
...
# Combining output/error messages into one file: |
...
#$ -j y |
...
# Specifying the Queue |
...
#$ -q UI |
...
# One needs to tell the queue system to use the current directory as the working directory |
...
#$ -cwd |
...
# The command(s) to be executed: |
...
matlab -nodisplay -nodesktop -nojvm -r batch |
...
# Note after -r is the name of the routine or function |
...
exit 0 |
Here is the Matlab function you are calling from within your job script:
Code Block | ||||
---|---|---|---|---|
|
...
A = fix(100*rand(5,6)); |
...
B = fix(100*rand(6,3)); |
...
C = A * B |
...
No Format |
---|
< M A T L A B (R) >
Copyright 1984-2012 The MathWorks, Inc.
R2012b (8.0.0.783) 64-bit (glnxa64)
August 22, 2012
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
C =
12893 12980 15469
15263 19329 17603
7885 16894 17448
14434 20490 27329
9235 18735 22408 |
...
Parallel Matlab Jobs (or "pool jobs")
...
Submit the job using 'qsub parallel-test.sh'
, assuming the name of the submission script is called parallel-test.sh.
Code Block | ||||
---|---|---|---|---|
|
...
#!/bin/bash |
...
# The name of the job: |
...
#$ -N |
...
test ## replace 'test' with job name |
...
# Name of the output log file: |
...
#$ -o matlabTest_parfor.log |
...
# Combining output/error messages into one file ( change y to n for separate files) |
...
#$ -j y |
...
# Specify the parallel environment (PE) and number of cores to use (8): |
...
#$ -pe smp 8 |
...
# One needs to tell the queue system to use the current directory as the working directory |
...
#$ -cwd |
...
# The matlab commands to be executed; replace "test" with your function name. |
...
# -r imediately runs a function without presenting an interactive prompt |
...
/opt/matlab/R2012b/bin/matlab -nodisplay -nodesktop -nosplash -r parafor-test |
...
exit 0 |
...
Within the Matlab script itself, you want to specify the number of cores you wish to reserve. This is done using the 'matlabpool('open', #)' command at the beginning of the file and ending the file with 'matlabpool('close')'. If you only want to use one core then you can omit the 'matlabpool' commands from your file.
Code Block | ||||
---|---|---|---|---|
|
...
matlabpool('open',8); |
...
tic |
...
start = tic; |
...
clear A |
...
parfor i = 1:100000; |
...
A(i) = i; |
...
end |
...
stop = toc(start); |
...
stop |
...
matlabpool('close'); |