Static Analysis for Bsplib Programs Filip Jakobsson
Total Page:16
File Type:pdf, Size:1020Kb
Static Analysis for BSPlib Programs Filip Jakobsson To cite this version: Filip Jakobsson. Static Analysis for BSPlib Programs. Distributed, Parallel, and Cluster Computing [cs.DC]. Université d’Orléans, 2019. English. NNT : 2019ORLE2005. tel-02920363 HAL Id: tel-02920363 https://tel.archives-ouvertes.fr/tel-02920363 Submitted on 24 Aug 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. UNIVERSITÉ D’ORLÉANS ÉCOLE DOCTORALE MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIERIE DES SYSTÈMES LABORATOIRE D’INFORMATIQUE FONDAMENTALE D’ORLÉANS HUAWEI PARIS RESEARCH CENTER THÈSE présentée par : Filip Arvid JAKOBSSON soutenue le : 28 juin 2019 pour obtenir le grade de : Docteur de l’université d’Orléans Discipline : Informatique Static Analysis for BSPlib Programs THÈSE DIRIGÉE PAR : Frédéric LOULERGUE Professeur, University Northern Arizona et Université d’Orléans RAPPORTEURS : Denis BARTHOU Professeur, Bordeaux INP Herbert KUCHEN Professeur, WWU Münster JURY : Emmanuel CHAILLOUX Professeur, Sorbonne Université, Président Gaétan HAINS Ingénieur-Chercheur, Huawei Technologies, Encadrant Wijnand SUIJLEN Ingénieur-Chercheur, Huawei Technologies, Encadrant Wadoud BOUSDIRA Maître de conference, Université d’Orléans, Encadrante Frédéric DABROWSKI Maître de conference, Université d’Orléans, Encadrant Acknowledgments Firstly, I am grateful to the reviewers for taking the time to read this doc- ument, and their insightful and helpful remarks that have greatly helped its quality. I also thank my team of supervisors for guiding me through this PhD. Gaétan for his imagination and deep theoretical knowledge — but firstly, for his big heart. Wijnand for his impressive knowledge of parallel computing, his tireless proofreading, and for keeping my innate laziness in check. Wadoud and Frédéric D. for their rich insight in formal methods, and for our long discussions in front of the whiteboard. To Frédéric L., for directing this thesis with endless optimism, for overseeing the team of supervisors, and for his ever reliable advice. I hope our collaboration remains as fruitful in the future. I am also grateful to my colleagues at Huawei France Research Center. An- thony, Thibaut and Jan-Willem, for sharing the delights and pains of the doctor- ate since we first came to Huawei. To Pierre and Filip that joined later on, but who merit no less mention. I wish you the best for the completion of your theses. To Antoine, Arnaud, Alain, Mathias and Louise, and to all other colleagues that I have failed to mention. I also have debt of gratitude to Nikolai Kosmatov and Julien Signoles for supervising my master’s internship at CEA. They initiated me to research, and gave me confidence to continue its pursuit. I thank Linus, Henrik, Per and Jonas, for their friendship. As well as all the great friends I have made during my stay in France: Hai, Santiago, Michel, Lawrence, Leah, Anaiz, Lucile and Yu. To my family and parents-in-law, for be- ing there, for supporting and for encouraging me. But finally, and foremost, to Laura. She made all this possible through her unwavering love and support, without which I would have long since abandoned. iii Résumé étendu en français Introduction Les ordinateurs sont utilisés pour automatiser des calculs volumineux qui seraient hors de portée d’un humain. La recherche et le développement en in- formatique augmentent progressivement leur capacité à effectuer des calculs de plus en plus grands, sans épuiser la patience de l’utilisateur. Ce processus per- met l’analyse mathématique, assistée par ordinateur, d’un ensemble toujours croissant de phénomènes naturels complexes. Pour citer un exemple parmi tant d’autres, les chercheurs ont utilisé l’informatique pour obtenir une meilleure compréhension de l’origine de l’univers et de la nature de la matière [97]. Dans certains cas, l’augmentation de la capacité de calcul permet de rem- placer ou même de surpasser du matériel spécialisé. C’est le cas de la radio logicielle1, composante essentielle des réseaux 5G[107], qui remplace le maté- riel de télécommunication personnalisé et qui permet d’atténuer le problème de rareté du spectre [177]. L’informatique parallèle2 est une méthode importante pour obtenir de grandes capacités de calcul. Elle consiste à connecter plusieurs processeurs in- formatique via un réseau électronique, et à les programmer pour collaborer à la résolution d’une tâche commune. La plupart des ordinateurs modernes ex- ploitent le parallélisme. Cela inclut les smartphones, comme le Huawei P303, qui comporte 8 processeurs. Mais aussi, des superordinateurs, comme le Summit [14], qui contient 2,4 millions de processeurs en réseau. Le Summit, entre autres utili- sations, sert à effectuer des simulations du système terrestre qui produisent des prévisions pour le climat du futur. Comme dans tous projets, lorsque d’avantage de ressources sont mobilisées, on s’attend à une efficacité plus grande. Ceci est également vrai dans le contexte 1En anglais, Software-defined radio 2Dans cette thèse, nous distinguons le calcul parallèle du calcul concurrent. Dans le premier, le parallélisme est utilisé de manière plus grossière pour exécuter simultanément des calculs reliés. Dans le dernier, le parallélisme est utilisé de manière fine pour exécuter simultanément des calculs non-reliés. 3https://en.wikipedia.org/wiki/Huawei_P30 v de l’informatique parallèle. Quand on connecte plus de processeurs, on s’attend à une augmentation de la capacité de calcul proportionnelle aux ressources ajou- tées. Hélas, ce ne sera pas nécessairement le cas. Une analogie peut être faite avec une organisation sociale. L’addition de ressources humaines ne résulte pas im- médiatement en une organisation capable de faire plus de travail dans la même unité de temps. Cela est dû à l’effort induit par la distribution et la coordination du travail. Si fait maladroitement, l’addition de plus de travailleurs pourraient même diminuer l’efficacité de l’organisation. Il en va de même dans le calcul pa- rallèle, où le travail doit aussi être distribué et coordonné entre les processeurs participants. Par conséquent, l’une des tâches fondamentales du calcul parallèle est de concevoir des architectures et des programmes adaptés afin qu’ils passe bien à l’échelle, c’est-à-dire que l’ajout de ressources provoque l’augmentation souhaitée de la puissance de calcul. Ceci est le sujet du parallélisme évolutif 4. Cette tâche est réputée difficile. Dans cette thèse nous allons attaquer cette difficulté dans le contexte de BSPlib, une bibliothèque de programmation pour Bulk Synchronous Parallelism (BSP). BSP est un modèle de parallélisme avec des caractéristiques désirable en terme de structure, de sécurité et de perfor- mance. Nos armes de prédilection sont des outils de vérification automatiques appelés analyses statiques. Ces outils, spécifiés et éprouvés mathématiquement, appartiennent aux méthodes formelles. Dans la suite de ce résumé, nous illustre- rons les difficultés de la programmation parallèle évolutive. Nous introduirons le modèle BSP, les méthodes formelles et l’analyse statique. Puis, nous énoncerons notre thèse et résumerons nos contributions qui argumente notre thèse, avant de conclure. Défis de la programmation parallèle évolutive Appliquer le parallélisme évolutif à un problème de calcul présente trois dif- ficultés principale : concevoir l’algorithme, le mettre en œuvre correctement et mesurer sa capacité de passer à l’échelle. L’algorithme est la séquence d’étapes nécessaires pour résoudre le problème. La conception d’un algorithme qui exploite le calcul parallèle, nécessite d’ana- lyser le problème et de découvrir si, et comment, sa résolution peut être dé- coupée et distribuée. Cela nécessite une idée créative qui est très spécifique à chaque problème. Cependant, dans cette thèse, nous nous concentrons sur les 4En anglais, scalable parallelism vi deux difficultés restantes, c’est-à-dire la vérification de sa mise en œuvre et de sa performance. L’implémentation correcte de l’algorithme est rendu difficile par les erreurs subtiles auxquelles la programmation parallèle est sujette. En plus des erreurs possibles en programmation classique, dite séquentielle, comme la division par zéro ou la déréférence d’un pointeur NULL, le parallélisme introduit une multi- tude de nouvelles erreurs. Celles-ci sont dues à de mauvaises l’interaction entre les processus ou à une coordination fautive. Nous illustrons cela avec deux erreurs communes en calcul parallèle. Un in- terblocage est un type d’erreur impliquant au moins deux processus, A et B. Les deux processus exigent des informations l’un de l’autre pour procéder. Mais ce que A doit fournir à B dépend de ce que B doit fournir à A, et vice versa. La progression est bloquée et le calcul ne se termine jamais. Une data race se produit lorsque deux processus tentent d’accéder, par lecture ou par écriture, à la même ressource, dont au moins un des accès est une écriture, et lorsque l’ordre avec lequel les accès se produisent n’est pas fixé. Dans le cas où un processus lit et un autre écrit la ressource, la valeur lue dépend de l’ordre des accès. Dans le cas où les deux processus écrivent la ressource, la valeur finale écrite dépend également de l’ordre. Ces situations sont indésirables et peuvent conduire à des erreurs de calcul subtiles, difficilement détectables et résolubles. Les interblocages et les data races sont causés par des entrelacements imprévus d’exécutions parallèles. Quand plusieurs processus exécutent un flux d’instruc- tions en parallèle, le nombre de possibles entrelacements de ces flux augmente de façon exponentielle. Le programmeur doit s’assurer que son programme est correct sous chaque entrelacement possible.