AMD CPU下pytorch 多GPU运行卡死和死锁解决

参考链接

https://medium.com/@amitparekh/solving-ddp-deadlock-with-multiple-gpus-and-amd-cpus-442186632034

简要说明

  • AMD的IOMMU和NVIDIA的NCCL不兼容问题导致
  • AMD的IOMMU是BIOS 级组件,它基本上充当将虚拟地址映射到 GPU 上的物理地址的接口,它的全部目的是让 CPU 和 GPU 的内存更好地协同工作
  • NVIDIA的NCCL是Nvidia的多卡通信库,用于深度学习中的多GPU并行训练

解决方案 (关闭IOMMU)

  • ubuntu
sudo bash -c'echo GRUB_CMDLINE_LINUX="amd_iommu=off" >> /etc/default/grub'
sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
sudo reboot
  • centos
sudo bash -c'echo GRUB_CMDLINE_LINUX="amd_iommu=off" >> /etc/default/grub'
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 
sudo reboot
### 是否可以同时安装 CPU GPU 版本的 PyTorch 是可以同时安装 CPU GPU 版本的 PyTorch 的。通过虚拟环境管理工具(如 `conda` 或 `venv`),能够轻松实现不同版本之间的隔离切换[^1]。 #### 使用 Conda 实现版本共存 Conda 是一种流行的 Python 虚拟环境管理器,它可以帮助用户创建独立的环境来分别安装不同的 PyTorch 版本。以下是具体方法: ```bash # 创建一个新的 conda 环境用于 GPU 版本 conda create -n pytorch_gpu python=3.6 conda activate pytorch_gpu # 安装 GPU 版本的 PyTorch (以 CUDA 9.0 为例) conda install pytorch torchvision cuda90 -c pytorch # 创建另一个新的 conda 环境用于 CPU 版本 conda create -n pytorch_cpu python=3.6 conda activate pytorch_cpu # 安装 CPU 版本的 PyTorch conda install pytorch torchvision cpuonly -c pytorch ``` 这样,在激活 `pytorch_gpu` 环境时会加载 GPU 支持的 PyTorch,而在激活 `pytorch_cpu` 环境时则只使用 CPU 版本。 #### 手动安装并区分版本 如果不想使用 Conda,则可以通过 pip 来手动安装两个版本,并利用路径或别名进行区分。例如: ```bash pip install torch==1.7.1+cpu torchvision==0.8.2+cpu torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html --prefix=/usr/local/pytorch/cpu_version/ pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio===0.7.2 -f https://download.pytorch.org/whl/cu101/torch_stable.html --prefix=/usr/local/pytorch/gpu_version/ ``` 之后可通过设置 `PYTHONPATH` 变量指定要使用的版本: ```bash export PYTHONPATH=/usr/local/pytorch/cpu_version/lib/python3.6/site-packages:$PYTHONPATH # 或者 export PYTHONPATH=/usr/local/pytorch/gpu_version/lib/python3.6/site-packages:$PYTHONPATH ``` 这种方法虽然可行,但相比 Conda 更加复杂且容易出错。 #### 关于计算图动态重建的影响 无论是在 CPU 还是 GPU运行PyTorch 都会在每次迭代中重新构建计算图[^3]。这意味着即使在同一环境中交替调用 CPU GPU 模型也不会影响其正常工作逻辑。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值