Common Lisp(SBCL)是否具有高级并行功能?

时间:2015-10-08 07:16:53

标签: parallel-processing common-lisp sbcl

在Haskell中,我可以使用以下方法启用列表的并行评估:

map expensiveFunction list `using` parList rdeepseq

仅添加`using` parList rdeepseq可实现纯并行计算,并在我的四核处理器上运行速度提高4倍。

使用SBCL是否有类似功能?

1 个答案:

答案 0 :(得分:8)

Common Lisp没有标准的工具来实现这一目标,但是有一个专门用于完成此工作的库,在大多数CL实现中得到了很好的支持:Lparallel

使用lparallel,您可以执行以下操作:

(let ((number-sets '((1 2 3) (4 5 6) (10 11 12 13 14) (100 200 300))))
  (lparallel:pmap 'list (lambda (v) (apply #'+ v)) number-sets))

这将并行执行各个求和,但返回相同的结果,就像使用普通map一样。