Les cartes graphiques Intel Xe seront à l’œuvre dans Aurora

Aurora est un futur superordinateur américain qui devrait arriver en production en 2021. Son coût est d’approximativement un demi-milliard de dollars américains. Il est prévu qu’il ouvre à la voie à des superordinateurs d’une puissance totale d’un exaflops (un milliard de milliards d’opérations en virgule flottante par seconde). Dès l’origine, cette machine, commandée auprès de Cray, devait intégrer du matériel Intel : il devait s’agir de coprocesseurs Intel Xeon Phi, mais ces produits ne sont plus développés.

Entre temps, Intel a annoncé son retour en grande pompe sur le marché des cartes graphiques haut de gamme (d’un point de vue des joueurs). Les processeurs correspondants sont prévus pour être utilisés tant comme processeurs graphiques intégrés à faible consommation que comme cartes hauts de gamme (peu importe la consommation tant qu’on a la puissance de calcul)… ou que comme coprocesseurs de calcul intensif.

C’est cette dernière déclinaison qui viendra dans Aurora, avec oneAPI pour en faciliter la programmation. On n’a, pour le moment, aucun détail sur les processeurs qui seront intégrés : il pourrait très bien s’agir de processeurs graphiques intégrés aux Xeon ou de cartes additionnelles ; incidemment, cela veut dire qu’on n’a aucune idée du nombre de ces processeurs graphiques. Par ailleurs, aucun chiffre de performance estimé n’est disponible (sauf pour la machine au complet). Tout ce qu’on en sait vient d’autres annonces d’Intel : processeurs fabriqués en 10 nm, disponibles dès 2020.

Source : Intel’s Xe Graphics Architecture to Power World’s First Exascale Supercomputer.

Advertisements

Sortie de CUDA 10.1

Moins de six mois après la sortie de CUDA 10.0, voici la première version mineure qui apporte une série de nouveautés. Notamment, cuBLASLt est une variante allégée de cuBLAS pour l’algèbre linéaire, spécialement focalisée sur le produit entre matrices (GEMM). Cette bibliothèque propose une API plus flexible que BLAS (une interface qui existe depuis 1990), notamment au niveau de la représentation en mémoire des matrices, peu importe le type des données (notamment en précision réduite, sur huit ou seize bits).

Les solveurs pour les valeurs propres ont également été revisités, avec des améliorations de performance leur permettant d’aller une fois et demi plus vite qu’avant. cuSOLVER propose aussi de nouveaux solveurs pour récupérer un sous-ensemble de valeurs propres (SYEVDX et SYGVDX).

Côté génération de nombres aléatoires, six algorithmes ont été retravaillés (MTGP32, MRG32k3a, Sobol32 et Sobol64), avec une amélioration de performance qui peut monter jusqu’à un facteur quatre ! nvJPEG, une bibliothèque d’encodage et de décodage de fichiers JPEG, accélère fortement les opérations en lots.

Télécharger CUDA 10.1. Voir aussi les notes de version.

Quels réseaux pour les centres informatiques de demain ?

Les besoins en transferts de données explosent au niveau des centres informatiques pour plusieurs raisons : d’un côté, l’augmentation du nombre de requêtes à traiter, de l’autre, de nouvelles tâches à effectuer qui nécessitent de déplacer de grandes quantités de données. Dans cette catégorie, on retrouve notamment toutes les applications de l’apprentissage automatique. Pour faire face à ces évolutions, bon nombre de gestionnaires de centres informatiques font appel à des solutions de stockage logiciel : au lieu d’acheter des solutions de type SAN (storage area network), c’est-à-dire des serveurs et plateformes logicielles spécifiquement prévues pour du stockage à grande échelle (chez HP ou Dell, par exemple), on préfère acheter du matériel plus généraliste et du logiciel spécifique (comme chez Red Hat ou Microsoft). Ainsi, il est plus facile de faire évoluer son stockage, en achetant plus ou moins n’importe quel serveur et en le configurant.

Reste après à gérer le transfert des données à l’intérieur du réseau du centre informatique. Trois solutions existent pour le moment : la plus utilisée pour le stockage, Fibre Channel ; la plus répandue dans les réseaux en général, Ethernet ; la solution de référence pour les superordinateurs, InfiniBand.

Fibre Channel tombe en désuétude, ses évolutions ne semblant plus qu’anecdotiques en comparaison de la concurrence offerte par InfiniBand et Ethernet. L’un de ses avantages clés est l’orientation exclusive vers le stockage : les protocoles déployés sur ce genre de réseau à base de fibre optique permettent d’accéder directement à un bloc donné dans l’espace de stockage. Cependant, ce n’est que cette année que l’on devrait voir un débit à deux cent cinquante-six gigaoctets par seconde, un débit qui devrait quadrupler d’ici à 2029.

En comparaison, Mellanox a développé une série de protocoles qui peuvent transiter dans un réseau Ethernet, sous le nom de ESF (Ethernet storage fabric). Implémentés au niveau des commutateurs Ethernet ainsi que des clients et serveurs, ces derniers rabotent les avantages des réseaux Fibre Channel : accès direct à la mémoire distance (RDMA), échange direct de messages NVMe à destination des disques électroniques (NVMe-oF), codes d’effacement (erasure coding). Ces avancées permettent notamment de décharger les processeurs de certaines tâches liées à la gestion des données, puisqu’elles sont implémentées au niveau du contrôleur réseau (avec RDMA, les paquets ne doivent pas transiter par la pile réseau TCP-IP, par exemple). De plus, avec ESF, on peut transférer directement des fichiers ou des objets, pas seulement des blocs. Par construction, les commutateurs peuvent garantir un très faible niveau de perte de paquets : aucune perte évitable de paquet, notamment en cas de rafale de courte durée.

Pendant ce temps, les débits visés par la norme Ethernet ne cessent d’augmenter. On en est actuellement à cent gigabits par seconde (100GbE), alors que les extensions pour deux cents et quatre cents gigabits par seconde ont été approuvées en 2017 et que le matériel arrive sur le marché : le térabit par seconde (précisément, un térabit et six cents gigabits par seconde) devrait arriver dès 2023. Ces débits pourront s’appliquer à tout réseau Ethernet, qu’il soit généraliste ou utilise des extensions comme Mellanox ESF.

Côté InfiniBand, le débit monte jusque six cents gigabits par seconde en utilisant des liens 12x, normalement le double d’ici à trois ans. Au vu de ses utilisations assez spécifiques dès sa conception, la norme dispose de toutes les extensions nécessaires pour le trafic de type SAN (ne fût-ce que RDMA), mais aussi plus encore. Ainsi, InfiniBand est largement en avance sur les commutateurs intelligents, qui permettent d’effectuer des opérations non triviales sur les flux de données : SHARP (scalable hierarchical agregation and reduction protocol) accélère certaines opérations collectives de MPI, afin d’éviter de transférer trop de données quand l’utilisateur n’en souhaite qu’un résumé.

La technologie existe — qu’est-ce que les gens préfèrent utiliser ? La vente de matériel InfiniBand (surtout fabriqué par Mellanox) n’a pas foncièrement augmenté entre 2015 et 2018. Par contre, la croissance semble venir du côté d’Ethernet.

Source : Ethernet And The Future Of Data Networking.

Huawei présente le Kunpeng 920, le processeur le plus complexe au monde

Huawei a annoncé, lors du salon CES 2019, son prochain processeur pour serveur, le Kunpeng 920. Celui-ci utilise le jeu d’instructions ARMv8, mais est complètement développé par Huawei, sans inspiration d’autres conceptions de processeurs (comme les A76 ou Ares d’ARM).

Outre son origine chinoise, le Kunpeng 920 étonne par ses spécifications et ses chiffres de performance : soixante-quatre cœurs, vingt milliards de transistors, un score SPECint 2006 de 930 sur tous les cœurs. Sur un seul cœur, à 2,6 GHz, sur le même test, il peut monter à dix points par gigahertz (par exemple, le EPYC 7601 d’AMD monte à quatorze points). En nombres à virgule flottante (SPECfp), il obtient un score de huit cents points sur soixante-quatre cœurs (deux EPYC 7601, mille neuf cent quatre-vingt sur deux fois trente-deux cœurs). Ces chiffres sont assez élevés pour la concurrence ARM.

Cependant, le Kunpeng 920 ne sera disponible que sur des produits Huawei : il ne sera pas vendu à l’unité, uniquement intégré à des serveurs Huawei et d’autres équipements. Cela représente un grand changement pour le Chinois, étant donné que, jusqu’à présent, la majorité de leurs produits utilisaient des processeurs x86.

Source : Huawei’s new chip is the most complex CPU ever built.

Non, les accélérateurs ne peuvent pas tout

La mode actuelle, en informatique de haute performance, est de viser des processeurs plus spécifiques pour réaliser des tâches particulières très vite et sans consommer trop d’énergie. Par exemple, les cartes graphiques ne sont “que” des processeurs spécialisés dans certains traitements en parallèle. Plus récemment, les cryptomonnaies ont pu bénéficier de puces qui implémentent spécifiquement les instructions requises et rien d’autre — ou encore l’apprentissage profond, notamment avec les TPU de Google. On y pense moins, mais le décodage du son est toujours effectué par des circuits dédiés (DSP pour le traitement du signal, si ce ne sont pas les codecs eux-mêmes qui sont réalisés en dur). À chaque fois, ces accélérateurs ont permis des gains énormes par rapport à des processeurs généralistes.

Cependant, on ne doit pas trop espérer de gains infinis avec cette technique de déplacer du logiciel vers du matériel : in fine, les accélérateurs aussi sont des processeurs. Ainsi, si la densité de transistors n’augmente pas, ils finiront aussi par atteindre leurs limites. L’amélioration de performance est donc toujours limitée par la technologie, la loi de Moore.

Pour quantifier ce fait, des chercheurs ont analysé les données de milliers de puces accélératrices, pour analyser leur amélioration de performance génération après génération. Ils ont notamment cherché à distinguer la partie due uniquement aux algorithmes implémentés en matériel de celle qui vient de l’amélioration des processus de fabrication. Ils en sont arrivés à définir une quantité adimensionnelle, le “rendement de spécialisation” : ce nombre indique à quel point les capacités des puces s’améliorent indépendamment des transistors disponibles.

Ils ont alors détaillé des puces utilisées pour le décodage de vidéos, le minage de cryptomonnaies, le rendu de jeux vidéos ou l’application de réseaux neuronaux convolutifs. Leur conclusion est sans appel : les améliorations de performance dépendent énormément du nombre de transistors disponibles, les progrès architecturaux sont largement inférieurs.

Source : The Accelerator Wall: Limits of Chip Specialization.

Sortie de Julia 1.1 RC 1

Le développement de Julia, langage de programmation dynamique de haute performance, se poursuit. La version 1.0 devait être la base du langage pour les versions à venir sans perte de rétrocompatibilité : aucune fonctionnalité ne peut disparaître d’ici à Julia 2.0. Cette garantie est prévue pour faciliter l’utilisation à plus grande échelle du langage.

Julia 1.1 apporte peu de nouvelles fonctionnalités, mais celles-ci devraient simplifier la vie des développeurs. Tout d’abord, les exceptions peuvent désormais s’empiler : si le code lance une exception pendant le traitement d’une exception, les deux sont gardées dans une pile. Auparavant, la première exception était écrasée par la seconde. Cela permettra de déboguer plus facilement le code, en remontant directement à la cause première. La méthode catch_stack est disponible pour accéder à cette pile ; pour le moment, l’implémentation est expérimentale et l’API pourrait changer. L’opérateur ~ est souvent utilisé en probabilités pour indiquer qu’une variable aléatoire suit une certaine distribution de probabilité ; Julia dispose de cet opérateur depuis un certain temps, mais celui-ci ne pouvait pas s’appliquer sur des vecteurs : le compilateur ne comprenait pas la forme .~, ce qui est maintenant le cas.

Les méthodes findmin, findmax et findall ne retournaient pas toujours le même type pour indiquer quels éléments correspondent à la requête. Désormais, quand la recherche se fait dans une matrice ou un tableau d’ordre supérieur, ces méthodes renvoient des objets CartesianIndex. Ce changement casse légèrement la compatibilité avec le code existant, mais il a été estimé qu’il aurait dû être effectué pour la 1.0 et que c’était donc un défaut.

La bibliothèque standard s’est enrichie d’une série de méthodes. Par exemple, splitpath pour convertir un chemin en ses différentes composantes ; isnothing pour déterminer si l’argument est nothing ou non (par exemple, une donnée absente) ; eachrow, eachcol et eachslice pour itérer efficacement sur des morceaux de tableaux ; les systèmes BSD disposent d’une série de méthodes pour les détecter et, au besoin, adapter le code.

Voir aussi : la liste complète des changements.

Sortie de PGI 2018.10

PGI est une société (maintenant filiale de NVIDIA) spécialisée dans le développement de compilateurs pour le calcul de haute performance. Leur premier produit est toujours le plus connu : un compilateur C et Fortran (maintenant, C++ s’est ajouté à la liste). Le marché visé est celui des superordinateurs, mais aussi de toute application du calcul à haute performance, c’est-à-dire avec un haut degré de parallélisme.

La version 2018.10 de la suite de compilateurs est maintenant sortie et apporte une série de nouveautés intéressantes. Du côté matériel, le compilateur peut cibler les cartes graphiques Tesla V100, un accélérateur pas spécialement nouveau ; PGI rapproche le code écrit avec la norme OpenACC (C++ et Fortran) ainsi que CUDA en Fortran de ce matériel, tant pour des processeurs x86 qu’OpenPOWER.

Pour faciliter le débogage de code, la version précédente de PGI (2018.7) a apporté une fonctionnalité d’autocomparaison : le même code OpenACC est lancé sur le CPU et sur le GPU et les résultats numériques sont comparés (en considérant que le CPU donne toujours des résultats exacts). La nouvelle version, en plus de retravailler le format de sortie de cette option pour le rendre plus lisible, permet de corriger les résultats défaillants en cas d’erreur (patch-and-continue) : les données sont alors copiées depuis le CPU vers le GPU et l’exécution continue avec les nouvelles données. Ainsi, si la suite du code émet à nouveau des avertissements, cela signifie qu’elle est également fausse.

Au niveau des langages, les versions du compilateur livrées en 2018 ont apporté les dernières évolutions : les sous-modules de Fortran 2008, l’assignation de valeurs à des variables allouables qui respecte la sémantique de Fortran 2003 (au lieu de Fortran 1995), OpenACC 2.6 complètement implémenté (et les fonctions anonymes peuvent être utilisées conjointement), C++17 en bonne partie disponible. La version 2018.10 ajoute la construction DO CONCURRENT de Fortran 2008, pour rattraper le retard accumulé ces dernières années.

Source : notes de version.