# Submitting jobs from Matlab R2017a¶

You can submit non-interactive (batch) work to Artemis using the Artemis cluster profile configured in the previous section. This section will walk you through submitting an example Matlab script called quadrature.m to Artemis using the batch command. You may like to use this script to test submitting jobs to Artemis yourself. The script quadrature.m is:

n=50000000;
a=0.5;
b=1.0;
q=0.0;
w=(b-a)/n;
parfor i=1:n
q = q + w*bessely(4.5,((n-1)*a+(i-1)*b)/(n-1));
end
q


If you save this script to your local computer, you can run it on your local computer with following command in the Matlab Command Window:

>> quadrature


## Submiting work to Artemis using the “batch” command¶

The quadrature.m script can be run on Artemis using the batch command in the Matlab Command Window:

>> job = batch('quadrature','Profile','Artemis')


### Using multiple cores¶

The quadrature.m script can be run using multiple cores since it has been explicitly parallelised with a “parfor” loop. Therefore, you can request multiple CPUs using the “Pool” option to batch:

>> job = batch('quadrature','Profile','Artemis','Pool',3)


The above command initialises a parallel computing pool with 3 cores that do the computation, and one additional head core that executes the script. Therefore, the above example requests 4 cores.

Note

You can have up to 12 cores worth of work running simultaneously. Any work that would exceed the 12 core per user limit will remain queued until there are enough cores free to run your job.

## Advanced ways to use the batch function¶

You can also submit a function to Artemis using the batch command, rather than a script:

>> job = batch(@my_func,N,{x1,...,x2},'Profile','Artemis','Pool',3)


This job will run the function my_func using the input arguments {x1,...,x2} and will return N output arguments. Note the use of @ to create a function handle; this points to the function, rather than calling it.

The batch function can take many other options in the standard Matlab form of ‘parameter’,’value’ pairs. See the Matlab documentation for details.

Two such options are worth noting:

Your Matlab job will switch directories into the remote folder specified via the ‘CurrentFolder’ parameter before execution on Artemis. If not given, Matlab uses the current local working directory as the default value for ‘CurrentFolder’ - a folder which may not exist on Artemis! To avoid the warnings this causes, call batch with 'CurrentFolder','.', which tells Matlab not to change directories before running the job.

You can also specify additional files or folders to transfer to Artemis on a per job basis (rather than modifying your cluster profile) by including the ‘AttachedFiles’ parameter. The value for this can be a string giving the path to a file or folder (e.g. file.m), or it can be a cell-array of such strings:

>> job = batch(...,'AttachedFiles',{'important/folder/','other/file.m'})