Module Sarek_opencl.Opencl_bindings

Library Loading

val opencl_lib : Dl.library option Stdlib.Lazy.t

Load OpenCL library dynamically (lazy)

val is_available : unit -> bool

Check if OpenCL library is available

val get_opencl_lib : unit -> Dl.library

Get OpenCL library, raising if not available

val foreign_cl_lazy : string -> ('a -> 'b) Ctypes.fn -> ('a -> 'b) lazy_t

Create a lazy foreign binding to OpenCL

Platform API

val clGetPlatformIDs_lazy : (Opencl_types.cl_uint -> Opencl_types.cl_platform_id Ctypes_static.ptr -> Opencl_types.cl_uint Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetPlatformIDs : Opencl_types.cl_uint -> Opencl_types.cl_platform_id Ctypes_static.ptr -> Opencl_types.cl_uint Ctypes_static.ptr -> Opencl_types.cl_int
val clGetPlatformInfo_lazy : (Opencl_types.cl_platform_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetPlatformInfo : Opencl_types.cl_platform_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int

Device API

val clGetDeviceIDs_lazy : (Opencl_types.cl_platform_id -> Opencl_types.cl_bitfield -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> Opencl_types.cl_uint Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetDeviceInfo_lazy : (Opencl_types.cl_device_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetDeviceInfo : Opencl_types.cl_device_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int

Context API

val clCreateContext_lazy : (Opencl_types.cl_ulong Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> unit Ctypes_static.ptr -> unit Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_context) lazy_t
val clCreateContext : Opencl_types.cl_ulong Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> unit Ctypes_static.ptr -> unit Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_context
val clCreateContextFromType_lazy : (Opencl_types.cl_ulong Ctypes_static.ptr -> Opencl_types.cl_bitfield -> unit Ctypes_static.ptr -> unit Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_context) lazy_t
val clCreateContextFromType : Opencl_types.cl_ulong Ctypes_static.ptr -> Opencl_types.cl_bitfield -> unit Ctypes_static.ptr -> unit Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_context
val clRetainContext_lazy : (Opencl_types.cl_context -> Opencl_types.cl_int) lazy_t
val clReleaseContext_lazy : (Opencl_types.cl_context -> Opencl_types.cl_int) lazy_t
val clGetContextInfo_lazy : (Opencl_types.cl_context -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetContextInfo : Opencl_types.cl_context -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int

Command Queue API

val clCreateCommandQueueWithProperties_lazy : (Opencl_types.cl_context -> Opencl_types.cl_device_id -> Opencl_types.cl_ulong Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_command_queue) option lazy_t
val clCreateCommandQueueWithProperties : Opencl_types.cl_context -> Opencl_types.cl_device_id -> Opencl_types.cl_ulong Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_command_queue option
val clCreateCommandQueue_lazy : (Opencl_types.cl_context -> Opencl_types.cl_device_id -> Opencl_types.cl_bitfield -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_command_queue) option lazy_t
val clRetainCommandQueue_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_int) lazy_t
val clReleaseCommandQueue_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_int) lazy_t
val clReleaseCommandQueue : Opencl_types.cl_command_queue -> Opencl_types.cl_int
val clFlush_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_int) lazy_t
val clFinish_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_int) lazy_t

Memory Object API

val clCreateBuffer_lazy : (Opencl_types.cl_context -> Opencl_types.cl_bitfield -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_mem) lazy_t
val clCreateBuffer : Opencl_types.cl_context -> Opencl_types.cl_bitfield -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_mem
val clRetainMemObject_lazy : (Opencl_types.cl_mem -> Opencl_types.cl_int) lazy_t
val clRetainMemObject : Opencl_types.cl_mem -> Opencl_types.cl_int
val clReleaseMemObject_lazy : (Opencl_types.cl_mem -> Opencl_types.cl_int) lazy_t
val clReleaseMemObject : Opencl_types.cl_mem -> Opencl_types.cl_int
val clGetMemObjectInfo_lazy : (Opencl_types.cl_mem -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetMemObjectInfo : Opencl_types.cl_mem -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int

Enqueue Operations

val clEnqueueReadBuffer_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> Opencl_types.cl_bool -> Unsigned.size_t -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clEnqueueReadBuffer : Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> Opencl_types.cl_bool -> Unsigned.size_t -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int
val clEnqueueWriteBuffer_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> Opencl_types.cl_bool -> Unsigned.size_t -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clEnqueueWriteBuffer : Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> Opencl_types.cl_bool -> Unsigned.size_t -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int
val clEnqueueCopyBuffer_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> Opencl_types.cl_mem -> Unsigned.size_t -> Unsigned.size_t -> Unsigned.size_t -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clEnqueueCopyBuffer : Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> Opencl_types.cl_mem -> Unsigned.size_t -> Unsigned.size_t -> Unsigned.size_t -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int
val clEnqueueFillBuffer_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> unit Ctypes_static.ptr -> Unsigned.size_t -> Unsigned.size_t -> Unsigned.size_t -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) option lazy_t
val clEnqueueFillBuffer : Opencl_types.cl_command_queue -> Opencl_types.cl_mem -> unit Ctypes_static.ptr -> Unsigned.size_t -> Unsigned.size_t -> Unsigned.size_t -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int

Program API

val clCreateProgramWithSource_lazy : (Opencl_types.cl_context -> Opencl_types.cl_uint -> string Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_program) lazy_t
val clCreateProgramWithSource : Opencl_types.cl_context -> Opencl_types.cl_uint -> string Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_program
val clCreateProgramWithBinary_lazy : (Opencl_types.cl_context -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Unsigned.uchar Ctypes_static.ptr Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_program) lazy_t
val clCreateProgramWithBinary : Opencl_types.cl_context -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Unsigned.uchar Ctypes_static.ptr Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_program
val clBuildProgram_lazy : (Opencl_types.cl_program -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> string -> unit Ctypes_static.ptr -> unit Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clBuildProgram : Opencl_types.cl_program -> Opencl_types.cl_uint -> Opencl_types.cl_device_id Ctypes_static.ptr -> string -> unit Ctypes_static.ptr -> unit Ctypes_static.ptr -> Opencl_types.cl_int
val clGetProgramBuildInfo_lazy : (Opencl_types.cl_program -> Opencl_types.cl_device_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetProgramBuildInfo : Opencl_types.cl_program -> Opencl_types.cl_device_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int
val clRetainProgram_lazy : (Opencl_types.cl_program -> Opencl_types.cl_int) lazy_t
val clReleaseProgram_lazy : (Opencl_types.cl_program -> Opencl_types.cl_int) lazy_t

Kernel API

val clCreateKernel_lazy : (Opencl_types.cl_program -> string -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_kernel) lazy_t
val clCreateKernel : Opencl_types.cl_program -> string -> Opencl_types.cl_int Ctypes_static.ptr -> Opencl_types.cl_kernel
val clSetKernelArg_lazy : (Opencl_types.cl_kernel -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clSetKernelArg : Opencl_types.cl_kernel -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Opencl_types.cl_int
val clRetainKernel_lazy : (Opencl_types.cl_kernel -> Opencl_types.cl_int) lazy_t
val clReleaseKernel_lazy : (Opencl_types.cl_kernel -> Opencl_types.cl_int) lazy_t
val clGetKernelInfo_lazy : (Opencl_types.cl_kernel -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetKernelInfo : Opencl_types.cl_kernel -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int
val clGetKernelWorkGroupInfo_lazy : (Opencl_types.cl_kernel -> Opencl_types.cl_device_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetKernelWorkGroupInfo : Opencl_types.cl_kernel -> Opencl_types.cl_device_id -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int
val clEnqueueNDRangeKernel_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_kernel -> Opencl_types.cl_uint -> Unsigned.size_t Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clEnqueueNDRangeKernel : Opencl_types.cl_command_queue -> Opencl_types.cl_kernel -> Opencl_types.cl_uint -> Unsigned.size_t Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int

Event API

val clWaitForEvents_lazy : (Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clWaitForEvents : Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int
val clRetainEvent_lazy : (Opencl_types.cl_event -> Opencl_types.cl_int) lazy_t
val clReleaseEvent_lazy : (Opencl_types.cl_event -> Opencl_types.cl_int) lazy_t
val clGetEventInfo_lazy : (Opencl_types.cl_event -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetEventInfo : Opencl_types.cl_event -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int
val clGetEventProfilingInfo_lazy : (Opencl_types.cl_event -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int) lazy_t
val clGetEventProfilingInfo : Opencl_types.cl_event -> Opencl_types.cl_uint -> Unsigned.size_t -> unit Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Opencl_types.cl_int

Synchronization

val clEnqueueMarkerWithWaitList_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) option lazy_t
val clEnqueueMarkerWithWaitList : Opencl_types.cl_command_queue -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int
val clEnqueueBarrierWithWaitList_lazy : (Opencl_types.cl_command_queue -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int) option lazy_t
val clEnqueueBarrierWithWaitList : Opencl_types.cl_command_queue -> Opencl_types.cl_uint -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_event Ctypes_static.ptr -> Opencl_types.cl_int