… proprietários (desenvolvidos para prover suporte para as suas GPUs), em prol dos módulos livres para o kernel Linux! Como o próprio nome diz, o propósito dos módulos do kernel é prover a flexibilidade (modularidade) para que os recursos possam ser carregados e descarregados em tempo de execução (runtime), estendendo as funcionalidades do kernel sem a necessidade de reinicializar o sistema. Estes módulos podem incluir drivers para dispositivos, implementações de sistemas de arquivos e protocolos de redes, entre outros recursos importantes…
“With the R515 driver, NVIDIA released a set of Linux GPU kernel modules in May 2022 as open source with dual GPL and MIT licensing. The initial release targeted datacenter compute GPUs, with GeForce and Workstation GPUs in an alpha state. At the time, we announced that more robust and fully-featured GeForce and Workstation Linux support would follow in subsequent releases and the NVIDIA Open Kernel Modules would eventually supplant the closed-source driver.”
— by Nvidia Developers.
Embora um conjunto de módulos de código aberto (sob as licenças GPL e MIT) já tenha sido lançados há pouco mais de dois anos, esta implementação inicial tinha como alvo as GPUs de computação de datacenter (com o suporte para as estações de trabalho Linux em estado alfa). Ainda nesta época, a Nvidia já havia deixado claro que teríamos o suporte mais robusto e completo para as versões seguintes dos módulos abertos e eventualmente, eles suplantariam os atuais módulos de código fechado. Pelo visto, este dia chegou: eles alcançaram uma performance tão boa ou melhor que a dos módulos proprietários. além de terem recebido novos recursos substantiais.
E a partir de agora, será feita a transição de forma definitiva (cruzem os dedos)!
Porém, nem todas as GPUs Nvidia serão compatíveis com os módulos do kernel de código aberto. Somente as plataformas de ponta (baseadas nas arquiteturas “Grace Hopper” e “Blackwell”) serão suportadas, assim como as plataformas mais recentes (“Turing”, “Ampere”, “Ada Lovelace” e “Hopper”). Já as plataformas mais antigas (“Maxwell”, “Pascal” e “Volta”), os módulos do kernel da GPU de código aberto não são compatíveis e por isto, a empresa recomenda continuar a usar os módulos proprietários. Por fim, para as implementações mistas (com GPUs mais antigas e mais recentes no mesmo sistema), a recomendação continua sendo a mesma.
Para maiores informações de como proceder para realizar a implantação dos módulos do kernel de código aberto, não deixem de conferir o anúncio oficial. Existem diversas maneiras de realizar esta operação: através da execução de scripts especiais para ajudar na identificação de qual driver utilizar (“nvidia-driver-assistant”), da execução de binários “.run” para a instalação dos drivers CUDA (com base na interface provida pela ferramenta ncurses) e da utilização de sistemas de gestão de pacotes para a instalação dos pacotes relacionados ao CUDA (com suporte para várias distribuições populares). A excessão fica por conta do Subsistema Linux para o Windows (WSL), o qual não precisa de nenhuma intervenção.
Será que em um futuro não muito distante, também veremos a Nvidia promover o desenvolvimento de drivers de código aberto, para as suas soluções gráficas? Por incrível que pareça, acredito que sim! Apesar de ser algo que à primeira vista parece improvável, lembrem-se de que a Microsoft (que um dia já foi a maior opositora do Software Livre) se curvou sob a gestão de Satya Nadella, chegando ao ponto de declarar que “ama o Linux” (acredite, se quiser). Além disso, AMD (a sua principal concorrente) há tempos faz um excelente trabalho em relação aos drivers de código aberto, designados para suportar as suas soluções gráficas.
Já uma mudança de postura do Torvalds em relação a Nvidia, não sei dizer… &;-D