conda新环境,测试PyTorch + CUDA ,报错总是“/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent”
输出:
(layout310) ➜ code python - << 'EOF'
import torch
print("PyTorch version:", torch.__version__)
print("Built with CUDA:", torch.version.cuda)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU name:", torch.cuda.get_device_name(0))
EOF
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/conda/envs/layout310/lib/python3.10/site-packages/torch/__init__.py", line 235, in <module>
from torch._C import * # noqa: F403
ImportError: /opt/conda/envs/layout310/lib/python3.10/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
(layout310) ➜ code conda list | grep -E "pytorch|cuda"
cuda-cudart 11.8.89 0 nvidia
cuda-cupti 11.8.87 0 nvidia
cuda-libraries 11.8.0 0 nvidia
cuda-nvrtc 11.8.89 0 nvidia
cuda-nvtx 11.8.86 0 nvidia
cuda-runtime 11.8.0 0 nvidia
cuda-version 12.9 3 nvidia
pytorch 2.1.0 py3.10_cuda11.8_cudnn8.7.0_0 pytorch
pytorch-cuda 11.8 h7e8668a_6 pytorch
pytorch-mutex 1.0 cuda pytorch
torchtriton 2.1.0 py310 pytorch
这个报错你贴得非常关键,而且你现在这个状态其实是:
conda 里看起来“装对了”,但底层有一个典型的二进制符号冲突
我一步一步给你拆清楚,不是玄学问题,是已知且可修的。
一、先看清楚错误本质(重点)
报错核心是这一句:
ImportError: libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
🔍 这说明什么?
iJIT_NotifyEvent 是 Intel oneAPI / VTune / OpenMP (iomp5) 相关的符号。
👉 结论:
PyTorch 在加载
libtorch_cpu.so时,
找不到它所期望的 Intel OpenMP / oneAPI 运行时库
这 不是 CUDA 问题,也 不是 PyTorch 版本装错。
二、结合你当前 conda list,问题更清楚了
你现在的关键包是:
pytorch 2.1.0 py3.10_cuda11.8_cudnn8.7.0_0 pytorch-cuda 11.8 torchtriton 2.1.0
CUDA 这块 是完全正确的 ✅
但 缺了一块 CPU 运行时依赖。
三、为什么会出现这个问题(原因解释)
这是一个经典 conda + PyTorch 2.x 问题
在以下场景极易出现:
-
Linux / 容器 / 平台环境
-
系统里 没有 Intel oneAPI
-
conda 环境中 缺少
intel-openmp或mkl -
或被
nomkl/ 其他包“挤掉了”
PyTorch 的 CPU backend 默认依赖:
-
intel-openmp -
mkl(或 mkl-service)
但 conda 有时不会自动拉全
四、解决方案(直接照着做)
✅ 方案一(推荐,最稳):补齐 Intel 运行时
在 layout310 环境里直接执行:(这是有用的!!亲测!!)
conda install -y intel-openmp mkl mkl-service -c conda-forge
⭐️⭐️====这个是有用的!!一开始GPT和豆包让我:没效果
conda install -y intel-openmp
#### 这个没用啊
然后 立刻再试:
python - << 'EOF' import torch print(torch.__version__) print(torch.cuda.is_available()) EOF
80% 的情况下,这一步直接解决
✅ 方案二(如果方案一没好):强制使用 conda-forge 的 OpenMP
conda install -y libgomp -c conda-forge
再测一次。
五、一个你现在“可以放心忽略”的东西
你这里有一行:
cuda-version 12.9 3 nvidia
这 不会影响 PyTorch,原因是:
-
PyTorch 只用自己链接的 CUDA 11.8
-
conda 的
cuda-version只是一个 meta package -
❌ 它不是运行时库
👉 不用管,也不用删
六、为什么我确定不是你装错 PyTorch?
因为如果是 PyTorch / CUDA 真冲突,你会看到的是:
-
libcudart.so not found -
CUDA driver version is insufficient -
libnvrtc.so报错
而你现在是:
❌
libtorch_cpu.so
❌ Intel JIT symbol missing
这是 CPU 依赖问题,不是 GPU
更多推荐
所有评论(0)