CUDA 5.0想从CUDA 4.0获取libcudart吗?

时间:2013-01-15 23:35:03

标签: cuda gpu nvidia nvcc

我刚从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版nvcc重新编译了我的CUDA应用程序。我在使用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

1 个答案:

答案 0 :(得分:1)

我想把这个问题从未答复的清单中删除,我不认为@Jared Hoberock会介意,所以我将发表他的评论作为答案。如果有问题,Jared或solvePuzzles发布了答案,我会删除我的(假设它不被接受 - 我不能删除已接受的答复AFAIK)。

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

在你的lib路径的某个地方,似乎nvcc找到了一个旧的libcudart.a,需要将其删除。

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