Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 我能让“阴谋集团安装”使用多核吗?_Haskell_Build_Parallel Processing_Cabal_Multicore - Fatal编程技术网

Haskell 我能让“阴谋集团安装”使用多核吗?

Haskell 我能让“阴谋集团安装”使用多核吗?,haskell,build,parallel-processing,cabal,multicore,Haskell,Build,Parallel Processing,Cabal,Multicore,有人知道如何让阴谋集团安装来利用并行性吗?我是用GHC编译的,虽然我不知道GHC本身是否可以并行编译,但肯定cabal install可以并行运行多个编译,不是吗?至少对于不同的、独立的包 有人知道这是否可能,以及如何做到吗?有一种方法可以并行化阴谋集团安装。虽然它还没有被合并到主线中,但链接的文章提供了获取源代码并自己构建的说明。我是这个夏季代码项目的工作人员。补丁已经发送给邓肯,但他还没有审核。请注意,我的代码在包粒度上工作,因此在构建单个包时不会得到任何加速。我目前正在开发一个可以解决这个

有人知道如何让
阴谋集团安装
来利用并行性吗?我是用GHC编译的,虽然我不知道GHC本身是否可以并行编译,但肯定
cabal install
可以并行运行多个编译,不是吗?至少对于不同的、独立的包


有人知道这是否可能,以及如何做到吗?

有一种方法可以并行化
阴谋集团安装
。虽然它还没有被合并到主线中,但链接的文章提供了获取源代码并自己构建的说明。

我是这个夏季代码项目的工作人员。补丁已经发送给邓肯,但他还没有审核。请注意,我的代码在包粒度上工作,因此在构建单个包时不会得到任何加速。我目前正在开发一个可以解决这个问题的软件(我希望最终能将它合并到主线
cabal安装中)

更新(2012年2月):邓肯已经查看了我的补丁,我需要合并他的反馈并重新提交。我希望在本月底之前完成这项工作

更新(2012年4月):我已经回复了邓肯的评论。新的代码有点慢,但需要对Cabal库进行的更改要少得多

更新(2012年6月):邓肯·库茨。并行安装将在下一个
cabal安装版本中提供


更新(2012年10月)
阴谋集团安装
1.16.0。这是第一个包含我的并行补丁的官方版本。

完成了米哈伊尔·格鲁申科夫的回答,记录了一些用法:

从cabal 1.16.0开始,您现在可以使用

cabal install -j [pkgs…]
这默认为每个核心一个作业。它还提供了更清洁的输出

您可以通过以下方式使并行安装成为默认安装:

echo "jobs: $(getconf _NPROCESSORS_ONLN)" >> ~/.cabal/config
或(阴谋集团安装1.18+):

使用以下工具获取最新的cabal安装:

cabal update
cabal install cabal-install --bindir ~/bin --upgrade-dependencies

这样做的动机是什么?网络传输不是阴谋集团的主要瓶颈吗?此外,如果存在共享依赖项,则无法生成相互碰撞的错误?@amindfv:对我来说,瓶颈是编译几十个haskell源文件。关于依赖关系,比如并行制造,并行
阴谋集团安装
必须尊重它们。但仍有可供使用的并行性。还有一个开放的。。。(如果您使用的是stack而不是cabal安装)@donatello:请参阅下面Mikhail答案中的更新。我看看能不能把链接修好。太棒了!你能给我们一个关于最终补丁能做什么的简短总结吗?正常/分析编译是并行的吗?单包现在使用多核吗?谢谢。那么,
ghcparmake
的状态如何?@nh2也许我应该写一篇关于并行安装当前状态的博文。现在,您可以继续讨论。简短回答:在
~/.cabal/config
中添加一行“jobs:n”(其中n是正整数);这使得
cabal安装
使用n个线程。这只是包级别的并行性;模块和组件不是并行构建的。@nh2关于
ghc parmake
,它在某些情况下可以工作,但存在已知的错误(无法构建用于分析的libs,无法构建大型项目,如uhc等)。我正在做另一个阴谋集团相关的项目(沙箱),所以我现在没有时间花在
ghc parmake
或并行
Cabal build
上。可能在GSoC结束后。@nh2下一个Haskell平台(2012.4.0.0)将使用cabal install 0.14和GHC 7.4.2。我预计2013.2.0.0版将随cabal install 1.16和更新的GHC一起发布。从开始,您可以将
作业设置为
$ncpus
或运行大量作业。
cabal update
cabal install cabal-install --bindir ~/bin --upgrade-dependencies