L'équipe de développement de LLVM a présenté une proposition appelée Multi-Thread Parallel Compilation (MTPC) pour améliorer ThinLTO. Actuellement, cette technique parallélise des modules entiers, mais les modules volumineux sont traités en série, créant des goulots d'étranglement. MTPC vise à briser cette barrière en divisant le travail au niveau des fonctions.
Comment fonctionne le parallélisme intra-module dans ThinLTO 🚀
MTPC introduit la capacité de diviser un module volumineux en unités plus petites basées sur les fonctions. Chaque fonction peut être compilée et optimisée dans un thread indépendant, à condition que les dépendances de données et les références globales soient correctement gérées. Cela permet aux processeurs multi-cœurs de travailler simultanément au sein d'un même module, réduisant le temps de compilation dans les projets avec des fichiers source très étendus.
Le drame des modules qui se croyaient intouchables 😅
Jusqu'à présent, les modules volumineux menaient une vie tranquille : tout le code était compilé en série, comme une file d'attente au supermarché. Avec MTPC, ces fonctions paresseuses devront se mettre à travailler en parallèle, comme si un chef leur avait dit que le café était fini. Les développeurs pourront dire adieu à ces pauses en attendant que le compilateur termine, même si certains modules feront sûrement grève par manque de synchronisation.