Author Archives: lparallel
Status update
The latest CLISP and ECL appear close to passing all tests, and may indeed pass on some platforms. I am not aware of any outstanding CL implementation bugs affecting lparallel besides those reported in CLISP and ECL. I am also … Continue reading
lparallel-1.7.0 released
added pdotimes optimized cognate functions and macros when they are called inside worker threads; e.g. pmap in (future (pmap …)) no longer blocks a worker
lparallel-1.6.0 released
added clear-ptree-errors — for resuming after an error added clear-ptree — for recomputing from scratch improved task handling for ptrees :lparallel now in *features* after load defpun no longer transforms pfuncall forms
Auto-kill
When an evaluation fails or is interrupted, it may be convenient to automatically kill tasks created during the evaluation. One use for this might be for debugging a set of long-running tasks. Here is a solution using alexandria’s unwind-protect-case. (defpackage … Continue reading
Miscellany
Mapping It should be no surprise that arrays are faster than lists for parallel mapping. The open-coded versions of pmap and pmap-into, which are triggered when a single array is mapped to an array, are particularly fast in SBCL when … Continue reading
lparallel-1.5.0 released
pmap and pmap-into are now open-coded in the case of one vector being mapped to a vector — allows a large performance boost in some CL implementations (like SBCL) when array types are known SBCL is now able to terminate … Continue reading
lparallel-1.4.0 released
added function task-categories-running new special variable *debug-tasks-p* — setting it to false will transfer errors instead of invoking the debugger inside tasks; default is true added convenience function invoke-transfer-error for local control over debugging tasks: (task-handler-bind ((error #’invoke-transfer-error)) …) (task-handler-bind … Continue reading
lparallel-1.3.0 released
new support for fine-grained parallelism with `defpun’ new work-stealing model with lockless queues and optional spinning; enabled by default on SBCL, others default to central queue added pfind, pcount, plet-if, pfuncall fixed redundant restart in `chain’ `fulfill’ now accepts non-promises … Continue reading
lparallel-1.2.0 released
added function cancel-timeout; submit-timeout now returns a timeout object renamed emergency-kill-tasks to kill-tasks; old name is still available minor optimization to ptrees added type checks to psort arguments switched test framework to eos
lparallel-1.1.0 released
added :wait option to end-kernel — blocks until the kernel has shut down (please read the documentation for end-kernel before using) bound *print-circle* to t when printing a kernel — avoids SBCL + SLIME crash when evaluating the single form … Continue reading