Могу ли я заставить 'cabal install` использовать несколько ядер? - PullRequest
39 голосов
/ 30 августа 2011

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

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

Ответы [ 3 ]

51 голосов
/ 24 октября 2011

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

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

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

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

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

34 голосов
/ 06 июня 2013

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

Начиная с 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 update
cabal install cabal-install --bindir ~/bin --upgrade-dependencies
17 голосов
/ 30 августа 2011

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

...