Home > CyCL

CyCL

CyCL is a project mainly written in Python, based on the MIT license.

Cython openCL

======

Example usage::

import cycl
import numpy as np

kernel = 
"""
__kernel void fill(__global int *data, int value)
{
    const int i = get_global_id(0);
    data[i] = value;
}
"""

platform = cycl.getPlatforms()[0]
device = platform.getDevices()[0]
ctx = platform.createContext([device])

device_buffer = ctx.createBuffer(512 * 512 * 4)
host_buffer = np.zeros((512, 512), 'int32')
queue = ctx.createCommandQueue(device)

program = ctx.createProgramWithSource(kernel).build()
print program.getBuildLog(device)

kernel = program.createKernel("fill")
kernel.parameters = (cycl.parameter_type.MEM_TYPE, cycl.parameter_type.INT_TYPE)

kernel.setArgs(device_buffer, 10)

cmd1 = cycl.CLNDRangeKernel(kernel, global_work_size = (512 * 512, 1, 1), local_work_size = (256, 1, 1))
cmd2 = cycl.CLReadBufferNDArray(host_buffer, device_buffer)

queue.enqueue(cmd1)
queue.enqueue(cmd2)

queue.finish()
print host_buffer