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

Parallelize evaluate an expression using automatic parallelization

ParallelTry try different computations in parallel, giving the first result obtained

Computation Setup & Broadcasting »

ParallelEvaluate evaluate an expression on all parallel subkernels

DistributeDefinitions distribute definitions to all parallel subkernels

ParallelNeeds load the same package into all parallel subkernels

Data Parallelism »

ParallelMap  ▪  ParallelTable  ▪  ParallelSum  ▪  ...

ParallelCombine evaluate expressions in parallel and combine their results

Concurrency Control »

ParallelSubmit submit expressions to be evaluated concurrently

WaitAll wait for all concurrent evaluations to finish

WaitNext wait for the next of a list of concurrent evaluations to finish

Shared Memory & Synchronization »

SetSharedVariable specify symbols with values to synchronize across subkernels

SetSharedFunction specify functions whose evaluations are to be synchronized

CriticalSection synchronize concurrent access using lock variables

$SharedVariables  ▪  $SharedFunctions  ▪  UnsetShared

Setup and Configuration »

LaunchKernels launch a specified number of subkernels

$KernelCount number of running subkernels

$KernelID  ▪  AbortKernels  ▪  CloseKernels  ▪  ...

$ProcessorCount number of processor cores on the current computer

Multi-Processor and Multicore Computation

Compile create compiled functions that run in parallel

Parallelization execute compiled functions in parallel

CompilationTarget create machine-level parallel compiled functions

GPU Computing »

CUDAFunctionLoad load a function to run on a GPU using CUDA

OpenCLFunctionLoad load a function to run on a GPU using OpenCL

Remote Computation »

LocalEvaluate evaluate an expression in a local kernel

RemoteEvaluate evaluate an expression in one or more remote kernels

File-Based Parallelism

FileSystemScan  ▪  FileSystemMap