OpenCL Python Bindings
Python Shell C
Permalink
Failed to load latest commit information.
doc Updated version info to be included in package. Jan 10, 2012
examples ENH+DOC: Added examples and documentation. Dec 19, 2011
opencl Updated version info to be included in package. Jan 10, 2012
.gitignore UPdated Git ignore. Jan 4, 2012
.pydevproject Removed clyther components. for opencl python bindings refactor. Dec 16, 2011
MANIFEST.in Updated version info to be included in package. Jan 10, 2012
README.rst DOC: fixed html link in readme. Jan 6, 2012
license.rst
setup.py Updated version info to be included in package. Jan 10, 2012

README.rst

Welcome to OpenCL for Python's documentation!

This is yet another set of Python bindings for OpenCL.

Warning

This project currently is in a beta release state.

Features:

  • 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]
    

Links: