Open GPU Kernel Module

英伟达 Linux GPU 内核模块
授权协议 GPL&MIT
开发语言 C/C++
所属分类 其他开源、 硬件驱动/工具
软件类型 开源软件
地区 不详
投 递 者 长孙朝明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 或更高版本。

  • k8s gpu节点避免内核升级时显卡驱动失效 场景: k8s ubuntu系统的gpu节点,在机器重启后,出现显卡驱动失效,nvidia-smi无法使用 原因: 安装显卡驱动的时候,是按照本机器的内核包来编译的,如果开启了自动更新,那么 当有新内核的时候,机器就会去下载,然后重启的时候就会更新内核版本,这时候 使用旧内核包编译的显卡驱动无法在新的内核上运行,导致显卡无法使用 解决方法: 1、关

  • 0x00 CVE-2020-0110(7.8) 发生位置: psi.c(psi)的psi_write函数 补丁: https://android-review.googlesource.com/c/kernel/common/+/1246698/1/kernel/sched/psi.c#1201 触发方法: 在/ kernel / sched / Makefile文件中增加obj-y +=psi.

  • 继上一篇uboot整理后,继续整理下kernel的框架 一、文件系统 IMX8QXP/vendor/nxp-opensource/kernel_imx$ ls android build.config.arm build.config.gki_kasan.aarch64 build.config.x86_

  • 翻译状态:本文是 AMDGPU 的翻译。上次翻译日期:2019-09-02。如果英文版本有所更改,则您可以帮助同步翻译。 amdgpu 是 AMD Radeon 显卡的开源图形驱动。 选择正确的驱动 请参考Xorg#AMD选择合适的显卡驱动,这个页面包含 AMDGPU 和 AMDGPU PRO的说明。 驱动不支持的显卡用户可以使用开源radeon驱动代替。 安装 安装这个 为支持32位程序,也可以

  • 1 #-*- coding: utf-8 -*- 2 #Implementation of https://arxiv.org/pdf/1512.03385.pdf/ 3 #See section 4.2 for model architecture on CIFAR-10. 4 #Some part of the code was referenced below. 5 #https://git

  • 解析DRM代码,以从底层介绍显卡驱动的初始化过程,显卡类型是AMD的radeon r600以后的系列显卡。基本的过程就是驱动载入,硬件初始化,设置硬件独立的模块(如内存管理器),设置显示(分辨率等)。 代码如下: drivers/gpu/drm/radeon/radeon_drv.c module_init(radeon_init); module_exit(radeon_exit); MODU

  •  跟了整整一天代码,总算有点清晰了....  简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】�� 人生格言:  人生从来没有捷径,

  • drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c module_init(amdgpu_init); module_exit(amdgpu_exit); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL and additional rights");

 相关资料
  • 面了英伟达的GPU C++ Modeling Engineer 投递的时候看要求是熟练掌握C++ 结果面试的时候都是体系结构 人麻了,一点没看 问的都是cache之类的,梦回大二的组成原理,但是那书早被我卖了,几百年没看了 问面试官,是不是岗位不太匹配 面试官说,体系结构这么不熟的头一次见 跟面试官说直接放弃面试了,感觉她面的也挺难受的 还是等华子泡出来吧,折腾来折腾去也挺累了 #24届软开秋招面

  • #英伟达面经# 攒人品 岗位是deep learning performance architect intern,base上海,中文面试 大概是40min左右的自我介绍,介绍实习经历/项目的过程中针对细节提问,非常个人化,而且由于面试官做的是偏底层的,问的问题也会往底层考,有些答上来了有些没答出来。 因为有icpc/ccpc经历,40min之后又问了一些基础的算法问题,最后问了一个特别简单的co

  • software testing -drive sim部门 c++: 1.顺时针旋转90度二维矩阵 用的是轮转的方法,问是否可以直接交换? 180度旋转呢? 2.虚函数是什么?父类里面virtual关键字的 3.static可以当虚函数吗?不可以,因为虚函数在运行的时候才知道要调用父类还是子类方法。static是在编译的时候就知道了。 4.你对自动驾驶有了解吗? 5.英伟达gpu有了解吗? 6.s

  • 这家公司因为是外企,是有英文自我介绍的,在这方面小伙伴们要做好准备哈。面试感受还可以的,整体不算难。是一对一视频面试,自我介绍后,开始先根据简历询问项目经历具体细节。 闻到示波器工作原理,给定一个场景问怎么解决; 接着询问专业知识,如MOS管的原理及应用。 然后询问脚本语言的应用 最后一部分是使用英文作自我介绍以及对公司和职位的了解,然后面试官会介绍一下公司平台以及工作内容,也会有反问环节。

  • 面试官:外国人,中文良好 1.英文打招呼,因为不会英语转换为中文面试 2.对实习: 上一段实习与同事们相处得怎样 3.介绍部门业务 你了解GPU优化吗 内存优化 你的项目是课设还是自己想做的 4.手撕代码:内存池 (40min) 四个函数:内存池初始化,释放,用户申请,用户释放 只能用两次malloc,不能用stl 面试官会教你写

  • 内核模块 对于模块而言,引导选项只能用于直接编译到核心中的模块,格式是"模块名.选项=值",比如"usbcore.blinkenlights=1"。 动态加载的模块则可以在 modprobe 命令行上指定相应的选项值,比如"modprobe usbcore blinkenlights=1"。 可以使用"modinfo -p ${modulename}"命令显示可加载模块的所有可用选项。已经加载到内

  • 假如这么一个场景:我的笔记本有 32GB 的 RAM,然后我有一个 RTX4080 16GB 的显存 然后我现在运行一个模型需要 16GB+的显存,但是这个时候,我的显存不够会 OOM 英伟达的显卡可以向 RAM 借用存储空间吗?

  • 主要内容:initramfe虚拟文件系统GRUB 加载了内核之后,内核首先会再进行二次系统的自检,而不一定使用 BIOS 检测的硬件信息。这时内核终于开始替代 BIOS 接管 Linux 的启动过程了。 内核完成再次系统自检之后,开始采用动态的方式加载每个硬件的模块,这个动态模块大家可以想象成硬件的驱动(默认 Linux 硬件的驱动是不需要手工安装的,如果是重要的功能,则会直接编译到内核当中;如果是非重要的功能,比如硬件驱动会编译为模块