Welcome to OpenCL for Python’s documentation!

This is yet another set of Python bindings for OpenCL.


This project currently is in a beta release state.


  • Python 2 and Python 3 compatibility.

  • Supports OpenCL 1.1

  • Discoverable properties and methods:

    No more ctx.get_info(pyopencl.context_info.DEVICES) just do ctx.devices

  • Tight integration with ctypes:

    import opencl as cl
    from ctypes import c_float
    ctx =  cl.Context()
    a = cl.empty(ctx, [2, 3], ctype=c_float)
  • Call kernels like a python function with defaults and keyword arguments:

    import opencl as cl
    from ctypes import c_float, c_int
    source = '__kernel void foo(__global float*a, int b, float c) ...'
    # Create a program and context
    foo = program.foo
    foo.argnames = 'a', 'b', 'c'
    foo.argtypes = cl.global_memory(c_float, ndim=2), c_int, c_float
    # Equivalent to def foo(a, b=1, c=2.0):
    foo.__defaults__ = 1, 2.0
    event = foo(queue, a)
  • Memory objects support indexing and slicing:

    mem2 = memobj[:, 1, :-1]

Indices and tables

Table Of Contents

Next topic

Getting Started

This Page