Open GPU Kernel Module 是 英伟达 NVIDIA 开源的 Linux GPU 内核模块,以 GPL/MIT 双重许可正式开源。
目前,此 NVIDIA Open GPU 内核模块的第一个版本是 R515.43.04,除了源代码之外,还提供了驱动程序的完全构建和打包版本。
- 对于 NVIDIA Turing 和 NVIDIA Ampere 架构系列中的数据中心 GPU,这些代码可用于生产。
- 对于 GeForce 和工作站 GPU,这些代码被认为是 “alpha 版本的质量”
- 拥有 Turing 和 Ampere GPU 的客户可以选择安装哪些模块。
- Pre-Turing 客户将继续运行闭源模块。
目录结构布局
-
kernel-open/
内核接口层 -
kernel-open/nvidia/
nvidia.ko 的内核接口层 -
kernel-open/nvidia-drm/
nvidia-drm.ko 的内核接口层 -
kernel-open/nvidia-modeset/
nvidia-modeset.ko 的内核接口层 -
kernel-open/nvidia-uvm/
nvidia-uvm.ko 的内核接口层 -
src/
与操作系统无关的代码 -
src/nvidia/
nvidia.ko 与操作系统无关的代码 -
src/nvidia-modeset/
nvidia-modeset.ko 的操作系统无关代码 -
src/common/
nvidia.ko 和 nvidia-modeset.ko 中的一项或多项使用的实用程序代码
如何构建
构建:
make modules -j`nproc`
要安装,首先要卸载任何现有的 NVIDIA 内核模块。然后,作为根:
make modules_install -j`nproc`
请注意,此处构建的内核模块必须与来自相应 515.43.04 驱动程序版本的 gsp.bin 固件,和用户空间 NVIDIA GPU 驱动程序组件一起使用。可以通过使用该--no-kernel-modules
选项从 .run 文件安装 NVIDIA GPU 驱动程序来实现。例如
sh ./NVIDIA-Linux-[...].run --no-kernel-modules
支持的 CPU 架构
目前,可以为 x86_64 或 aarch64 构建内核模块。
支持的工具链
任何现代版本的 gcc 或 clang 都可以用来构建内核模块。请注意,内核模块的内核接口层必须使用用于构建内核的工具链来构建。
支持的 Linux 内核版本
NVIDIA 开放内核模块支持与专有 NVIDIA 内核模块支持相同范围的 Linux 内核版本: Linux 内核 3.10 或更高版本。