报错symbol cudaGraphDebugDotPrint version libcudart.so.11.0 not defined in file libcudart.so.11.0 with

报错symbol cudaGraphDebugDotPrint version libcudart.so.11.0 not defined in file libcudart.so.11.0 with link time reference

  • 1.错误描述
  • 2.错误原因
    • nvcc -V & nvidia-smi
  • 3.问题解决

1.错误描述

今天安装paddlepaddle-gpu时来来回回安装卸载了好多遍,就是报错找不到libcudart.so.11.0动态库文件。
我安装时老老实实按照教程,nvidia-smi查看了系统cuda版本,如下所示是11.6
所以我安装的是适配11.6cuda版本的paddlepaddle-gpu,一直报错缺少libcudart动态库。

2.错误原因

我上网搜了好久,很多github issue都说是paddlepaddle官方版本的原因,其实不然。我看很多安装tensorflow库的也报这个错,在stackflow上找了原因,说有可能安装了多个版本的CUDA,不适配当前的GPU,恍然大悟。

使用以下nvcc命令,查看cuda版本为11.2

 nvcc -V 

请添加图片描述
使用以下nvidia-smi,查看cuda版本为11.6

nvidia-smi

报错symbol cudaGraphDebugDotPrint version libcudart.so.11.0 not defined in file libcudart.so.11.0 with_第1张图片

真的有两个版本,为什么呢?那就要从nvcc与nvidia-smi是什么说起了。

nvcc -V & nvidia-smi

nvcc 属于CUDA的编译器,将程序编译成可执行的二进制文件,nvidia-smi 全称是 NVIDIA System Management Interface ,是一种命令行实用工具,是帮助管理和监控NVIDIA GPU设备的。

CUDA有 runtime api 和 driver api两个接口,两者都有对应的CUDA版本, nvcc --version 显示的就是前者对应的CUDA版本,而 nvidia-smi显示的是后者对应的CUDA版本。

如果采用CUDA Toolkit Installer 一起安装的driver api和runtime api,那么他们的版本是一致的;如果用单独的GPU driver installer安装的driver api,那么随CUDA Toolkit Installer 安装的runtime api就会感知不到GPU driver版本,甚至不知道是否安装了GPU driver,这就会导致版本不一致。

通常,driver api的版本能向下兼容runtime api的版本,即 nvidia-smi 显示的版本大于nvcc --V 的版本通常不会出现大问题。

3.问题解决

那么问题就很好定位解决了,需要安装正确适配CUDA版本的库就行,也就是跟nvcc -V相匹配的CUDA版本即可。

你可能感兴趣的:(cuda,paddlepaddle)