Nvidia interdit l’utilisation de couches de traduction pour le logiciel CUDA – auparavant, l’interdiction n’était répertoriée que dans le CLUF en ligne, désormais incluse dans les fichiers installés [Updated]
[Edit 3/4/24 11:30am PT: Clarified article to reflect that this clause is available on the online listing of Nvidia’s EULA, but has not been in the EULA text file included in the downloaded software. The warning text was added to 11.6 and newer versions of the installed CUDA documentation.]
Nvidia a interdit l’exécution de logiciels basés sur CUDA sur d’autres plates-formes matérielles utilisant des couches de traduction dans ses conditions de licence répertoriées en ligne depuis 2021, mais l’avertissement n’était auparavant pas inclus dans la documentation placée sur un système hôte pendant le processus d’installation. Cette langue a été ajoutée au CLUF inclus lors de l’installation de CUDA 11.6 et des versions plus récentes.
La restriction semble être conçue pour empêcher des initiatives telles que ZLUDA, auxquelles Intel et AMD ont récemment participé, et, peut-être plus important encore, certains fabricants de GPU chinois d’utiliser le code CUDA avec des couches de traduction. Nous avons demandé à Nvidia de commenter et vous tiendrons au courant des détails ou des clarifications supplémentaires lorsque nous aurons une réponse.
Longue corne, un ingénieur logiciel, a remarqué les termes. « Vous ne pouvez pas effectuer d’ingénierie inverse, décompiler ou désassembler une partie de la sortie générée à l’aide d’éléments du SDK dans le but de traduire ces artefacts de sortie pour cibler une plate-forme non NVIDIA. », lit-on dans une clause du fichier texte du CLUF installé.
La clause était absente de la documentation CLUF installée avec les versions CUDA 11.4 et 11.5, et probablement avec toutes les versions antérieures. Il est cependant présent dans la documentation installée avec la version 11.6 et plus récente.
Être un leader a des bons et des mauvais côtés. D’un côté, tout le monde dépend de vous ; d’un autre côté, tout le monde veut se tenir sur vos épaules. C’est apparemment ce qui s’est passé avec CUDA. Parce que la combinaison du matériel CUDA et Nvidia s’est avérée incroyablement efficace, de nombreux programmes en dépendent. Cependant, à mesure que du matériel plus compétitif arrive sur le marché, de plus en plus d’utilisateurs sont enclins à exécuter leurs programmes CUDA sur des plates-formes concurrentes. Il existe deux manières de procéder : recompiler le code (disponible pour les développeurs des programmes respectifs) ou utiliser une couche de traduction.
Pour des raisons évidentes, l’utilisation d’une couche de traduction telle que ZLUDA est le moyen le plus simple d’exécuter un programme CUDA sur du matériel non Nvidia. Tout ce qu’il faut faire est de prendre des binaires déjà compilés et de les exécuter en utilisant ZLUDA ou d’autres couches de traduction. ZLUDA semble désormais en difficulté, AMD et Intel ayant laissé passer l’opportunité de le développer davantage, mais cela ne signifie pas que la traduction n’est pas viable.
Plusieurs fabricants chinois de GPU, dont un financé par le gouvernement chinois, prétendent exécuter du code CUDA. Denglin Technology conçoit des processeurs dotés d’une « architecture informatique compatible avec des modèles de programmation comme CUDA/OpenCL ». Étant donné que l’ingénierie inverse d’un GPU Nvidia est difficile (à moins que l’on ait déjà tous les détails de bas niveau sur les architectures GPU Nvidia), nous avons probablement affaire ici également à une sorte de couche de traduction.
L’un des plus grands fabricants chinois de GPU, Moore Threads, dispose également d’un outil de traduction MUSIFY conçu pour permettre au code CUDA de fonctionner avec ses GPU. Cependant, il reste à voir si MUSIFY relève ou non de la classification d’une couche de traduction complète (certains aspects de MUSIFY pourraient impliquer le portage de code). En tant que tel, il n’est pas tout à fait clair si l’interdiction par Nvidia des couches de traduction est une réponse directe à ces initiatives ou une attaque préventive contre les développements futurs.
Pour des raisons évidentes, l’utilisation de couches de traduction menace l’hégémonie de Nvidia dans l’espace informatique accéléré, en particulier avec les applications d’IA. C’est probablement la raison qui a motivé la décision de Nvidia d’interdire l’exécution de ses applications CUDA sur d’autres plates-formes matérielles utilisant des couches de traduction.
Recompiler des programmes CUDA existants reste parfaitement légal. Pour simplifier cela, AMD et Intel disposent d’outils pour porter les programmes CUDA sur leurs plates-formes ROCm (1) et OpenAPI, respectivement.
À mesure qu’AMD, Intel, Tenstorrent et d’autres sociétés développent un meilleur matériel, de plus en plus de développeurs de logiciels seront enclins à concevoir pour ces plates-formes, et la domination de Nvidia sur CUDA pourrait s’atténuer avec le temps. De plus, les programmes spécifiquement développés et compilés pour des processeurs particuliers fonctionneront inévitablement mieux que les logiciels exécutés via des couches de traduction, ce qui signifie un meilleur positionnement concurrentiel pour AMD, Intel, Tenstorrent et autres par rapport à Nvidia – s’ils parviennent à rallier les développeurs de logiciels. Le GPGPU reste un domaine important et hautement compétitif, et nous garderons un œil sur l’évolution de la situation à l’avenir.