Installing PyOpenCL on Mac OS X [Edit]
Contents
This tutorial will walk you through the process of building PyOpenCL. To follow, you really only need two basic things:
Mac OS X >= 10.6 (Snow Leopard).
XCode >= 3.2
In addition, PyOpenCL's installation process will automatically download py.test 1.0.2 or newer and pytools. If you are installing without web access, you need to download these packages manually and stick them in the package's root directory before installing.
Step 1: Download and unpack PyOpenCL [Edit]
Download PyOpenCL and unpack it:
$ tar xfz pyopencl-VERSION.tar.gz
(You need version 0.90.1 or newer.)
(this is wrong and needs fixing)
Step 2: Check NumPy [Edit]
Mac OS X 10.6 includes an install of NumPy 1.2.1 in the following location (/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/numpy/). This NumPy install works fine with PyOpenCL 0.90.x, therefore if you're Python 2.6 provided by Apple in Mac OS X 10.6 you needn't do anything extra at this step.
If you have installed a newer version of NumPy and are using Python 2.6.1 from Apple you need to ensure that both the build and your running Python environment both are using the custom-installed NumPy. Check the version that python will import by default using the following command
$ python -c "import numpy; print numpy.version.version"
If you don't see your updated NumPy install listed there, you may need to adjust your PYTHONPATH as follows:
$ export PYTHONPATH=/Library/Python/2.6/site-packages:$PYTHONPATH
(to make this more permanent, add it to your ~/.bash_profile if using bash as your shell or your ~/.zshrc if using ZSH)
Step 3: Build PyOpenCL [Edit]
Next, just type:
$ cd pyopencl-VERSION # if you're not there already $ python configure.py $ make $ sudo make install
Once that works, congratulations! You've successfully built PyOpenCL.
Make sure you restart your shell before attempting to import pyopencl.
Note that this step may automatically look for and, if necessary, install a number of Python packages from the Python package index. These packages are listed under install_requires in PyOpenCL's install control file.
Optional: Boost C++ Libraries [Edit]
As of version 0.92, the Boost C++ libraries are no longer a dependency of PyOpenCL.
If you would like to use multiple packages that use Boost.Python (e.g. both PyCUDA and PyOpenCL), you can still build PyOpenCL against a separate Boost installation. If so, follow the BoostInstallationHowto. Continue here when you're done.
You may use the following configure/build snippet to specify where you installed Boost:
$ cd pyopencl-VERSION # if you're not there already $ python configure.py \ --boost-inc-dir=$HOME/pool/include \ --boost-lib-dir=$HOME/pool/lib \ --boost-python-libname=boost_python \ --boost-thread-libname=boost_thread \ --cl-libname='' \ --ldflags='-Wl,-framework,OpenCL' \ --boost-compiler='gcc42' $ make $ sudo make install
Note: You may find that the boost libraries installed into the $HOME/pool/lib directory are not just named boost_python.dylib and boost_thread.dylib, and may include version information for the GCC used in their filenames. If you find this is the case, you may want to replace the --boost-*-libname lines above with ones like the following:
--boost-python-libname=boost_python-xgcc42-mt \ --boost-thread-libname=boost_thread-xgcc42-mt \
Note, if you've installed boost as described on the linked page, you'll need to either do this before using PyOpenCL:
$ export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$HOME/pool/lib
(you can add this to your .profile (default OS X shell), .bash_profile, .zshrc, etc..)
Or, you could vary the boost instructions to install boost for all users on the system.
Optional: OpenGL Interop [Edit]
Support for OpenGL interoperation with OpenCL (sharing buffers) is available in the latest revision of the git repository:
git clone http://git.tiker.net/trees/pyopencl.git
If you don't have boost already installed, you can do the following to obtain a subset of boost to build against
git submodule init git submodule update
To turn on OpenGL interop you run configure with the following option:
python configure.py --cl-enable-gl
Note that to use it you will need PyOpenGL
Now you should be able to run the example:
python examples/gl_interop_demo.py
