Module Sarek_cuda.Cuda_bindings

Library Loading

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

Load CUDA driver library dynamically (lazy)

val is_available : unit -> bool

Check if CUDA library is available

val get_cuda_lib : unit -> Dl.library

Get CUDA library, raising if not available

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

Create a lazy foreign binding to CUDA driver API

Initialization

val cuInit_lazy : (int -> Cuda_types.cu_result) lazy_t
val cuInit : int -> Cuda_types.cu_result

Device Management

val cuDeviceGetCount_lazy : (int Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuDeviceGetCount : int Ctypes_static.ptr -> Cuda_types.cu_result
val cuDeviceGet_lazy : (Cuda_types.cu_device Ctypes_static.ptr -> int -> Cuda_types.cu_result) lazy_t
val cuDeviceGet : Cuda_types.cu_device Ctypes_static.ptr -> int -> Cuda_types.cu_result
val cuDeviceGetName_lazy : (char Ctypes_static.ptr -> int -> Cuda_types.cu_device -> Cuda_types.cu_result) lazy_t
val cuDeviceGetName : char Ctypes_static.ptr -> int -> Cuda_types.cu_device -> Cuda_types.cu_result
val cuDeviceTotalMem_lazy : (Unsigned.size_t Ctypes_static.ptr -> Cuda_types.cu_device -> Cuda_types.cu_result) lazy_t
val cuDeviceTotalMem : Unsigned.size_t Ctypes_static.ptr -> Cuda_types.cu_device -> Cuda_types.cu_result
val cuDeviceGetAttribute_lazy : (int Ctypes_static.ptr -> int -> Cuda_types.cu_device -> Cuda_types.cu_result) lazy_t
val cuDeviceGetAttribute : int Ctypes_static.ptr -> int -> Cuda_types.cu_device -> Cuda_types.cu_result
val cuDeviceComputeCapability_lazy : (int Ctypes_static.ptr -> int Ctypes_static.ptr -> Cuda_types.cu_device -> Cuda_types.cu_result) lazy_t
val cuDeviceComputeCapability : int Ctypes_static.ptr -> int Ctypes_static.ptr -> Cuda_types.cu_device -> Cuda_types.cu_result

Context Management

val cuCtxCreate_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> Cuda_types.cu_device -> Cuda_types.cu_result) lazy_t
val cuCtxCreate : Cuda_types.cu_context Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> Cuda_types.cu_device -> Cuda_types.cu_result
val cuCtxDestroy_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxDestroy : Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuCtxPushCurrent_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxPushCurrent : Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuCtxPopCurrent_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxPopCurrent : Cuda_types.cu_context Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Cuda_types.cu_result
val cuCtxSetCurrent_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxSetCurrent : Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuCtxGetCurrent_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxGetCurrent : Cuda_types.cu_context Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Cuda_types.cu_result
val cuCtxSynchronize_lazy : (unit -> Cuda_types.cu_result) lazy_t
val cuCtxSynchronize : unit -> Cuda_types.cu_result
val cuCtxGetDevice_lazy : (Cuda_types.cu_device Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxGetDevice : Cuda_types.cu_device Ctypes_static.ptr -> Cuda_types.cu_result

Memory Management

val cuMemAlloc_lazy : (Cuda_types.cu_deviceptr Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemAlloc : Cuda_types.cu_deviceptr Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemFree_lazy : (Cuda_types.cu_deviceptr -> Cuda_types.cu_result) lazy_t
val cuMemcpyHtoD_lazy : (Cuda_types.cu_deviceptr -> unit Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemcpyHtoD : Cuda_types.cu_deviceptr -> unit Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemcpyDtoH_lazy : (unit Ctypes_static.ptr -> Cuda_types.cu_deviceptr -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemcpyDtoH : unit Ctypes_static.ptr -> Cuda_types.cu_deviceptr -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemcpyDtoD_lazy : (Cuda_types.cu_deviceptr -> Cuda_types.cu_deviceptr -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemcpyDtoD : Cuda_types.cu_deviceptr -> Cuda_types.cu_deviceptr -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemcpyHtoDAsync_lazy : (Cuda_types.cu_deviceptr -> unit Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuMemcpyHtoDAsync : Cuda_types.cu_deviceptr -> unit Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuMemcpyDtoHAsync_lazy : (unit Ctypes_static.ptr -> Cuda_types.cu_deviceptr -> Unsigned.size_t -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuMemcpyDtoHAsync : unit Ctypes_static.ptr -> Cuda_types.cu_deviceptr -> Unsigned.size_t -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuMemsetD8_lazy : (Cuda_types.cu_deviceptr -> Unsigned.uchar -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemsetD8 : Cuda_types.cu_deviceptr -> Unsigned.uchar -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemsetD32_lazy : (Cuda_types.cu_deviceptr -> Unsigned.uint32 -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemsetD32 : Cuda_types.cu_deviceptr -> Unsigned.uint32 -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemAllocHost_lazy : (unit Ctypes_static.ptr Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuMemAllocHost : unit Ctypes_static.ptr Ctypes_static.ptr -> Unsigned.size_t -> Cuda_types.cu_result
val cuMemFreeHost_lazy : (unit Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuMemFreeHost : unit Ctypes_static.ptr -> Cuda_types.cu_result
val cuMemGetInfo_lazy : (Unsigned.size_t Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuMemGetInfo : Unsigned.size_t Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Cuda_types.cu_result

Module Management

val cuModuleLoadData_lazy : (Cuda_types.cu_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> unit Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuModuleLoadData : Cuda_types.cu_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> unit Ctypes_static.ptr -> Cuda_types.cu_result
val cuModuleLoad_lazy : (Cuda_types.cu_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> string -> Cuda_types.cu_result) lazy_t
val cuModuleLoad : Cuda_types.cu_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> string -> Cuda_types.cu_result
val cuModuleLoadDataEx_lazy : (Cuda_types.cu_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> unit Ctypes_static.ptr -> Unsigned.uint -> int Ctypes_static.ptr -> unit Ctypes_static.ptr Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuModuleLoadDataEx : Cuda_types.cu_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> unit Ctypes_static.ptr -> Unsigned.uint -> int Ctypes_static.ptr -> unit Ctypes_static.ptr Ctypes_static.ptr -> Cuda_types.cu_result
val cuModuleUnload_lazy : (Cuda_types.cu_module Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuModuleUnload : Cuda_types.cu_module Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuModuleGetFunction_lazy : (Cuda_types.cu_function Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Cuda_types.cu_module Ctypes.structure Ctypes.ptr -> string -> Cuda_types.cu_result) lazy_t
val cuModuleGetFunction : Cuda_types.cu_function Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Cuda_types.cu_module Ctypes.structure Ctypes.ptr -> string -> Cuda_types.cu_result
val cuModuleGetGlobal_lazy : (Cuda_types.cu_deviceptr Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Cuda_types.cu_module Ctypes.structure Ctypes.ptr -> string -> Cuda_types.cu_result) lazy_t
val cuModuleGetGlobal : Cuda_types.cu_deviceptr Ctypes_static.ptr -> Unsigned.size_t Ctypes_static.ptr -> Cuda_types.cu_module Ctypes.structure Ctypes.ptr -> string -> Cuda_types.cu_result

Kernel Execution

val cuLaunchKernel_lazy : (Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> unit Ctypes_static.ptr Ctypes_static.ptr -> unit Ctypes_static.ptr Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuLaunchKernel : Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Unsigned.uint -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> unit Ctypes_static.ptr Ctypes_static.ptr -> unit Ctypes_static.ptr Ctypes_static.ptr -> Cuda_types.cu_result
val cuFuncGetAttribute_lazy : (int Ctypes_static.ptr -> int -> Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuFuncGetAttribute : int Ctypes_static.ptr -> int -> Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuFuncSetCacheConfig_lazy : (Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> int -> Cuda_types.cu_result) lazy_t
val cuFuncSetCacheConfig : Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> int -> Cuda_types.cu_result
val cuFuncSetSharedMemConfig_lazy : (Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> int -> Cuda_types.cu_result) lazy_t
val cuFuncSetSharedMemConfig : Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> int -> Cuda_types.cu_result

Stream Management

val cuStreamCreate_lazy : (Cuda_types.cu_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> Cuda_types.cu_result) lazy_t
val cuStreamCreate : Cuda_types.cu_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> Cuda_types.cu_result
val cuStreamCreateWithPriority_lazy : (Cuda_types.cu_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> int -> Cuda_types.cu_result) lazy_t
val cuStreamCreateWithPriority : Cuda_types.cu_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> int -> Cuda_types.cu_result
val cuStreamDestroy_lazy : (Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuStreamDestroy : Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuStreamSynchronize_lazy : (Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuStreamSynchronize : Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuStreamQuery_lazy : (Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuStreamQuery : Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuStreamWaitEvent_lazy : (Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Unsigned.uint -> Cuda_types.cu_result) lazy_t
val cuStreamWaitEvent : Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Unsigned.uint -> Cuda_types.cu_result
val cuCtxGetStreamPriorityRange_lazy : (int Ctypes_static.ptr -> int Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxGetStreamPriorityRange : int Ctypes_static.ptr -> int Ctypes_static.ptr -> Cuda_types.cu_result

Event Management

val cuEventCreate_lazy : (Cuda_types.cu_event Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> Cuda_types.cu_result) lazy_t
val cuEventCreate : Cuda_types.cu_event Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> Unsigned.uint -> Cuda_types.cu_result
val cuEventDestroy_lazy : (Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuEventDestroy : Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuEventRecord_lazy : (Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuEventRecord : Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_stream Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuEventSynchronize_lazy : (Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuEventSynchronize : Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuEventQuery_lazy : (Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuEventQuery : Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result
val cuEventElapsedTime_lazy : (float Ctypes_static.ptr -> Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuEventElapsedTime : float Ctypes_static.ptr -> Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_event Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result

Error Handling

val cuGetErrorName_lazy : (Cuda_types.cu_result -> string Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuGetErrorName : Cuda_types.cu_result -> string Ctypes_static.ptr -> Cuda_types.cu_result
val cuGetErrorString_lazy : (Cuda_types.cu_result -> string Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuGetErrorString : Cuda_types.cu_result -> string Ctypes_static.ptr -> Cuda_types.cu_result

Version

val cuDriverGetVersion_lazy : (int Ctypes_static.ptr -> Cuda_types.cu_result) lazy_t
val cuDriverGetVersion : int Ctypes_static.ptr -> Cuda_types.cu_result

Occupancy

val cuOccupancyMaxActiveBlocksPerMultiprocessor_lazy : (int Ctypes_static.ptr -> Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> int -> Unsigned.size_t -> Cuda_types.cu_result) lazy_t
val cuOccupancyMaxActiveBlocksPerMultiprocessor : int Ctypes_static.ptr -> Cuda_types.cu_function Ctypes.structure Ctypes.ptr -> int -> Unsigned.size_t -> Cuda_types.cu_result

Peer Access

val cuDeviceCanAccessPeer_lazy : (int Ctypes_static.ptr -> Cuda_types.cu_device -> Cuda_types.cu_device -> Cuda_types.cu_result) lazy_t
val cuDeviceCanAccessPeer : int Ctypes_static.ptr -> Cuda_types.cu_device -> Cuda_types.cu_device -> Cuda_types.cu_result
val cuCtxEnablePeerAccess_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Unsigned.uint -> Cuda_types.cu_result) lazy_t
val cuCtxEnablePeerAccess : Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Unsigned.uint -> Cuda_types.cu_result
val cuCtxDisablePeerAccess_lazy : (Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result) lazy_t
val cuCtxDisablePeerAccess : Cuda_types.cu_context Ctypes.structure Ctypes.ptr -> Cuda_types.cu_result

Profiler Control

val cuProfilerStart_lazy : (unit -> Cuda_types.cu_result) option lazy_t
val cuProfilerStart : unit -> Cuda_types.cu_result
val cuProfilerStop_lazy : (unit -> Cuda_types.cu_result) option lazy_t
val cuProfilerStop : unit -> Cuda_types.cu_result