NVIDIA publie des pilotes avec une saveur d’ouverture

Cette année, nous avons déjà constaté d’importantes fuites de code source NVIDIA et une sortie de pilotes open source pour NVIDIA Tegra. Il semble que NVIDIA ait décidé de l’amplifier et vient de publier des modules de noyau GPU open source pour Linux. Le lien GitHub nommé open-gpu-kernel-modules les gens se réjouissent, et nous testons déjà le code, créons des mèmes et spéculons sur l’avenir. Ce pilote est actuellement prétendu être expérimental, uniquement « prêt pour la production » pour les cartes de centre de données – mais vous pouvez déjà l’essayer !

Bien sûr, il y a des nuances. Il s’agit d’un nouveau code, sans rapport avec le pilote propriétaire bien connu. Cela ne fonctionnera que sur les cartes à partir des séries RTX 2000 et Quadro RTX (alias Turing et suivantes). La bonne nouvelle est que les performances sont comparables à celles du pilote à source fermée, même à ce stade ! Une particularité de ce projet – une bonne partie des fonctionnalités que les pilotes AMD et Intel implémentent dans le noyau Linux sont, à la place, fourni par un blob binaire à l’intérieur du GPU. Ce blob fonctionne sur le GSP, qui est un noyau RISC-V qui n’est disponible que sur les GPU Turing et plus jeunes – d’où la limitation de la série. Maintenant, chaque GPU charge un morceau de firmware, mais celui-ci est costaud !

À part cela, ce pilote fournit déjà une intégration plus cohérente dans le noyau Linux, avec des avantages massifs qui ne feront qu’augmenter à l’avenir. Tout n’est pas encore ouvert – les bibliothèques d’espace utilisateur de NVIDIA et les pilotes OpenGL, Vulkan, OpenCL et CUDA restent fermés, pour l’instant. Il en va de même pour l’ancien pilote propriétaire NVIDIA qui, je suppose, serait laissé pourrir – ce qui convient, car « laisser pourrir » est ce que ce pilote a déjà fait sur des générations de cartes anciennes mais parfaitement utilisables.

L’amont de ce pilote sera certainement un effort gigantesque, mais c’est certainement l’objectif, et les avantages seront également considérables. Même tel quel, ce pilote a beaucoup plus de potentiel. Un peu comme un policier britannique, le noyau Linux vérifie la licence de chaque module de noyau qu’il charge et limite les API qu’il peut utiliser s’il n’est pas sous licence GPL – ce que le pilote NVIDIA précédent n’était pas, car ses parties ouvertes étaient essentiellement une fine couche entre le noyau et les pilotes binaires, et donc non sous licence GPL. Étant donné que ce pilote est sous licence MIT/GPL, ils disposent désormais d’un plus grand ensemble d’interfaces et pourraient mieux l’intégrer dans l’écosystème Linux au lieu d’avoir un ensemble d’outils propriétaires.

Un GPU sur ce qui semble être une sorte de carte de montage, avec une boîte de module de calcul Raspberry Pi devant elle
Maintenant avec 65 % de chauffeur en plus, par chauffeur !

Les capacités de débogage, la sécurité et le potentiel d’intégration global devraient s’améliorer. En plus de cela, il y a une multitude de nouvelles possibilités ouvertes. Pour commencer, cela ouvre définitivement la porte au portage du pilote vers d’autres systèmes d’exploitation comme FreeBSD et OpenBSD, et pourrait même aider l’informatique libre. La prise en charge du GPU NVIDIA sur ARM deviendra plus facile à l’avenir, et nous pourrions voir des efforts plus intéressants pour tirer parti de ce que les GPU nous aident lorsqu’ils sont associés à un SBC ARM, des jeux vidéo passionnants au puissant apprentissage automatique. La version de Red Hat indique qu’il y a plus à venir en termes d’intégration correcte des produits NVIDIA dans l’écosystème Linux, aucun effort n’est retourné.

Vous verrez généralement tout le monde saluer cela, pour de bonnes raisons. La tradition est que nous célébrons ces changements radicaux, même s’ils sont imparfaits, de la part de grandes entreprises – et à juste titre, compte tenu des avantages que je viens d’énumérer et du potentiel futur. Au fur et à mesure que nous verrons de plus en plus de mouvements de la part de grands joueurs, nous aurons beaucoup de raisons de nous réjouir et une myriade de problèmes subsisteront dans le passé. Cependant, en ce qui concerne l’ouverture à ce que nous apprécions, la situation devient un peu bizarre et difficile à gérer.

L’ouverture nous aide à ajouter les fonctionnalités dont nous avons besoin, à résoudre les problèmes que nous rencontrons, à apprendre de nouvelles choses du travail des autres et à explorer les limites, alors que nous interagissons avec la technologie qui définit de plus en plus nos vies. Si l’on en croit toute la science-fiction passionnante que nous lisons quand nous étions enfants, en effet, nous sommes censés travailler en tandem avec la technologie. Ce pilote n’est, à bien des égards, pas le genre d’ouverture qui aide notre matériel à nous aider, mais il coche certainement de nombreuses cases pour ce que nous percevons comme « ouvert ». Comment on est venu ici?

Il est bien connu que l’ouverture de chaque partie du code n’est pas ce que font les grandes entreprises – vous devez cacher les bits DRM et les violations de brevets quelque part. Ici, une grande partie du code qui résidait auparavant dans le pilote propriétaire s’exécute désormais sur un processeur différent et est aussi opaque qu’auparavant. Aucun pilote ne s’appuie autant sur le code blob binaire que celui-ci, et pourtant ce n’est que semi-ironiquement, ce n’est pas si loin de là où il pourrait techniquement obtenir la certification RYF. C’est juste que les blobs binaires répréhensibles sont maintenant des « micrologiciels » au lieu de « logiciels ».

Photo d'un Thinkpad X200 sur un bureau, écran affichant un menu GRUB avec une jolie image de la mascotte GNU en arrière-plan
Quelque chose ne va pas si cela est considéré comme plus ouvert que neuvaine

La certification RYF (Respects Your Freedom) de la Free Software Foundation, bien que bien intentionnée, a récemment attiré l’attention pour être contre-productive à ses objectifs et fabriquer du matériel plus complexe sans besoin, et même le chef du projet Libreboot dit que ses principes laissent à désirer. Nous avons implicitement pris la certification RYF comme directive d’ouverture à atteindre, mais l’ordinateur portable Novena a choisi de ne pas y adhérer et est certainement mieux vaut. Nous avons beaucoup à apprendre de RYF, et il est clair que nous avons besoin de plus d’aide.

À partir de là – que prenons-nous comme « ouvert » ? Et qui peut nous aider à garder une trace de ce qu’est « ouvert » – en particulier, le type d’ouverture qui nous fait avancer vers un monde plus utopique, mais réaliste, où notre relation avec la technologie est saine et aimante ? Certaines directives et principes nous aident à vérifier si nous restons sur la bonne voie – et le monde a suffisamment changé pour que les vieilles idées ne s’appliquent pas toujours, tout comme avec la faille logicielle hébergée dans le cloud qui s’avère être délicat à résoudre.

Mais encore, beaucoup plus de code vient d’être ouvert, et c’est une victoire sur certains fronts. En même temps, nous n’irons pas là où nous voulons être si d’autres entreprises décident de s’en tenir à cet exemple, et en tant que hackers, nous ne réaliserons pas beaucoup des choses révolutionnaires que vous nous verrez atteindre avec des outils open source entre nos mains. Et, si nous ne faisons pas preuve de prudence, nous pourrions confondre cela avec le genre d’ouverture dont nous venons tous ici pour apprendre. C’est donc un sac mélangé.

Comme mentionné, ce pilote est destiné à la série 2000 RTX et au-delà. Les anciennes cartes sont toujours limitées au pilote propriétaire ou à Nouveau – qui a l’habitude d’être paralysé par NVIDIA. Exemple : ces dernières années, NVIDIA a réimplémenté des fonctionnalités vitales telles que le contrôle de l’horloge d’une manière accessible uniquement via un shim de micrologiciel signé avec une API fermée, difficile à désosser, et qui n’a pas coopéré depuis – ce qui a nui au projet Nouveau sans remède en vue. Contrairement à AMD aidant le code de révision pour les cartes publiées avant la chute de leur pilote ouvert, ce problème est de rester.

À partir de là, Nouveau vivra cependant. En partie, il sera toujours utilisable pour les cartes plus anciennes qui ne vont nulle part, et en partie, il semble que cela pourrait aider à remplacer les bibliothèques d’espace utilisateur susmentionnées qui restent à source fermée. La page de sortie officielle de NVIDIA indique qu’il n’est pas impossible que les efforts de Nouveau et les efforts du pilote ouvert NVIDIA puissent être fusionnés en un seul, une victoire pour tous, même si un peu aigre-douce.

En raison de pénuries, vous ne pourrez peut-être pas obtenir de GPU pour exécuter ce pilote de toute façon. Cela dit, nous nous remettrons des pénuries et de l’engouement induit par l’exploitation minière, et les prix chuteront au point où nos systèmes fonctionneront mieux – peut-être pas votre ordinateur portable équipé de MX150, mais certainement beaucoup de systèmes puissants que nous n’avons pas encore construire. NVIDIA n’est pas encore à la hauteur d’AMD et d’Intel, mais ils y arrivent.

[Tux penguin image © Larry Ewing, coincidentally remixed using GIMP.]