En 2020, notre monde numérique et les logiciels que nous utilisons pour le créer sont une structure imposante, construite sur d'innombrables couches d'abstraction et de blocs de construction – il suffit de penser à toutes les traductions et interactions qui se produisent lors du chargement d'une page Web. Si l’abstraction est sans aucun doute une grande chose, elle ne fonctionne que si nous construisons sur des bases solides; si les niveaux inférieurs sont stables et rapides. Qu'est-ce que cela signifie en pratique? Cela signifie des langages compilés de bas niveau, qui peuvent être fortement optimisés et exploités pour tirer le meilleur parti du matériel informatique. L'un des géants dans ce domaine était Frances Allen, décédée récemment au début d'août. Décrite par IBM comme «une pionnière de l'organisation des compilateurs et des algorithmes d'optimisation», elle a apporté de nombreuses contributions significatives dans ce domaine.

Premiers jours

Via Wikimedia

Formé en tant que professeur de mathématiques, Allen a travaillé dans un lycée de New York pendant deux ans après avoir obtenu son diplôme. Elle est retournée terminer une maîtrise en mathématiques et a été recrutée par IBM Research sur le campus. Bien qu'elle prévoyait de ne rester que le temps de rembourser sa dette et de retourner rapidement à l'enseignement, elle s'est retrouvée chez IBM pour le reste de sa carrière, devenant même la première femme IBM boursière en 1989.

Le premier rôle d’Allen chez IBM a été d’enseigner aux ingénieurs et aux scientifiques internes comment utiliser FORTRAN – une vente apparemment difficile à des personnes qui à l’époque étaient habituées à la programmation en assemblage, ce qui vous remerciait beaucoup. Dans une interview, Allen parle de la résistance des scientifiques qui pensaient qu’il n’était pas possible pour un langage compilé de produire du code suffisamment bon.

Le supercalculateur Stretch (via IBM)

Après avoir enseigné, Allen a commencé à travailler sur le compilateur pour un «supercalculateur» de 100 kW appelé Stretch. Avec 2048 Ko de mémoire, l'objectif de Stretch était d'être 100 fois plus rapide que tout autre système disponible à l'époque. Bien que cela ait finalement échoué (à la consternation de quelques clients, une conclusion que Stretch a mis 18 heures à produire leurs prévisions météorologiques sur 24 heures), cela a attiré l'attention de la NSA.

Pour cette raison, IBM a conçu un module complémentaire de coprocesseur, Harvest, spécifiquement pour le codebreaking à la NSA. Harvest a fini par être plus grand que Stretch lui-même, et Allen a passé un an à diriger une équipe au sein de la NSA, travaillant sur des projets hautement classifiés. L'équipe n'a pas découvert beaucoup de choses sur ce sur quoi elle travaillait avant d'être divulguée à la presse (elle espionnait l'Union soviétique – pas de prix pour deviner).

Ingénieurs avec des bandes de tracteur pour la récolte

Prouesse technique, Harvest a utilisé une architecture de streaming unique pour la rupture de code: les informations chargées sur la bande IBM Tractor étaient continuellement alimentées en mémoire, traitées et sorties en temps réel, avec des opérations et des E / S parfaitement synchronisées. Harvest pouvait traiter 3 millions de caractères par seconde et a été estimé par la NSA comme 50 à 200 fois plus rapide que tout ce qui est disponible dans le commerce. Le projet a été extrêmement réussi et a été utilisé pendant 14 ans après l'installation, un exploit impressionnant étant donné le rythme des progrès technologiques à l'époque.

La vitesse est essentielle

Le succès du projet était en grande partie dû au travail d'Allen sur les optimisations effectuées par son compilateur. Les optimisations du compilateur sont magiques. Certains d'entre nous considèrent les compilateurs comme de simples boîtes «code source entrant, code machine sortant», mais une grande partie de leur complexité réside dans la suite entièrement automatique d'optimisations et d'étapes intermédiaires qu'ils utilisent pour garantir que votre code s'exécute aussi rapidement que possible. Bien sûr, c'était important pour le matériel limité à l'époque, mais les techniques qu'Allen a aidé à développer sont présentes partout dans les compilateurs modernes. Le New York Times cite Graydon Hoare (le créateur de Rust et l'un des experts en compilateur les plus célèbres d'aujourd'hui) disant que le travail d'Allen se trouve dans «chaque application, chaque site Web, chaque jeu vidéo ou système de communication, chaque ordinateur gouvernemental ou bancaire, chaque ordinateur à bord. ordinateur dans une voiture ou un avion ».

Alors, à quoi ressemblent réellement les optimisations du compilateur? Allen a écrit de nombreux articles influents sur le sujet, mais «Un catalogue de transformations optimisées» qu'elle a co-écrit avec John Cocke en 1972 était particulièrement déterminant. Il vise à «systématiser le pot-pourri d'optimisation des transformations qu'un compilateur peut apporter à un programme». Il a été dit que les compilateurs qui n'implémentent que les huit techniques principales de cet article peuvent atteindre 80% de performances optimales. Voici quelques-unes des idées les plus élémentaires:

  • Intégration de procédure: remplacement des appels aux sous-procédures par du code en ligne lorsque cela est possible, évitant la sauvegarde / restauration des registres
  • Déroulement de boucle: aplatissement des boucles en écrivant des instructions explicitement, évitant les conditions de comparaison inutiles
  • CSE (Common Subexpression Elimination): élimination des calculs redondants qui calculent les valeurs déjà disponibles
  • Code Motion: déplacer les sous-expressions hors des boucles là où il est sécuritaire de le faire
  • Optimisation du judas: remplacement des combinaisons d'instructions connues par des variantes plus efficaces

Certaines d'entre elles peuvent nous sembler évidentes maintenant, mais la formalisation et la standardisation de ces idées à l'époque ont eu un impact considérable.

Parallélisme

Le dernier projet majeur d’Allen pour IBM était PTRAN, le traducteur parallèle. Il s'agissait d'un système de parallélisme automatique, un type spécial d'optimisation du compilateur. L’objectif était de prendre des programmes qui n’ont pas été écrits avec le parallélisme à l’esprit et de les traduire pour une exécution sur des architectures parallèles. Ce concept consistant à prendre du code écrit séquentiellement et à en extraire automatiquement des fonctionnalités pour les exécuter en parallèle a conduit à l'utilisation intensive de graphes de dépendances, maintenant une représentation standard dans les compilateurs. L’un des thèmes récurrents tout au long de la carrière d’Allen était sa capacité à prendre des problèmes hautement techniques et à les résumer en mathématiques – souvent des graphiques et des ensembles – et à les résoudre avec précision. Sur ce projet, Allen a dirigé une équipe de jeunes ingénieurs, produisant pendant 15 ans des papiers et des compilateurs de premier plan pour le parallélisme.

IBM Academy et au-delà

En 1995, Allen est devenu président de l’IBM Academy, un groupe de pilotage interne regroupant les plus grands cerveaux techniques d’IBM. Elle a pu utiliser ce poste pour plaider dans deux domaines: le mentorat et les femmes en technologie. Lors d'entretiens, elle a souvent expliqué qu'elle n'avait pas de mentor et à quel point c'était important pour les personnes qui débutent dans la technologie. Sa visibilité en tant qu'expert dans le domaine en a inspiré d'autres – à son apogée dans les années 70/80, la moitié du groupe de compilation expérimentale IBM était des femmes. Son plaidoyer pour les femmes dans la technologie n'a jamais cessé, même si elle a décrit une baisse de la participation après les débuts de l'informatique:

Plus tard, alors que l'informatique est devenue un domaine spécialisé, les employeurs ont commencé à exiger des diplômes d'ingénieur, ce qui attirait traditionnellement peu de femmes. Mais le balancier recule alors que les femmes entrent dans le domaine à partir d'autres domaines tels que l'informatique médicale, les interfaces utilisateur et les ordinateurs dans l'éducation.

En 2006, Allen a reçu le prix Turing (considéré comme le prix Nobel d'informatique) – la première femme à le faire.

Ainsi, la prochaine fois que vous lancerez gcc, écrivez quoi que ce soit dans un langage au-dessus de l'assembly, ou même utiliserez n'importe quel logiciel, rappelez-vous que les idées de Frances Allen sont invisibles en jeu.

LAISSER UN COMMENTAIRE

Rédigez votre commentaire !
Entrez votre nom ici