lparallel
2016-08-25
Parallelism for Common Lisp
lparallel
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.
Running
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, load lparallel-test.asd
and call (lparallel-test:execute)
.
To run benchmarks, load lparallel-bench.asd
and call
(lparallel-bench:execute N)
where N
is the number of worker threads.
Author
James M. Lawrence llmjjmll@gmail.com
Dependencies (3)
Dependents (29)
- april
- cl-data-structures
- cl-events
- cl-gserver
- cl-lzlib
- clml
- cl-myriam
- cl-naive-store
- cl-random-forest
- cl-rdkafka
- cl-torrents
- clusters
- com.clearly-useful.generic-collection-interface
- cqlcl
- cricket
- csv-validator
- dufy
- femlisp
- jingoh
- lfarm
- one-more-re-nightmare
- overlord
- petalisp
- petri
- pgloader
- quux-hunchentoot
- qvm
- simple-neural-network
- sucle