Sortie de Qt Creator 4.3.1

En même temps que Qt 5.9.1 sort Qt Creator 4.3.1, qui corrige également un bon nombre de défauts. Le principal est une fuite de mémoire dans l’autocomplétion du code, qui pouvait vite dégénérer en plantage de l’application (surtout en 32 bits). Cette version apporte également bon nombre d’améliorations en ce qui concerne l’intégration avec CMake, corrige un défaut empêchant de lancer des applications sur des périphériques iOS 10.3. La liste complète des modifications est disponible sur le site officiel du projet.

Sortie de Qt 5.9.1

Les développeurs s’y étaient engagés : Qt 5.9 aura un support sur le long terme et des versions correctives relativement rapprochées. Qt 5.9.0 est sorti fin mai, la première version de maintenance Qt 5.9.1 est disponible depuis la fin juin.

Aucune nouvelle fonctionnalité, comme prévu, uniquement des correctifs (détaillés module par module). Certains problèmes majeurs sont connus, comme l’impossibilité de compiler Qt en statique avec Visual C++ 2017 (plus que probablement un problème du compilateur), de compiler des modules supplémentaires par rapport à ceux livrés par l’installateur en ligne sous Linux à mois d’utiliser ICU 56, d’ouvrir des projets iOS dans Qt Creator (le correctif sera livré avec Qt 5.9.2) ou de compiler des projets UWP avec Visual C++ 2017 (corrigé avec Qt Creator 4.3.1). Ceux qui compilent pour iOS auront intérêt à utiliser l’errata déjà disponible pour cette version (il sera inclus dans Qt 5.9.2).

Source : Qt 5.9.1 Released, Qt 5.9.1 Known Issues.

MareNostrum 4 comparera les technologies du futur des superordinateurs

Le superordinateur de Barcelone, hébergé au BSC (Barcelona supercomputer centre), en est à sa quatrième génération. La construction n’est qu’à la première des quatre phases prévues, avec une série de processeurs Intel de dernière génération (des Xeon v5). La puissance de calcul est déjà à 13,4 pétaflops, douze fois plus élevée que pour la troisième génération de MareNostrum — pour une consommation électrique d’à peine trente pour cent plus élevée (1,3 MW).

La différence de MareNostrum 4 par rapport à la majorité des supercalculateurs actuels viendra avec les trois phases successives, qui utiliseront du matériel tout à fait différent et de dernière génération : des processeurs IBM POWER9 couplés avec des processeurs graphiques NVIDIA de génération Volta, pour une puissance de 1,5 pétaflops (exactement comme Sierra et Summit, deux supercalculateurs à venir au département de l’Énergie américain) ; des processeur Intel Xeon Phi de génération Knight Hills, avec nettement plus de cœurs que les Xeon traditionnels, pour une puissance de 0,5 pétaflops (exactement comme Theta et Aurora, prévus pour le laboratoire national d’Argonne) ; des processeurs ARM v8 en 64 bits, pour une puissance de 0,5 pétaflops également (comme le successeur du K japonais). Peu de superordinateurs pourront se targuer de présenter autant de choix à leurs utilisateurs !

Par contre, ces technologies n’étant pas encore prêtes, les concepteurs du superordinateur ne peuvent pas donner de date précise pour leur mise à la disposition des utilisateurs. Pour le moment, cependant, des machines POWER8 avec des GPU NVIDIA plus anciens et d’autres avec des processeurs Intel Xeon Phi Knights Landing ont été déployées.

Toute cette puissance de calcul sera mise au profit des trois cent cinquante chercheurs du BSC, qui œuvrent dans des domaines comme la médecine personnalisée (prédire l’effet d’un médicament sur un patient particulier grâce à son profil génétique, ce qui nécessite de prendre en compte toute une série d’effets dans le corps humain). Au contraire, l’hétérogénéité des processeurs aura un tout autre objectif : déterminer celles à privilégier quand il faudra encore monter en puissance de calcul.

Source : New MareNostrum Supercomputer Reflects Processor Choices Confronting HPC Users.

Premières préversions pour MOSEK 8.1

Le solveur commercial de référence pour les problèmes d’optimisation convexes poursuit son petit bonhomme de chemin : quelques mois après la version 8.0, la première préversion de la 8.1 est disponible. Les améliorations du côté des algorithmes d’optimisation se sont portées sur le solveur conique, plus particulièrement pour les problèmes avec des contraintes très denses (faisant intervenir un grand nombre de variables).

Côté modélisation, l’API Fusion en C++ est désormais disponible pour Windows (uniquement en 64 bits pour le moment avec Visual C++ 2015) ; la bibliothèque ne peut être compilée que de manière statique. Côté Python, la performance a été largement améliorée. De même, la documentation a été retravaillée pour être plus claire, notamment au niveau des API fournies et de l’installation.

Des chiffres officiels d’amélioration de performance des solveurs ne sont pas encore disponibles, ils devraient arriver avec la version finale de MOSEK 8.1, vers la fin septembre.

Sources : notes de version, page de téléchargement.

Intel annonce avoir achevé la conception préliminaire d’Ice Lake

Intel est lancé dans sa cadence de lancement de nouvelles générations de processeurs. La huitième s’approche très franchement (Coffee Lake), une amélioration légère de la génération actuelle. La neuvième (Cannon Lake) utilisera un processus de fabrication amélioré (10 nm au lieu du 14 nm), qui avance comme prévu et devrait être disponible à la fin 2017 (pour les processeurs à basse consommation, probablement) — la conception du processeur étant très proche de la huitième génération.

Intel a très récemment annoncé sur Twitter que les travaux sur la dixième génération (Ice Lake) sont aussi bien avancés, puisque la conception initiale du processeur est achevée (avec une microarchitecture améliorée). Plus spécifiquement, les premiers prototypes sont sortis de l’usine (tape-in). Il faudra encore quelques mois pour que des processeurs entièrement fonctionnels soient produits : les différentes parties du processeur ont été conçues, il faut encore les assembler et s’assurer que tout fonctionne bien ensemble.

Source : compte Twitter d’Intel.

Sortie de Julia 0.6

Julia est un langage de programmation de haut niveau, dynamique, mais orienté applications de haute performance (surtout pour le calcul scientifique). Malgré son jeune âge (il est apparu pour la première fois au grand public en 2012), il a déjà réussi à fédérer une certaine communauté (on estime à 250 000 son nombre d’utilisateurs en 2017), dans bon nombre de domaines.

Sa version 0.6 est sortie, un peu moins d’un an après la précédente. Elle marque le dernier jalon avant la version finale : la 0.7 et 1.0 sortiront presque simultanément, la seule différence étant la gestion d’anciennes syntaxes et l’émission de messages correspondants pour la 0.7 (ce dont la 1.0 ne s’alourdira pas).

Le plus gros changement de Julia 0.6 concerne le moteur d’inférence des types, qui a été complètement réécrit pour être plus rapide, donner des résultats plus précis (ce qui permet d’optimiser le code exécuté) et permettre de nouvelles fonctionnalités. Ainsi, en définissant un nouveau type avec des paramètres (comme une classe générique dans bon nombre d’autres langages), on peut faire référence aux types des paramètres précédents. Par exemple, avec struct Foo{R<:Real, A<:AbstractArray{R}}, on définit un type Foo par rapport à un type particulier de nombres réels (comme Float64) et un tableau (dont les éléments doivent avoir le même type que mentionné précédemment).

Au niveau syntaxique, les mots clés pour définir des types ont été changé pour promouvoir par défaut des valeurs immuables : le code généré est bien souvent plus rapide, cela réduit le risque d’erreur lors de l’écriture du code, avec un impact souvent minime sur l’utilisateur. Ainsi, type devient mutable struct tandis que immutable devient simplement struct.

Pour la performance, les opérateurs et fonctions sont tous vectorisés automatiquement à l’aide d’un point : a .⨳ b est la syntaxe équivalente à l’application de l’opérateur  entre tous les éléments de a et de b. L’avantage principal est que ce mécanisme est géré au niveau du langage, il n’y a plus de traitement particulier des opérateurs vectorisés. Grâce à ce changement, l’écriture de code très optimisé sur des vecteurs devient très facile : pour évaluer une expression utilisant une série d’opérateurs vectorisés, Julia n’exécute qu’une seule boucle à travers les opérandes.

Voir aussi : les notes de version de Julia 0.6.

AMD vise le marché des centres informatiques avec EPYC

AMD a longtemps laissé un certain nombre de segments du marché des microprocesseurs à Intel et NVIDIA : le haut de gamme pour les particuliers, le calcul à haute performance, les centres informatiques, notamment. Le retour de la compagnie s’est d’abord fait dans les cartes graphiques, avec Polaris. Ensuite, ces derniers mois, il fait peur à Intel dans le haut de gamme (qui se voit obligé de lancer des processeurs avec plus de cœurs à des tarifs abordables, en relative urgence), avec Ryzen. Maintenant, c’est au tour de la plus grosse vache à lait d’Intel : les centres informatiques, où les Xeon règnent en maîtres… avant d’être détrônés par des processeurs ARM ou AMD ?

Ainsi, AMD porte sur le marché ses processeurs EPYC, construits sur la même architecture Zen que ses processeurs grand public, Ryzen (suivant la même stratégie qu’Intel). Les EPYC 7000 pourront avoir jusque trente-deux cœurs (vingt-huit côté Intel), avec jusque deux fils d’exécution par cœur. Ils sont prévus pour être mis seul à deux sur une même carte mère (là où Intel peut monter à huit, avec cependant une demande assez faible).

Contrairement à Intel, la distinction se fait très peu sur la fréquence (tous les EPYC 7000 fonctionnent entre 2,0 et 2,4 GHz, avec un mode turbo qui monte à 2,7 GHz — voire plus, si certains cœurs sont désactivés). Leur cache L3 est relativement grand (64 Mo), ils gèrent huit canaux DDR4 (maximum deux barrettes par canal, c’est-à-dire seize barrettes de mémoire par processeur ; contrairement à quatre chez Intel) pour un total de deux téraoctets maximum par processeur. La communication avec la mémoire peut être chiffrée et déchiffrée en temps réel, avec des clés générées par le processeur ou du côté logiciel (notamment pour la virtualisation) : ainsi, cela limite très fortement les possibilités d’attaque d’une machine virtuelle à l’autre.

Pour la communication, ils prévoient cent vingt-huit lignes PCIe, quatre fois ce que propose Intel, mais la moitié des lignes (c’est-à-dire soixante-quatre) est réservée en cas de deuxième processeur sur la carte mère. Ainsi, peu importe la configuration, ces processeurs offriront cent vingt-huit lignes vers l’extérieur — de quoi offrir une connectivité pour huit cartes graphiques (seize lignes chacune) ou encore trente-deux SSD en NVMe (quatre lignes chacun)… ou toute autre combinaison. Huit lignes sont cependant réservées pour être compatibles SATA.

Au niveau architectural, une puce EPYC est constituée de quatre plus petits éléments, reliés par l’Infinity Fabric d’AMD. Cette même technologie est utilisée pour la communication entre processeurs. L’intérêt est donc de fabriquer des puces relativement petites (et donc faciles à réaliser), puis de les assembler. Chaque bloc a un total de trois liens Infinity Fabric, avec un débit maximum de trente-huit gigaoctets par seconde. Infinity Fabric est aussi utilisé à l’intérieur de chaque bloc de huit cœurs, afin de relier des “complexes” (CCX, pour core complex) de quatre cœurs), mais avec un débit plus important (quarante-deux gigaoctets par seconde) — la probabilité d’erreur de transmission est plus faible.

Cette manière de procéder montre à quel point EPYC n’est qu’un sous-produit de l’architecture Zen : Ryzen n’a qu’un seul de ces éléments (huit cœurs) et Threadripper deux (seize cœurs). Le travail de conception spécifique à EPYC est donc très limité.

Cependant, les statistiques pour les processeurs Intel sont données pour la génération actuelle, Broadwell, où effectivement EPYC a de nombreux avantages à mettre en avant. La compétition aura cependant lieu avec la prochaine génération, Skylake, qui devrait aussi arriver en fin d’année. Certaines fonctionnalités des processeurs EPYC seront donc mises à mal (AMD affirme augmenter la performance en calcul à virgule flottante de 75 %, mais sans compter les instructions AVX-512 d’Intel) — on ne s’attend pas à ce qu’EPYC batte Intel à plates coutures au niveau de la performance brute par cœur. Néanmoins, AMD semble avoir prévu le coup en ce qui concerne la mémoire (Intel ne proposera que six canaux, contre huit pour EPYC) et la communication (cent vingt-huit lignes PCIe, quand on s’attend à quarante-huit pour Intel). Sans oublier qu’AMD se placera probablement un peu en-dessous d’Intel niveau prix… et que la distinction entre les processeurs se fait surtout au niveau du nombre de cœurs, toutes les fonctionnalités étant disponibles sur toute la gamme.

Sources : AMD Challenges Intel’s Datacenter Dominance with New EPYC ProcessorsAMD muscles in on Xeon’s turf as it unveils Epyc (images).