![12.04 中的 CUDA nvprof 分析器](https://linux22.com/image/834003/12.04%20%E4%B8%AD%E7%9A%84%20CUDA%20nvprof%20%E5%88%86%E6%9E%90%E5%99%A8.png)
我在 12.04 服务器上安装了最新的 CUDA 工具包和驱动程序。驱动程序运行良好:所有 NVIDIA 示例代码均可编译和运行,并且我已编写、编译和运行多个 CUDA 程序。前几天,我去使用新的 nvprof 命令行分析器,结果出现以下错误:
Error: unable to locate profiling library libcuinj64.so.5.0.35.
我仔细检查了 CUDA 库,发现该特定库确实包含在 LD_LIBRARY_PATH 中。(我使用了描述的方法这里)。运行ldconfig -v
显示所有Cuda库都加载到LD_LIBRARY_PATH中:
/usr/local/cuda-5.0/lib:
libcurand.so.5.0 -> libcurand.so.5.0.35
libnpp.so.5.0 -> libnpp.so.5.0.35
libcusparse.so.5.0 -> libcusparse.so.5.0.35
libcufft.so.5.0 -> libcufft.so.5.0.35
**libcuinj32.so.5.0 -> libcuinj32.so.5.0.35**
libcudart.so.5.0 -> libcudart.so.5.0.35
libnvToolsExt.so.5.0 -> libnvToolsExt.so.5.0.35
libcublas.so.5.0 -> libcublas.so.5.0.35
/usr/local/cuda-5.0/lib64:
libcurand.so.5.0 -> libcurand.so.5.0.35
libcuinj64.so.5.0 -> libcuinj64.so.5.0.35
libnpp.so.5.0 -> libnpp.so.5.0.35
libcusparse.so.5.0 -> libcusparse.so.5.0.35
libcufft.so.5.0 -> libcufft.so.5.0.35
libcudart.so.5.0 -> libcudart.so.5.0.35
libnvToolsExt.so.5.0 -> libnvToolsExt.so.5.0.35
libcublas.so.5.0 -> libcublas.so.5.0.35
有问题的库以粗体显示。此时,旧命令行编译器工作正常,编译器本身工作正常,因此它似乎是 nvprof 特有的。
我不确定这是 Ubuntu 还是 NVIDIA 提供的 nvprof 版本。有人有在 12.04 甚至 12.10 下运行 nvprof 的经验吗?有人见过这个问题吗?我知道这是一个相当小众的问题,但你永远不知道。
更新:这个问题似乎在装有 CUDA 5.5(2013 年 8 月 1 日发布)的 Ubuntu 12.04 上仍然存在。修复仍然有效,您只需使用更新的库(见下文)。
答案1
我知道这已经过时了,但这仍然是 Google 上第一次发现这个问题,我想让人们知道如何修复它。查看 strace 告诉我它在任何路径中都找不到库(看起来它出于某种原因正在查看一组不同的文件夹)。无论如何,我只是将我的库副本链接到它正在查看的目录之一,它工作得很好。我运行了以下代码:
sudo ln -s `locate libcuinj64.so.5.0.35` /usr/lib/x86_64-linux-gnu/libcuinj64.so.5.0.35
如果您想手动输入,可以单独运行locate命令,但如果您只有一个库副本,那么这个命令就可以正常工作。如果由于某种原因您没有上级目录,请先创建它:
sudo mkdir -p /usr/lib/x86_64-linux-gnu/
希望这可以帮助!
CUDA 5.5 更新:CUDA 5.5 的库是 libcuinj64.so.5.5.22。因此,一行命令是:
sudo ln -s `locate libcuinj64.so.5.5.22` /usr/lib/x86_64-linux-gnu/libcuinj64.so.5.5.22
答案2
这可能是由于未正确设置 $LD_LIBRARY_PATH。此环境变量应包含 CUDA 库的路径。示例:
setenv QUDA_INSTALL_PATH /usr/local/cuda/lib64
setenv LD_LIBRARY_PATH $QUDA_INSTALL_PATH/lib64:$LD_LIBRARY_PATH