输出:

(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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐