以用户

时间:2016-03-01 11:12:24

标签: ubuntu pip pyopencl

我正在尝试以Ubuntu机器(3.13.0.77,x86_64)作为用户安装pyopencl(2014.1)(没有root权限)。 运行时

pip install —global-option=build_ext —global-option=„-I/opt/sw/cuda/include -L/opt/sw/cuda/lib64“ pyopencl==2014.1

编译器抛出

x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -fwrapv -Wall -O3 -DNDEBUG -fPIC -DBOOST_PYTHON_SOURCE=1 -DPYGPU_PACKAGE=pyopencl -DPYOPENCL_USE_DEVICE_FISSION=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DPYGPU_PYOPENCL=1 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION=1 -DBOOST_THREAD_BUILD_DLL=1 -Dboost=pyopenclboost -DBOOST_ALL_NO_LIB=1 -Ibpl-subset/bpl_subset -I/opt/sw/cuda/include -L/opt/sw/cuda/lib64 -I/usr/include/python2.7 -c src/wrapper/wrap_cl.cpp -o build/temp.linux-x86_64-2.7/src/wrapper/wrap_cl.o
  In file included from src/wrapper/wrap_cl.cpp:1:0:
  src/wrapper/wrap_cl.hpp:28:19: fatal error: CL/cl.h: No such file or directory
   #include <CL/cl.h>

Cuda版本

  

Cuda编译工具,7.0版,V7.0.27

当通过setuptools编译包时,它实际上成功但我无法导入pyopencl。相反,我得到错误:

import pyopencl
pyopencl/__init__.py:34: UserWarning: It looks like you are importing PyOpenCL from its source directory. This likely won't work.
warn("It looks like you are importing PyOpenCL from "
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pyopencl/__init__.py", line 28, in <module>
  import pyopencl._cl as _cl
ImportError: No module named _cl

警告显然意味着我做错了什么,但如何从正确的目录中导入pyopencl?

我的siteconf.py看起来像是:

BOOST_INC_DIR = []
BOOST_LIB_DIR = []
BOOST_COMPILER = 'gcc43'
BOOST_PYTHON_LIBNAME = ['boost_python-py27']
USE_SHIPPED_BOOST = True
CL_TRACE = False
CL_ENABLE_GL = False
CL_ENABLE_DEVICE_FISSION = False
CL_INC_DIR = ['/opt/sw/cuda/include']
CL_LIB_DIR = ['/opt/sw/cuda/lib64']
CL_LIBNAME = ['OpenCL']
CXXFLAGS = []
LDFLAGS = []

从正确的目录导入pyopencl我需要做什么?

2 个答案:

答案 0 :(得分:0)

为了使用pip安装pyopencl,需要设置以下内容。

  1. 为C和C ++添加头文件的路径

    export C_INCLUDE_PATH=$C_INCLUDE_PATH:/path/to/cuda/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/path/to/cuda/include
    
  2. 添加库文件的路径(libOpenCl.so)

    export LIBRARY_PATH=$LIBRARY_PATH:/path/to/cuda/lib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cuda/lib
    
  3. 添加可执行文件的路径(可选)

    export PATH=$PATH:/path/to/cuda/bin
    
  4. 激活OpenGL互操作

     pip install --global-option=build_ext --global-option="-DHAVE_GL=1" pyopencl
    

    重要的是,nvidia.icd可以在/ etc / OpenCL / vendors /中找到。 OPENCL_VENDOR_PATH不适用于nvidia。或者,Ubuntu ICD Loader可用于指定查找nvidia.icd的位置。

    注意:Repository处的更多信息和pyopencl示例。

答案 1 :(得分:0)

如果尚未安装OpenCL标头,则可能会丢失它们。在ubuntu上,您可以运行:

sudo apt-get install opencl-headers

然后可以在/usr/include/CL中找到已安装的标题:

# ls -1 /usr/include/CL
cl.h
cl2.hpp
cl_d3d10.h
cl_d3d11.h
cl_dx9_media_sharing.h
cl_egl.h
cl_ext.h
cl_gl.h
cl_gl_ext.h
cl_platform.h
opencl.h

希望对您有帮助。