Подтвердить что ты не робот

Могу ли я использовать `cabal install` для использования нескольких ядер?

Кто-нибудь знает, как получить cabal install для использования parallelism? Я компилирую с GHC, и пока я не знаю, может ли GHC самостоятельно выполнять параллельные сборки, конечно cabal install может запускать несколько компиляций параллельно, нет? По крайней мере, для отдельных независимых пакетов?

Кто-нибудь знает, возможно ли и как это сделать?

4b9b3361

Ответ 1

В этом летом проект Google Summer of Code распараллеливал cabal-install. Хотя он еще не был объединен с основной линией, связанная статья содержит инструкции по захвату источника и его созданию самостоятельно.

Ответ 2

Я тот, кто работал над этим проектом Summer of Code. Патчи были отправлены Дункану, но он еще не просмотрел их. Обратите внимание, что мой код работает с детализацией пакета, поэтому вы не получите ускорения при создании единого пакета. В настоящее время я работаю над параллельной оболочкой вокруг ghc --make, которая решит эту проблему (я надеюсь, что в конечном итоге она будет объединена с основной линией cabal-install).

Обновление (февраль 2012): Дункан рассмотрел мои исправления, мне нужно включить его отзывы и повторно отправить их. Я надеюсь сделать это до конца этого месяца.

Обновление (апрель 2012): я обновил мои патчи в ответ на комментарии Дункана. Новый код немного медленнее, но требует меньше изменений в библиотеке Cabal.

Обновление (июнь 2012 г.): Duncan Coutts только что объединило параллельную ветвь в Cabal HEAD. Параллельная установка будет доступна в следующем выпуске cabal-install.

Обновление (октябрь 2012): cabal-install 1.16.0 только что выпущено. Это первый официальный релиз, который включает мои параллельные патчи.

Ответ 3

Завершение работы Михаила Глушенкова, чтобы немного документировать использование:

Начиная с 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