Ожидается, что публикация кода приведёт к существенному повышению удобства работы с 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, что и в проприетарном драйвере.
Источник: http://www.opennet.ru/opennews/art.shtml?num=57175