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:: import pyopencl as cl import numpy import numpy.linalg as la a = numpy.random.rand(50000).astype(numpy.float32) b = numpy.random.rand(50000).astype(numpy.float32) ctx = cl.create_some_context() queue = cl.CommandQueue(ctx) mf = cl.mem_flags a_buf = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=a) b_buf = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=b) dest_buf = cl.Buffer(ctx, mf.WRITE_ONLY, b.nbytes) prg = cl.Program(ctx, """ __kernel void sum(__global const float *a, __global const float *b, __global float *c) { int gid = get_global_id(0); c[gid] = a[gid] + b[gid]; } """).build() prg.sum(queue, a.shape, None, a_buf, b_buf, dest_buf) a_plus_b = numpy.empty_like(a) cl.enqueue_read_buffer(queue, dest_buf, a_plus_b).wait() print la.norm(a_plus_b - (a+b)) (You can find this example as :file:`examples/demo.py` in the PyOpenCL source distribution.) Contents ======== .. toctree:: :maxdepth: 2 runtime array misc 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`