_driver.cpython-36m-x86_64-linux-gnu.so:未定义符号:_ZN5boost6detail12set_tss_dataEPKvPFvPFvPvES3_ES5_S3_b

问题描述

我尝试运行 Nvidia TensoRT 的 python 示例,但在导入 pycuda 时出错:

ImportError: .../pycuda-2020.1-py3.6-linux-x86_64.egg/pycuda/_driver.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN5boost6detail12set_tss_dataEPKvPFvPFvPvES3_ES5_S3_b

我的环境:

  • Nvidia 驱动程序版本:460.73.01
  • CUDA 版本:10.0
  • CUDNN 版本:7.6.4
  • 操作系统 + 版本:Ubuntu 16.04
  • Python 版本:3.6.13

我是如何安装pycuda的:

  • pip install numpy==1.16
  • sudo apt-get install build-essential python-dev python-setuptools libboost-python-dev libboost-thread-dev -y
  • 安装提升:
    ./bootstrap.sh --with-libraries=python
    ./b2 --with-python include=".../include/python3.6m/"
    sudo ./b2 install
    
  • 安装pycuda: 我首先运行 ./configure.py --cuda-root=/usr/local/cuda-10.0,然后我更改了 siteconf.py 中的设置:USE_SHIPPED_BOOST --> False; BOOST_PYTHON_LIBNAME --> ['boost_python36']。然后
    make
    sudo make install
    

安装 PyCuda 后,我安装了 TensorFlow 1.15 和 TensorRT 7。错误发生在 from pycuda._driver import * # noqa 行上。

请教我如何解决这个问题。谢谢

解决方法

我通过下载 repo 中的文件,将它们放入 pycuda 文件夹解决了这个问题。然后我设置了 USE_SHIPPED_BOOST = True 并将其包装起来。