有誰知道如何獲得cabal install
利用並行?我正在編譯GHC,雖然我不知道GHC本身是否可以執行並行編譯,當然,cabal install
可以同時運行多個編譯,不是嗎?至少對於不同的獨立包?我可以使用`cabal install`來使用多個核心嗎?
有誰知道是否有可能以及如何去做?
有誰知道如何獲得cabal install
利用並行?我正在編譯GHC,雖然我不知道GHC本身是否可以執行並行編譯,當然,cabal install
可以同時運行多個編譯,不是嗎?至少對於不同的獨立包?我可以使用`cabal install`來使用多個核心嗎?
有誰知道是否有可能以及如何去做?
有一個Google Summer of Code project this summer並行cabal-install
。雖然尚未合併到主線,但鏈接的文章提供了抓取源代碼並自行構建的說明。
我是一個在編寫這個夏季代碼項目的人。補丁已發送給鄧肯,但他還沒有審查。請注意,我的代碼在包粒度上工作,所以在構建單個包時不會加速。我目前正在研究一個parallel wrapper around ghc --make
,這將解決這個問題(我希望最終將它合併到主線cabal-install
)。
更新(2012年2月):鄧肯審查了我的補丁,我需要納入他的反饋並重新提交它們。我希望在本月底之前完成這件事。
更新(2012年4月):我對updated my patches迴應鄧肯的評論。新代碼稍慢,但對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。這是包含我的並行補丁的第一個正式版本。
完成米哈伊爾Glushenkov的回答記錄的使用了一下:
由於陰謀1.16.0的,你現在可以使用
cabal install -j [pkgs…]
默認爲每個核心一個作業。它也提供了更清潔的輸出。
您可以並行安裝默認使用:
echo "jobs: $(getconf _NPROCESSORS_ONLN)" >> ~/.cabal/config
或(小集團安裝1.18+):
echo 'jobs: $ncpus' >> ~/.cabal/config
獲取最新與小集團安裝:
cabal update
cabal install cabal-install --bindir ~/bin --upgrade-dependencies
從[Cabal 1.18](https://github.com/haskell/cabal/commit/99264248db78835b308232943038e6cbce4e72a4),您可以將'jobs'設置爲'$ ncpus'或一些要運行的作業。 – akamch
這是什麼動機?網絡傳輸不是主要瓶頸嗎?另外,如果存在共享依賴關係,那麼無法構建錯誤? – amindfv
@amindfv:對我來說,瓶頸在編譯數十個haskell源文件。關於並行的依賴關係,並行'cabal install'將不得不尊重它們。但是仍然有平行性。 –
還有一個開放[stack issue](https://github.com/commercialhaskell/stack/issues/644)...(如果您使用堆棧而不是cabal-install) – mb21