ParallelEvaluate

ParallelEvaluate[expr]

evaluates the expression expr on all available parallel kernels and returns the list of results obtained.

ParallelEvaluate[expr,kernel]

evaluates expr on the parallel kernel specified.

ParallelEvaluate[expr,{ker1,ker2,}]

evaluates expr on the parallel kernels keri.

ParallelEvaluate[expr,kernels,h]

wraps the head h around the results before returning them.

Details and Options

Examples

open allclose all

Basic Examples  (1)

Obtain each parallel kernel's unique ID number:

Obtain each parallel kernel's system process ID:

Scope  (6)

Use ParallelEvaluate to perform initializations on all parallel kernels:

Make definitions of local functions on all parallel kernels:

Obtain local properties of all parallel kernels:

Obtain a local property from a single kernel:

Access data from sources local to the parallel kernels:

Save results computed on the parallel kernels locally in unique files:

Verify that the files have been written:

Prevent local reevaluation of results returned from subkernels:

Generalizations & Extensions  (2)

Specify the kernels to query by a kernel object or a kernel ID:

Query several kernels:

All can be used to specify all available kernels:

All is equivalent to Kernels[]:

Options  (5)

DistributedContexts  (5)

By default, definitions in the current context are distributed automatically:

Do not distribute any definitions of functions:

Distribute definitions for all symbols in all contexts appearing in a parallel computation:

Distribute only definitions in the given contexts:

Restore the value of the DistributedContexts option to its default:

Applications  (4)

Tabulate properties of all parallel kernels:

Parallelize a Monte Carlo simulation by running the same code on all parallel kernels:

Combine the individual averages for a more accurate overall result:

Store large intermediate results locally on each parallel kernel:

Work with data stored locally:

Check whether all of these polynomials are irreducible:

Shared variables used for synchronization:

Run one search loop on each kernel until the computation is aborted:

Properties & Relations  (5)

ParallelEvaluate performs the same evaluation on each subkernel:

Parallelize distributes parts of an evaluation to each subkernel:

Deterministic calculations give the same result on each parallel kernel:

Calculations involving randomness give independent results on each parallel kernel:

Force the same result by setting SeedRandom:

Each parallel kernel has a distinct ID, which can be used to make expressions unique:

DistributeDefinitions uses ParallelEvaluate to transport definitions to all kernels:

An explicit ParallelEvaluate does the same:

Distributed definitions are remembered for new kernels:

The effects of ParallelEvaluate are not remembered:

ParallelNeeds uses ParallelEvaluate to run Needs on all parallel kernels:

Additionally all uses are remembered, so that new kernels also load needed packages:

ParallelEvaluate automatically distributes definitions of functions used:

Possible Issues  (2)

Side effects cannot be used between different parallel kernels:

Use a shared variable to support side effects:

Suppress the automatic distribution of definitions when making definitions with ParallelEvaluate:

Neat Examples  (1)

Find such that is prime, until the computation is manually aborted:

Introduced in 2008
 (7.0)
 |
Updated in 2014
 (10.0)
2020
 (12.1)