sig
  exception No_OpenCL_Device
  exception OPENCL_ERROR_UNKNOWN
  exception INVALID_CONTEXT
  exception INVALID_DEVICE
  exception INVALID_VALUE
  exception INVALID_QUEUE_PROPERTIES
  exception OUT_OF_RESOURCES
  exception MEM_OBJECT_ALLOCATION_FAILURE
  exception OUT_OF_HOST_MEMORY
  exception FILE_NOT_FOUND
  exception INVALID_PROGRAM
  exception INVALID_BINARY
  exception INVALID_BUILD_OPTIONS
  exception INVALID_OPERATION
  exception COMPILER_NOT_AVAILABLE
  exception BUILD_PROGRAM_FAILURE
  exception INVALID_KERNEL
  exception INVALID_ARG_INDEX
  exception INVALID_ARG_VALUE
  exception INVALID_MEM_OBJECT
  exception INVALID_SAMPLER
  exception INVALID_ARG_SIZE
  exception INVALID_COMMAND_QUEUE
  external opencl_cpu_to_device :
    ('a, 'b) Vector.vector -> int -> Devices.generalInfo -> int -> unit
    = "spoc_opencl_cpu_to_device"
  external opencl_device_to_device :
    ('a, 'b) Vector.vector -> int -> Devices.device -> unit
    = "spoc_opencl_device_to_device"
  external opencl_device_to_cpu :
    ('a, 'b) Vector.vector ->
    int -> Devices.generalInfo -> Devices.specificInfo -> int -> unit
    = "spoc_opencl_device_to_cpu"
  external opencl_custom_cpu_to_device :
    ('a, 'b) Vector.vector -> int -> Devices.generalInfo -> int -> unit
    = "spoc_opencl_custom_cpu_to_device"
  external opencl_custom_device_to_cpu :
    ('a, 'b) Vector.vector ->
    int -> Devices.generalInfo -> Devices.specificInfo -> int -> unit
    = "spoc_opencl_custom_device_to_cpu"
end