我正在尝试以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我需要做什么?
答案 0 :(得分:0)
为了使用pip安装pyopencl,需要设置以下内容。
为C和C ++添加头文件的路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/path/to/cuda/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/path/to/cuda/include
添加库文件的路径(libOpenCl.so)
export LIBRARY_PATH=$LIBRARY_PATH:/path/to/cuda/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cuda/lib
添加可执行文件的路径(可选)
export PATH=$PATH:/path/to/cuda/bin
激活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
希望对您有帮助。