2016-03-01 3 views
0

Я пытаюсь установить pyopencl (2014.1) на машине Ubuntu (3.13.0.77, x86_64) в качестве пользователя (нет привилегий root). При запускеУстановка pyopencl на Ubuntu как пользователь

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 compilation tools, release 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

Для установки 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 
    

Чтобы активировать OpenGL interoperations

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

Важно то, что nvidia.icd доступен в/и т.д./OpenCL/поставщиков /. OPENCL_VENDOR_PATH не работает с nvidia. Альтернативно, Ubuntu ICD Loader может использоваться, чтобы указать, где искать nvidia.icd.

Примечание: Дополнительная информация и пример пиопенкла на Repository.