我正在 ubuntu 11.10 上安装 pycuda2011.2.2,但无法完成。当我这样做时pycuda-2011.2.2 $ make -j 4
我收到此错误:
/usr/bin/ld: cannot find -lboost_python-mt ,
/usr/bin/ld: cannot find -lcuda
我在谷歌搜索和解决方案中也找到了 1 个完全匹配的问题:
$ sudo ln -s /usr/lib/libboost_python-mt-py26 /usr/lib/libboost_python-mt
但是,我的问题并没有消失。
我很纳闷,为什么谷歌搜索没有相关结果,好像只有我才有这个问题。出了什么问题?任何帮助我都感激不尽。
谢谢,
答案1
您似乎缺少两个库,需要先安装它们。
Boost.Python
这是由libboost-python
和 `` 提供的。或者作为这些说明比如,要安装这个和其他一些先决条件(根据您的错误消息,您可能已经或可能还没有),请运行:
sudo apt-get install build-essential python-dev python-setuptools libboost-python-dev libboost-thread-dev -y
(我不建议遵循全部但是,您必须从头到尾严格遵循该页面上的说明,因为它们不是针对 Ubuntu 11.10 编写的,并且您不需要(也可能不想)将您的系统设置为使用比官方提供的更旧的编译器。)
通用计算架构
如果你已经从 Nvidia 网站下载了 CUDA 并安装了它,那么你只需要指定位置:
./configure.py --cuda-root=/where/ever/you/installed/cuda
(参见 pycuda 的通用指令页面了解详情。
在执行此操作之前,您可能需要从头开始或运行make distclean
(或make clean
如果make distclean
无法识别)。
如果你尚未下载并安装 CUDA,你可以在 Nvidia 网站上进行下载和安装。具体来说,这一页,获取适用于 Ubuntu 11.04 的 32 位或 64 位版本的 CUDA 工具包(这是最接近您系统的可用版本,并且可能会起作用)。如果您不确定安装的是 32 位还是 64 位版本的 Ubuntu,请运行uname -m
。如果显示x86_64
,则说明您拥有 64 位版本;否则,您拥有 32 位版本。还请获取开发驱动程序和 SDK。
答案2
Eliah 对此修复的看法是正确的-lcuda
。您还可以将 cuda lib 目录的位置添加到LD_LIBRARY_PATH
.
至于问题libboost-python
,请重新运行./configure
pycuda 的命令通用指令并替换--boost-python-libname=boost_python-mt
为
--boost-python-libname=boost_python-mt-py26
。
答案3
elzirac 的解决方案对我来说最有效。总体而言,在 Ubuntu 12.04 上对我有用的安装工作流程是:
确保系统默认使用python 2.7.x:
python --version
(应该说 Python 2.7.x)
消除旧的 Nvidia 驱动程序并安装 CUDA 5.5 先决条件:
sudo apt-get remove --purge nvidia*
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安装 CUDA 5.5:
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1204/x86_64/cuda-repo-ubuntu1204_5.5-0_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1204_5.5-0_amd64.deb
sudo apt-get update
sudo apt-get install cuda
更新 CUDA 5.5 环境变量:
sudo echo "/usr/local/cuda-5.0/lib64" > /etc/ld.so.conf.d/cuda-5-5.conf
使用文本编辑器将其附加:/usr/local/cuda-5.5/bin
到 PATH 行的末尾/etc/environment
下载pycuda:
wget https://pypi.python.org/packages/source/p/pycuda/pycuda-2013.1.1.tar.gz
解压:
tar xvzf pycuda-2013.1.1.tar.gz
安装:
cd pycuda-2013.1.1
rm siteconf.py
./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-mt-py27 --boost-thread-libname=boost_thread-mt --no-use-shipped-boost
sudo make install
测试pycuda安装:
cd test
python test_driver.py
答案4
我也遇到了这个问题,不过是在 Ubuntu 12.04 上。我有一个类似于 max beckett 的答案的解决方案,但不是替换--boost-python-libname=boost_python-mt
为--boost-python-libname=boost_python-mt-py26
它--boost-python-libname=boost_python-mt-py27
(请注意,“26”更改为“27”,具体取决于您拥有的 boost 版本)
检查一下你有什么提升:
ls /usr/lib/libboost_python*
./configure
在最终做出决定时,这一情况被改变了:
./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-mt-py27 --boost-thread-libname=boost_thread-mt --no-use-shipped-boost
如果你已经运行了./configure
,你需要删除./siteconf.py