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 | ||||
---|---|---|---|---|
| ||||
#!/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 | ||||
---|---|---|---|---|
| ||||
#!/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 | ||||
---|---|---|---|---|
| ||||
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.