2

我刚刚从 CUDA 4.2 升级到 CUDA 5.0。毫不奇怪,曾经被命名的库libcudart.so.4现在被称为libcudart.so.5.0. 使用 nvcc 5.0 重新编译我的代码并尝试运行代码后,我收到以下消息:

./main: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory

是的,你这个愚蠢的系统,我知道没有libcudart.so.4。那是因为它现在被称为libcudart.so.5.0. 为什么要寻找libcudart.so.4而不是libcudart.so.5.0,我该如何解决?


到目前为止我已经尝试过:

我已经检查过我的所有路径都井井有条。设置了这些环境变量:

export PATH=$PATH:/usr/local/cuda/bin:/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64:/lib
#note: /usr/local/cuda is symlinked to /usr/local/cuda-5.0

我已经验证libcudart.so.5.0可以在其中一个LD_LIBRARY_PATH目录中找到它。

我使用 CUDA 5.0 版本重新编译了我的 CUDA 应用程序nvcc。我在另一台装有 CUDA 4.2 的机器上和另一台装有 CUDA 4.0 的机器上成功编译并运行了我的应用程序。

我确认这nvcc确实在 5.0 版上:

user@host$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Fri_Sep_21_17:28:58_PDT_2012
Cuda compilation tools, release 5.0, V0.2.122
4

1 回答 1

1

我想把这个问题从未回答的列表中删除,我认为@Jared Hoberock 不会介意,所以我将发布他的评论作为答案。如果有问题并且 Jared 或 SolvePuzzles 发布了答案,我将删除我的(假设它不被接受——我无法删除已接受的答案 AFAIK)。

nvcc似乎与libcudart.a版本 4 静态链接。

在您的 lib 路径中的某处,似乎nvcc正在找到一个 old libcudart.a,需要将其删除。

对于其他读者来说,找到系统上的所有实例并删除任何与您所需的 CUDA 版本不匹配的实例就足够了libcudart.*(假设您没有尝试运行具有多个可用 CUDA 版本的机器——在这种情况下,必须适当管理编译和运行的库路径)

于 2013-10-20T21:56:51.630 回答