Paralléliser

Définition, exemples et bonnes pratiques

À retenir

  • Permet de gagner un temps considérable sur les calculs lourds.
  • Nécessite un matériel adapté (plusieurs cœurs ou processeurs).
  • Se heurte à la Loi d'Amdahl : le gain de vitesse est limité par la partie du programme qui ne peut pas être parallélisée.

Paralléliser consiste à découper une tâche informatique complexe en plusieurs petits morceaux pour les exécuter simultanément sur plusieurs processeurs ou cœurs de calcul. C'est comme passer d'une caisse unique dans un supermarché à dix caisses ouvertes en même temps : le travail total est le même, mais il est terminé beaucoup plus rapidement.

Étymologie

Dérivé du mot « parallèle », du grec parallēlos (qui sont côte à côte). En informatique, le terme s'est imposé avec l'avènement des architectures multi-cœurs et des supercalculateurs pour désigner la rupture avec l'exécution séquentielle (une tâche après l'autre).

Exemples d'usage

  • Le rendu d'un film d'animation : chaque image ou zone de l'image est calculée par un cœur de processeur différent.
  • Le traitement de données massives (Big Data) : un algorithme analyse des millions de lignes en répartissant les paquets de données sur plusieurs serveurs.
  • L'encodage d'une vidéo : le logiciel divise le fichier pour utiliser toute la puissance des processeurs modernes.

Cas d'usage

On utilise la parallélisation dans le calcul scientifique (météo, simulation physique), l'intelligence artificielle (entraînement de modèles), le développement de jeux vidéo et la gestion de bases de données à haute performance.

Bonnes pratiques

Il ne faut pas chercher à tout paralléliser à tout prix. La gestion de la répartition du travail consomme elle-même de l'énergie et du temps (le surcoût). Si la tâche est trop petite, la paralléliser peut paradoxalement ralentir l'ordinateur. Il faut aussi veiller à ce que les différentes parties ne tentent pas de modifier la même donnée en même temps (concurrence).

Synonymes

multithreading exécution simultanée traitement parallèle

Antonymes

sérialiser exécution séquentielle

Conseil

Si vous débutez, utilisez des bibliothèques logicielles qui gèrent la parallélisation pour vous (comme multiprocessing en Python ou les Streams parallèles en Java) au lieu d'essayer de gérer manuellement les fils d'exécution (threads).

Questions fréquentes

Est-ce que paralléliser rend mon code plus simple ?

Non, bien au contraire. La programmation parallèle est beaucoup plus complexe car il faut synchroniser les tâches et éviter les erreurs de mémoire partagée.

Est-ce que doubler le nombre de cœurs divise le temps par deux ?

Rarement. Il y a toujours une perte d'efficacité due à l'organisation du travail et aux parties du code qui doivent rester séquentielles.