Difference between revisions of "Applications/Matlab"
m |
m (→Multi-threading) |
||
Line 204: | Line 204: | ||
</pre> | </pre> | ||
− | When using Matlab with multicore enabled, please ensure you have exclusive access to the node, see [[Quickstart/Interactive#Exclusive_interactive_session | Exclusive interactive]] or [[Quickstart/Batch Jobs | + | When using Matlab with multicore enabled, please ensure you have exclusive access to the node, see [[Quickstart/Interactive#Exclusive_interactive_session | Exclusive interactive]] or [[Quickstart/Batch Jobs# Exclusive Batch Jobs|Exclusive batch jobs]]. |
=== Parallel Computing Toolbox === | === Parallel Computing Toolbox === |
Revision as of 09:39, 22 November 2022
Contents
Application Details
- Description: MATLAB is a numerical computing environment and programming language developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, and implementation of algorithms. A range of toolboxes is available to extend functionality.
- Versions: 2016a, 2016b, 2017a, 2018a, 2019a, 2020a
- Module names: matlab/2016a matlab/2016b matlab/2017a matlab/2018a matlab/2019a matlab/2020a
- License: University of Hull Total Academic Headcount license, available to members of the university for research use
Toolboxes
Matlab on Viper has the following toolboxes available:
Toolbox | Toolbox | Toolbox | Toolbox |
---|---|---|---|
MATLAB | Filter Design HDL Coder | MATLAB Report Generator | SimRF |
Simulink | Financial Instruments Toolbox | Model Predictive Control Toolbox | Simscape |
Aerospace Blockset | Financial Toolbox | Neural Network Toolbox | Simscape Electronics |
Bioinformatics Toolbox | Fixed-Point Designer | Optimization Toolbox | Simscape Multibody |
Communications System Toolbox | Fuzzy Logic Toolbox | Parallel Computing Toolbox | Simscape Power Systems |
Computer Vision System Toolbox | Global Optimization Toolbox | Partial Differential Equation Toolbox | Simulink Coder |
Control System Toolbox | Image Acquisition Toolbox | Phased Array System Toolbox | Simulink Control Design |
Curve Fitting Toolbox | Image Processing Toolbox | RF Toolbox | Simulink Design Optimization |
DSP System Toolbox | Instrument Control Toolbox | Robotics System Toolbox | Stateflow |
Database Toolbox | LTE System Toolbox | Robust Control Toolbox | Statistics and Machine Learning Toolbox |
Datafeed Toolbox | MATLAB Coder | Signal Processing Toolbox | Symbolic Math Toolbox |
Econometrics Toolbox | MATLAB Compiler | SimBiology | System Identification Toolbox |
Embedded Coder | MATLAB Compiler SDK | SimEvents | Wavelet Toolbox |
Usage Examples
Interactive
Interactive with full graphical interface (note the use of --exclusive when starting the interactive session):
[username@login01 ~]$ interactive --exclusive salloc: Granted job allocation 289663 Job ID 289663 connecting to c170, please wait... Last login: Thu Jan 26 12:59:11 2017 from 10.254.5.246 [username@c170 ~]$ module add matlab/2020a [username@c170 ~]$ matlab
Interactive with command line only:
[username@c170 ~]$ matlab -nodisplay < M A T L A B (R) > Copyright 1984-2020 The MathWorks, Inc. R2020a Update 4 (9.8.0.1417392) 64-bit (glnxa64) June 24, 2020 To get started, type one of these: helpwin, helpdesk, or demo. For product information, visit www.mathworks.com. Academic License >>
Batch Submission
To submit a batch job for Matlab, put your code in a .m script file and refer to this in your batch submission script, as shown below in the example MATLABtest.job job script. Remember to leave the .m extension from the script name in the Matlab command line.
#!/bin/bash #SBATCH -J MATLAB #SBATCH -N 1 #SBATCH -o %N.%j.out #SBATCH -e %N.%j.err #SBATCH -p compute #SBATCH --exclusive module purge module add matlab/2020a matlab -nodisplay -r my_matlab_m_file
To submit the Matlab job, use sbatch as shown below:
[username@login01 ~]$ sbatch MATLABtest.job Submitted batch job 289522
Parallel Matlab
By default Matlab on Viper will run on a single core as multi-threading conflicts with the schedulers resource management, however, there are two ways in which Matlab can utilize multiple processors:
Multi-threading
Matlab can use multiple threads for certain built-in functions for example linear algebra and numerical functions such as fft, \ (mldivide), eig, svd, and sort. These functions automatically execute on multiple computational threads in a single MATLAB session, allowing them to execute faster on multicore-enabled machines. Additionally, many functions in the Image Processing Toolbox are multithreaded.
Firstly, using the matlab command with the -singleCompThread option:
[username@c170 ~]$ matlab -singleCompThread -nodisplay -nojvm -nodesktop -nosplash -r "maxNumCompThreads , exit" < M A T L A B (R) > Copyright 1984-2016 The MathWorks, Inc. R2016a (9.0.0.341360) 64-bit (glnxa64) February 11, 2016 For online documentation, see http://www.mathworks.com/support For product information, visit www.mathworks.com. Academic License Warning: maxNumCompThreads will be removed in a future release. Please remove any instances of this function from your code. > In maxNumCompThreads (line 26) ans = 1
Using the standard matlab command, on Viper this starts Matlab with multithreading support enabled:
[username@c170 ~]$ matlab -nodisplay -nojvm -nodesktop -nosplash -r "maxNumCompThreads , exit" < M A T L A B (R) > Copyright 1984-2016 The MathWorks, Inc. R2016a (9.0.0.341360) 64-bit (glnxa64) February 11, 2016 For online documentation, see http://www.mathworks.com/support For product information, visit www.mathworks.com. Academic License Warning: maxNumCompThreads will be removed in a future release. Please remove any instances of this function from your code. > In maxNumCompThreads (line 26) ans = 28
When using Matlab with multicore enabled, please ensure you have exclusive access to the node, see Exclusive interactive or Exclusive batch jobs.
Parallel Computing Toolbox
The Parallel Computing Toolbox allows you to open a number of workers (separate Matlab engines) on the local node, up to the number of cores on that node (28 for standard nodes in an exclusive session).
>> parpool('local',28) Starting parallel pool (parpool) using the 'local' profile ... connected to 28 workers. ans = Pool with properties: Connected: true NumWorkers: 28 Cluster: local AttachedFiles: {} IdleTimeout: 30 minute(s) (30 minutes remaining) SpmdEnabled: true
When using Matlab with the Parallel Computing Toolbox, please ensure you have exclusive access to the node, see Exclusive interactive or Exclusive batch jobs.