Welcome to PyOpenCL's documentation!
====================================
PyOpenCL gives you easy, Pythonic access to the `OpenCL
`__ parallel computation API.
What makes PyOpenCL special?
* Object cleanup tied to lifetime of objects. This idiom,
often called
`RAII `__
in C++, makes it much easier to write correct, leak- and
crash-free code.
* Completeness. PyOpenCL puts the full power of OpenCL's API at your
disposal, if you wish. Every obscure ``get_info()`` query and
all CL calls are accessible.
* Automatic Error Checking. All errors are automatically translated
into Python exceptions.
* Speed. PyOpenCL's base layer is written in C++, so all the niceties above
are virtually free.
* Helpful Documentation. You're looking at it. ;)
* Liberal license. PyOpenCL is open-source under the
:ref:`MIT license `
and free for commercial, academic, and private use.
Here's an example, to give you an impression:
.. literalinclude:: ../examples/demo.py
(You can find this example as
:download:`examples/demo.py <../examples/demo.py>` in the PyOpenCL
source distribution.)
Tutorials
=========
* Gaston Hillar's `two-part article series
`__
in Dr. Dobb's Journal provides a friendly introduction to PyOpenCL.
* `Simon McIntosh-Smith `__
and `Tom Deakin `__'s course
`Hands-on OpenCL `__ contains
both `lecture slides `__
and `exercises (with solutions) `__
(The course covers PyOpenCL as well as OpenCL's C and C++ APIs.)
* PyOpenCL course at `PASI `__: Parts
`1 `__
`2 `__
`3 `__
`4 `__
(YouTube, 2011)
* PyOpenCL course at `DTU GPULab `__ and
`Simula `__ (2011):
`Lecture 1 `__
`Lecture 2 `__
`Problem set 1 `__
`Problem set 2 `__
* Ian Johnson's `PyOpenCL tutorial `__.
Software that works with or enhances PyOpenCL
=============================================
* Jon Roose's `pyclblas `__
(`code `__)
makes BLAS in the form of `clBLAS `__
available from within :mod:`pyopencl` code.
Two earlier wrappers continue to be available:
one by `Eric Hunsberger `__ and one
by `Lars Ericson `__.
* Cedric Nugteren provides a wrapper for the
`CLBlast `__
OpenCL BLAS library:
`PyCLBlast `__.
* Gregor Thalhammer's `gpyfft `__ provides a
Python wrapper for the OpenCL FFT library clFFT from AMD.
* Bogdan Opanchuk's `reikna `__ offers a
variety of GPU-based algorithms (FFT, random number generation, matrix
multiplication) designed to work with :class:`pyopencl.array.Array` objects.
* Troels Henriksen, Ken Friis Larsen, and Cosmin Oancea's `Futhark
`__ programming language offers a nice way to code
nested-parallel programs with reductions and scans on data in
:class:`pyopencl.array.Array` instances.
* Robbert Harms and Alard Roebroeck's `MOT `__
offers a variety of GPU-enabled non-linear optimization algorithms and MCMC
sampling routines for parallel optimization and sampling of multiple problems.
* Vincent Favre-Nicolin's `pyvkfft `__
makes `vkfft `__ accessible from PyOpenCL.
If you know of a piece of software you feel that should be on this list, please
let me know, or, even better, send a patch!
Contents
========
.. toctree::
:maxdepth: 2
runtime
runtime_const
runtime_platform
runtime_queue
runtime_memory
runtime_program
runtime_gl
tools
array
types
algorithm
howto
misc
🚀 Github
💾 Download Releases
Note that this guide does not explain OpenCL programming and technology. Please
refer to the official `Khronos OpenCL documentation `__
for that.
PyOpenCL also has its own `web site `__,
where you can find updates, new versions, documentation, and support.
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`