centos7安装CUDA Tookit+CUDA Samples+NCCL+OpenMPI

NVIDIA®CUDA®工具包为创建高性能GPU加速应用提供了发展环境。使用CUDA工具包,您可以在GPU加速嵌入式系统、桌面工作站、企业数据中心、基于云的平台和HPC超级计算机上开发、优化和部署您的应用程序。工具包包括GPU加速库、调试和优化工具、C/C++编译器以及一个运行时库,以便在包括x86、Arm和POWER在内的主要架构上构建和部署您的应用程序。科学家和研究人员可以利用内置功能在多GPU配置中分配计算,开发从单个GPU工作站到拥有数千个GPU的云安装的应用程序。简单介绍下我们就来进行cudatook...

阅读全文

英伟达GPU异常问题常见处理方法

日常在一些程序中进行GPU调用,这些cuda程序异常崩溃的时候,有时会遇到掉卡掉驱动、没有进程但是显存被占用的情况,这个时候我们可以通过以下命令来尝试进行处理。如果是掉卡的话可以使用lspci查看下主板上还能否检测到GPU卡lspci | grep -i nvidia00:03.0 VGA compatible controller: NVIDIA Corporation Device 1f03 (rev a1)00:...

阅读全文

英伟达GPU配置MIG实例和原理介绍

MIG通过虚拟地将单个物理GPU划分为更小的独立实例,这项技术涉及GPU虚拟化,GPU的资源,包括CUDA内核和内存,被分配到不同的实例。这些实例彼此隔离,确保在一个实例上运行的任务不会干扰其他实例。使用MIG,每个实例的处理器都有独立和隔离的路径通过整个存储系统,芯片上的crossbar端口,L2cache,内存控制器和DRAM地址总线都被唯一地分配给一个单独的实例。这确保了单个用户的工作负载可以在相同的L2缓存分配和DRAM带宽下,以可预测的吞吐量和延迟运行,即使其它任务正在抖动它们自己的缓存或饱和它们的DRAM接口。MIG能够对可用的GPU计算资...

阅读全文

Nvidia Device PLugin工作原理机制

我们在k8s使用英伟达GPU时想让POD自动挂载我们需要部署nvidia-device-plugin组件,如何部署使用可以查看我之前的笔记:https://sulao.cn/post/978.html英伟达的deviceplugin组件主要在整个工作过程中做了如下工作1.deviceserver的启动和注册deviceserver在启动的时候会检测/var/lib/kubelet/device-plugins/kubelet.sock文件,如果该文件存在,那么deviceserver会通过该sock文件向kubelet注册信息。2.device的...

阅读全文

目前主流几种GPU共享技术原理

目前市面上有很多GPU共享技术,在GPU共享的模式下,在用户态共享和内核态进行共享是不一样的,根据以下视图,越往底层,共享对用户的影响越小,安全性也能对应提升。下面我就来简单介绍下目前GPU共享的一些技术1.CUDA劫持:rCUDA,vCUDA等CUDA劫持是较多方案选择的共享方法,属于时间复用。它通过劫持对CudadriverAPI的调用来做到资源隔离。共享模块一般位于在CudadriverAPI之上。优势:API开源,是非Nvidia官方技术人员能够较容易实现的共享技术。劣势:1.CUDA库升级活跃,而当CUDA库升级时,劫持方案也需要不断适...

阅读全文

k8s调度GPU节点并挂载GPU设备

k8s已经支持GPU设备的调度和POD容器挂载,需要做以下配置1.首先我们需要再宿主机安装驱动2.需要安装nvidia-container-runtime3.GPU节点打标签并部署k8s-device-plugin上面1和2可以直接搜我之前的笔记,我们直接部署k8s-device-plugin,这个可以上报GPU节点的GPU数量到k8s中,然后在业务yaml文件中添加requests/limits请求配置中添加GPU相关配置即可自动调度到GPU节点并挂载GPU设备将以下内容保存为k8s-device-plugin.yaml,lable需要自己按照需求进行...

阅读全文

容器内执行nvidia-smi报错提示Failed to initialize NVML

使用GPU的容器运行了一个训练任务,一段时间以后查看训练任务失败,进POD容器内执行nvidia-smi返回"FailedtoinitializeNVML:UnknownError"。目前该问题是一个已知问题,是由于在docker环境中daemon.json文件中配置了"exec-opts": ["native.cgroupdriver=systemd"]同时通过systemctldaemon-reload等命令守护进程重载命令,导致容器化的GPU工作负载可能会突然失去对G...

阅读全文

python使用toml模块生成containerd下nvidia-container-runtime配置脚本

之前在ubuntu和centos下docker环境配置nvidia-container-runtime可以查看之前笔记centos7:https://sulao.cn/post/942.htmlubuntu:https://sulao.cn/post/919.htmlcontainerd下配置nvidia-container-runtime可以查看这个笔记:https://sulao.cn/post/947.html由于containerd下配置nvidia-container-runtime比较繁琐,所以写了脚本去自动修改使用python修改confi...

阅读全文

centos7内核影响GPU驱动无法安装

我们对centos7内核进行了升级,具体笔记可以查看笔记:https://sulao.cn/post/949.html,然后GPU驱动需要重新安装,安装的时候有以下报错An error occurred while performing the step: "Building kernel modules"我们安装驱动常见问题主要就是内核头文件,所以首先对这个进行了检查,由于之前升级内核,头文件还是3.10的,所以我们需要进行卸载,然后安装对应的...

阅读全文

containerd配置nvidia-container-runtime

之前我们在centos/ubuntu上安装过nvidia-container-runtime,配置也都是在docker中配置的,那么我们最近本地环境整体从docker换成了containerd,那么今天就来记录下在containerd中如何配置默认的runc到nvidia的containerruntime。安装的话还是可以查看以前的笔记centos7安装:https://sulao.cn/post/942.htmlubuntu安装:https://sulao.cn/post/919.html接下来修改/etc/containerd/config.tom...

阅读全文