sig
  exception No_Cuda_Device
  exception ERROR_DEINITIALIZED
  exception ERROR_NOT_INITIALIZED
  exception ERROR_INVALID_CONTEXT
  exception ERROR_INVALID_VALUE
  exception ERROR_OUT_OF_MEMORY
  exception ERROR_INVALID_DEVICE
  exception ERROR_NOT_FOUND
  exception ERROR_FILE_NOT_FOUND
  exception ERROR_UNKNOWN
  exception ERROR_LAUNCH_FAILED
  exception ERROR_LAUNCH_OUT_OF_RESOURCES
  exception ERROR_LAUNCH_TIMEOUT
  exception ERROR_LAUNCH_INCOMPATIBLE_TEXTURING
  external cuda_custom_alloc_vect :
    ('a, 'b) Spoc.Vector.vector -> int -> Spoc.Devices.generalInfo -> unit
    = "spoc_cuda_custom_alloc_vect"
  external cuda_alloc_vect :
    ('a, 'b) Spoc.Vector.vector -> int -> Spoc.Devices.generalInfo -> unit
    = "spoc_cuda_alloc_vect"
  external cuda_free_vect : ('a, 'b) Spoc.Vector.vector -> int -> unit
    = "spoc_cuda_free_vect"
  external cuda_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_cuda_part_device_to_cpu_b" "spoc_cuda_part_device_to_cpu_n"
  external cuda_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_cuda_custom_part_device_to_cpu_b"
    "spoc_cuda_custom_part_device_to_cpu_n"
  external cuda_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_cuda_part_cpu_to_device_b" "spoc_cuda_part_cpu_to_device_n"
  external cuda_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_cuda_custom_part_cpu_to_device_b"
    "spoc_cuda_custom_part_cpu_to_device_n"
  external cuda_cpu_to_device :
    ('a, 'b) Spoc.Vector.vector ->
    int -> Spoc.Devices.generalInfo -> Spoc.Devices.gcInfo -> int -> unit
    = "spoc_cuda_cpu_to_device"
  external cuda_device_to_device :
    ('a, 'b) Spoc.Vector.vector -> int -> Spoc.Devices.device -> unit
    = "spoc_cuda_device_to_device"
  external cuda_device_to_cpu :
    ('a, 'b) Spoc.Vector.vector ->
    int -> Spoc.Devices.generalInfo -> Spoc.Devices.device -> int -> unit
    = "spoc_cuda_device_to_cpu"
  external cuda_custom_cpu_to_device :
    ('a, 'b) Spoc.Vector.vector ->
    int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_cuda_custom_cpu_to_device"
  external cuda_custom_device_to_cpu :
    ('a, 'b) Spoc.Vector.vector ->
    int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_cuda_custom_device_to_cpu"
  external cuda_vector_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    ('a, 'b) Spoc.Vector.vector ->
    int -> int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_cuda_vector_copy_b" "spoc_cuda_vector_copy_n"
  external cuda_custom_vector_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    ('a, 'b) Spoc.Vector.vector ->
    int -> int -> Spoc.Devices.generalInfo -> int -> unit
    = "spoc_cuda_custom_vector_copy_b" "spoc_cuda_custom_vector_copy_n"
  external cuda_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_cuda_matrix_copy_b" "spoc_cuda_matrix_copy_n"
  external cuda_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_cuda_custom_matrix_copy_b" "spoc_cuda_custom_matrix_copy_n"
end