NVIDIA hace la transición al controlador kernel de GPU Linux oficial de código abierto

Phoronix

Escrito por Michael Larabel en Display Drivers el 11 de mayo de 2022. Página 1 de 1 . 48 Comentarios

Por fin ha llegado el día: ¡NVIDIA PUBLICA SUS MÓDULOS DEL KERNEL DE LA GPU DE LINUX COMO CÓDIGO ABIERTO! Para mucha emoción y una señal de los tiempos, el embargo acaba de expirar en este hito súper emocionante que muchos de nosotros hemos estado esperando ver durante muchos años. En las últimas dos décadas, NVIDIA ha ofrecido un excelente soporte para controladores de Linux con su pila de controladores patentada, pero con el éxito del esfuerzo de controladores de código abierto de AMD durante más de una década, muchos han pedido a NVIDIA que abra sus controladores. Su software de espacio de usuario sigue siendo de código cerrado, pero a partir de hoy han abierto formalmente sus módulos del kernel de GPU de Linux y lo mantendrán en el futuro. Esta es la primicia de esta histórica decisión de código abierto en NVIDIA.

Muchos se han estado preguntando en los últimos años en qué tipo de juego de código abierto de NVIDIA ha estado trabajando la compañía... Desde finales de 2019 ha habido señales de algún tipo de esfuerzo de controlador de código abierto y varios rumores han continuado desde entonces . punto. El mes pasado también señalé un nuevo controlador de kernel de código abierto que aparece como parte de las fuentes de NVIDIA Tegra. Bueno, ahora el embargo acaba de expirar y se puede levantar la tapa: NVIDIA está proporcionando una solución de controlador de kernel de código abierto para sus ofertas de gráficos. Esto no se limita solo a Tegra, sino que abarca no solo sus gráficos de escritorio, sino que ya está listo para la producción para el uso de la GPU del centro de datos.

He estado muy emocionado desde que me informaron de los planes de controlador de núcleo de código abierto de NVIDIA. Para cubrir todos los aspectos importantes, a continuación he presentado todos los puntos clave para llegar fácilmente a los detalles más emocionantes de este esfuerzo de controlador de kernel de código abierto de NVIDIA.

Lo que cubre esta iniciativa de código abierto de NVIDIA: los módulos de núcleo abierto de NVIDIA ya se consideran "listos para producción, opt-in" para las GPU del centro de datos. Para las GPU GeForce y estaciones de trabajo, el código del módulo de núcleo abierto se considera de "calidad alfa", pero se incrementará en futuras versiones. NVIDIA ya ha desaprobado el enfoque de módulo de kernel monolítico para la compatibilidad con GPU de su centro de datos para centrarse en esta solución de controlador de kernel abierto (y su módulo de kernel patentado existente que usa el GSP). Solo Turing y las GPU más nuevas serán compatibles con este controlador de kernel de código abierto. Las GPU anteriores a Turing se dejan usar los controladores de kernel patentados existentes o el controlador DRM de Nouveau para el caso. Turing y más reciente es un requisito difícil debido a que depende del procesador del sistema GPU (GSP).

El procesador del sistema de la GPU y esta arquitectura de controlador que ha surgido en los últimos tiempos es para descargar algunas tareas de administración/inicialización de la GPU a la GPU en lugar de ejecutarlas en la CPU. El GSP es un firmware de solo binario cargado en tiempo de ejecución. El controlador de kernel de código abierto depende explícitamente de los procesadores de gráficos compatibles con GSP. El GSP es un bloque basado en RISC-V que sucedió a su microcontrolador Falcon anterior en las GPU NVIDIA anteriores.

Los componentes del módulo del kernel consisten en el controlador del kernel de NVIDIA, la integración de NVIDIA-DRM, el controlador NVIDIA-Modeset para visualización/configuración de modo, NVIDIA-UVM para memoria de video unificada.

Es un código kernel de código abierto genuino : ¡licencia dual MIT/GPL! NVIDIA ha indicado que Canonical/Ubuntu, Red Hat y SUSE se están preparando para empaquetar y usar los módulos abiertos del kernel. A partir de la nueva rama R515 del controlador NVIDIA Linux, el instalador del controlador tendrá la opción para los usuarios, ya sea que deseen utilizar los módulos de kernel patentados existentes o cambiar al código de controlador abierto. El código del controlador del kernel abierto también estará disponible en GitHub . NVIDIA también aceptará contribuciones de la comunidad al código donde haya mérito o errores que se solucionen, pero requiere un CLA para firmar el código con NVIDIA.Las bibliotecas de espacio de usuario de NVIDIA y los controladores OpenGL / Vulkan / OpenCL / CUDA siguen siendo de código cerrado; el anuncio de hoy es casi toda la emoción en el espacio del kernel.

Ambiciones de la línea principal para el controlador del kernel de Linux de NVIDIA : no irá upstream aunque a corto plazo / en su forma actual. En este punto, la API/ABI no está estabilizada y el código del controlador de kernel abierto estará vinculado a versiones de controladores particulares. En última instancia, NVIDIA está trabajando para estabilizar su API/ABI, así como la interfaz de firmware GSP. Una vez que resuelvan todos estos tecnicismos, el controlador (o cualquier forma que tenga en el futuro) puede considerar la posibilidad de incorporarlo al kernel. De acuerdo con las prácticas de upstreaming del kernel de Linux, también sería necesario que haya soporte de espacio de usuario de código abierto que haga uso de este controlador del kernel.

Este código de kernel de fuente abierta se divide actualmente en componentes de capa de interfaz de kernel e independientes del sistema operativo. Esto se debe a que el controlador patentado de NVIDIA en Linux es en gran medida un código compartido entre Windows/Linux/FreeBSD/Solaris. Para que se actualice en el kernel de Linux, es probable que deba refactorizarse más para adaptarse a Linux, al igual que DAL/DC de AMD originalmente tuvo dificultades para actualizarse debido a sus numerosas abstracciones.

Prospectos de Nouveau (comunidad de código abierto) en torno a este nuevo controlador de kernel - Eventualmente, sí, Nouveau puede hacer uso de este código que se abre hoy. Al preguntarle a NVIDIA, dicen que, con suerte, Nouveau podrá utilizar el firmware GSP/módulos de núcleo abierto, pero primero probablemente llevará tiempo estabilizar la interfaz del firmware GSP y otros factores. Por lo tanto, en el futuro, cuando este controlador de kernel esté en mejor forma, el código Mesa de Nouveau puede terminar interactuando con este controlador de kernel como una alternativa al controlador de kernel DRM de Nouveau que está en una forma bastante tosca para hardware más nuevo que la serie GTX 600/700 Kepler. . Además, para que este código del núcleo se transmita, se necesitaría un espacio de usuario abierto, es decir, el código de Nouveau Mesa antes de que NVIDIA decida más tarde abrir sus bibliotecas de espacio de usuario.

La motivación de NVIDIA para finalmente ser más de código abierto : esto parece ser un esfuerzo por mejorar su integración y soporte de Linux. El anuncio de NVIDIA que se publica hoy dice: "Este lanzamiento es un gran paso para mejorar la experiencia de usar las GPU de NVIDIA en Linux, lo que permite una integración más estrecha con el sistema operativo y permite a los desarrolladores depurar, integrar y contribuir". También parece que el uso de la empresa/centro de datos jugó un papel en esta estrategia al hablar también de computación confidencial y cómo el soporte de GPU del centro de datos ya se considera calidad de "producción" por delante del soporte de GPU GeForce para estaciones de trabajo y consumidores. NVIDIA'

Diferencias de características con este nuevo controlador de kernel : ser un controlador de kernel de código abierto eventualmente generará algunos beneficios: en este momento, este controlador abierto ya tiene soporte DMA-BUF a diferencia de su controlador propietario. Pero hasta que este código esté maduro, puede haber diferencias de rendimiento y otras áreas de mejora con el hardware de consumidor/estación de trabajo de soporte de calidad "alfa". Pero, en última instancia, NVIDIA dice que van a tener características y rendimiento parejos con el código del kernel propietario.

En este momento, este es un cambio solo para Linux- Al menos a partir de la rama R515, NVIDIA solo proporciona compatibilidad con el controlador de kernel de código abierto para sistemas Linux. Pregunté sobre la compatibilidad con FreeBSD dada la compatibilidad con BSD de NVIDIA desde hace mucho tiempo con su controlador patentado y si este código de fuente abierta era lo suficientemente portátil para funcionar en cualquiera de los BSD. Simplemente me dijeron que para R515, es solo para Linux. Veremos si NVIDIA luego decide abrir su controlador de GPU de núcleo FreeBSD, lo que también podría ayudar a que la pila de NVIDIA se ejecute en algunos de los otros BSD. Aún así, el controlador FreeBSD propietario de NVIDIA ofrece la mejor opción de gráficos hoy en día para los usuarios de FreeBSD.

Esa es la sinopsis de lo que está pasando con los esfuerzos del controlador kernel de fuente abierta de NVIDIA. Manténgase atento a las pruebas del controlador NVIDIA R515 Linux y observe la experiencia y el rendimiento actuales del uso de este controlador de kernel abierto con sus controladores de espacio de usuario OpenGL/Vulkan de código cerrado, etc. Sin embargo, NVIDIA me comentó que "Estos Los módulos de kernel abiertos de árbol son solo un paso hacia un mejor soporte en Linux".


NVIDIA, desde hace muchos años, ha brindado un buen soporte para controladores de GPU de Linux, aunque de código cerrado (a menos que cuente el anterior, mínimamente útil xf86-video-nv DDX)... Ahora finalmente se están aventurando en un controlador de kernel de código abierto.

Felicitaciones a NVIDIA por finalmente avanzar con una solución de controlador de kernel de código abierto para su gama de productos gráficos.Podría decirse que es desafortunado y retrasado desde hace mucho tiempo que no están abriendo sus componentes de controlador de espacio de usuario, pero este es un movimiento excelente y mejor que el status quo. Este controlador de kernel abierto aún es un trabajo en progreso, especialmente para los jugadores de GeForce Linux, pero es un gran comienzo y debería ayudar a permitir una mejor integración del kernel/una mejor experiencia de configuración y una mejor gestión de las instalaciones de controladores patentados de NVIDIA en todas las distribuciones, una vez que tenga un API/ABI estable para el controlador y especialmente si/cuando se cruza el umbral de poder subir el controlador del kernel. También será excelente una vez que el proyecto Nouveau de código abierto pueda aprovechar GSP o este controlador directamente para que puedan concentrarse en su compatibilidad con el controlador Mesa de código abierto.

Al menos a corto plazo, el controlador de gráficos Radeon Linux de AMD lidera con su pila de código abierto para gráficos discretos: tanto el usuario como los componentes del controlador del espacio del kernel son de código abierto y solo se limitan al microcódigo/firmware de código cerrado. Los próximos gráficos Intel Arc toman una ruta similar a la de AMD con kernel completamente abierto y componentes de espacio de usuario y el microcódigo/firmware GuC/HuC patentado. Veremos cómo cambia la recepción entre los jugadores de Linux con solo tener un controlador de kernel abierto, pero al menos a largo plazo debería proporcionar una integración/facilidad de uso más adecuada si todo va de acuerdo con sus planes de desarrollo de controladores abiertos. Los puristas del software libre aún considerarán que NVIDIA está fuera de los límites por falta de soporte de espacio de usuario de código abierto, al menos hasta que Nouveau se adapte para usar este controlador y tenga un controlador Vulkan abierto, etc.

Sí, la participación en el mercado de juegos de Linux es pequeña y es probable que NVIDIA no persiguiera este esfuerzo solo para entusiasmar a los entusiastas del código abierto. El juego real aquí es probablemente garantizar el atractivo continuo de NVIDIA en Linux en el centro de datos.Un controlador de kernel abierto abordará algunas preocupaciones de las organizaciones sobre cuestiones de seguridad con un controlador binario que contamina el kernel y el módulo NVIDIA suele ser el único controlador de kernel de código cerrado en muchos sistemas Linux. Un controlador de kernel NVIDIA abierto también permitirá una mejor integración con las nuevas funciones de Linux en torno a la informática confidencial/segura y otras áreas. Los grandes clientes de HPC y los usuarios de centros de datos a menudo están mucho menos preocupados por el software de espacio de usuario de código cerrado (y, a menudo, ejecutan aplicaciones de usuario de código cerrado de todos modos) y más preocupados por la calidad y la funcionalidad, por lo que NVIDIA tiene una reputación estelar para CUDA. y todo su software de espacio de usuario maduro pero de vanguardia para computación GPU.


He estado siguiendo de cerca el soporte del controlador Linux de NVIDIA durante casi dos décadas y este es el mejor esfuerzo de código abierto que han hecho en este tiempo.

Como controlador de kernel abierto, ahora podrá utilizar la funcionalidad/símbolos del kernel solo GPL. Este controlador ya tiene soporte DMA-BUF que será de interés para el uso de algunas empresas/centros de datos. Otras áreas en las que esto podría ayudar es una mejor integración también con el subsistema HWMON, por ejemplo, para proporcionar una mejor integración allí y usar las mismas interfaces que usan los otros controladores de visualización/gráficos del núcleo DRM/KMS de código abierto en lugar de confiar ahora en varias herramientas e interfaces específicas de NVIDIA para el monitoreo.

También será interesante ver si este NVIDIA Open GPU Kernel Modules desaprueba el controlador de kernel Nouveau DRM... Bueno, no lo haría del todo, ya que no olvidemos que este nuevo controlador de kernel solo funciona con GPU Turing y posteriores. Mientras tanto, el punto óptimo más antiguo actualmente para el controlador de kernel Nouveau es la serie GTX 600/700 Kepler (y GTX 750 Maxwell1), pero las GPU más nuevas es donde carecen de firmware de administración de energía/re-reloj adecuado y, por lo tanto, el rendimiento es deficiente. Nouveau en las últimas generaciones de GPU NVIDIA es básicamente lo suficientemente bueno para controlar una pantalla, ya que debido a la capacidad de volver a sincronizar al estado de rendimiento máximo, su rendimiento de gráficos 3D es francamente basura.

Veremos con el tiempo cómo la comunidad contribuye o no a este código de controlador de kernel NVIDIA de código abierto, ya que también existe el CLA que puede desactivar a algunos contribuyentes. Pero es de esperar que Nouveu adopte el uso de este controlador de kernel para que puedan centrar sus esfuerzos en el soporte de NVIDIA de código abierto dentro de Mesa para mejorar su controlador Gallium3D para OpenCL y OpenGL y, con suerte, pasar a crear un controlador Vulkan capaz.

Continúe y clone desde GitHub para disfrutar de las fuentes de controlador de kernel NVIDIA de código abierto. El controlador beta de R515 Linux se puede descargar en NVIDIA.com .


Hora de Libertad

Post a Comment

Previous Post Next Post