Depuis près de 10 ans, les processeurs des ordinateurs ont été plus en plus rapides en utilisant plusieurs cœurs plutôt que d’augmenter leurs vitesses individuelles. Cette mesure a rendu nos PC et smartphones plus économes en énergie, mais elle a également rendu beaucoup plus difficile l’écriture de programmes qui tirent pleinement parti de ces matériels. Swarm, une nouvelle conception de puce développée au MIT, pourrait maintenant venir à la rescousse et de libérer toute la puissance de traitement parallèle avec des accélérations jusqu’à 75 fois, tout en exigeant des programmeurs l’écriture d’une fraction de code.
Développée par le professeur Daniel Sanchez et son équipe, Swarm est une puce à 64 cœurs qui comprend des circuits spécialisés pour à la fois exécuter et prioriser les tâches d’une manière simple et efficace, en supprimant le fardeau pour les développeurs de logiciels.
L’écriture de logiciels pour une puce multi-cœur est un peu comme coordonner un projet d’équipe complexe: toutes les tâches ne peuvent être déléguées, et celles qui le peuvent, doivent être soigneusement réparties entre les membres de l’équipe. Avec du logiciel, ce genre de planification peut être compliqué, chronophage, et ajouter d’importants coûts généraux qui finissent par ralentir l’exécution du logiciel. Pour cette raison, la programmation parallèle est généralement pratique seulement pour les grandes tâches qui comptent des milliers d’instructions.
En outre, les développeurs doivent également faire face au problème irrégulier de la gestion des conflits de données. Une tâche peut demander l’accès et la modification d’un bout de données qui peut être en cours d’utilisation par une autre tâche. Pour éviter d’endommager les données, les programmeurs doivent gérer manuellement les priorités entre les tâches et faire en sorte que les ressources partagées ne sont accessibles que par une seule tâche à la fois (forçant d’autres tâches à paresseusement attendre leur tour).
L’architecture Swarm aborde ces problèmes en mettant en avant des circuits spécialisés pour déléguer même la plus petite des tâches très efficacement et faire respecter une priorité stricte entre elles. Par conséquent, les programmeurs peuvent faire exécuter des tâches en parallèle avec peu de frais, ce qui fait que le logiciel peut être exécuté jusqu’à des dizaines de fois plus rapidement.
« Swarm a deux avantages par rapport aux multicœurs classiques, » assure Daniel Sanchez. «D’abord, Swarm supporte de minuscules tâches, aussi petites que des dizaines d’instructions, de manière efficace. En revanche, les multicoeurs actuels ont besoin de tâches plus importantes (en milliers d’instructions ou plus) pour fonctionner efficacement. Soutenir les petites tâches permet plus de parallélisme, simplement parce qu’il y a souvent beaucoup de parallélisme dans chaque grande tâche.
« Deuxièmement, Swarm applique un ordre global parmi ces tâches. En revanche, les multicoeurs actuels ne peuvent pas soutenir efficacement une exécution ordonnée, en particulier avec de petites tâches. »
Cet ordre global est très utile pour la gestion des conflits de données. Après que les tâches soient automatiquement priorisées (selon une métrique définie par le développeur), Swarm commence son travail sur les sous-programmes plus prioritaires en parallèle, en tirant parti de ses 64 cœurs. Si des conflits de données surviennent, ils peuvent désormais être gérés automatiquement: par exemple, si une tâche de faible priorité modifie les données qui sont ensuite accessibles par une tâche de priorité élevée, la valeur de données est temporairement revenue pour permettre aux tâches essentielles de terminer plus tôt.
Pour tester leur nouvelle architecture, Daniel Sanchez et son équipe ont comparé les versions de Swarm de six algorithmes communs à leurs homologues parallèles hautement optimisés. De manière remarquable, le logiciel Swarm a exécuté la même tâche entre 3 et 18 fois plus rapidement, malgré qu’elle requérait seulement environ un dixième du code. Dans un cas, le système a été en mesure d’atteindre une impressionnante accélération de 75 fois sur un algorithme que les informaticiens avaient jusqu’ici échoué à paralléliser.
Les chercheurs soupçonnent que la complexité du développement de logiciels pour les systèmes multi-cœurs peut avoir été l’une des raisons principales pour lesquelles les fabricants de puces ont restreint le nombre de cœurs. Swarm pourrait maintenant résoudre ce problème et ouvrir la voie à des puces à usage général avec un grand nombre de cœurs.
Les chercheurs travaillent actuellement sur des techniques pour rendre Swarm encore plus efficace en réduisant les déplacements de données et explorer de nouveaux modèles de programmation.
http://news.mit.edu/2016/parallel-programming-easy-0620
http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7436649