R2022a

New Features, Compatibility Considerations

ValueStore and FileStore objects: Retrieve data and files on MATLAB clients during job execution

ValueStore and FileStore objects now allow you to store data and files from MATLAB® workers that can be retrieved by MATLAB clients during the execution of a job (even while the job is still running). These objects are not held in system memory, so they can be used to store large results. A FileStore object provides a universal location for workers to copy files. MATLAB clients can then access these files regardless of the specific cluster environment where the worker is running.

The ValueStore and FileStore objects are automatically created when you create a job on a cluster, a parallel pool of process workers on your local machine, or a parallel pool of workers on a cluster of machines. To access the ValueStore and FileStore objects on a worker, use the getCurrentValueStore and getCurrentFileStore functions, respectively.

Multifactor Authentication for the Generic Scheduler Interface: Connect to remote clients with RemoteClusterAccess using two or more authentication factors

RemoteClusterAccess objects now allow you to perform multifactor authentication, including two-factor authentication. To do so, specify 'Multifactor' for the AuthenticationMode name-value argument. For details, see the RemoteClusterAccess reference page. The sample plugin scripts for third-party schedulers now accept 'Multifactor' as the value for the AuthenticationMode property of AdditionalProperties, which sets that value on RemoteClusterAccess.

Cluster resizing: Customize your MATLAB Job Scheduler cluster to resize automatically

You can customize your MATLAB Job Scheduler (MJS) cluster to resize automatically. After you set up auto-resizing, also called auto-scaling, the cluster can automatically change the number of workers with the amount of work submitted. The cluster grows (scales up) when there is more work to do and shrinks (scales down) when there is less work to do. This allows you to use your compute resources more efficiently and can result in cost savings. To learn more, see Set up MATLAB Job Scheduler Cluster for Auto-Resizing (MATLAB Parallel Server).

Parallel Pools: Check status of pools

Starting in R2022a, you can query if any type of pool is currently running by using the Busy property of the pool. This property indicates whether the parallel pool is busy, specified as true or false. The pool is busy if there is outstanding work for the pool to complete.

Background Pool: Number of thread workers no longer limited to 8 workers

Before R2022a, the NumWorkers property was capped at a maximum of 8 workers when Parallel Computing Toolbox™ was installed, and 1 worker when not installed. This limit is no longer in place when the Parallel Computing Toolbox is installed. When Parallel Computing Toolbox is not installed, the background pool remains limited to 1 worker.

Thread-Based Parallel Pool: See futures in active pool

Starting in R2022a, you can query all queued and running futures on a parallel pool by using the FevalQueue property of the pool. To create futures, use parfeval and parfevalOnAll. For more information on futures, see Future.

cancelAll Method: Cancel currently queued and running futures in a parallel pool

cancelAll cancels all futures currently queued or running in a parallel pool. Queued or running futures are listed in the FevalQueue property.

For example, you can use cancelAll to stop all Futures in an FevalQueue.

pool = parpool;
cancelAll(pool.FevalQueue);

GPU Functionality: Use new and enhanced gpuArray functions

New GPU support in MATLAB:

For more information, see Run MATLAB Functions on a GPU.

New GPU support in Statistics and Machine Learning Toolbox™:

  • fitensemble (Statistics and Machine Learning Toolbox)

  • fitrensemble (Statistics and Machine Learning Toolbox)

  • New support for probability functions: gev*, gp*, nbin*

For a list of all Statistics and Machine Learning Toolbox functions with GPU functionality, see Functions with gpuArray support (Statistics and Machine Learning Toolbox).

The following functions have new and enhanced gpuArray support in Signal Processing Toolbox™:

For a list of all Signal Processing Toolbox functions with GPU functionality, see Functions with gpuArray support (Signal Processing Toolbox).

The following functions have new gpuArray support in Audio Toolbox™:

For a list of all Audio Toolbox functions with GPU functionality, see Functions with gpuArray support (Audio Toolbox).

The following functions have new gpuArray and dlArray support in Wavelet Toolbox™:

For a list of all Wavelet Toolbox functions with GPU functionality, see Functions with gpuArray support (Wavelet Toolbox).

Support for NVIDIA CUDA 11.2: Update to CUDA Toolkit 11.2

The parallel computing products now use CUDA® toolkit version 11.2. To generate CUDA kernel objects from CU code or compile CUDA compatible source code, libraries, and executables using GPU Coder™, you must use toolkit version 11.2. For more information, see Run CUDA or PTX Code on GPU.

Tall Arrays: Use new and enhanced tall array functionality

For more information, see Tall Arrays.

Distributed Arrays: Use new and enhanced distributed array functionality

For more information, see Run MATLAB Functions with Distributed Arrays.

Parallel Features in Other Products

Parallel features added in other products:

  • Experiment Manager: Offload deep learning experiments as batch jobs in a cluster

    Starting in R2022a, Experiment Manager (Deep Learning Toolbox) supports offloading experiments as batch jobs in a cluster. You can configure the cluster to run multiple trials at the same time or to run a single trial at a time on multiple parallel workers. While the experiment is running in the cluster, you can run other experiments, close the app and continue using MATLAB, or close your MATLAB session. For more information, see Offload Experiments as Batch Jobs to Cluster (Deep Learning Toolbox).

  • Parallel Simulations: Perform parameter sweeps using Parameter Combinations

    In R2022a, you can use Parameter Combinations in the Multiple Simulations panel of the Simulink® Editor for workflows with multiple simulations, such as Monte-Carlo simulations and parameter sweeps. Parameter Combinations allows you to create sequential and exhaustive combinations of parameters, specify value ranges, and run simulations with these combinations. The Multiple Simulations panel was introduced in R2021b. For more information, see Multiple Simulations Panel: Simulate for Different Values of Stiffness for a Vehicle Dynamics System (Simulink).

  • Machine Learning Apps: Train draft models in parallel or train in the background to keep the app responsive

    In Classification Learner (Statistics and Machine Learning Toolbox) and Regression Learner (Statistics and Machine Learning Toolbox), you can train multiple draft models in parallel. You can use the Use Parallel or Use Background buttons while training models.

Solving Linear System: Improved performance when solving linear systems A*X = B with gpuArray for symmetric positive definite matrices A

Solving a linear system of the form A*X = B with gpuArray by executing A\B shows improved performance when A is a symmetric positive definite matrix.

For example, this code solves A*X = B for a 10,000-by-10,000 symmetric positive definite matrix A and a 10,000-by-1 column vector B. The code is about 2.4x faster than in the previous release.

function timingTest
rng default
R = rand(10000,"gpuArray");
A = R'*R;
B = ones(10000,1,"gpuArray");
X = A\B;
end

The approximate execution times are:

R2021b: 1.03 s

R2022a: 0.43 s

The code was timed on a Windows® 10, Intel® Xeon® CPU E5-1640 v3 @ 3.50 GHz with an NVIDIA® Titan V GPU test system using the gputimeit function:

gputimeit(@timingTest)

 Functionality being removed or changed

distcomp folder removed, now named parallel

The distcomp folder has been removed.

In R2019b, the Parallel Computing Toolbox folder was renamed. Since then, the name of the toolbox folder has been parallel. If you need to reference the location of the toolbox, update your references to use toolbox/parallel instead of toolbox/distcomp.