
# A系列裸金属服务器如何更换NVIDIA和CUDA？
#### 场景描述
当裸金属服务器预置的NVIDIA版本和业务需求不匹配时，需要更换NVIDIA驱动和CUDA版本。本文介绍华为云A系列裸金属服务器（Ubuntu20.04系统）如何从"NVIDIA 525+CUDA 12.0"更换为"NVIDIA 515+CUDA 11.7"。
#### 操作步骤
1. 卸载原有版本的NVIDIA和CUDA。 
   1. 查看使用apt包管理方式安装的nvidia软件包， 执行如下命令实现查看和卸载。
      ```
      dpkg -l | grep nvidia
      dpkg -l | grep cuda
      sudo apt-get autoremove --purge nvidia-*
      sudo apt-get autoremove --purge cuda-*
      ```
      以上命令可以卸载nvidia-driver、cuda、nvidia-fabricmanager、nvidia-peer-memory四个软件。
      但是如果nvidia和cuda是使用runfile(local)方式安装的，那么需要在下一步中再次卸载。
      
   
   2. 若使用nvidia run包直接安装的驱动，需要找到对应的卸载命令。
      ```
      sudo /usr/bin/nvidia-uninstall
      sudo /usr/local/cuda-11.7/bin/cuda-uninstaller
      ```
      
   
   3. 验证是否卸载完成。
      ```
      nvidia-smi
      nvcc -V
      dpkg -l | grep peer
      dpkg -l | grep fabricmanager
      dpkg -l | grep nvidia
      ```
      
   
   
   
   
2. 卸载nccl相关软件。 
   由于nccl和cuda是配套关系， 当cuda版本从12.0更换为11.7的时候，libnccl和libnccl-dev都需要更换为和cuda11.7匹配的版本。因此必须卸载掉原版本。
   ```
   sudo apt-get autoremove --purge *nccl*
   ```
   
   
3. 删除原nccl-test的编译后文件。 
   由于nccl-test make编译也是基于当前cuda12.0版本的。 当cuda版本更换后，需要重新编译， 因此删除它。默认该文件在/root/nccl-tests直接删除即可。
   
   
4. 从内核中卸载nvidia相关的所有进程。 
   在安装nvidia驱动时，必须把内核中加载nvidia相关的进程卸载，否则会失败。
   ![](https://support.huaweicloud.com/modelarts_faq/public_sys-resources/note_3.0-zh-cn.png)
   若遇到加载到内核的nvidia进程循环依赖，无法从内核中卸载nvidia，此时执行reboot命令重启服务器即可。
   
   
5. 安装NVIDIA-515和CUDA-11.7配套软件环境。
 
