This package provides a binding for OpenCL based on the 1.0.48 revision.
This documentation does not describe meaning of API calls; it only describes their Racket calling conventions. For details on API semantics, refer to the specification at the Khronos OpenCL API Registry.
If you run "tests/test.rkt", it will print out a whole lot of stuff and run some code on all your OpenCL devices. This will show you that it is really doing something on your hardware.
Here are some caveats:
The binding should wrap some objects in finalizers (using register-finalizer) that decrement their reference count.
The binding should wrap objects in a struct with the prop:evt property to support synchronization in a Racket style.
These functions should provide the properties in a Racket style to look like fields or using the dictionary interface (by wrapping with prop:dict.)
’s properties argument is hard to fathom. It is defaulted to NULL in the binding.
No functions allow callbacks. ( and should.)
doesn’t automatically extract the status of each binary.
doesn’t support the 'CL_PROGRAM_BINARIES option, because its calling convention doesn’t match my macro.
clSetKernelArg is specialized for each argument type (i.e., ), but I definitely haven’t created a binding for each available argument type.
implements 'CL_KERNEL_COMPILE_WORK_GROUP_SIZE a bit wonky.
clEnqueueNativeKernel isn’t available.