我可以使用“cabal install”来使用多个内核吗?

时间:2011-08-30 02:40:59

标签: haskell build parallel-processing cabal multicore

有谁知道如何让cabal install利用并行性?我正在使用GHC进行编译,虽然我不知道GHC本身是否可以进行并行构建,但是cabal install可以并行运行多个编译,不是吗?至少对于独特的独立包装?

有谁知道是否有可能以及如何做到这一点?

3 个答案:

答案 0 :(得分:51)

我是那个正在编写Summer of Code项目的人。这些补丁已发送给Duncan,但他尚未对其进行审核。请注意,我的代码以包的粒度工作,因此在构建单个包时不会获得任何加速。我目前正在研究parallel wrapper around ghc --make,它将解决这个问题(我希望最终将它合并到主线cabal-install)。

更新(2012年2月):Duncan审核了我的补丁,我需要收集他的反馈并重新提交。我希望在本月底之前完成这项工作。

更新(2012年4月):我updated my patches回应了Duncan的评论。新代码有点慢,但对Cabal库的更改要少得多。

更新(2012年6月):Duncan Coutts just merged the parallel branch into Cabal HEAD。并行安装将在下一个cabal-install版本中提供。

更新(2012年10月)cabal-install 1.16.0 has just been released。这是第一个包含我的并行补丁的正式版本。

答案 1 :(得分:34)

完成Mikhail Glushenkov的答案,记录一下使用情况:

从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

答案 2 :(得分:17)

有一个Google Summer of Code project this summer并行cabal-install。虽然它尚未合并到主线,但链接的文章提供了获取源代码并自行构建它的说明。