Sarek_hip.Hip_bindingsforeign_hip_blocking_lazy name typ is foreign_hip_lazy name typ with the OCaml runtime lock released for the duration of the call, for entry points that block on the device or run a compiler. While the lock is held, every other domain stops at its next minor collection until the call returns. This is the reference note for the blocking bindings of every backend.
Releasing the lock is safe only because no argument of these entry points points into the OCaml heap: a ptr argument is C memory (driver handles, allocated cells, bigarray data) that ctypes keeps reachable until the call returns, and a ctypes string argument is copied into C memory first. Memory reached through a raw address (ptr_of_raw_address) is not rooted by the call: other domains and their GC run during it, so the caller must keep that memory allocated until the call returns (SPOC's transfer paths end with ignore (Sys.opaque_identity ba) for this).
val hipInit_lazy : (Unsigned.uint -> Hip_types.hip_result) lazy_tval hipInit : Unsigned.uint -> Hip_types.hip_resultval hipGetDeviceCount_lazy :
(int Ctypes_static.ptr -> Hip_types.hip_result) lazy_tval hipGetDeviceCount : int Ctypes_static.ptr -> Hip_types.hip_resultval hipDeviceGet_lazy :
(Hip_types.hip_device Ctypes_static.ptr ->
int ->
Hip_types.hip_result)
lazy_tval hipDeviceGet :
Hip_types.hip_device Ctypes_static.ptr ->
int ->
Hip_types.hip_resultval hipSetDevice_lazy : (int -> Hip_types.hip_result) lazy_tval hipSetDevice : int -> Hip_types.hip_resultval hipGetDevice_lazy : (int Ctypes_static.ptr -> Hip_types.hip_result) lazy_tval hipGetDevice : int Ctypes_static.ptr -> Hip_types.hip_resultval hipDeviceGetName_lazy :
(char Ctypes_static.ptr ->
int ->
Hip_types.hip_device ->
Hip_types.hip_result)
lazy_tval hipDeviceGetName :
char Ctypes_static.ptr ->
int ->
Hip_types.hip_device ->
Hip_types.hip_resultval hipDeviceTotalMem_lazy :
(Unsigned.size_t Ctypes_static.ptr ->
Hip_types.hip_device ->
Hip_types.hip_result)
lazy_tval hipDeviceTotalMem :
Unsigned.size_t Ctypes_static.ptr ->
Hip_types.hip_device ->
Hip_types.hip_resultval hipDeviceGetAttribute_lazy :
(int Ctypes_static.ptr -> int -> int -> Hip_types.hip_result) lazy_tval hipDeviceGetAttribute :
int Ctypes_static.ptr ->
int ->
int ->
Hip_types.hip_resultval hipDeviceComputeCapability_lazy :
(int Ctypes_static.ptr ->
int Ctypes_static.ptr ->
Hip_types.hip_device ->
Hip_types.hip_result)
lazy_tval hipDeviceComputeCapability :
int Ctypes_static.ptr ->
int Ctypes_static.ptr ->
Hip_types.hip_device ->
Hip_types.hip_resultval hipDeviceSynchronize_lazy : (unit -> Hip_types.hip_result) lazy_tval hipDeviceSynchronize : unit -> Hip_types.hip_resultval hipMalloc_lazy :
(unit Ctypes_static.ptr Ctypes_static.ptr ->
Unsigned.size_t ->
Hip_types.hip_result)
lazy_tval hipMalloc :
unit Ctypes_static.ptr Ctypes_static.ptr ->
Unsigned.size_t ->
Hip_types.hip_resultval hipExtMallocWithFlags_lazy :
(unit Ctypes_static.ptr Ctypes_static.ptr ->
Unsigned.size_t ->
Unsigned.uint ->
Hip_types.hip_result)
lazy_thipExtMallocWithFlags: hipDeviceMallocUncached (0x3) allocates device memory whose writes are not held back in the GPU caches (issue #427).
val hipExtMallocWithFlags :
unit Ctypes_static.ptr Ctypes_static.ptr ->
Unsigned.size_t ->
Unsigned.uint ->
Hip_types.hip_resultval hipFree_lazy : (unit Ctypes_static.ptr -> Hip_types.hip_result) lazy_tval hipFree : unit Ctypes_static.ptr -> Hip_types.hip_resultval hipMemcpyHtoD_lazy :
(Hip_types.hip_deviceptr ->
unit Ctypes_static.ptr ->
Unsigned.size_t ->
Hip_types.hip_result)
lazy_tval hipMemcpyHtoD :
Hip_types.hip_deviceptr ->
unit Ctypes_static.ptr ->
Unsigned.size_t ->
Hip_types.hip_resultval hipMemcpyDtoH_lazy :
(unit Ctypes_static.ptr ->
Hip_types.hip_deviceptr ->
Unsigned.size_t ->
Hip_types.hip_result)
lazy_tval hipMemcpyDtoH :
unit Ctypes_static.ptr ->
Hip_types.hip_deviceptr ->
Unsigned.size_t ->
Hip_types.hip_resultval hipMemcpyDtoD_lazy :
(Hip_types.hip_deviceptr ->
Hip_types.hip_deviceptr ->
Unsigned.size_t ->
Hip_types.hip_result)
lazy_tval hipMemcpyDtoD :
Hip_types.hip_deviceptr ->
Hip_types.hip_deviceptr ->
Unsigned.size_t ->
Hip_types.hip_resultval hipMemsetD8_lazy :
(Hip_types.hip_deviceptr ->
Unsigned.uchar ->
Unsigned.size_t ->
Hip_types.hip_result)
lazy_tval hipMemsetD8 :
Hip_types.hip_deviceptr ->
Unsigned.uchar ->
Unsigned.size_t ->
Hip_types.hip_resultval hipMemGetInfo_lazy :
(Unsigned.size_t Ctypes_static.ptr ->
Unsigned.size_t Ctypes_static.ptr ->
Hip_types.hip_result)
lazy_tval hipMemGetInfo :
Unsigned.size_t Ctypes_static.ptr ->
Unsigned.size_t Ctypes_static.ptr ->
Hip_types.hip_resultval hipModuleLoadData_lazy :
(Hip_types.hip_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
unit Ctypes_static.ptr ->
Hip_types.hip_result)
lazy_tval hipModuleLoadData :
Hip_types.hip_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
unit Ctypes_static.ptr ->
Hip_types.hip_resultval hipModuleLoad_lazy :
(Hip_types.hip_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
string ->
Hip_types.hip_result)
lazy_tval hipModuleLoad :
Hip_types.hip_module Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
string ->
Hip_types.hip_resultval hipModuleUnload_lazy :
(Hip_types.hip_module Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipModuleUnload :
Hip_types.hip_module Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipModuleGetFunction_lazy :
(Hip_types.hip_function Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Hip_types.hip_module Ctypes.structure Ctypes.ptr ->
string ->
Hip_types.hip_result)
lazy_tval hipModuleGetFunction :
Hip_types.hip_function Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Hip_types.hip_module Ctypes.structure Ctypes.ptr ->
string ->
Hip_types.hip_resultval hipModuleLaunchKernel_lazy :
(Hip_types.hip_function Ctypes.structure Ctypes.ptr ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
unit Ctypes_static.ptr Ctypes_static.ptr ->
unit Ctypes_static.ptr Ctypes_static.ptr ->
Hip_types.hip_result)
lazy_tval hipModuleLaunchKernel :
Hip_types.hip_function Ctypes.structure Ctypes.ptr ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Unsigned.uint ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
unit Ctypes_static.ptr Ctypes_static.ptr ->
unit Ctypes_static.ptr Ctypes_static.ptr ->
Hip_types.hip_resultval hipMemcpyHtoDAsync_lazy :
(Hip_types.hip_deviceptr ->
unit Ctypes_static.ptr ->
Unsigned.size_t ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipMemcpyHtoDAsync :
Hip_types.hip_deviceptr ->
unit Ctypes_static.ptr ->
Unsigned.size_t ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipMemcpyDtoHAsync_lazy :
(unit Ctypes_static.ptr ->
Hip_types.hip_deviceptr ->
Unsigned.size_t ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipMemcpyDtoHAsync :
unit Ctypes_static.ptr ->
Hip_types.hip_deviceptr ->
Unsigned.size_t ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipHostMalloc_lazy :
(unit Ctypes_static.ptr Ctypes_static.ptr ->
Unsigned.size_t ->
Unsigned.uint ->
Hip_types.hip_result)
lazy_tval hipHostMalloc :
unit Ctypes_static.ptr Ctypes_static.ptr ->
Unsigned.size_t ->
Unsigned.uint ->
Hip_types.hip_resultval hipHostFree_lazy : (unit Ctypes_static.ptr -> Hip_types.hip_result) lazy_tval hipHostFree : unit Ctypes_static.ptr -> Hip_types.hip_resultval hipHostRegister_lazy :
(unit Ctypes_static.ptr ->
Unsigned.size_t ->
Unsigned.uint ->
Hip_types.hip_result)
lazy_tval hipHostRegister :
unit Ctypes_static.ptr ->
Unsigned.size_t ->
Unsigned.uint ->
Hip_types.hip_resultval hipHostUnregister_lazy :
(unit Ctypes_static.ptr -> Hip_types.hip_result) lazy_tval hipHostUnregister : unit Ctypes_static.ptr -> Hip_types.hip_resultval hipStreamCreate_lazy :
(Hip_types.hip_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Hip_types.hip_result)
lazy_tval hipStreamCreate :
Hip_types.hip_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Hip_types.hip_resultval hipStreamCreateWithFlags_lazy :
(Hip_types.hip_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Unsigned.uint ->
Hip_types.hip_result)
lazy_tval hipStreamCreateWithFlags :
Hip_types.hip_stream Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Unsigned.uint ->
Hip_types.hip_resultval hipStreamDestroy_lazy :
(Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipStreamDestroy :
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipStreamSynchronize_lazy :
(Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipStreamSynchronize :
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipStreamWaitEvent_lazy :
(Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Unsigned.uint ->
Hip_types.hip_result)
lazy_tval hipStreamWaitEvent :
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Unsigned.uint ->
Hip_types.hip_resultval hipEventCreate_lazy :
(Hip_types.hip_event Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Hip_types.hip_result)
lazy_tval hipEventCreate :
Hip_types.hip_event Ctypes.structure Ctypes.ptr Ctypes_static.ptr ->
Hip_types.hip_resultval hipEventDestroy_lazy :
(Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipEventDestroy :
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipEventRecord_lazy :
(Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipEventRecord :
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_stream Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipEventSynchronize_lazy :
(Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipEventSynchronize :
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipEventElapsedTime_lazy :
(float Ctypes_static.ptr ->
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipEventElapsedTime :
float Ctypes_static.ptr ->
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipEventQuery_lazy :
(Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_result)
lazy_tval hipEventQuery :
Hip_types.hip_event Ctypes.structure Ctypes.ptr ->
Hip_types.hip_resultval hipRuntimeGetVersion_lazy :
(int Ctypes_static.ptr -> Hip_types.hip_result) lazy_tval hipRuntimeGetVersion : int Ctypes_static.ptr -> Hip_types.hip_result