Journal Linux & Nvidia

Posté par  . Licence CC By‑SA.
Étiquettes :
17
22
nov.
2020

Bonjour Nal< ?

Que se passe-t-il entre notre cher noyau Linux et Nvidia ? Nvidia, habituellement si prompt à supporter les derniÚres versions du noyau, a posté le 16 octobre :

«Due to an incompatibility issue, we advise customers to defer updating to Linux Kernel 5.9+ until mid-November when an NVIDIA Linux GPU driver update with Kernel 5.9+ support is expected to be available.»
_Ă  cause d'une incompatibilitĂ© nous avertissons nos clients qu'il faut diffĂ©rer leur mise Ă  jour vers le noyau 5.9 jusqu'Ă  mi-novembre lorsqu'une mise Ă  jour de notre driver devrait ĂȘtre disponible

L'annonce complĂšte

"Habituellement si prompt à supporter Linux" ? Oui, sans conteste. Il y a également le fait que lorsqu'une nouvelle version du driver sort, elle fait tout fonctionner de suite. Alors que parfois, chez AMD comme chez Intel il fallait (au passé ?) attendre plusieurs versions pour avoir tantÎt une sortie hdmi ok, tantÎt un support pour telle ou telle extension d'opengl.
Deux avantages pour Nvidia.

Mais dans l'autre main il y a la problématique de leur blob, privateur, fermé, ayant une accÚs particuliÚrement privilégié au systÚme s'il en a envie, ce n'est pas un simple logiciel. Et ce ne sont pas les timides avancées de Nvidia vers l'OpenSource (je n'ose dire Libre) qui changent ce fait.
Le support par Nouveau est de trĂšs bonne facture et permet d'utiliser des cartes Nvidia, discrĂštes ou pas, dans de confortables conditions de travail.
AMD fait un incroyable travail avec ses supports OpenSource et intĂ©grĂ©s dans le noyau, leurs cartes rĂ©centes sont tout simplement fantastiques, et cela va au-delĂ  de l'usage 'confortable' de bureau puisqu'il est possible d'avoir la pleine puissance pour ses usages. Parfait. AMD est le meilleur choix, et en rachetant Xillinx ils viennent de poser leur premiĂšre pierre pour une dĂ©veloppement probable autour de la stupiditĂ© l'intelligence artificielle, rattrapant bientĂŽt son concurrent sur de probables cƓurs Tensor.
Intel n'est pas en reste, avec une participation historiquement remarquable au noyau mais aussi Ă  de nombreux niveaux du systĂšme gnu/linux, fait maintenant dĂ©barquer ses Xe, espĂ©rons seulement que le support de ses nouveaux gpu sera moins erratique que sur l’i915, oĂč certains se voient notabugafeature boguer aprĂšs quelques annĂ©es.

Le kernel Ă©volue, et si Linux met au coeur de son dĂ©veloppement le fait «de ne pas casser l’userland» il n'hĂ©site pas Ă  faire Ă©voluer ses arcanes internes. Si tu veux jouer dans le noyau, alors tu dois suivre le rythme.
Bien sûr certains arguent en faveur d'une interface stable pour les drivers. Permettant ainsi de plus facilement maintenir les-dits drivers. Maintenir ? Hum, .. maintenir à l'extérieur du noyau, donc user et abuser de la tolérance sur l'interprétation de la gplv2. Tolérance oui, n'importe quoi non (n'en déplaisent aux constructeurs de smartphones Android, autre exemple.)

Nvidia suit, lui, ok. Sauf de temps en temps. Et ça fait du bien (mĂȘme si, possĂ©dant un 'vieux pc d'avant les supers gpu amd", ça m'a ennuyĂ© un peu : peu importe) : ça fait du bien car cela nous rappelle, Ă  nous utilisateurs (personnels ou professionnels) que la situation est anormale. Qu'AMD est un excellent compĂ©titeur aujourd’hui, de plus intĂšgre et intĂ©grĂ©.

Ok, alors que s'est-il passé entre Nvidia et Linux, cette fois ?
Sur Nvidia et le 5.9, cela commence peut ĂȘtre bien par ici :
https://lore.kernel.org/netdev/20200728172703.GA5667@infradead.org/ (puis un patch en aout dernier) Trad incomplĂšte, juste la fin et avec l'esprit :

une grande partie de sa daube semble juste ĂȘtre lĂ  pour contourner le GPL_EXPORT_SYMBOL, je suis vraiment d'accord avec Gred, cela ressemble beaucoup Ă  une infĂąme tentative de troll

CÎté AMD tout va bien :-) : allons relire un bel historique !
https://linuxfr.org/users/mathrack/liens/fusion-amd-xilinx
https://linuxfr.org/news/amd-continue-louverture-des-specifications-de-gpu
https://linuxfr.org/users/claudex/journaux/amd-et-plus-d-open-source
https://linuxfr.org/news/amd-s-investit-dans-ses-pilotes-libres

  • # CotĂ© AMD tout n'est pas parfais non plus

    Posté par  . Évalué à 10.

    Je suis plutÎt un fervent défenseur des GPU AMD, mais tout n'est pas parfait non plus.

    Exemple 1 : le support d'OpenCL avec le dĂ©veloppement de Clover a Ă©tĂ© arrĂȘtĂ© en faveur de ROCm. Si ROCm a des avantages, ce n'est pas disponible out-of-the-box, ça ne s'intĂšgre pas forcĂ©ment bien dans les distributions linux, et ça ne supporte que les GPU et carte mĂšre avec des features rĂ©cente mais pas forcĂ©ment les dernier GPU.
    Exemple 2 : les développements de code open source ne sont pas toujours fait en concertation avec la communauté (de développeur graphique linux) Cf: le post de blog de David Airlie : Linux graphics, why sharing code with Windows isn't always a win.

    Par contre il quand mĂȘme plein de bonne raison pour choisir plutĂŽt des GPU AMD que Nvidia pour une utilisation sous linux.
    J'ai suivi la progression des drivers opensource pour carte graphique AMD depuis presque le début, et il y a clairement beaucoup de travail et de progrÚs qui ont été fait.
    Il est clair qu'une des limites pour faire mieux est clairement un manque de moyen.
    Mais grùce à l'ouverture adopté par AMD :
    - Des employĂ© de Google et RedHat on pu dĂ©velopper un driver Vulkan intĂ©grĂ© a Mesa pendant le le driver officiel d'AMD peinait Ă  ĂȘtre disponible, et semble pas trĂšs adaptĂ© pour bien s'intĂ©grer dans les distributions linux.
    - Valve peut financer le dĂ©veloppement d'un nouveau compilateur de Shader plus performant. Il s'appelle ACO, et est utilisĂ© par dĂ©faut dans RADV(Vulkan) dans Mesa 20.2, et pourrait prochainement ĂȘtre utilisĂ© par dĂ©faut Ă©galement pour OpenGL

    Donc merci à AMD, et à ceux qui améliore l'usage des GPU AMD sous linux, continuez comme ça.

    • [^] # Re: CotĂ© AMD tout n'est pas parfais non plus

      Posté par  . Évalué à 2.

      Exemple 1 : le support d'OpenCL avec le dĂ©veloppement de Clover a Ă©tĂ© arrĂȘtĂ© en faveur de ROCm. Si ROCm a des avantages, ce n'est pas disponible out-of-the-box, ça ne s'intĂšgre pas forcĂ©ment bien dans les distributions linux, et ça ne supporte que les GPU et carte mĂšre avec des features rĂ©cente mais pas forcĂ©ment les dernier GPU.

      J'avais postĂ© un journal oĂč j'expliquais les difficultĂ©s d'avoir l'accĂ©lĂ©ration OpenCL sur Fedora, en plus on a Clover et ROCm ne marchait pas ; on dirait que ça a changĂ© depuis que je suis passĂ© Ă  Fedora 33, j'ai rĂ©ussi Ă  installer ROCm et Ă  l'exploiter (testĂ© sous Darktable).

      Pour plus d'info notamment sur l'installation et sur le matériel compatible, suivre ce lien.

  • # et nouveau ?

    Posté par  . Évalué à 1.

    j'ai switché depuis quelques temps sur AMD, mais , je suis surpris que la driver nouveau ne fasse pas l'unanimité, j'avais cru comprendre que nouveau égalait nvidia en accélératon 2D/3D , c'est pas correct ?

    • [^] # Re: et nouveau ?

      Posté par  . Évalué à 5.

      Non, pas du du tout, notamment la partie "Power Management" https://nouveau.freedesktop.org/FeatureMatrix.html qui permet de faire tourner la carte plus vite (par défaut, elle boot avec la fréquence la plus basse). Les derniÚres cartes ne permettent pas facilement à nouveau de les utiliser.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: et nouveau ?

        Posté par  . Évalué à 2.

        En plus, de ce que j'ai suivie (je m'intéresse moins a nouveau/Nvidia), le support des GPU Nvidia avec Nouveau d'il y a 5/6 ans est pas mal, mais pour les CPU récent, c'est beaucoup moins bon.

        Par contre, des dĂ©veloppeurs se sont intĂ©ressĂ© au support de Clover pour Nouveau, et ça pourrais ĂȘtre intĂ©ressant pour amĂ©liorer le support d'OpenCL out-of-the-box sous Linux pour tout le monde 👍.

        Sources d'infos :
        - https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
        - https://www.phoronix.com/scan.php?page=news_item&px=OpenCL-3.0-Prep-In-Clover

        • [^] # Re: et nouveau ?

          Posté par  (site web personnel, Mastodon) . Évalué à 5.

          Je ne comprend pas vraiment pourquoi plus d’effort est investi dans Clover pour Nvidia que dans Clover pour AMD.

          La prise en charge de l’OpenCL pour AMD est dĂ©sastreux car Ă©normĂ©ment fragmentĂ©:
          https://gitlab.com/illwieckz/i-love-compute#frameworks

          Le pilote Clover pour AMD prend en charge toutes les cartes depuis la gĂ©nĂ©ration TeraScale 2 (~2010), il peut mĂȘme se rĂ©vĂ©ler trĂšs performant et battre le pilote propriĂ©taire comme avec le raytracer LuxRender oĂč le pilote Clover fait le double des performances Sauf qu’il est incomplet et en particulier il manque la prise en charge des images, ce qui le rend inutilisable pour des applications comme Darktable (dĂ©veloppement photo). Et pour des raisons Ă©tonnantes, la prise en charge des images est actuellement activement dĂ©veloppĂ©e
 pour les cartes graphiques Nvidia qui sont bridĂ©es en performance quel que soit le niveau de qualitĂ© du pilote libre
 Et au final, en dehors d’Intel les cartes les mieux supportĂ©es en terme de fonctionnalitĂ© (malgrĂ© les mauvaises performances) en libre seront les cartes Nvidia, de ce fabriquant qui ne respectent pas ses utilisateurs.

          ce commentaire est sous licence cc by 4 et précédentes

    • [^] # Re: et nouveau ?

      Posté par  (site web personnel, Mastodon) . Évalué à 4. DerniĂšre modification le 24 novembre 2020 Ă  17:08.

      j'avais cru comprendre que nouveau égalait nvidia en accélératon 2D/3D , c'est pas correct ?

      Non pas du tout. J’ai fait quelques tests:
      https://wiki.unvanquished.net/wiki/GPU_compatibility_matrix

      En gros, avec une carte graphique capable de faire du 4K (3840×2160) avec tous les effets dans Unvanquished Ă  60fps, tu peux pas faire plus que du FullHD (1920×1080) pour conserver tes 60fps, et gĂ©nĂ©ralement to dois en plus dĂ©sactiver des effets gourmands (relief mapping, etc.).

      Par ailleurs, quand les dĂ©veloppeurs du noyau Linux ont dĂ©sactivĂ© l’AGP par dĂ©faut cet Ă©tĂ©, certains ordinateurs ont perdu toute capacitĂ© Ă  piloter un Ă©cran correctement (parce qu’en rĂ©alitĂ©, l’alternative “PCI par AGP” est cassĂ©e depuis de nombreuses annĂ©es), j’ai comparĂ© plus en dĂ©tail pour savoir oĂč se situait le matĂ©riel rendu inutilisable. Et bien si tu souhaites utiliser le pilote nouveau, pour battre ce qui est probablement la meilleure carte AGP de ATI sortie en 2008 (Radeon HD 4670), tu dois prendre une Nvidia GTX 1060 sortie en 2016:
      https://lkml.org/lkml/2020/11/9/363

      Bien sĂ»r cette mĂȘme carte Nvidia sort du 4K Ă  l’aise avec tous les effets activĂ©s et ne se compare plus Ă  des cartes largement obsolĂštes quand utilisĂ© avec le pilote propriĂ©taire.

      LĂ  oĂč le pilote nouveau commence Ă  rivaliser avec Nvidia c’est en terme de fonctionnalitĂ© implĂ©mentĂ©es, les dĂ©veloppeurs de nouveau font un super nouveau et il ne manque que deux extensions pour que la prise en charge d’OpenGL 4.6 soit complĂšte:
      https://mesamatrix.net/

      Mais par contre niveau performance c’est la catastrophe. Par ailleurs Nvidia signe les firmwares de maniĂšre Ă  contraindre leurs clients Ă  utiliser leur pilote propriĂ©taire.

      Je ne comprend pas pourquoi la quasi totalitĂ© des machines vendues par des fabricants de PC prenant en charge Linux officiellement (en ordinateur portable, ça doit friser le 99%) intĂšgrent du Nvidia


      ce commentaire est sous licence cc by 4 et précédentes

  • # dĂ©tails de l'histoire ?

    Posté par  . Évalué à 4.

    Ça a l'air d'ĂȘtre un Ă©chec intĂ©ressant.
    Si je comprends bien, un développeur de Facebook propose un truc tarabiscoté (netgpu) dans le kernel pour faire du traitement de paquets dans le GPU. Son expérimentation ne fonctionne pour l'instant qu'avec Mellanox/Nvidia. Plusieurs mainteneurs dont celui de Mellanox/Nvidia lui répondent que c'est pourri :
    https://lore.kernel.org/netdev/20200728233806.GC16789@nvidia.com/

    Ensuite, ça déclenche un désir de bloquer ce genre de module :
    http://lkml.iu.edu/hypermail/linux/kernel/2008.1/05371.html
    "inherit TAINT_PROPRIETARY_MODULE"

    Mais est-ce vraiment le problÚme actuellement rencontré pour le driver Nvidia en 5.9 ?

    • [^] # Re: dĂ©tails de l'histoire ?

      Posté par  . Évalué à 4.

      De ce que je comprends de l'histoire, on a Jonathan Lemon, un BSDiste ancien pas inconnu (auteur de kqueue), qui bosse aujourd'hui pour Facebook et qui envoie un patch de son adresse perso pour lier spĂ©cifiquement des GPU Nvidia Ă  des cartes Ethernet Mellanox en utilisant l'infra du kernel. L'exemple d'utilisation est du Machine Learning sur GPU oĂč les donnĂ©es transitent directement par la carte rĂ©seau Ă  200 Gbps (!) car sinon le bridge PCI-Express qui Ă©changerait avec le CPU sature dans ce cas-là
 Son truc est spĂ©cifique Ă  son montage, et n'utilise pas l'infra de DMA inter-pĂ©riphĂ©rique (p2p_dma) qui se trouve ĂȘtre une interface indiquĂ©e comme propageant lĂ  GPL pour tout code qui s'y lie ; coĂŻncidence ou hasard
 Il se trouve qu'en plus il dit ne pas avoir exportĂ© les symboles de sa nouvelle API en _GPL car « c'Ă©tait trop long Ă  taper », ce qui pour une personne de sa trempe et vu le contexte (dĂ©veloppement spĂ©cifique Ă  Facebook, Nvidia toujours Ă  vouloir niquer la GPL) s'est vu qualifier de trollage par Christoph Hellwig, dĂ©veloppeur vĂ©tĂ©rant du kernel bien connu pour sa dĂ©fense du Libre et de la GPL.

      Le patch proposĂ© par Hellwig que tu montres aprĂšs est trĂšs intĂ©ressant, car effectivement il semble avoir Ă©tĂ© Ă©crit pile pour contrer ce genre de code, et les datent concordent (fin juillet dernier, ce dernier patch arrivant juste aprĂšs l'incident ci-dessus) : les modules type « shim » qui sont lĂ  uniquement pour faire une interface sans valeur dans le but uniquement de lier un module Ă  licence propriĂ©taire — chose normalement proscrite par la GPL, mais que Nvidia utilise depuis plus de 10 ans, malgrĂ© les critiques de Torvalds et d'autres — deviennent rejetĂ©s. La discussion est ici :
      https://lore.kernel.org/lkml/20200730061027.29472-1-hch@lst.de/

      Mais est-ce vraiment le problÚme actuellement rencontré pour le driver Nvidia en 5.9 ?

      Ça semble vraiment ĂȘtre ça selon moi, et pourtant Nvivia a apparemment sorti un nouveau driver « compatible » avec le 5.9 :
      https://forums.developer.nvidia.com/t/download-nvidia-driver-r455-for-linux-kernel-5-9/159776

      En tous cas, remarque sarcastique de Greg KH sur le patch de Hellwig :

      Ah, the proven-to-be-illegal "GPL Condom" defense :)

      • [^] # Re: dĂ©tails de l'histoire ?

        Posté par  . Évalué à 3.

        Nvivia a apparemment sorti un nouveau driver « compatible » avec le 5.9

        Je suis allĂ© creuser : dans le driver qui vient de sortir en novembre on a un nouveau flag créé dans le Kbuild qui s'appelle « NV_BUILD_MAY_USE_GPL_SYMBOLS » (on peut donc forcer Ă  violer la GPL, qu'ils indique comme « permission d'utiliser », mĂȘme si par dĂ©faut il est Ă  0) :

        diff -ru 455-455.32/usr/src/nvidia-455/nvidia-uvm/nvidia-uvm.Kbuild 455-455.45/usr/src/nvidia-455/nvidia-uvm/nvidia-uvm.Kbuild
        --- 455-455.32/usr/src/nvidia-455/nvidia-uvm/nvidia-uvm.Kbuild  2020-10-15 00:58:52.000000000 +0200
        +++ 455-455.45/usr/src/nvidia-455/nvidia-uvm/nvidia-uvm.Kbuild  2020-11-06 00:15:34.000000000 +0100
        @@ -54,6 +54,13 @@
         NVIDIA_UVM_CFLAGS += -D__linux__
         NVIDIA_UVM_CFLAGS += -I$(src)/nvidia-uvm
        
        +# Avoid using GPL symbols unless explicitly permitted to do so.
        +NV_BUILD_MAY_USE_GPL_SYMBOLS ?= 0
        +
        +ifeq ($(NV_BUILD_MAY_USE_GPL_SYMBOLS),1)
        +  NVIDIA_UVM_CFLAGS += -DNV_BUILD_MAY_USE_GPL_SYMBOLS
        +endif
        +
         # Avoid even building HMM until the HMM patch is in the upstream kernel.
         # Bug 1772628 has details.
         NV_BUILD_SUPPORTS_HMM ?= 0
        

        Ce flag est pour l'instant uniquement utilisĂ© lors du test de la prĂ©sence de l'API gĂ©rant l'affinitĂ© des threads par CPU (flag UVM_THREAD_AFFINITY_SUPPORTED) qui est maintenant Ă  zĂ©ro mĂȘme si l'API (en particulier celle indiquĂ©e par le flag NV_KTHREAD_CREATE_ON_NODE_PRESENT) est prĂ©sente quand le driver n'est pas autorisĂ© Ă  violer la GPL : c'est la fonction kthread_create_on_node() ajoutĂ©e en 2011 par Éric Dumazet dans le commit 207205a2ba26 qui est GPL et est utilisĂ©e par le shim « libre » de Nvidia.

        Donc en fait je suppose qu'ainsi, les performances sont un peu dĂ©gradĂ©es car les threads ne sont pas créés sur le CPU le plus appropriĂ© pour la tĂąche, mais ça Ă©vite d'utiliser des symboles GPL dans ce shim, et donc de se faire bloquer comme violant la GPL par la nouvelle protection apportĂ©e par Hellwig. Je pensais que leurs dĂ©pendances Ă©taient plus larges, si c'est le seul bout, on pourrait dire que c'est « bien joué » de la part de Nvidia, mĂȘme si on sent quand mĂȘme qu'ils aiment toujours bien jouer avec le feu.

Suivre le flux des commentaires

Note : les commentaires appartiennent Ă  celles et ceux qui les ont postĂ©s. Nous n’en sommes pas responsables.