sig
type kernel
external relax_vcustom : 'a Vector.vcustom -> 'b Vector.vcustom
= "%identity"
type ('a, 'b) kernelArgs =
VCustom of 'a Vector.vcustom
| VFloat32 of Vector.vfloat32
| VFloat64 of Vector.vfloat64
| VComplex32 of Vector.vcomplex32
| VInt32 of Vector.vint32
| VInt64 of Vector.vint64
| Int32 of int
| Int64 of int
| Float32 of float
| Float64 of float
| Vector of ('a, 'b) Vector.vector
| LocalFloat32 of Vector.localvfloat32
type block = {
mutable blockX : int;
mutable blockY : int;
mutable blockZ : int;
}
type grid = {
mutable gridX : int;
mutable gridY : int;
mutable gridZ : int;
}
val nbCaches : int
module Cuda :
sig
type cuda_extra
external cuda_create_extra : int -> Kernel.Cuda.cuda_extra
= "spoc_cuda_create_extra"
external cuda_load_param_vec :
int Pervasives.ref ->
Kernel.Cuda.cuda_extra -> Vector.device_vec -> unit
= "spoc_cuda_load_param_vec_b" "spoc_cuda_load_param_vec_n"
external cuda_custom_load_param_vec :
int Pervasives.ref ->
Kernel.Cuda.cuda_extra -> Vector.device_vec -> unit
= "spoc_cuda_custom_load_param_vec_b"
"spoc_cuda_custom_load_param_vec_n"
external cuda_load_param_int :
int Pervasives.ref -> Kernel.Cuda.cuda_extra -> int -> unit
= "spoc_cuda_load_param_int_b" "spoc_cuda_load_param_int_n"
external cuda_load_param_int64 :
int Pervasives.ref -> Kernel.Cuda.cuda_extra -> int -> unit
= "spoc_cuda_load_param_int64_b" "spoc_cuda_load_param_int64_n"
external cuda_load_param_float :
int Pervasives.ref -> Kernel.Cuda.cuda_extra -> float -> unit
= "spoc_cuda_load_param_float_b" "spoc_cuda_load_param_float_n"
external cuda_load_param_float64 :
int Pervasives.ref -> Kernel.Cuda.cuda_extra -> float -> unit
= "spoc_cuda_load_param_float64_b" "spoc_cuda_load_param_float64_n"
external set_block_shape :
Kernel.kernel -> Kernel.block -> Devices.generalInfo -> unit
= "spoc_cuda_set_block_shape"
external cuda_launch_grid :
int Pervasives.ref ->
Kernel.kernel ->
Kernel.grid ->
Kernel.block -> Kernel.Cuda.cuda_extra -> Devices.generalInfo -> unit
= "spoc_cuda_launch_grid_b" "spoc_cuda_launch_grid_n"
external cuda_create_dummy_kernel : unit -> Kernel.kernel
= "spoc_cuda_create_dummy_kernel"
val cudaKernelCache :
(Digest.t, Devices.generalInfo -> Kernel.kernel) Hashtbl.t array
Pervasives.ref
val cuda_load :
bool ->
int ->
string ->
string ->
('a, 'b) Kernel.kernelArgs array ->
Devices.generalInfo -> Kernel.kernel
val cuda_load_arg :
int Pervasives.ref ->
Kernel.Cuda.cuda_extra ->
Devices.device -> 'a -> 'b -> ('c, 'd) Kernel.kernelArgs -> unit
end
module OpenCL :
sig
external opencl_load_debug :
string -> string -> Devices.generalInfo -> Kernel.kernel
= "spoc_debug_opencl_load"
external opencl_load_param_vec :
int Pervasives.ref ->
Kernel.kernel ->
int -> Vector.device_vec -> Devices.generalInfo -> unit
= "spoc_opencl_load_param_vec"
external opencl_load_param_local_vec :
int Pervasives.ref ->
Kernel.kernel ->
int -> Vector.device_vec -> Devices.generalInfo -> unit
= "spoc_opencl_load_param_local_vec"
external opencl_load_param_int :
int Pervasives.ref ->
Kernel.kernel -> int -> Devices.generalInfo -> unit
= "spoc_opencl_load_param_int"
external opencl_load_param_int64 :
int Pervasives.ref ->
Kernel.kernel -> int -> Devices.generalInfo -> unit
= "spoc_opencl_load_param_int64"
external opencl_load_param_float :
int Pervasives.ref ->
Kernel.kernel -> float -> Devices.generalInfo -> unit
= "spoc_opencl_load_param_float"
external opencl_load_param_float64 :
int Pervasives.ref ->
Kernel.kernel -> float -> Devices.generalInfo -> unit
= "spoc_opencl_load_param_float64"
external opencl_launch_grid :
Kernel.kernel ->
Kernel.grid -> Kernel.block -> Devices.generalInfo -> int -> unit
= "spoc_opencl_launch_grid"
external opencl_create_dummy_kernel : unit -> Kernel.kernel
= "spoc_opencl_create_dummy_kernel"
val openCLKernelCache :
(Digest.t, Devices.generalInfo -> Kernel.kernel) Hashtbl.t array
Pervasives.ref
val opencl_load :
bool ->
bool ->
int -> string -> string -> Devices.generalInfo -> Kernel.kernel
val opencl_load_arg :
int Pervasives.ref ->
Devices.device ->
Kernel.kernel -> int -> ('a, 'b) Kernel.kernelArgs -> unit
end
exception ERROR_BLOCK_SIZE
exception ERROR_GRID_SIZE
val exec :
string ->
string ->
('a, 'b) Kernel.kernelArgs array ->
Kernel.block * Kernel.grid ->
bool -> bool -> int -> Devices.device -> unit
val run :
Devices.device ->
Kernel.block * Kernel.grid ->
?debug:bool ->
?cached:bool ->
?queue_id:int ->
(Kernel.block * Kernel.grid ->
bool -> bool -> int -> Devices.device -> 'a) ->
'a
val max : 'a -> 'a -> 'a
end