Компанія NVIDIA відкрила код відеодрайверів для ядра Linux

Компанія NVIDIA оголосила про відкриття вихідних текстів усіх модулів ядра, що постачаються у своєму наборі пропрієтарних відеодрайверів. Код відкритий під ліцензіями MIT та GPLv2. Можливість складання модулів забезпечена для архітектур x86_64 та aarch64 на системах з ядром Linux 3.10 та новими випусками. Прошивки та бібліотеки, що використовуються у просторі користувача, такі як стеки CUDA, OpenGL та Vulkan, залишаються пропрієтарними.

Очікується, що публікація коду призведе до суттєвого підвищення зручності роботи з GPU NVIDIA в Linux-системах, посилить інтеграцію з операційною системою, спростить постачання драйверів та налагодження проблем. Про формування пакетів на основі відкритих модулів вже заявили розробники Ubuntu та SUSE. Наявність відкритих модулів спростить інтеграцію драйверів NVIDIA з системами на базі нестандартних кастомізованих збірок ядра Linux. Для NVIDIA відкриття коду допоможе підвищити якість та безпеку Linux-драйверів за рахунок більш тісної взаємодії з спільнотою та можливості стороннього рецензування змін та проведення незалежного аудиту.

Зазначається, що представлена ​​відкрита кодова база одночасно застосовується для формування пропрієтарних драйверів, зокрема використовується в опублікованій сьогодні бета-гілці 515.43.04. При цьому первинним є закритий репозиторій, а запропонована відкрита кодова база оновлюватиметься для кожного випуску пропрієтарних драйверів у формі зліпка після певної обробки та чищення. Історія окремих змін не надається, лише загальний коміт для кожної версії драйвера (зараз опубліковано код модулів для драйвера 515.43.04).

Тим не менш, представникам спільноти надано можливість відправлення pull-запитів для просування своїх виправлень та змін до коду модулів, але ці зміни не відображатимуться у вигляді окремих змін у відкритому репозиторії, а спочатку інтегруватимуться в основний закритий репозиторій і тільки потім переноситимуться з іншими змінами у відкритий. Для участі в розробці потрібно підписання угоди про передачу компанії NVIDIA майнових прав на код, що передається (Contributor License Agreement).

Код модулів ядра поділено на дві частини: загальні компоненти не прив'язані до операційної системи та прошарок для взаємодії з ядром Linux. Для скорочення часу встановлення загальні компоненти як і раніше поставляються у пропрієтарних драйверах NVIDIA у формі вже зібраного бінарного файлу, а прошарок збирається на кожній системі з урахуванням поточної версії ядра та наявних налаштувань. Пропонуються такі модулі ядра: nvidia.ko, nvidia-drm.ko (Direct Rendering Manager), nvidia-modeset.ko та nvidia-uvm.ko (Unified Video Memory).

Підтримка серії GeForce і GPU для робочих станцій відзначена як рівень якості альфа-версії, але для спеціалізованих GPU на базі архітектур NVIDIA Turing і NVIDIA Ampere, що застосовуються в датацентрах для прискорення обробки інформації та паралельних обчислень (CUDA), забезпечена повна підтримка, повністю протестована та придатна для застосування у робочих проектах (відкритий код вже готовий замінити пропрієтарні драйвери). Стабілізацію підтримки GeForce та GPU для робочих станцій планують здійснити у наступних випусках. Зрештою, рівень стабільності відкритої кодової бази буде доведений до стану пропрієтарних драйверів.

У поточному вигляді включення опублікованих модулів до основного складу ядра неможливе, оскільки вони не відповідають вимогам ядра до стилю кодування та угод з архітектури, але компанія NVIDIA має намір спільно Canonical, Red Hat та SUSE зайнятися вирішенням цього питання та стабілізацією програмних інтерфейсів драйверів. Крім того, опублікований код може використовуватися для поліпшення відкритого драйвера Nouveau, що входить в ядро, в якому використовуються ті ж прошивки до GPU, що і в пропрієтарному драйвері.

Джерело: opennet.ru

Додати коментар або відгук