Driver video open source NVIDIA per il kernel Linux

NVIDIA ha annunciato che tutti i moduli del kernel inclusi nel suo set di driver video proprietari sono open source. Il codice è aperto sotto le licenze MIT e GPLv2. La possibilità di creare moduli è fornita per le architetture x86_64 e aarch64 su sistemi con kernel Linux 3.10 e versioni più recenti. Il firmware e le librerie utilizzate nello spazio utente, come gli stack CUDA, OpenGL e Vulkan, rimangono proprietari.

Si prevede che la pubblicazione del codice porterà a un miglioramento significativo nell'usabilità del lavoro con le GPU NVIDIA su sistemi Linux, rafforzerà l'integrazione con il sistema operativo e semplificherà la consegna dei driver e il debug dei problemi. Gli sviluppatori di Ubuntu e SUSE hanno già annunciato la formazione di pacchetti basati su moduli aperti. La presenza di moduli aperti semplificherà inoltre l'integrazione dei driver NVIDIA con sistemi basati su build personalizzate non standard del kernel Linux. Per NVIDIA, l'open source aiuterà a migliorare la qualità e la sicurezza dei driver Linux attraverso una più stretta interazione con la comunità e la possibilità di revisione delle modifiche da parte di terzi e controllo indipendente.

Si noti che il codice base aperto presentato viene utilizzato contemporaneamente nella formazione di driver proprietari, in particolare viene utilizzato nel ramo beta 515.43.04 pubblicato oggi. In questo caso, quello primario è un repository chiuso e la base di codice aperta proposta verrà aggiornata per ogni rilascio di driver proprietari sotto forma di cast dopo determinate elaborazioni e pulizie. Non viene fornita la cronologia delle singole modifiche, solo un commit generale per ciascuna versione del driver (attualmente è pubblicato il codice dei moduli per il driver 515.43.04).

Tuttavia, ai membri della comunità viene data l'opportunità di inviare richieste pull per inviare correzioni e modifiche al codice del modulo, ma queste modifiche non si rifletteranno come modifiche separate nel repository pubblico, ma saranno prima integrate nel repository privato principale. e solo allora trasferito con il resto cambia per aprirsi. Per partecipare allo sviluppo, è necessario firmare un accordo sul trasferimento dei diritti di proprietà sul codice trasferito a NVIDIA (Contributor License Agreement).

Il codice dei moduli del kernel è diviso in due parti: componenti generali non legati al sistema operativo e un livello per l'interazione con il kernel Linux. Per ridurre i tempi di installazione, i componenti comuni vengono ancora forniti in driver NVIDIA proprietari sotto forma di file binario già assemblato e il livello viene assemblato su ciascun sistema, tenendo conto della versione corrente del kernel e delle impostazioni esistenti. Sono offerti i seguenti moduli del kernel: nvidia.ko, nvidia-drm.ko (Direct Rendering Manager), nvidia-modeset.ko e nvidia-uvm.ko (Unified Video Memory).

Il supporto delle GPU delle serie GeForce e delle workstation è elencato come qualità alpha, ma le GPU dedicate basate sulle architetture NVIDIA Turing e NVIDIA Ampere utilizzate nelle architetture CUDA (accelerazione informatica e calcolo parallelo) dei data center sono completamente supportate e completamente testate e adatte per l'uso in produzione. progetti (l'open source è già pronto per sostituire i driver proprietari). La stabilizzazione del supporto GeForce e GPU per le workstation è prevista per le versioni future. Alla fine, il livello di stabilità della base di codice open source verrà portato al livello dei driver proprietari.

Nella sua forma attuale, l'inclusione dei moduli pubblicati nel kernel principale è impossibile, poiché non sono conformi ai requisiti di stile di codifica del kernel e alle convenzioni architetturali, ma NVIDIA intende collaborare con Canonical, Red Hat e SUSE per risolvere questo problema e stabilizzare le interfacce del software del driver. Inoltre, il codice pubblicato può essere utilizzato per migliorare il driver Nouveau open source incluso nel kernel, che utilizza lo stesso firmware GPU del driver proprietario.

Fonte: opennet.ru

Aggiungi un commento