evaluates in parallel the sum .


starts with i=i_(min).


uses steps di.


uses successive values i_(1), i_(2), ..


evaluates in parallel the multiple sum .

Details and Options

  • ParallelSum is a parallel version of Sum, which automatically distributes partial summations among different kernels and processors.
  • ParallelSum will give the same results as Sum, except for side effects during the computation.
  • Parallelize[Sum[expr,iter,]] is equivalent to ParallelSum[expr,iter,].
  • If an instance of ParallelSum cannot be parallelized it is evaluated using Sum.
  • The following options can be given:
  • MethodAutomaticgranularity of parallelization
    DistributedContexts$DistributedContextscontexts used to distribute symbols to parallel computations
    ProgressReporting$ProgressReportingwhether to report the progress of the computation
  • The Method option specifies the parallelization method to use. Possible settings include:
  • "CoarsestGrained"break the computation into as many pieces as there are available kernels
    "FinestGrained"break the computation into the smallest possible subunits
    "EvaluationsPerKernel"->ebreak the computation into at most e pieces per kernel
    "ItemsPerEvaluation"->mbreak the computation into evaluations of at most m subunits each
    Automaticcompromise between overhead and load balancing
  • Method->"CoarsestGrained" is suitable for computations involving many subunits, all of which take the same amount of time. It minimizes overhead, but does not provide any load balancing.
  • Method->"FinestGrained" is suitable for computations involving few subunits whose evaluations take different amounts of time. It leads to higher overhead, but maximizes load balancing.
  • The DistributedContexts option specifies which symbols appearing in expr have their definitions automatically distributed to all available kernels before the computation.
  • The default value is DistributedContexts:>$DistributedContexts with $DistributedContexts:=$Context, which distributes definitions of all symbols in the current context, but does not distribute definitions of symbols from packages.
  • The ProgressReporting option specifies whether to report the progress of the parallel computation.
  • The default value is ProgressReporting:>$ProgressReporting.


open allclose all

Basic Examples  (1)

Longer computations display information about their progress and estimated time to completion:

Options  (9)

Method  (2)

Calculations with vastly differing runtimes should be parallelized as finely as possible:

A large number of simple calculations should be distributed into as few batches as possible:

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:

ProgressReporting  (2)

Do not show a temporary progress report:

Show a temporary progress report even if the default setting $ProgressReporting may be False:

Possible Issues  (2)

Sums with trivial terms may be slower in parallel than sequentially:

Splitting the computation into as few pieces as possible decreases the parallel overhead:

Sum may employ symbolic methods that are faster than an iterative addition of all terms:

Wolfram Research (2008), ParallelSum, Wolfram Language function, (updated 2010).


Wolfram Research (2008), ParallelSum, Wolfram Language function, (updated 2010).


Wolfram Language. 2008. "ParallelSum." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2010.


Wolfram Language. (2008). ParallelSum. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2021_parallelsum, author="Wolfram Research", title="{ParallelSum}", year="2010", howpublished="\url{}", note=[Accessed: 22-May-2022 ]}


@online{reference.wolfram_2021_parallelsum, organization={Wolfram Research}, title={ParallelSum}, year={2010}, url={}, note=[Accessed: 22-May-2022 ]}