À retenir
- C'est une unité de code minimale et autonome.
- Il est optimisé pour des matériels spécifiques (accélérateurs).
- Il sert à améliorer la vitesse d'exécution des tâches lourdes.
Un codelet est une petite portion de code informatique, comme une boucle de calcul, isolée pour être exécutée sur un processeur spécialisé (un accélérateur) plutôt que sur le processeur principal. On peut l'imaginer comme une tâche de cuisine très spécifique confiée à un robot ménager expert pour soulager le chef cuisinier et gagner en rapidité.
Étymologie
Le terme est un anglicisme composé de code et du suffixe diminutif -let (petit), sur le modèle de applet ou booklet. Il est apparu avec l'essor du calcul haute performance pour désigner des fragments de programmes faciles à analyser et à déplacer d'un matériel à un autre.
Exemples d'usage
- Une fonction mathématique de traitement d'image envoyée à la carte graphique (GPU).
- Une boucle de calcul intensif isolée pour être testée sur un processeur expérimental.
Cas d'usage
On utilise les codelets principalement dans le calcul scientifique (HPC) et l'intelligence artificielle. Ils permettent d'optimiser les performances en identifiant les parties d'un logiciel qui bénéficieraient d'un coup de pouce matériel (comme un FPGA ou un DSP).
Bonnes pratiques
Pour qu'un codelet soit efficace, il doit être le plus autonome possible : il faut limiter ses dépendances aux données externes pour éviter que les transferts entre le processeur et l'accélérateur ne ralentissent l'exécution.
Synonymes
Antonymes
Conseil
Si vous vous intéressez à la performance, voyez le codelet comme une 'unité de mesure' : c'est la brique de base que les experts utilisent pour comprendre quelle partie d'un logiciel peut être accélérée.
Questions fréquentes
Quelle est la différence avec un 'kernel' en programmation GPU ?
Le terme est proche, mais un codelet est souvent une vision plus abstraite et simplifiée utilisée lors de l'analyse de performance avant l'implémentation finale.
Un codelet peut-il fonctionner seul ?
Non, il fait généralement partie d'un programme plus vaste qui orchestre son exécution et lui fournit les données nécessaires.