Skip to content

srossross/oclpb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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: