cuda- FFI binding to the CUDA interface for programming NVIDIA GPUs

Copyright[2009..2018] Trevor L. McDonell
Safe HaskellNone




IPC memory management for low-level driver interface.

Restricted to devices which support unified addressing on Linux operating systems.

Since CUDA-4.0.


IPC memory management

data IPCDevicePtr a Source #

A CUDA memory handle used for inter-process communication.

Eq (IPCDevicePtr a) Source # 
Instance details

Defined in Foreign.CUDA.Driver.IPC.Marshal

Show (IPCDevicePtr a) Source # 
Instance details

Defined in Foreign.CUDA.Driver.IPC.Marshal

data IPCFlag Source #

Flags for controlling IPC memory access



export :: DevicePtr a -> IO (IPCDevicePtr a) Source #

Create an inter-process memory handle for an existing device memory allocation. The handle can then be sent to another process and made available to that process via open.

Requires CUDA-4.1.

open :: IPCDevicePtr a -> [IPCFlag] -> IO (DevicePtr a) Source #

Open an inter-process memory handle exported from another process, returning a device pointer usable in the current process.

Maps memory exported by another process with 'export into the current device address space. For contexts on different devices, open can attempt to enable peer access if the user called add, and is controlled by the LazyEnablePeerAccess flag.

Each handle from a given device and context may only be opened by one context per device per other process. Memory returned by open must be freed via close.

Requires CUDA-4.1.

close :: DevicePtr a -> IO () Source #

Close and unmap memory returned by open. The original allocation in the exporting process as well as imported mappings in other processes are unaffected.

Any resources used to enable peer access will be freed if this is the last mapping using them.

Requires CUDA-4.1.