Main Content

Asynchronous Parallel Programming

Evaluate functions in the background using parfeval

You can evaluate a function in the background without waiting for it to complete, using parfeval. In many cases, it can be convenient to break out of a for loop early. For example, in an optimization procedure, you can stop the loop early when the result is good enough. You can do this on one or all parallel pool workers, using parfeval or parfevalOnAll. This can be useful if you want to be able to plot intermediate results. Note that this is different from using parfor, where you have to wait for the loop to complete.

Use send and poll together to send and poll for messages or data from different workers using a data queue. You can use afterEach to add a function to call when new data is received from a data queue.

Use afterEach and afterAll to automatically invoke functions after each or after all elements of a Future array complete. This array can contain futures returned by parfeval, parfevalOnAll, afterEach or afterAll.


expand all

parfevalRun function on parallel pool worker
parfevalOnAllExecute function asynchronously on all workers in parallel pool
ticBytesStart counting bytes transferred within parallel pool
tocBytesRead how many bytes have been transferred since calling ticBytes
sendSend data from worker to client using a data queue
poll Retrieve data sent from a worker
afterEachDefine a function to call when new data is received on a DataQueue
afterEachRun function after each function finishes running in the background
afterAllRun function after all functions finish running in the background
fetchOutputsRetrieve results from function running in the background
fetchNextRetrieve next unread outputs from Future array
cancelStop function running in the background
waitWait for futures to complete
FutureFunction scheduled to run
parallel.PoolParallel pool of workers
parallel.pool.DataQueueSend and listen for data between client and workers
parallel.pool.PollableDataQueue Send and poll data between client and workers


Evaluate Functions in the Background Using parfeval

Break out of a loop early and collect results as they become available.

Query and Cancel parfeval Futures

This example shows how to query the state of parfeval futures and cancel them.

Use afterEach and afterAll to Run Callback Functions

Automatically run functions after Future objects finish running on parallel pools.

Plot During Parameter Sweep with parfeval

This example shows how to perform a parallel parameter sweep with parfeval and send results back during computations with a DataQueue object.

Update User Interface Asynchronously Using afterEach and afterAll

This example shows how to update a user interface as computations complete.

Perform Webcam Image Acquisition in Parallel with Postprocessing

This example shows how to perform frame acquisition from a webcam in parallel with data postprocessing.

Perform Image Acquisition and Parallel Image Processing

This example shows how to perform image acquisition from a webcam and postprocess data in parallel.

Train Deep Learning Networks in Parallel (Deep Learning Toolbox)

This example shows how to run multiple deep learning experiments on your local machine.

Use parfeval to Train Multiple Deep Learning Networks (Deep Learning Toolbox)

This example shows how to use parfeval to perform a parameter sweep on the depth of the network architecture for a deep learning network and retrieve data during training.

Choose Between spmd, parfor, and parfeval

Compare and contrast spmd against other parallel computing functionality such as parfor and parfeval.

Featured Examples