Ubuntu22.04+ROCm5.7环境下import torch触发非法指令(core dumped)求助
问题描述
在Ubuntu 22.04系统中,按ROCm官方文档步骤通过预安装PyTorch的Docker镜像部署环境,操作如下:
- 拉取镜像:
~$ docker pull rocm/pytorch:latest - 启动容器:
~$ docker run -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 8G rocm/pytorch:latest
运行测试命令时出现错误:
~$ python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
错误信息:illegal instruction (core dumped)
已完成的排查:
- 通过
rocminfo检测到ROCk模块加载正常 - GPU为Radeon RX Vega(gfx900)
- 通过
dpkg --list | grep amdgpu确认amdgpu驱动已安装
问题排查与解决
核心原因
你的Radeon RX Vega属于gfx900架构,而rocm/pytorch:latest镜像默认编译时启用了你的CPU不支持的指令集(比如AVX2、AVX-512),导致导入PyTorch时触发非法指令错误。
解决步骤
更换兼容的ROCm版本镜像
放弃latest标签,选择适配gfx900且兼容旧CPU的稳定版本,比如ROCm 5.6.x版本:docker pull rocm/pytorch:rocm5.6_ubuntu22.04_py3.10_pytorch_2.0.1启动容器时替换镜像标签,其余参数保持不变:
docker run -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 8G rocm/pytorch:rocm5.6_ubuntu22.04_py3.10_pytorch_2.0.1验证修复效果
进入容器后重新运行测试命令:python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'确认GPU识别情况
进一步验证PyTorch能否正常调用AMD GPU:python3 -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count()); print(torch.cuda.get_device_name(0))"
补充提示
- gfx900架构在ROCm 5.7及以上版本仍受支持,但部分新版本镜像的编译优化会默认启用高端CPU指令集,旧CPU无法兼容,所以选择稍旧的稳定版本更稳妥。
- 若想确认自身CPU支持的指令集,可在宿主机执行
cat /proc/cpuinfo | grep flags,查看输出中是否包含avx2等标识;如果没有,必须选择未强制启用这些指令集的镜像。
内容的提问来源于stack exchange,提问作者busman
相关产品推荐
相关产品推荐

