SET-PARALLEL-EVALUATION

enabling parallel evaluation for four of the parallelism primitives
Major Section:  PARALLELISM

This documentation topic relates to the experimental extension of ACL2 supporting parallel evaluation and proof; see parallelism. See parallel and see parallelism-tutorial for an introduction to parallel evaluation in ACL2 using parallelism primitives pand, por, plet, and pargs.

General Forms:
(set-parallel-evaluation nil) ; default for images not built for parallelism
(set-parallel-evaluation t)   ; default for images built for parallelism
(set-parallel-evaluation :bogus-parallelism-ok)

Set-parallel-evaluation takes an argument that specifies the enabling or disabling of parallel evaluation for the primitives pand, por, plet, and pargs (but not spec-mv-let, whose parallel evaluation remains enabled). However, without using top-level, calls of parallelism primitives made explicitly in the ACL2 top-level loop, as opposed to inside function bodies, will never cause parallel evaluation; see parallelism-at-the-top-level. Parallel evaluation is determined by the value of the argument to set-parallel-evaluation, as follows.

Value t:
All parallelism primitives used in bodies of function definitions are given the opportunity to execute in parallel. However, the use of parallelism primitives directly in the ACL2 top-level loop causes an error.

Value :bogus-parallelism-ok:
Parallel evaluation is enabled, as for value t. However, the use of parallelism primitives directly in the ACL2 top-level loop does not cause an error, but rather, simply results in serial evaluation for these primitives.

Value nil:
All parallelism primitives will degrade to their serial equivalents, include their calls made directly in the ACL2 top-level loop, which does not cause an error.