1. 今天在Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/root/anaconda3/envs/mask2former/lib/python3.10/site-packages/torch/init.py", line 235, in <module>
from torch._C import * # noqa: F403
ImportError: /root/anaconda3/envs/mask2former/lib/python3.10/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent

  • 官方的 2.1.0 + CUDA 11.8 是稳定构建,不会触发 iJIT_NotifyEvent
  • 反而 2.1.2 在部分平台(特别是 Linux/WSL)会引入 oneAPI runtime 依赖。

2. 但是降级后还是报错

你明明用的是 conda install -c pytorch -c nvidia,但是安装结果却还是生成了 .egg-info 文件,而不是 conda 的 .dist-info 目录。

👉 这说明 conda 环境里优先调用了 pip wheel,不是官方的 conda 包。
所以你安装的仍然是 pip 版(Intel oneAPI 依赖),不是你需要的 CUDA build

conda remove -y pytorch torchvision torchaudio pytorch-cuda
pip uninstall -y torch torchvision torchaudio functorch torchgen

rm -rf $CONDA_PREFIX/lib/python3.10/site-packages/torch*
rm -rf $CONDA_PREFIX/lib/python3.10/site-packages/torchaudio*
rm -rf $CONDA_PREFIX/lib/python3.10/site-packages/torchvision*
rm -rf $CONDA_PREFIX/lib/python3.10/site-packages/functorch*
rm -rf $CONDA_PREFIX/lib/python3.10/site-packages/torchgen*

# 关键:强制 conda 使用 strict 模式
conda config set channel_priority strict

# 再重新安装
conda install -y pytorch=2.1.0 torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

3. numpy降级后,又报错

😮 现在又回到了 iJIT_NotifyEvent 的老问题,说明什么?

👉 你在降级 NumPy 的时候,Conda 顺便 升级了 MKL / Intel OpenMPintel-openmpmkl 都被更新到 2025 版本)。
这些新 Intel 库又把 PyTorch 拉回去依赖 OneAPI runtime,所以重新触发了 iJIT_NotifyEvent 错误。


🔍 问题关键

  • PyTorch 官方 CUDA build 并不需要 iJIT_NotifyEvent
  • 但当 conda 安装了新版 mkl / intel-openmp 时,PyTorch 会优先链接这些库 → 导致报错。

最后成功方式:

# 降级 numpy,但避免 mkl
conda install -y "numpy<2" nomkl


你现在遇到的各种 "mkl" / "intel-openmp" / "openblas",其实都是 数值计算库(数学加速库)。PyTorch、NumPy、SciPy 这些科学计算框架,很多底层矩阵运算都依赖它们。

我来给你分清楚:


🔢 三大主要数学库

1. Intel MKL (Math Kernel Library)

  • 由 Intel 开发,专门优化了 Intel CPU 的矩阵、向量运算。
  • 优点:在 Intel CPU 上速度通常最快。
  • 缺点:
    • 依赖 Intel OneAPI runtime(比如 libiomp5.soiJIT_NotifyEvent 就是这里来的)。
    • 在非 Intel CPU 或者 WSL 环境下,可能会冲突、报错。

2. OpenBLAS

  • 一个开源的 BLAS/LAPACK 实现。
  • 优点:
    • 不依赖 Intel 的库 → 兼容性更好。
    • 在 AMD CPU、ARM CPU、WSL 里通常比 MKL 更稳定。
  • 缺点:在 Intel CPU 上,性能可能比 MKL 稍弱一些。

3. Intel OpenMP (intel-openmp)

  • OpenMP 是并行计算框架,Intel 提供了自己的实现。
  • MKL 默认用 Intel OpenMP 作为并行后端。
  • 问题:
    • 如果 PyTorch/NumPy 链接到了 Intel OpenMP,就会需要 OneAPI runtime。
    • 这就是你看到的 undefined symbol: iJIT_NotifyEvent 错误。

🔍 为什么你遇到问题?

  • 你的 PyTorch CUDA 版本本来是 不需要 Intel 库 的。
  • 但 conda 在解决依赖的时候,给 NumPy 安装了 MKL 版本(带上了 mklintel-openmp)。
  • PyTorch 在运行时就优先链接这些库 → 然后报 iJIT_NotifyEvent 错误。

✅ 解决思路

  • 如果你只想跑 GPU(CUDA),完全没必要用 MKL
  • 最稳定的方案是:用 OpenBLAS + nomkl,这样就绕开 Intel 库。
  • Conda 里有一个特别的虚拟包叫 nomkl,它的作用就是告诉 conda:别装 MKL,用 OpenBLAS
Logo

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

更多推荐