40 votes

Puis-je faire en sorte que `cabal install` utilise plusieurs cœurs?

Est-ce que quelqu'un sait comment obtenir cabal install pour exploiter le parallélisme? Je compile avec GHC, et bien que je ne sache pas si GHC lui-même peut effectuer des constructions parallèles, il est certain que cabal install pourrait exécuter plusieurs compilations en parallèle, non? Au moins pour les paquets distincts et indépendants?

Est-ce que quelqu'un sait si c'est possible et comment le faire?

51voto

Mikhail Glushenkov Points 10348

Je suis le seul qui a travaillé sur ce projet Summer of Code. Les patchs ont été envoyés à Duncan, mais il n'a pas revu encore. Notez que mon code fonctionne sur le paquet de granularité, de sorte que vous n'aurez pas de speedup lors de la construction d'un package unique. Je suis actuellement en train de travailler sur un parallèle wrapper autour de ghc --make, ce qui permettra de résoudre ce problème (qui, je l'espère, pour l'obtenir, il a fusionné dans la canalisation principale cabal-install par la suite).

Mise À Jour (Fév. 2012): Duncan a passé en revue mes patchs, j'ai besoin d'intégrer son feedback et les soumettre de nouveau. J'espère que ce soit fait avant la fin de ce mois.

Mise À Jour (Avr. 2012): j'ai mis à jour mon patchs en réponse à Duncan de commentaires. Le nouveau code est un peu plus lent, mais nécessite beaucoup moins de changements à la Cabale de la bibliothèque.

Mise À Jour (Jun. 2012): Duncan Coutts venez de fusionner la branche parallèle à la TÊTE de la Cabale. Installation parallèle, sera disponible dans les prochaines cabal-install de presse.

Mise À Jour (Oct. 2012): cabal-install1.16.0 vient d'être publié. C'est la première sortie officielle qui comprend mon parallèle des correctifs.

34voto

Tobu Points 10101

Compléter la réponse de Mikhail Glushenkov pour documenter un peu l'utilisation:

À partir de la version 1.16.0 de Cabal, vous pouvez maintenant utiliser

 cabal install -j [pkgs…]
 

La valeur par défaut est un travail par cœur. Il donne également une sortie beaucoup plus propre.

Vous pouvez faire en parallèle l’installation par défaut avec:

 echo "jobs: $(getconf _NPROCESSORS_ONLN)" >> ~/.cabal/config
 

Ou (cabal-install 1.18+):

 echo 'jobs: $ncpus' >> ~/.cabal/config
 

Obtenez la dernière version de cabal-install avec:

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

17voto

hammar Points 89293

Il y avait un projet Google Summer of Code cet été pour mettre en parallèle cabal-install . Bien qu'il n'ait pas encore été fusionné dans la ligne principale, l'article lié fournit des instructions pour récupérer le source et le construire vous-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X