Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Matlab is currently available for use centrally on the HPC cluster systems system of the University of Iowa. One may use the Matlab environment by loading the appropriate module

...

.

...

 

While it is possible to run Matlab interactively, which can be especially useful for prototyping a job, please remember that login nodes are a shared resource and are intended for launching jobs or prototyping smaller versions of jobs you intend to run. It is not advisable to use interactive sessions for long-running, compute-intensive jobs unless one uses a qlogin session to do so. 

...

Info

Matlab's Parallel Toolbox does not work well if you set a shell preference in your SGE request. If you otherwise use a #$ -S <shell> designation in your SGE qsub scripts, it is best to remove or comment them when submitting parallel Matlab jobs.


Info
This example demonstrates the -nojvm which disables some of Matlab's features in order to start faster and use less memory. This helps maintain the cluster's performance if you have a large batch of jobs which don't require the disabled features.


Code Block
languagebash
titleSimple Matlab batch job: mat-test.sh
#!/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

...

Submit the job using 'qsub parallel-test.sh', assuming the name of the submission script is called parallel-test.sh.

Info

Matlab's Parallel Toolbox requires Java, so if your code uses features of the toolbox, you must omit the -nojvm option when invoking matlab, otherwise your code will quit with an uninformative error. You can verify Java is available and otherwise deliberately quit with a helpful error message by adding this command before code which uses a feature requiring Java:

error(javachk('jvm'))


Code Block
languagebash
titleExample Parallel Job: parallel-test.sh
#!/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

...

Code Block
languagebash
titleExample Matlab script: parafor-test.m
matlabpool('open',8);
tic
start = tic;
clear A
parfor i = 1:100000;
        A(i) = i;
end
stop = toc(start);
stop
matlabpool('close');

 

Utilizing XEON PHI Offloading

Neon has a group of nodes with XEON PHI coprocessor cards. These extra resources can be utilized by the MKL libraries used by MATLAB via offloading. 

To submit a MATLAB job that offloads to the XEON PHI coprocessors you must submit your job with the following options:

Code Block
qsub -l phi myscript.job

Your job must also specify the MKL_MIC_ENABLE environment variable:

Code Block
MKL_MIC_ENABLE=1    //enables offloading

...

Matlab engine for Python

To install Matlab engine for Python in order to invoke Matlab using matlab.engine from your Python code, see the notes specific to using Python.