Ответ 1
В этом летом проект Google Summer of Code распараллеливал cabal-install
. Хотя он еще не был объединен с основной линией, связанная статья содержит инструкции по захвату источника и его созданию самостоятельно.
Кто-нибудь знает, как получить cabal install
для использования parallelism? Я компилирую с GHC, и пока я не знаю, может ли GHC самостоятельно выполнять параллельные сборки, конечно cabal install
может запускать несколько компиляций параллельно, нет? По крайней мере, для отдельных независимых пакетов?
Кто-нибудь знает, возможно ли и как это сделать?
В этом летом проект Google Summer of Code распараллеливал cabal-install
. Хотя он еще не был объединен с основной линией, связанная статья содержит инструкции по захвату источника и его созданию самостоятельно.
Я тот, кто работал над этим проектом Summer of Code. Патчи были отправлены Дункану, но он еще не просмотрел их. Обратите внимание, что мой код работает с детализацией пакета, поэтому вы не получите ускорения при создании единого пакета. В настоящее время я работаю над параллельной оболочкой вокруг ghc --make
, которая решит эту проблему (я надеюсь, что в конечном итоге она будет объединена с основной линией cabal-install
).
Обновление (февраль 2012): Дункан рассмотрел мои исправления, мне нужно включить его отзывы и повторно отправить их. Я надеюсь сделать это до конца этого месяца.
Обновление (апрель 2012): я обновил мои патчи в ответ на комментарии Дункана. Новый код немного медленнее, но требует меньше изменений в библиотеке Cabal.
Обновление (июнь 2012 г.): Duncan Coutts только что объединило параллельную ветвь в Cabal HEAD. Параллельная установка будет доступна в следующем выпуске cabal-install
.
Обновление (октябрь 2012): cabal-install
1.16.0 только что выпущено. Это первый официальный релиз, который включает мои параллельные патчи.
Завершение работы Михаила Глушенкова, чтобы немного документировать использование:
Начиная с 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