Parallel Computing

The Wolfram Language provides a uniquely integrated and automated environment for parallel computing. With zero configuration, full interactivity, and seamless local and network operation, the symbolic character of the Wolfram Language allows immediate support of a variety of existing and new parallel programming paradigms and data-sharing models.

Automatic Parallelization

(RefLink[Parallelize, paclet:ref/Parallelize]) — evaluate an expression using automatic parallelization

(RefLink[ParallelTry, paclet:ref/ParallelTry]) — try different computations in parallel, giving the first result obtained

(OrangeLink[Computation Setup & Broadcasting », paclet:guide/ParallelComputationSetupAndConfiguration])

(RefLink[ParallelEvaluate, paclet:ref/ParallelEvaluate]) — evaluate an expression on all parallel subkernels

(RefLink[DistributeDefinitions, paclet:ref/DistributeDefinitions]) — distribute definitions to all parallel subkernels

(RefLink[ParallelNeeds, paclet:ref/ParallelNeeds]) — load the same package into all parallel subkernels

(OrangeLink[Data Parallelism », paclet:guide/DataParallelism])

(RefLink[ParallelCombine, paclet:ref/ParallelCombine]) — evaluate expressions in parallel and combine their results

(OrangeLink[Concurrency Control », paclet:guide/Concurrency])

(RefLink[ParallelSubmit, paclet:ref/ParallelSubmit]) — submit expressions to be evaluated concurrently

(RefLink[WaitAll, paclet:ref/WaitAll]) — wait for all concurrent evaluations to finish

(RefLink[WaitNext, paclet:ref/WaitNext]) — wait for the next of a list of concurrent evaluations to finish

(OrangeLink[Shared Memory & Synchronization », paclet:guide/ResourceSharingInParallelComputing])

(RefLink[SetSharedVariable, paclet:ref/SetSharedVariable]) — specify symbols with values to synchronize across subkernels

(RefLink[SetSharedFunction, paclet:ref/SetSharedFunction]) — specify functions whose evaluations are to be synchronized

(OrangeLink[Setup and Configuration », paclet:guide/ParallelComputationSetupAndConfiguration])

(RefLink[LaunchKernels, paclet:ref/LaunchKernels]) — launch a specified number of subkernels

(RefLink[$KernelCount, paclet:ref/$KernelCount]) — number of running subkernels

(RefLink[$ProcessorCount, paclet:ref/$ProcessorCount]) — number of processor cores on the current computer

Multi-Processor and Multicore Computation

(RefLink[Compile, paclet:ref/Compile]) — create compiled functions that run in parallel

(RefLink[Parallelization, paclet:ref/Parallelization]) — execute compiled functions in parallel

(RefLink[CompilationTarget, paclet:ref/CompilationTarget]) — create machine-level parallel compiled functions

(OrangeLink[GPU Computing », paclet:guide/GPUComputing])

(PackageLink[CUDAFunctionLoad, paclet:CUDALink/ref/CUDAFunctionLoad, CUDALink Package Symbol]) — load a function to run on a GPU using CUDA

(PackageLink[OpenCLFunctionLoad, paclet:OpenCLLink/ref/OpenCLFunctionLoad, OpenCLLink Package Symbol]) — load a function to run on a GPU using OpenCL

File-Based Parallelism