QSUBCELLFUN

Note that this reference documentation is identical to the help that is displayed in MATLAB when you type “help qsubcellfun”.

QSUBCELLFUN applies a function to each element of a cell-array. The
function execution is done in parallel using the Torque, SGE, PBS or
SLURM batch queue system.
Use as
argout = qsubcellfun(fname, x1, x2, ...)
This function has a number of optional arguments that have to passed
as key-value pairs at the end of the list of input arguments. All other
input arguments (including other key-value pairs) will be passed to the
function to be evaluated.
UniformOutput = boolean (default = false)
StopOnError = boolean (default = true)
diary = string, can be 'always', 'never', 'warning', 'error' (default = 'error')
timreq = number, the time in seconds required to run a single job
timoverhead = number in seconds, how much time to allow MATLAB to start (default = 180 seconds)
memreq = number, the memory in bytes required to run a single job
memoverhead = number in bytes, how much memory to account for MATLAB itself (default = 1024^3, i.e. 1GB)
stack = number, stack multiple jobs in a single qsub job (default = 'auto')
backend = string, can be 'torque', 'sge', 'slurm', 'lsf', 'system', 'local' (default is automatic)
batchid = string, to identify the jobs in the queue (default is user_host_pid_batch)
compile = string, can be 'auto', 'yes', 'no' (default = 'no')
queue = string, which queue to submit the job in (default is empty)
options = string, additional options that will be passed to qsub/srun (default is empty)
matlabcmd = string, the Linux command line to start MATLAB on the compute nodes (default is automatic
display = 'yes' or 'no', whether the nodisplay option should be passed to MATLAB (default = 'no', meaning nodisplay)
jvm = 'yes' or 'no', whether the nojvm option should be passed to MATLAB (default = 'yes', meaning with jvm)
rerunable = 'yes' or 'no', whether the job can be restarted on a torque/maui/moab cluster (default = 'no')
It is required to give an estimate of the time and memory requirements of
the individual jobs. The memory requirement of the MATLAB executable
itself will automatically be added, just as the time required to start
up a new MATLAB process. If you don't know what the memory and time
requirements of your job are, you can get an estimate for them using
TIC/TOC and MEMTIC/MEMTOC around a single execution of one of the jobs in
your interactive MATLAB session. You can also start with very large
estimates, e.g. 4*1024^3 bytes for the memory (which is 4GB) and 28800
seconds for the time (which is 8 hours) and then run a single job through
qsubcellfun. When the job returns, it will print the memory and time it
required.
Example
fname = 'power';
x1 = {1, 2, 3, 4, 5};
x2 = {2, 2, 2, 2, 2};
y = qsubcellfun(fname, x1, x2, 'memreq', 1024^3, 'timreq', 300);
Using the compile=yes or compile=auto option, you can compile your
function into a stand-alone executable that can be executed on the cluster
without requiring additional MATLAB licenses. You can also call the
QSUBCOMPILE function prior to calling QSUBCELLFUN. If you plan multiple
batches of the same function, compiling it prior to QSUBCELLFUN is more
efficient. In that case you will have to delete the compiled executable
yourself once you are done.
In case you abort your call to qsubcellfun by pressing ctrl-c,
the already submitted jobs will be canceled. Some small temporary
files might remain in your working directory.
To check the the status and healthy execution of the jobs on the Torque
batch queuing system, you can use
qstat
qstat -an1
qstat -Q
comands on the linux command line. To delete jobs from the Torque batch
queue and to abort already running jobs, you can use
qdel <jobnumber>
qdel all
See also QSUBCOMPILE, QSUBFEVAL, CELLFUN, PEERCELLFUN, FEVAL, DFEVAL, DFEVALASYNC