Le lancement d'Ampere (A100) n'était pas qu'une offensive matérielle. NVIDIA l'avait annoncé, de nouveaux outils (v)ont être mis à disposition des développeurs. C'est notamment le cas du HPC SDK qui doit faciliter l'exploitation du GPU depuis du code de bas niveau en C(++) et Fortran.
NVIDIA le sait, la guerre de la performance ne se gagne pas simplement en proposant les puces les plus performantes du marché. Il faut aussi réussir à fédérer un large écosystème autour de soi, tant de constructeurs que de développeurs. C'était l'enjeu de CUDA ces 10 dernières années.
Face à NVIDIA et son CUDA, la oneAPI d'Intel
Mais cela demande également de constamment revoir sa manière de faire, aller plus loin pour toucher de nouveaux marchés. Et surtout, s'adapter à l'environnement concurrentiel. Et celui du caméléon va être profondément bouleversé sous peu : Intel débarque dans les GPU et se donne les moyens de convaincre.
C'est une menace bien différente de la multitude d'accélérateurs que l'on voit émerger ici ou là, qui nécessitent en général un développement et des optimisations spécifiques, là où les CPU et GPU sont partout. Ils visent ainsi une clientèle (et une réponse) particulière.
Mais en se plaçant sur le terrain des processeurs graphiques, Intel ajoute la corde qui manquait à son arc : une solution haute performance pour du calcul massivement parallèle, sans commune mesure avec ce que savent faire les CPU en la matière, tout en bénéficiant d'un panel très large de possibilités.
C'est dans la nature même des GPU, mais aussi ce que permet la couche logicielle qui les accompagne, composée de standards mais pas que. Intel l'a lui aussi bien compris en développant sa OneAPI. Un ensemble d'outils de plus ou moins bas niveau permettant de produire du code une seule fois pour profiter d'accélérations diverses : CPU, GPU, FPGA, ASIC, instructions spécifiques et autres accélérateurs intégrés. Une sorte de super CUDA.
Cela va d'ailleurs plus loin, puisqu'Intel propose des outils pour importer du code CUDA existant, promettant que le code produit par la OneAPI ne fonctionnera pas que sur sa plateforme, s'ouvrant à des puces tierces (dont les GeForce). Le tout porté par un développement open source. On a ainsi vu la version 1.6 de oneDNN intégrer un support préliminaire des processeurs IBM Power et des optimisations pour les SoC ARM 64 bits (aarch64).
HPC SDK pour accélérer l'exploitation du GPU
NVIDIA ne pouvait donc pas rester les bras croisés. C'est là qu'intervient son HPC SDK, qui doit lui aussi faciliter la vie des développeurs. Annoncé en marge de l'A100, il est désormais accessible à tous. Sa documentation livre les détails de sa composition, notamment les compilateurs qu'il embarque.
Multiplateforme, il peut être utilisé sur CPU x86, Power PC ou ARM 64 bits, NVIDIA poussant notamment à la création de serveurs ARM/GeForce, adaptant CUDA en ce sens. L'objectif est ainsi de fournir un ensemble d'outils permettant de compiler du code C(++) ou Fortran parallélisé pour qu'il tire parti du GPU et pas seulement du CPU.
Puis de pousser à la transition vers un code plus efficace avec des bibliothèques, analyseurs de performances et autres logiciels prévus à cet effet. Mais NVIDIA ne proposant pas lui-même de CPU et ayant le plus souvent une approche assez fermée de ses outils, se limitant à son propre écosystème, cela sera-t-il suffisant ?
Vu les moyens qu'Intel met dans l'évolution de sa oneAPI et l'importance de l'enjeu pour le géant de Santa Clara dans les mois à venir, il faudra sans doute frapper un peu plus fort.