public class Rmm extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
Rmm.LogConf
What to send RMM alloc and free logs to.
|
| Constructor and Description |
|---|
Rmm() |
| Modifier and Type | Method and Description |
|---|---|
static DeviceMemoryBuffer |
alloc(long size)
Allocate device memory and return a pointer to device memory, using stream 0.
|
static DeviceMemoryBuffer |
alloc(long size,
Cuda.Stream stream)
Allocate device memory and return a pointer to device memory.
|
static CudaMemoryBuffer |
allocCuda(long size,
Cuda.Stream stream)
Allocate device memory using `cudaMalloc` and return a pointer to device memory.
|
static void |
clearEventHandler()
Clears the active RMM event handler if one is set.
|
static long |
getMaximumTotalBytesAllocated()
Returns the maximum amount of RMM memory (Bytes) outstanding during the
lifetime of the process.
|
static long |
getPoolSize()
Get the most recently set pool size or -1 if RMM has not been initialized or pooling is
not enabled.
|
static long |
getScopedMaximumBytesAllocated()
Returns the maximum amount of RMM memory (Bytes) outstanding since the last
`resetScopedMaximumOutstanding` call was issued (it is "scoped" because it's the
maximum amount seen since the last reset).
|
static long |
getTotalBytesAllocated()
Return the amount of RMM memory allocated in bytes.
|
static void |
initialize(int allocationMode,
Rmm.LogConf logConf,
long poolSize)
Initialize memory manager state and storage.
|
static boolean |
isInitialized()
Check if RMM has been initialized already or not.
|
static boolean |
isPoolingEnabled()
Return true if rmm is initialized and pooling has been enabled, else false.
|
static Rmm.LogConf |
logTo(File location)
Create a config that will write alloc/free logs to a file.
|
static Rmm.LogConf |
logToStderr()
Create a config that will write alloc/free logs to stderr.
|
static Rmm.LogConf |
logToStdout()
Create a config that will write alloc/free logs to stdout.
|
static void |
resetScopedMaximumBytesAllocated()
Resets a scoped maximum counter of RMM memory used to keep track of usage between
code sections while debugging.
|
static void |
resetScopedMaximumBytesAllocated(long initialValue)
Resets a scoped maximum counter of RMM memory used to keep track of usage between
code sections while debugging.
|
static void |
setEventHandler(RmmEventHandler handler)
Sets the event handler to be called on RMM events (e.g.: allocation failure).
|
static void |
setEventHandler(RmmEventHandler handler,
boolean enableDebug)
Sets the event handler to be called on RMM events (e.g.: allocation failure) and
optionally enable debug mode (callbacks on every allocate and deallocate)
NOTE: Only enable debug mode when necessary, as code will run much slower!
|
static void |
shutdown()
Shut down any initialized RMM instance.
|
static void |
shutdown(long forceGCInterval,
long maxWaitTime,
TimeUnit units)
Shut down any initialized RMM instance.
|
public static Rmm.LogConf logTo(File location)
public static Rmm.LogConf logToStdout()
public static Rmm.LogConf logToStderr()
public static void initialize(int allocationMode,
Rmm.LogConf logConf,
long poolSize)
throws RmmException
NOTE: All cudf methods will set the chosen CUDA device in the CUDA context of the calling thread after this returns.
allocationMode - Allocation strategy to use. Bit set using
RmmAllocationMode.CUDA_DEFAULT,
RmmAllocationMode.POOL,
RmmAllocationMode.ARENA,
RmmAllocationMode.CUDA_ASYNC and
RmmAllocationMode.CUDA_MANAGED_MEMORYlogConf - How to do logging or null if you don't want topoolSize - The initial pool size in bytesIllegalStateException - if RMM has already been initializedRmmExceptionpublic static long getPoolSize()
public static boolean isPoolingEnabled()
public static boolean isInitialized()
throws RmmException
RmmExceptionpublic static long getTotalBytesAllocated()
public static long getMaximumTotalBytesAllocated()
public static void resetScopedMaximumBytesAllocated(long initialValue)
initialValue - an initial value (in Bytes) to use for this scoped counterpublic static void resetScopedMaximumBytesAllocated()
public static long getScopedMaximumBytesAllocated()
public static void setEventHandler(RmmEventHandler handler) throws RmmException
handler - event handler to invoke on RMM events or null to clear an existing handlerRmmException - if an active handler is already setpublic static void setEventHandler(RmmEventHandler handler, boolean enableDebug) throws RmmException
handler - event handler to invoke on RMM events or null to clear an existing handlerenableDebug - if true enable debug callbacks in RmmEventHandler
(onAllocated, onDeallocated)RmmException - if an active handler is already setpublic static void clearEventHandler()
throws RmmException
RmmExceptionpublic static void shutdown()
throws RmmException
RmmException - on any error. This includes if there are outstanding allocations that
could not be collected.public static void shutdown(long forceGCInterval,
long maxWaitTime,
TimeUnit units)
throws RmmException
forceGCInterval - how frequently should we force a JVM GC. This is just a recommendation
to the JVM to do a gc.maxWaitTime - the maximum amount of time to wait for all objects to be collected before
throwing an exception.units - the units for forceGcInterval and maxWaitTime.RmmException - on any error. This includes if there are outstanding allocations that
could not be collected before maxWaitTime.public static DeviceMemoryBuffer alloc(long size)
size - The size in bytes of the allocated memory regionpublic static DeviceMemoryBuffer alloc(long size, Cuda.Stream stream)
size - The size in bytes of the allocated memory regionstream - The stream in which to synchronize this command.public static CudaMemoryBuffer allocCuda(long size, Cuda.Stream stream)
size - The size in bytes of the allocated memory regionstream - The stream in which to synchronize this command.Copyright © 2023. All rights reserved.