GNU parallel

Un article de Wikipédia, l'encyclopédie libre.
GNU parallel
Description de l'image Gnu-parallel.svg.

Informations
Créateur Ole Tange (d)Voir et modifier les données sur Wikidata
Développé par Communauté GNU parallel (d)Voir et modifier les données sur Wikidata
Première version [1],[2]Voir et modifier les données sur Wikidata
Dernière version 20240322 ()[3]Voir et modifier les données sur Wikidata
Version avancée 20240122 (Frederik X, )[4]Voir et modifier les données sur Wikidata
Dépôt git.savannah.gnu.org/cgit/parallel.gitVoir et modifier les données sur Wikidata
Écrit en PerlVoir et modifier les données sur Wikidata
Système d'exploitation GNU/Linux, BSD et macOSVoir et modifier les données sur Wikidata
Type Logiciel utilitaire
Command-line tool (d)
Paquet GNUVoir et modifier les données sur Wikidata
Licence Licence publique générale GNU version 3 ou ultérieureVoir et modifier les données sur Wikidata
Documentation www.gnu.org/software/parallel/parallel_tutorial.html, www.gnu.org/software/parallel/parallel.pdf et www.gnu.org/software/parallel/parallel_cheat.pdfVoir et modifier les données sur Wikidata
Site web www.gnu.org/software/parallelVoir et modifier les données sur Wikidata

GNU parallel est un utilitaire en ligne de commande développé et maintenu pour le projet GNU par Ole Tange. C'est un logiciel libre permettant l'exécution de routines shell en parallèle sous différents systèmes compatibles UNIX comme GNU/Linux.

Caractéristiques techniques[modifier | modifier le code]

  • Remplacement d'une boucle en shell, par exemple
   (for x in `cat list` ; do 
       foo $x
   done) | processus_de_sortie

sous la forme simplifiée suivante:

   cat list | parallel foo | processus_de_sortie

où la liste des fichiers contient des arguments pour foo et où le processus de sortie peut être vide.

Les scripts utilisant GNU parallel sont souvent plus faciles à lire que les scripts utilisant pexec.

GNU parallel comporte également les fonctionnalités suivantes :

  • regroupement de la sortie standard stdout et de la sortie erreur standard stderr afin de traiter séparément la sortie des processus traités en parallèle;
  • ordre des sorties identique celui des entrées;
  • support des noms de fichiers contenant des caractères spéciaux comme l'espace, les guillemets simples ou doubles, l'esperluette, et des caractères en UTF-8;

GNU parallel peut faire tourner autant de processus en parallèle qu'il y a de processeurs.

Exemples[modifier | modifier le code]

 find . -name "*.foo" | parallel grep bar

équivaut à:

 grep bar $(find . -name "*.foo")

Recherche de toutes les occurrences de la chaîne bar dans les fichiers du répertoire courant et ses sous-répertoires finissant par l'extension .foo. La commande parallèle va fonctionner comme prévu à moins que le nom de fichier ne contienne une fin de ligne. Pour contourner cette limitation:

 find . -name "*.foo" -print0 | parallel -0 grep bar

L'exemple ci-dessus rajoute des spécificités GNU à la commande find pour séparer les noms de fichiers en utilisant le caractère nul;


 find . -name "*.foo" | parallel -X mv {} /tmp/trash

La commande ci-dessus utilise {} pour dire à parallel de remplacer {} par la liste des arguments.

 find . -maxdepth 1 -type f -name "*.ogg" | parallel -X -r cp -v -p {} /home/media

L'exemple ci-dessus fait la même chose que:

 cp -v -p *.ogg /home/media

cependant, le 1er utilisant find/parallel/cp consomme moins de ressource et ne va pas s'arrêter avec une erreur si les arguments à *.ogg sont trop nombreux.

Scénarios d'utilisation[modifier | modifier le code]

GNU parallel est officiellement intégré dans Fedora 16 depuis le [5]. On peut l'utiliser pour la compression de données audio FLAC[6], pour la compression de données au format zip[7], dans des situations de tests plus complexes[8] ou avec des logiciels de simulation de Monte-Carlo comme MCX[9]. Il est intégré au toolkit PPBS[10] depuis .

Historique[modifier | modifier le code]

L'origine du projet remonte à 2001 de la propre « expérience utilisateur » de l'auteur[11].

Notes et références[modifier | modifier le code]

  1. (en) Ole Tange (d), « First version of Parallel recovered », (consulté le )
  2. (en) Ole Tange (d), « GNU Parallel's 20th birthday », gnu.org (d), (consulté le )
  3. (en) Ole Tange (d), « GNU Parallel 20240322 ('Sweden') released », (consulté le )
  4. (en) Ole Tange (d), « GNU Parallel 20240122 ('Frederik X') released », (consulté le )
  5. (en) « Fedora 16 Update », fedora-package-announce, 3 octobre 2011.
  6. (en) « Décompression audio FLAC», Blog, 30 août 2011.
  7. (en) « GNU Parallel », Blog, 11 mai 2011.
  8. (en) « GNU parallel for parameter sweeps », Blog, 8 septembre 2011.
  9. (en) « How do I run MMC simulations across a cluster ? », mcx.sourceforge.net, 4 décembre 2011.
  10. (en) « PPBS », physiology.med.cornell.edu, 4 décembre 2011.
  11. (en) « GNU Parallel: A Design For Life », fsf.org, 18 octobre 2011.

Sur les autres projets Wikimedia :

Liens externes[modifier | modifier le code]