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_alloc_vect :
    ('a, 'b) Spoc.Vector.vector -> int -> Spoc.Devices.generalInfo -> unit
    = "spoc_opencl_alloc_vect"
  external opencl_custom_alloc_vect :
    ('a, 'b) Spoc.Vector.vector -> int -> Spoc.Devices.generalInfo -> unit
    = "spoc_opencl_custom_alloc_vect"
  external opencl_free_vect : ('a, 'b) Spoc.Vector.vector -> int -> unit
    = "spoc_opencl_free_vect"
  external opencl_part_device_to_cpu :
    ('a, 'b) Spoc.Vector.vector ->
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    Spoc.Devices.generalInfo ->
    Spoc.Devices.gcInfo -> int -> int -> int -> int -> int -> unit
    = "spoc_opencl_part_device_to_cpu_b" "spoc_opencl_part_device_to_cpu_n"
  external opencl_custom_part_device_to_cpu :
    ('a, 'b) Spoc.Vector.vector ->
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    Spoc.Devices.generalInfo ->
    Spoc.Devices.gcInfo -> int -> int -> int -> int -> int -> unit
    = "spoc_opencl_custom_part_device_to_cpu_b"
    "spoc_opencl_custom_part_device_to_cpu_n"
  external opencl_part_cpu_to_device :
    ('a, 'b) Spoc.Vector.vector ->
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    Spoc.Devices.generalInfo ->
    Spoc.Devices.gcInfo -> int -> int -> int -> int -> int -> unit
    = "spoc_opencl_part_cpu_to_device_b" "spoc_opencl_part_cpu_to_device_n"
  external opencl_custom_part_cpu_to_device :
    ('a, 'b) Spoc.Vector.vector ->
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    Spoc.Devices.generalInfo ->
    Spoc.Devices.gcInfo -> int -> int -> int -> int -> int -> unit
    = "spoc_opencl_custom_part_cpu_to_device_b"
    "spoc_opencl_custom_part_cpu_to_device_n"
  external opencl_cpu_to_device :
    ('a, 'b) Spoc.Vector.vector ->
    int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_opencl_cpu_to_device"
  external opencl_device_to_device :
    ('a, 'b) Spoc.Vector.vector -> int -> Spoc.Devices.device -> unit
    = "spoc_opencl_device_to_device"
  external opencl_device_to_cpu :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    Spoc.Devices.generalInfo -> Spoc.Devices.specificInfo -> int -> unit
    = "spoc_opencl_device_to_cpu"
  external opencl_custom_cpu_to_device :
    ('a, 'b) Spoc.Vector.vector ->
    int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_opencl_custom_cpu_to_device"
  external opencl_custom_device_to_cpu :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    Spoc.Devices.generalInfo -> Spoc.Devices.specificInfo -> int -> unit
    = "spoc_opencl_custom_device_to_cpu"
  external opencl_vector_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    ('a, 'b) Spoc.Vector.vector ->
    int -> int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_opencl_vector_copy_b" "spoc_opencl_vector_copy_n"
  external opencl_custom_vector_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    ('a, 'b) Spoc.Vector.vector ->
    int -> int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_opencl_custom_vector_copy_b" "spoc_opencl_custom_vector_copy_n"
  external opencl_matrix_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    int ->
    int ->
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    int -> int -> int -> int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_opencl_matrix_copy_b" "spoc_opencl_matrix_copy_n"
  external opencl_custom_matrix_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    int ->
    int ->
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    int -> int -> int -> int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_opencl_custom_matrix_copy_b" "spoc_opencl_custom_matrix_copy_n"
end