Skip to content

sharplispers/lparallel

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, 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.

Author

James M. Lawrence [email protected]

Languages

  • Common Lisp 99.8%
  • Shell 0.2%