我可以使用`cabal install`来使用多个核心吗?
有谁知道如何获得cabal install
利用并行性? 我正在编译GHC,虽然我不知道GHC本身是否可以并行编译,但是cabal install
可以同时运行多个编译,不是吗? 至less对于独立的,独立的软件包?
有谁知道这是可能的,以及如何做到这一点?
今年夏天有一个Google Summer of Code项目来并行cabal-install
。 虽然尚未合并到主线,但链接文章提供了抓取源代码并自行构build的说明。
我是正在编写这个夏季的代码项目的人。 补丁已经发送给邓肯,但他还没有审查。 请注意,我的代码在包粒度上工作,所以在构build单个包时不会加速。 我目前正在研究ghc --make
一个并行包装ghc --make
,这将解决这个问题(我希望最终将它融入到主线cabal-install
)。
更新(2012年2月) :邓肯已经审查了我的补丁,我需要纳入他的反馈意见并重新提交。 我希望在本月底之前完成这件事。
更新(2012年4月) :我已经更新了我的补丁以回应邓肯的评论。 新代码有点慢,但对Cabal库的更改要less得多。
更新(2012年6月) :Duncan Coutts 将并行分支合并到Cabal HEAD中 。 并行安装将在下一个cabal-install
版本中提供。
更新(2012年10月) : cabal-install
1.16.0 刚刚发布 。 这是包含我的并行补丁的第一个官方版本。
完成Mikhail Glushenkov的回答,logging下使用情况:
截至cabal 1.16.0,你现在可以使用
cabal install -j [pkgs…]
这默认为每个核心一个作业。 它也提供了更清洁的输出。
你可以并行安装缺省值:
echo "jobs: $(getconf _NPROCESSORS_ONLN)" >> ~/.cabal/config
或(cabal-install 1.18+):
echo 'jobs: $ncpus' >> ~/.cabal/config
获取最新的cabal-install:
cabal update cabal install cabal-install --bindir ~/bin --upgrade-dependencies