lparallel is a library for parallel programming in Common Lisp, featuring
- a simple model of task submission with receiving queue
- constructs for expressing fine-grained parallelism
- asynchronous condition handling across thread boundaries
- parallel versions of map, reduce, sort, remove, and many others
- promises, futures, and delayed evaluation constructs
- computation trees for parallelizing interconnected tasks
- bounded and unbounded FIFO queues
- high and low priority tasks
- task killing by category
- integrated timeouts
See http://lparallel.org for documentation and examples.
lparallel should run on any Common Lisp implementation supported by bordeaux-threads. The following implementations successfully pass the test suite:
- ABCL
- Allegro
- Clozure
- LispWorks
- SBCL
To run tests, call (asdf:test-system :lparallel/test)
.
To run benchmarks, load :lparallel/bench
and call
(lparallel/bench:execute N)
where N
is the number of worker threads.
James M. Lawrence [email protected]