当前位置: 首页 > wzjs >正文

口碑好的盐城网站建设全球最顶尖的设计公司

口碑好的盐城网站建设,全球最顶尖的设计公司,网站设计评价指标,如何拷贝服务器里面网站做备份引言 在使用 PyTorch 进行深度学习开发时,CUDA 版本兼容性问题是个老生常谈的话题。本文将通过一次真实的排查过程,剖析 PyTorch 虚拟环境自带 CUDA 运行时库与系统全局 CUDA 环境冲突的场景,并一步步分析问题、定位原因,并最终给…

引言

在使用 PyTorch 进行深度学习开发时,CUDA 版本兼容性问题是个老生常谈的话题。本文将通过一次真实的排查过程,剖析 PyTorch 虚拟环境自带 CUDA 运行时库与系统全局 CUDA 环境冲突的场景,并一步步分析问题、定位原因,并最终给出解决方案。

问题复现:ImportError: undefined symbol

始于一个看似简单的 import torch 语句

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ python
Python 3.12.9 (main, Feb 12 2025, 14:50:50) [Clang 19.1.6 ] on linux
Type "help", "copyright", "credits" or "license" for more information.>>> import torch
>>> Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
>>> File "/home/wangh/codes/ModelForger/.venv/lib/python3.12/site-packages/torch/__init__.py", line 367, in <module>
>>> from torch._C import *  # noqa: F403
>>> ^^^^^^^^^^^^^^^^^^^^^^
>>> ImportError: /home/wangh/codes/ModelForger/.venv/lib/python3.12/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12

错误信息很明确,在 libcusparse.so.12 中找不到符号 __nvJitLinkComplete_12_4,这通常意味着存在版本不匹配的问题。

初步排查:环境 & CUDA 版本

首先,我们检查一下环境和 CUDA 版本

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ echo $LD_LIBRARY_PATH
/usr/local/cuda/lib64:(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:17:15_PST_2023
Cuda compilation tools, release 12.3, V12.3.107
Build cuda_12.3.r12.3/compiler.33567101_0(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ uv pip list | grep nvidia
Using Python 3.12.9 environment at: /home/wangh/codes/ModelForger/.venv
nvidia-cublas-cu12        12.4.5.8
nvidia-cuda-cupti-cu12    12.4.127
nvidia-cuda-nvrtc-cu12    12.4.127
nvidia-cuda-runtime-cu12  12.4.127
nvidia-cudnn-cu12         9.1.0.70
nvidia-cufft-cu12         11.2.1.3
nvidia-curand-cu12        10.3.5.147
nvidia-cusolver-cu12      11.6.1.9
nvidia-cusparse-cu12      12.3.1.170
nvidia-nccl-cu12          2.21.5
nvidia-nvjitlink-cu12     12.4.127
nvidia-nvtx-cu12          12.4.127

发现了两个关键信息

  1. nvcc --version 系统安装的 CUDA 版本是 12.3。
  2. nvidia-* 虚拟环境安装的 nvjitlink 版本号为 12.4.127。

根据错误信息可知,PyTorch 虚拟环境中的动态库 libcusparse.so.12 需要的正是 libnvJitLink.so.12__nvJitLinkComplete_12_4 版本,pip 安装的依赖包版本自身没有问题,因此推测可能错误链接到了系统中 CUDA 12.3 的 libnvJitLink.so.12

分析:动态链接库加载路径

为了验证猜想,我们使用 patchelfldd 命令查看 libcusparse.so.12 的动态链接状态:

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ patchelf --print-rpath libcusparse.so.12
$ORIGIN:$ORIGIN/../../nvjitlink/lib(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ ldd libcusparse.so.12linux-vdso.so.1 (0x00007ffc507e2000)libnvJitLink.so.12 => /usr/local/cuda/lib64/libnvJitLink.so.12 (0x00007f867a399000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f867a353000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f867a349000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f867a343000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f867a1f4000)libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f867a1d7000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8679fe5000)/lib64/ld-linux-x86-64.so.2 (0x00007f868e62d000)

果不其然 libcusparse.so.12 依赖的 libnvJitLink.so.12 被加载到了系统 CUDA 目录 (/usr/local/cuda/lib64) 下,而不是预定义的 PyTorch 虚拟环境的目录。

问题根源:LD_LIBRARY_PATH 优先级

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ echo $LD_LIBRARY_PATH
/usr/local/cuda/lib64:

至此,问题根源已经明确:LD_LIBRARY_PATH 环境变量导致系统 CUDA 库路径优先于 PyTorch 虚拟环境的 CUDA 库路径被加载。这导致了版本不匹配,PyTorch 无法找到所需的符号。

解决方案:unset LD_LIBRARY_PATH

解决这个问题最直接的方法就是移除 LD_LIBRARY_PATH 对系统 CUDA 路径的设置:

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ unset LD_LIBRARY_PATH

再次查看 libcusparse.so.12 的动态链接:

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ ldd libcusparse.so.12linux-vdso.so.1 (0x00007fff959a7000)libnvJitLink.so.12 => /home/wangh/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib/./../../nvjitlink/lib/libnvJitLink.so.12 (0x00007f303000e000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f302ffc8000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f302ffbe000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f302ffb8000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f302fe69000)libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f302fe4c000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f302fc5a000)/lib64/ld-linux-x86-64.so.2 (0x00007f30443f9000)

现在,libnvJitLink.so.12 正确地加载到了 PyTorch 虚拟环境的目录下。

验证:问题解决

(modelforger) wangh@ubuntu:~/codes/ModelForger/.venv/lib/python3.12/site-packages/nvidia/cusparse/lib$ python
Python 3.12.9 (main, Feb 12 2025, 14:50:50) [Clang 19.1.6 ] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch

import torch 成功!问题解决。

最佳实践与总结

  1. 避免全局设置 LD_LIBRARY_PATH 在全局环境变量(如 .bashrc.bash_profile)中设置 LD_LIBRARY_PATH 会干扰虚拟环境的独立性。
  2. 理解动态链接机制: 了解 LD_LIBRARY_PATH 的作用以及动态链接库的加载顺序,有助于快速定位和解决类似问题。
http://www.dtcms.com/wzjs/789710.html

相关文章:

  • 简阳建设厅官方网站梅州建站怎么做
  • 本站3天更换一次域名yw网络设计院
  • 联想官方服务网站中国建设服务信息官网
  • 淄博做网站推广哪家好自己怎么做引流推广
  • 做app还是做网站职业生涯规划大赛规划书
  • 网站代下单怎么做公司名字大全三个字
  • 中小企业网站该怎么做贵州建设厅考试网站准考证下载
  • 合肥企业网站制作公司深圳龙岗网络
  • 网站建设制作软件刀具东莞网站建设
  • 网站建设合同 完整版玉树网站建设
  • 网站开发工程师面试问哪些问题网站建设安全吗
  • 网站建设属于什么合同永久免费生成app网页
  • 全国免费自学网站有哪些如何开发自己的app软件
  • 蓬莱市住房和规划建设管理局网站游戏网页设计教程
  • 英文广告网站模板免费下载沧州网站建设联系电话
  • wordpress 过滤标签河南搜索引擎优化
  • 称多网站建设苏州技术馆网站建设
  • 做网站建设的注意事项企业免费建站
  • 中英文微信网站开发网站建设工作室怎么开
  • 企业网站备案资料医疗器械三证是哪三证
  • 网站做第三方登录漯河网页制作
  • 企业网站源码一流的网站建设流程图
  • 常州建设局网站为什么打不开手机ps在线图片编辑
  • 番禺区网站建设wordpress代码实现网站地图
  • 广州市建设和水务局网站ui设计软件官网
  • 网站备案掉了什么原因河南渠道网
  • 自己做的网站怎么传到空间啊北京网站建设多少钱
  • 大姚县建设工程招标网站c 手机网站开发模板
  • 管理网站开发教程保定门户网站
  • wordpress 瀑布流ajax优速网站建设优化seo