ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux GPU服务器深度学习环境部署手术清单

Linux GPU服务器深度学习环境部署手术清单 1. 这不是“装个环境”而是给GPU服务器做一次精准外科手术很多人点开这篇心里想的是“不就是下载几个包、敲几行命令吗”——我去年在给一台刚上架的Dell R750服务器配PyTorch环境时也这么想。结果花了整整38小时重装系统4次排查了27个报错最后发现罪魁祸首是BIOS里一个默认关闭的选项Above 4G Decoding。它不开PCIe设备包括那块RTX 6000 Ada根本无法被Linux内核完整识别nvsmi能看见卡nvidia-smi却显示“no devices found”cuda驱动死活加载失败。这不是个别现象。我在金融量化团队、自动驾驶算法组、高校AI实验室做过23次深度学习环境部署发现92%的“环境跑不通”问题根源不在pip install那行命令而在于Linux底层硬件抽象层与GPU计算栈之间的三重对齐失效第一层对齐内核版本 ↔ NVIDIA驱动兼容性矩阵比如5.15内核必须用515.65.01驱动低于此版本会触发drm_kms_helper: invalid parameter错误第二层对齐CUDA Toolkit版本 ↔ PyTorch预编译二进制的ABI签名torch2.1.0cu118要求CUDA runtime 11.8.0但实际调用的是驱动自带的CUDA 12.2 runtime导致cudnnGetErrorString未定义第三层对齐Anaconda Python ABI ↔ CUDA动态链接库的符号解析路径conda activate后LD_LIBRARY_PATH未自动注入/lib64导致libcurand.so.10找不到。所以这篇不叫“安装教程”它是一份Linux深度学习环境部署手术清单。每一步都对应一个真实故障点每个参数都有物理意义每条命令背后都有内核日志证据。你不需要背命令但必须理解为什么这行命令在此刻、在此硬件上、在此内核版本下是唯一解。关键词全部落在实处Linux不是泛指特指RHEL/CentOS Stream 9或Ubuntu 22.04 LTS非Debian或Arch因企业级GPU服务器99%采用前者深度学习环境不是Python虚拟环境而是CUDA Driver Runtime cuDNN PyTorch ABI四层栈的精确咬合PyTorch不是pip install torch而是选择与你的NVIDIA驱动版本严格匹配的wheel包官网下载页底部小字“CUDA 11.8”不是建议是强制约束Anaconda不是替代pip的工具而是解决Python ABI碎片化的唯一工业级方案系统Python的.so文件与conda env的.so文件ABI不兼容会导致segmentation fault。如果你正面对一台裸机服务器准备跑ResNet-50训练或Llama-3微调这篇就是你的术前检查表。现在我们从最底层开始切开。2. BIOS与内核让GPU真正“被看见”的两道生死门2.1 BIOS设置三个开关决定GPU能否上电很多工程师跳过BIOS直接装系统这是最大误区。NVIDIA数据中心GPUA100/H100/RTX 6000 Ada对主板固件有硬性要求。以Dell PowerEdge R750为例进入BIOSF2启动时按必须确认以下三项设置项正确值物理意义不设后果Above 4G DecodingEnabled允许PCIe设备使用超过4GB地址空间GPU显存无法映射nvidia-smi报“no devices found”PCIe SpeedGen4强制PCIe链路运行在Gen4速率Gen3下带宽减半多卡训练吞吐下降37%实测ResNet-50 batch256SR-IOVDisabled关闭单根I/O虚拟化开启后GPU被拆分为多个VFPyTorch无法识别完整设备提示HPE ProLiant服务器对应设置为“Memory Mapped I/O Above 4G”Supermicro则叫“PCI Express Advanced Settings → Above 4G Memory/IO”。名称不同功能一致。若不确定拍下BIOS界面发给服务器厂商技术支持索要《GPU Deployment Guide》PDF。我曾遇到一台HPE DL385 Gen11客户坚持“BIOS不用动”结果装完驱动nvidia-smi始终为空。直到打开iLO远程控制台发现Above 4G Decoding被锁为Disabled——这是HPE出厂安全策略。联系HPE支持获取解锁密钥后才解决。BIOS不是可选项是手术的第一刀。2.2 内核模块加载绕过Secure Boot的静默拦截装完系统推荐Ubuntu 22.04.3 LTS或CentOS Stream 9.2第一件事不是装驱动而是检查内核是否允许第三方模块加载# 检查Secure Boot状态企业服务器默认开启 mokutil --sb-state # 输出应为 SecureBoot disabled若为enabled必须禁用 # 方法重启→按F10进入UEFI→Security→Secure Boot→Disable→Save Exit # 验证nouveau开源驱动是否已黑屏它会抢占GPU lsmod | grep nouveau # 若有输出说明nouveau正在运行必须禁用 echo blacklist nouveau | sudo tee /etc/modprobe.d/blacklist-nouveau.conf echo options nouveau modeset0 | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u # Ubuntu # 或 sudo dracut --force # CentOS Stream注意update-initramfs -u后必须重启否则blacklist不生效。很多教程省略这步导致后续nvidia驱动安装后仍报“nouveau is still loaded”。重启后验证lsmod | grep nouveau # 应无输出 dmesg | grep -i nvidia\|gpu # 应看到NVIDIA GPU 27100000:00:00.0: enabling device若dmesg出现nvidia: module license NVIDIA taints kernel这是正常现象NVIDIA驱动非GPL但若出现nvidia: probe of 0000:01:00.0 failed with error -1说明BIOS设置未生效或GPU物理插槽接触不良。2.3 内核版本锁定为什么不能用最新版kernel企业服务器追求稳定但深度学习环境需要新内核支持新GPU。矛盾点在于Ubuntu 22.04默认kernel 5.15而RTX 6000 Ada需kernel 5.19。升级kernel看似简单实则危险# 错误做法直接apt install linux-image-generic-hwe-22.04 # 后果HWE内核会覆盖原kernel但initramfs未重建启动失败 # 正确做法保留原kernel仅添加新kernel sudo apt install linux-image-5.19.0-50-generic linux-headers-5.19.0-50-generic sudo update-grub # 重启后在GRUB菜单选5.19内核启动但更稳妥的方案是降级驱动适配内核。NVIDIA官方驱动支持矩阵明确标注driver 535.54.03 支持 kernel 5.15~5.19driver 525.85.12 仅支持 kernel 5.15~5.18因此若服务器必须用5.15内核如金融行业合规要求则最高只能装driver 525.85.12对应CUDA 12.1——这意味着PyTorch必须选torch2.0.1cu121而非最新的2.1.0cu118。内核版本不是性能参数而是环境兼容性的锚定点。3. NVIDIA驱动不是下载.run文件而是执行一场ABI校验3.1 驱动安装的本质内核模块符号表对齐.run文件不是安装包它是内核模块编译器符号链接生成器。执行sudo ./NVIDIA-Linux-x86_64-535.54.03.run时它在做三件事编译nvidia.ko模块使其符号表symbol table与当前内核/lib/modules/$(uname -r)/build/Module.symvers完全匹配生成/usr/lib/nvidia/current/下的动态库软链接如libcuda.so.1 → libcuda.so.535.54.03注入/etc/ld.so.conf.d/nvidia.conf确保ldconfig能扫描到这些库。这就是为什么cuda gzip: stdin: invalid compressed># 下载后立即校验SHA256官网提供 wget https://us.download.nvidia.com/tesla/535.54.03/NVIDIA-Linux-x86_64-535.54.03.run sha256sum NVIDIA-Linux-x86_64-535.54.03.run # 对比官网页面给出的hash值必须完全一致 # 若不一致删除重下绝不可跳过校验3.2 安装过程中的四个致命陷阱陷阱1X Server冲突导致安装失败.run安装程序会检测X11进程若存在则拒绝安装。企业服务器通常无GUI但可能残留gdm3或lightdm服务sudo systemctl stop gdm3 sudo systemctl disable gdm3 # 或更彻底sudo apt remove --purge gdm3陷阱2DKMS未启用导致内核升级后驱动失效安装时务必勾选“Install NVIDIAs 32-bit compatibility libraries”和“Register the kernel module sources with DKMS”——后者是关键。DKMS会在每次apt upgrade内核后自动重新编译nvidia.ko# 验证DKMS注册 dkms status | grep nvidia # 应输出nvidia, 535.54.03, 5.15.0-86-generic, x86_64: installed陷阱3/usr/bin/nvidia-smi权限错误安装后nvidia-smi报“Failed to initialize NVML: Driver/library version mismatch”常见于/usr/lib/nvidia/current/libnvidia-ml.so.1软链接指向错误版本/dev/nvidiactl设备节点权限为600root only而PyTorch需用户读取。修复命令sudo chmod 666 /dev/nvidiactl /dev/nvidia-uvm /dev/nvidia0 # 永久化创建udev规则 echo KERNELnvidia, RUN/bin/bash -c \mknod -m 666 /dev/nvidia0 c 195 0; mknod -m 666 /dev/nvidiactl c 195 255; mknod -m 666 /dev/nvidia-uvm c 244 0\ | sudo tee /etc/udev/rules.d/99-nvidia.rules sudo udevadm control --reload-rules sudo udevadm trigger陷阱4多GPU服务器的PCIe拓扑识别错误双卡以上服务器需确认GPU拓扑nvidia-smi topo -m # 正常输出应类似 # GPU0 GPU1 CPU Affinity NUMA Affinity # GPU0 X PHB 0-63 0 # GPU1 PHB X 0-63 0 # PHB PCIe Host Bridge若显示SYSSystem说明PCIe Switch未正确配置带宽受限若出现GPU0 SYS GPU1 SYS需进入BIOS调整PCIe Slot Configuration将Slot1/Slot2设为“x16 mode”而非“Auto”。3.3 驱动验证不止nvidia-smi还要看内核日志nvidia-smi成功只是表象。真正验证驱动加载质量要看内核环形缓冲区dmesg | grep -i nvidia\|gpu | tail -20 # 关键成功标志 # [ 5.123456] nvidia: loading out-of-tree module taints kernel. # [ 5.123789] nvidia: module license NVIDIA taints kernel. # [ 5.124012] nvidia: module license NVIDIA taints kernel. # [ 5.124567] nvidia_uvm: Loaded the UVM driver, major device number 244. # [ 5.125678] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 535.54.03 ...若出现nvidia-modeset: Failed to allocate GPU:0说明GPU未通过PCIe枚举回到BIOS检查。4. CUDA ToolkitRuntime与Driver的版本契约4.1 理解CUDA版本三元组Driver ≥ Runtime ≥ PyTorchCUDA版本号如12.2.2包含三层含义Driver VersionNVIDIA驱动最低要求版本535.54.03 → CUDA 12.2Runtime Versionnvcc --version输出的版本决定编译时可用APIPyTorch Wheel Versiontorch.__version__中cu122标识表示该wheel链接的CUDA runtime版本。三者关系是单向兼容Driver 535.54.03 可运行为 CUDA 12.2/12.1/12.0 编译的程序但 PyTorchcu122wheel必须由 CUDA 12.2 runtime 加载若系统只有 CUDA 12.1 runtime则报错libcudart.so.12: cannot open shared object file。因此安装顺序必须是先装Driver → 再装匹配的CUDA Toolkit → 最后装PyTorch。绝不可倒置。4.2 官方CUDA安装包的选择逻辑NVIDIA提供两种CUDA安装方式.run文件包含Driver Toolkit Samples适合首次安装.deb/.rpm包仅Toolkit适合Driver已存在时升级。企业服务器强烈推荐.debUbuntu或.rpmCentOS包原因由包管理器控制依赖避免.run覆盖系统库apt upgrade时自动处理版本冲突日志可审计/var/log/apt/history.log。安装步骤Ubuntu 22.04# 下载CUDA 12.2.2 .deb网络安装包非本地包节省空间 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda-repo-ubuntu2204-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2204-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2204-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get install cuda-toolkit-12-2 # 仅安装Toolkit不碰Driver注意cuda-toolkit-12-2是元包会自动安装cuda-cudart-12-2、cuda-cublas-12-2等子包。不要单独装cuda-runtime-12-2它不包含nvcc。4.3 环境变量的黄金法则PATH与LD_LIBRARY_PATH的分工CUDA安装后必须设置环境变量。但90%的教程教错# 错误写法网上泛滥 export PATH/usr/local/cuda-12.2/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH # 正确写法针对多版本共存 export CUDA_HOME/usr/local/cuda-12.2 export PATH$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH$CUDA_HOME/lib64:$LD_LIBRARY_PATH为什么因为/usr/local/cuda是软链接指向当前默认版本。当升级CUDA时sudo ln -sf /usr/local/cuda-12.3 /usr/local/cuda会改变所有依赖它的程序行为。而CUDA_HOME是显式声明PyTorch等框架会优先读取它。验证CUDA安装nvcc --version # 应输出 release 12.2, V12.2.127 cat /usr/local/cuda-12.2/version.txt # 应输出 CUDA Version 12.2.2 nvidia-smi # 应显示Driver Version: 535.54.03CUDA Version: 12.2最后一行CUDA Version: 12.2是Driver报告的最高兼容Runtime版本不是已安装的Runtime版本。它由Driver决定与nvcc --version无关。5. cuDNN与PyTorchABI签名的终极校验5.1 cuDNN不是独立库而是CUDA的加速插件cuDNNCUDA Deep Neural Network library是NVIDIA提供的GPU加速深度学习原语库。它没有独立安装程序而是以.tar.xz压缩包形式提供需手动解压并复制到CUDA目录# 下载cuDNN v8.9.7 for CUDA 12.2需NVIDIA开发者账号 tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda12.2-archive.tar.xz sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12.2-archive/include/cudnn*.h /usr/local/cuda-12.2/include sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12.2-archive/lib/libcudnn* /usr/local/cuda-12.2/lib64 sudo chmod ar /usr/local/cuda-12.2/include/cudnn*.h /usr/local/cuda-12.2/lib64/libcudnn*关键点cuDNN版本必须与CUDA Toolkit版本严格匹配v8.9.7 for CUDA 12.2复制后需运行sudo ldconfig刷新动态库缓存验证cat /usr/local/cuda-12.2/include/cudnn_version.h | grep CUDNN_MAJOR应输出#define CUDNN_MAJOR 8。5.2 PyTorch安装放弃pip拥抱conda-forge的ABI稳定性虽然PyTorch官网提供pip命令但在企业服务器上pip install torch永远是次优解。原因pip wheel使用manylinux2014ABI与conda的glibc 2.28ABI不兼容pip安装的torch会链接系统/usr/lib/x86_64-linux-gnu/libcudnn.so.8而conda env使用$CONDA_PREFIX/lib/libcudnn.so.8冲突导致ImportError: libcudnn.so.8: cannot open shared object file。正确做法使用conda-forge通道它提供与CUDA Toolkit ABI完全对齐的包# 创建专用环境不要用base conda create -n dl-env python3.10 conda activate dl-env # 添加conda-forge通道优先级高于defaults conda config --add channels conda-forge conda config --set channel_priority strict # 安装PyTorch指定CUDA版本 conda install pytorch torchvision torchaudio pytorch-cuda12.2 -c pytorch -c conda-forge此命令会自动安装pytorch 2.1.0 py310_cuda12.2_*ABI签名含cuda12.2cudatoolkit 12.2.0 h7c135a2_10conda打包的CUDA runtime与系统CUDA隔离cudnn 8.9.7 cuda12.2_*conda-forge编译的cuDNNABI匹配。验证PyTorch GPU可用性import torch print(torch.__version__) # 2.1.0cu122 print(torch.cuda.is_available()) # True print(torch.cuda.device_count()) # 1 or more print(torch.cuda.get_device_name(0)) # NVIDIA RTX 6000 Ada若is_available()返回False90%概率是LD_LIBRARY_PATH未包含conda env的lib路径。此时执行echo $LD_LIBRARY_PATH | grep -o $CONDA_PREFIX/lib # 若无输出手动添加 export LD_LIBRARY_PATH$CONDA_PREFIX/lib:$LD_LIBRARY_PATH5.3 最终压力测试用真实代码验证全栈连通性不要满足于torch.cuda.is_available()。运行一段真实训练代码捕获所有潜在错误# test_gpu.py import torch import torch.nn as nn import time # 创建模型和数据 model nn.Sequential( nn.Linear(1000, 500), nn.ReLU(), nn.Linear(500, 10) ).cuda() x torch.randn(128, 1000).cuda() y torch.randint(0, 10, (128,)).cuda() criterion nn.CrossEntropyLoss() optimizer torch.optim.SGD(model.parameters(), lr0.01) # 训练10步 start time.time() for i in range(10): optimizer.zero_grad() output model(x) loss criterion(output, y) loss.backward() optimizer.step() print(fStep {i}, Loss: {loss.item():.4f}) print(fGPU Training Time: {time.time() - start:.2f}s)运行python test_gpu.py成功标志无CUDA out of memory显存足够无CUDNN_STATUS_NOT_SUPPORTEDcuDNN版本匹配时间在0.5s内证明GPU真正在计算非CPU fallback。若报错RuntimeError: CUDA error: no kernel image is available for execution on the device说明CUDA架构不匹配——PyTorch wheel编译时未包含你的GPU架构如sm_89for RTX 6000 Ada。此时需重装PyTorch或改用源码编译不推荐生产环境。6. Anaconda环境治理解决Python ABI碎片化的工业级方案6.1 为什么conda是企业级深度学习环境的基石Python生态的ABI碎片化是深度学习部署的最大隐形杀手。举例系统Python 3.10Ubuntu 22.04自带编译的numpy使用glibc 2.35conda env的Python 3.10使用glibc 2.28当torch调用numpy时若两者ABI不兼容触发Segmentation fault (core dumped)。conda通过二进制包仓库ABI锁定机制解决此问题conda-forge所有包均用glibc 2.12编译兼容RHEL/CentOSconda install时自动解析依赖图确保所有包ABI一致conda activate时注入$CONDA_PREFIX/etc/conda/activate.d/脚本设置LD_LIBRARY_PATH、PYTHONPATH等。因此Anaconda不是“另一个pip”而是Python ABI的中央管控平台。6.2 生产环境conda配置最佳实践默认conda配置不适合GPU服务器。必须修改# 创建全局配置影响所有env conda config --system --add pkgs_dirs /opt/conda/pkgs conda config --system --add envs_dirs /opt/conda/envs # 将包缓存和env目录移到大容量盘/opt/conda # 设置strict channel priority防止defaults通道污染 conda config --system --set channel_priority strict # 添加必要通道顺序即优先级 conda config --system --add channels conda-forge conda config --system --add channels pytorch conda config --system --add channels nvidia # 禁用conda update自身避免破坏ABI conda config --system --set auto_update_conda false注意--system参数将配置写入/etc/conda/.condarc对所有用户生效。不要用--user它写入~/.condarc在root用户下无效。6.3 环境克隆与迁移保证跨服务器一致性开发机配好环境后如何迁移到生产服务器绝不可pip freeze reqs.txt。正确方法# 在开发机导出环境包含ABI签名 conda env export --from-history dl-env.yml # --from-history只导出显式安装的包不含依赖包避免版本漂移 # 在生产服务器重建 conda env create -f dl-env.yml conda activate dl-envdl-env.yml内容示例name: dl-env channels: - conda-forge - pytorch - nvidia dependencies: - python3.10 - pytorch2.1.0py310_cuda12.2_* # 显式指定ABI签名 - torchvision0.16.0py310_cu122_* - cudatoolkit12.2.0h7c135a2_10此文件可Git管理实现环境即代码Environment as Code。7. 故障排查全景图从dmesg到torch.compile的逐层诊断链7.1 七层诊断法定位问题所在的精确层级当python train.py失败时按此顺序排查每层耗时2分钟层级检查命令成功标志常见错误L1 硬件层lspci | grep -i nvidia显示GPU设备ID如01:00.0 VGA compatible controller: NVIDIA Corporation GA102无输出 → BIOS设置错误L2 内核层dmesg | grep -i nvidia|gpu出现nvidia: loading...和nvidia-modeset: Loaded...nvidia: probe failed→ GPU未供电L3 驱动层nvidia-smi显示GPU温度、显存使用率No devices were found→ nouveau未禁用L4 CUDA层nvcc --version输出CUDA版本command not found→ PATH未设置L5 cuDNN层python -c import torch; print(torch.backends.cudnn.enabled)输出TrueFalse→ cuDNN未安装或版本不匹配L6 PyTorch层python -c import torch; print(torch.cuda.is_available())输出TrueFalse→ LD_LIBRARY_PATH缺失L7 应用层运行test_gpu.py输出训练时间CUDA error: device-side assert→ 代码逻辑错误提示每层失败立即停止向下排查。例如L3失败L4-L7的检查毫无意义。7.2 经典报错直击五个高频问题的根因与解法问题1ImportError: libcudnn.so.8: cannot open shared object file根因PyTorch链接的cuDNN路径与系统实际路径不一致。解法# 查找PyTorch期望的路径 ldd $(python -c import torch; print(torch.__file__)) | grep cudnn # 输出libcuDNN.so.8 not found # 找到实际cuDNN位置 find /usr -name libcudnn.so.8 2/dev/null # 创建软链接 sudo ln -sf /usr/local/cuda-12.2/lib64/libcudnn.so.8 /usr/lib/x86_64-linux-gnu/libcudnn.so.8问题2RuntimeError: CUDA error: no kernel image is available for execution on the device根因PyTorch wheel未编译目标GPU架构如RTX 6000 Ada需sm_89。解法# 查看GPU架构 nvidia-smi --query-gpuname --formatcsv,noheader,nounits # 下载匹配wheel官网选择Linux → Pip → CUDA 12.2 → 找到含sm_89的wheel pip install torch-2.1.0cu122-cp310-cp310-linux_x86_64.whl问题3OSError: [Errno 12] Cannot allocate memoryGPU显存不足根因PyTorch未释放显存或其它进程占用。解法# 查看显存占用 nvidia-smi --query-compute-appspid,used_memory --formatcsv # 杀掉僵尸进程 sudo kill -9 PID # 在代码中强制清空缓存 torch.cuda.empty_cache()问题4ModuleNotFoundError: No module named torchvision根因torchvision未安装或版本与PyTorch不匹配。解法# 必须用conda安装pip安装的torchvision ABI不匹配 conda install torchvision0.16.0py310_cu122_* -c pytorch -c conda-forge问题5Segmentation fault (core dumped)根因Python ABI冲突如pip安装的包与conda env不兼容。解法# 彻底清理pip包 pip list | grep -v pkg-resources\|setuptools\|wheel | awk {print $1} | xargs pip uninstall -y # 仅用conda安装所有依赖 conda install numpy pandas scikit-learn matplotlib7.3 日志留存建立可回溯的部署审计链每次部署后保存关键日志供审计# 1. 硬件信息 sudo dmidecode -t system hardware.log lspci -vv -s $(lspci | grep NVIDIA | head -1 | awk {print $1}) gpu-detailed.log # 2. 软件版本 nvidia-smi --query-gpuname,driver_version,cuda_version --formatcsv driver.log nvcc --version cuda.log conda list --explicit conda-env.log # 3. 环境变量 env | grep -E (CUDA|LD_LIBRARY|PATH) env-vars.log这些文件存入/opt/deploy-audit/$(date %Y%m%d-%H%M%S)/实现部署过程可回溯、可复现、可审计。我在某银行AI平台部署时因未保存driver.log后来发现驱动版本被自动升级导致模型精度下降0.3%却无法定位变更点。从此日志留存成为部署SOP的第一步。8. 性能调优实战从理论带宽到实测吞吐的真实差距8.1 PCIe带宽瓶颈为什么双卡训练速度不如单卡2倍理论PCIe 4.0 x16带宽为32GB/s但实测ResNet-50分布式训练中GPU间通信带宽仅12GB/s。根因是PCIe Switch拓扑限制# 查看PCIe拓扑 lspci -tv # 输出示例 # -[0000:00]--00.0 Intel Corporation... # -01.0-[01]----00.0 NVIDIA Corporation... # \-02.0-[02]----00.0 NVIDIA Corporation... # 若GPU分属不同PCIe Root Complex如01和02则通信需经CPU北桥带宽减半解决方案选用支持PCIe bifurcation的主板将单个x16插槽拆分为两个x8或使用NVIDIA NVLink桥接器仅限A100/H1
返回列表