尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

cuda知识

cuda知识 查看版本#查看cuda版本 nvcc --versionnvcc -V #或者 cat /usr/local/cuda/version.txt #查看cudnn版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 #或者 dpkg -l | grep cudnn #查看tensorrt版本 dpkg -l | grep TensorRT #查看驱动版本 cat /proc/driver/nvidia/versionnvidia-smi看不到进程但是显存有被占用#这个命令就能看到pid了如果kill不掉的话再看下面 nvidia-smi --query-compute-appspid,used_memory --formatcsv #将下面命令的pid再删除就可以了 fuser -v /dev/nvidia* #或者lsof -v /dev/nvidia*看具体的卡就nvidia6显卡锁频nvidia-smi -pm 1 # 开启persistance模式 nvidia-smi -q -d CLOCK #查看每张显卡的最大SM时钟频率Max Clocks和当前时钟频率Clocks # nvidia-smi -pl 125 # set power limit to 125W nvidia-smi -lgc 500,500 # 锁定gpu clock, 两个数字分别是minGpuClock, nvidia-smi -rgc #恢复到不锁频的状态在使用ncu profile程序时要加上--clock-controlnone来阻止ncu控制gpu频率。nvidia-sminvidia-smi常见功能指标含义配置方式FanN/A是风扇转速从0到100%之间变动这个速度是计算机期望的风扇转速实际情况下如果风扇堵转可能达不到显示的转速。有的设备不会返回转速因为它不依赖风扇冷却而是通过其他外设保持低温。参考调节风扇转速调节风扇转速。Temp温度单位摄氏度。无法调节。Perf性能状态从P0到P12P0表示最大性能P12表示状态最小性能。无法调节。Pwr代表能耗代表GPU的实时能耗和最大能耗。无法调节。Persistence-M是持续模式的状态持续模式虽然耗能大但是在新的GPU应用启动时花费的时间更少这里显示的是on的状态。建议开启GPU的持久模式。GPU默认持久模式关闭的时候GPU如果负载低会休眠。之后唤起的时候有一定几率失败。执行以下命令开启持久模式。nvidia-smi -pm 1Bus-IdGPU总线ID依次代表domain:bus:device.function。无法调节。Disp.ADisplay Active表示GPU的显示是否初始化。无法调节。Memory Usage代表显存使用率。无法调节。GPU Util代表浮动的GPU利用率对应流处理器的利用率。无法调节。ECC实现“错误检查和纠正”的技术。切换ECC支持。nvidia-smi -e 0/1其中0代表DISABLED1代表ENABLED。重置ECC错误计数。nvidia-smi -p 0/1其中0代表VOLATILE1代表AGGREGATE。Compute M代表计算模式。切换计算应用模式。nvidia-smi -c 0/1/2其中0代表DEFAULT1代表EXCLUSIVE_PROCESS2代表PROHIBITED。最下面区域表示每个进程占用的显存使用率。还有一些指标无法从图形中得出但是对性能的影响比较大。工作频率设置nvidia-smi -ac 1215,1410设定memory,graphics时钟为最大。锁频设置nvidia-smi -lgc 1410,1410设定minGpuClock,maxGpuClock时钟为最大。nvidia-smi -q |grep -i vbios确保所有GPU的固件版本一致否则可能影响性能。为了实时查看GPU的详细信息可以使用nvidia-smi dmon命令。GPU统计信息以一行的滚动格式显示要监控的指标可以基于终端窗口的宽度进行调整。 监控最多4个GPU如果没有指定任何GPU则默认监控GPU0-GPU3GPU索引从0开始。nvidia-smi dmon附加选项命令功能nvidia-smi dmon -ixxx用逗号分隔GPU索引PCI总线ID或UUID。nvidia-smi dmon -dxxx指定刷新时间默认为1秒。nvidia-smi dmon -cxxx显示指定数目的统计信息并退出。nvidia-smi dmon -sxxx指定显示哪些监控指标默认为puc其中p电源使用情况和温度pwr功耗temp温度。uGPU使用率sm流处理器mem显存enc编码资源dec解码资源。cGPU处理器和GPU内存时钟频率mclk显存频率pclk处理器频率。v电源和热力异常。mFB内存和Bar1内存。eECC错误和PCIe重显错误个数。tPCIe读写带宽。nvidia-smi dmon -o D/T指定显示的时间格式DYYYYMMDDTHH:MM:SS。nvidia-smi dmon -fxxx将查询的信息输出到具体的文件中不在终端显示。很多情况下设备监控可参考的价值不高这时就要监控GPU进程监控命令nvidia-smi pmon以滚动条形式显示GPU进程状态信息。nvidia-smi pmon附加选项命令功能nvidia-smi pmon -ixxx用逗号分隔GPU索引PCI总线ID或UUID。nvidia-smi pmon -dxxx指定刷新时间默认为1秒。nvidia-smi pmon -cxxx显示指定数目的统计信息并退出。nvidia-smi pmon -sxxx指定显示哪些监控指标默认为u其中uGPU使用率。mFB内存使用情况。nvidia-smi pmon -o D/T指定显示的时间格式DYYYYMMDDTHH:MM:SS。nvidia-smi pmon -fxxx将查询的信息输出到具体的文件中不在终端显示。查看显卡是否加装nvlinknvidia-smi nvlink --status下面的图表示0-3卡加装了nvlink4-7卡没有加装。NVLink和NVSwitch的关系NVLink 是一种 GPU 之间的直接互连可扩展服务器内的多 GPU 输入/输出 (IO)。NVSwitch 可连接多个 NVLink在单节点内和节点间实现以 NVLink 能够达到的最高速度进行多对多 GPU 通信。简单来说NVLink是GPU两两连接NVSwitch是多卡连接比如一台服务器的8张卡。参考资料高性能 GPU 服务器硬件拓扑与集群组网显卡性能对比显卡数据对比显卡型号H20L20A800A100A30pro5000架构HopperAda LovelaceAmpereAmpereAmpereBlackwellFP3244TFLOPS59.8 TFLOPS19.5 TFLOPS19.5 TFLOPS10.370 TFLOPSFP16148TFLOPS119.5 TFLOPS312 TFLOPS312 TFLOPS165516 TFLOPSFP8296TFLOPS239 TFLOPSnonono1032 TFLOPSINT8296TFLOPS239 TFLOPS624 TOPS624 TOPS3301032 TOPS显存带宽4TB/s864GB/s1935GB/s1935GB/s933GB/s1344 GB/s显存大小96GB HBM348GB GDDR680GB HBM2e80GB HBM2e24GB HBM272 GB GDDR7安装指定版本的nvcc#安装nvcc apt install nvidia-cuda-toolkit #查看nvcc版本 nvcc -V #安装指定版本nvcc apt search cuda-toolkit apt install cuda-toolkit-12-1 #报错The following packages have unmet dependencies: # cuda-libraries-12-1 : Depends: libcublas-12-1 ( 12.1.3.1) but 12.1.0.26-1 is to #be installed # libcublas-dev-12-1 : Depends: libcublas-12-1 ( 12.1.3.1) but 12.1.0.26-1 is to #be installed apt update apt -y upgrade #更新软件包 apt-mark showhold #有一些包被系统“hold”也就是阻止它们自动升级那么需要解除hold状态 apt-mark unhold package-name apt update apt -y upgrade apt install cuda-toolkit-12-1显卡拓扑结构下面是一台 8*A800 机器上nvidia-smi显示的实际拓扑网卡两两做了 bondNIC 0~3 都是 bondGPU 之间左上角区域都是NV8表示8 条 NVLink连接NIC 之间在同一片 CPU 上NODE表示不需要跨 NUMA但需要跨 PCIe 交换芯片不在同一片 CPU 上SYS表示需要跨 NUMAGPU 和 NIC 之间在同一片 CPU 上且在同一个 PCIe Switch 芯片下面PXB表示只需要跨 PCIe 交换芯片在同一片 CPU 上且不在同一个 PCIe Switch 芯片下面NODE表示需要跨 PCIe 交换芯片和 PCIe Host Bridge不在同一片 CPU 上SYS表示需要跨 NUMA、PCIe 交换芯片距离最远显卡拓扑中SYS和PIX的含义在nvidia-smi topo --matrix命令中输出的矩阵描述了GPU之间的通信拓扑结构以及它们之间的连接类型。这里提到的SYS和PIX代表了两种不同的连接方式具体解释如下SYS (System Interconnect)这种连接类型表示数据传输不仅穿过PCI Express (PCIe)总线还可能跨越了NUMA节点间的系统级互连。NUMANon-Uniform Memory Access架构是指多处理器系统中CPU访问不同内存区域的速度不同通常本地内存与CPU同属一个节点的内存访问速度快于非本地内存。QPI (Quick Path Interconnect) 和 UPI (Ultra Path Interconnect) 是Intel处理器用于NUMA节点间高速通信的技术实例。因此当显示为SYS时意味着通信路径可能包括了PCIe和如QPI/UPI这样的高速互连这通常意味着相对较高的延迟或更低的带宽与直接的PCIe连接相比。PIX (PCIe Interconnect)这表示数据传输仅通过一个PCI Express桥接器。换句话说这是指GPU之间通过最短的PCIe路径相连没有涉及到更复杂的系统级互连如NUMA节点间的QPI或UPI。这种连接通常提供较低的延迟和更高的带宽因为数据不需要经过额外的系统层级的转发或处理是GPU间通信较为直接和高效的方式。SYS跨越NUMANon-Uniform Memory Access节点间的通信之所以可能导致速度变慢主要是因为NUMA架构的设计特点和系统内存访问的非一致性。在NUMA架构中每个CPU或CPU核心都紧密地连接到自己的本地内存这种内存访问速度非常快。当CPU需要访问属于另一个NUMA节点的内存时就需要通过较慢的系统互联如QPI、UPI或其他类型的互联来完成这个过程比访问本地内存要慢得多原因如下增加了延迟跨NUMA节点访问内存需要通过系统互连这引入了额外的信号传输时间和协议处理时间导致访问延迟增加。降低了带宽虽然系统互连提供了CPU间通信的能力但其带宽通常低于CPU直接访问本地内存的带宽。这意味着大量数据传输时速度会受限。内存争用和拥塞当多个CPU试图通过共享的系统互连访问内存时可能会遇到资源争用问题进一步降低效率。缓存一致性问题跨NUMA节点的内存访问可能会影响缓存一致性协议的效率因为需要确保所有CPU看到的数据是一致的这可能引入额外的管理和同步开销。因此在设计需要高性能和低延迟的应用程序时通常建议尽量优化数据布局和任务分配以减少跨NUMA节点的内存访问或者利用软件手段如NUMA感知的分配策略和硬件配置如调整NUMA策略来优化NUMA系统的性能。在某些场景下如果发现SYS级别的通信成为瓶颈关闭NUMA功能或调整NUMA配置可能会有所帮助。
返回列表